Fix bug that erases org buffer when calling agenda via org-agenda-open-link.
[org-mode.git] / doc / org.texi
blobbc8369318d7db8d607eaee531c4bf127861c2445
2 \input texinfo
3 @c %**start of header
4 @setfilename ../../info/org
5 @settitle The Org Manual
7 @set VERSION 7.01trans
8 @set DATE July 2010
10 @c Use proper quote and backtick for code sections in PDF output
11 @c Cf. Texinfo manual 14.2
12 @set txicodequoteundirected
13 @set txicodequotebacktick
15 @c Version and Contact Info
16 @set MAINTAINERSITE @uref{http://orgmode.org,maintainers webpage}
17 @set AUTHOR Carsten Dominik
18 @set MAINTAINER Carsten Dominik
19 @set MAINTAINEREMAIL @email{carsten at orgmode dot org}
20 @set MAINTAINERCONTACT @uref{mailto:carsten at orgmode dot org,contact the maintainer}
21 @c %**end of header
22 @finalout
24 @c Macro definitions
25 @iftex
26 @c @hyphenation{time-stamp time-stamps time-stamp-ing time-stamp-ed}
27 @end iftex
28 @macro Ie {}
29 I.e.,
30 @end macro
31 @macro ie {}
32 i.e.,
33 @end macro
34 @macro Eg {}
35 E.g.,
36 @end macro
37 @macro eg {}
38 e.g.,
39 @end macro
41 @c Subheadings inside a table.
42 @macro tsubheading{text}
43 @ifinfo
44 @subsubheading \text\
45 @end ifinfo
46 @ifnotinfo
47 @item @b{\text\}
48 @end ifnotinfo
49 @end macro
51 @copying
52 This manual is for Org version @value{VERSION}.
54 Copyright @copyright{} 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation
56 @quotation
57 Permission is granted to copy, distribute and/or modify this document
58 under the terms of the GNU Free Documentation License, Version 1.3 or
59 any later version published by the Free Software Foundation; with no
60 Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
61 and with the Back-Cover Texts as in (a) below.  A copy of the license
62 is included in the section entitled ``GNU Free Documentation License.''
64 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
65 modify this GNU manual.  Buying copies from the FSF supports it in
66 developing GNU and promoting software freedom.''
68 This document is part of a collection distributed under the GNU Free
69 Documentation License.  If you want to distribute this document
70 separately from the collection, you can do so by adding a copy of the
71 license to the document, as described in section 6 of the license.
72 @end quotation
73 @end copying
75 @dircategory Emacs
76 @direntry
77 * Org Mode: (org).      Outline-based notes management and organizer
78 @end direntry
80 @titlepage
81 @title The Org Manual
83 @subtitle Release @value{VERSION}
84 @author by Carsten Dominik
85 with contributions by David O'Toole, Bastien Guerry, Philip Rooke, Dan Davison, Eric Schulte, and Thomas Dye
87 @c The following two commands start the copyright page.
88 @page
89 @vskip 0pt plus 1filll
90 @insertcopying
91 @end titlepage
93 @c Output the table of contents at the beginning.
94 @contents
96 @ifnottex
97 @node Top, Introduction, (dir), (dir)
98 @top Org Mode Manual
100 @insertcopying
101 @end ifnottex
103 @menu
104 * Introduction::                Getting started
105 * Document Structure::          A tree works like your brain
106 * Tables::                      Pure magic for quick formatting
107 * Hyperlinks::                  Notes in context
108 * TODO Items::                  Every tree branch can be a TODO item
109 * Tags::                        Tagging headlines and matching sets of tags
110 * Properties and Columns::      Storing information about an entry
111 * Dates and Times::             Making items useful for planning
112 * Capture - Refile - Archive::  The ins and outs for projects
113 * Agenda Views::                Collecting information into views
114 * Markup::                      Prepare text for rich export
115 * Exporting::                   Sharing and publishing of notes
116 * Publishing::                  Create a web site of linked Org files
117 * Working With Source Code::    Export, evaluate, and tangle code blocks
118 * Miscellaneous::               All the rest which did not fit elsewhere
119 * Hacking::                     How to hack your way around
120 * MobileOrg::                   Viewing and capture on a mobile device
121 * History and Acknowledgments::  How Org came into being
122 * Main Index::                  An index of Org's concepts and features
123 * Key Index::                   Key bindings and where they are described
124 * Variable Index::              Variables mentioned in the manual
126 @detailmenu
127  --- The Detailed Node Listing ---
129 Introduction
131 * Summary::                     Brief summary of what Org does
132 * Installation::                How to install a downloaded version of Org
133 * Activation::                  How to activate Org for certain buffers
134 * Feedback::                    Bug reports, ideas, patches etc.
135 * Conventions::                 Type-setting conventions in the manual
137 Document structure
139 * Outlines::                    Org is based on Outline mode
140 * Headlines::                   How to typeset Org tree headlines
141 * Visibility cycling::          Show and hide, much simplified
142 * Motion::                      Jumping to other headlines
143 * Structure editing::           Changing sequence and level of headlines
144 * Sparse trees::                Matches embedded in context
145 * Plain lists::                 Additional structure within an entry
146 * Drawers::                     Tucking stuff away
147 * Blocks::                      Folding blocks
148 * Footnotes::                   How footnotes are defined in Org's syntax
149 * Orgstruct mode::              Structure editing outside Org
151 Tables
153 * Built-in table editor::       Simple tables
154 * Column width and alignment::  Overrule the automatic settings
155 * Column groups::               Grouping to trigger vertical lines
156 * Orgtbl mode::                 The table editor as minor mode
157 * The spreadsheet::             The table editor has spreadsheet capabilities
158 * Org-Plot::                    Plotting from org tables
160 The spreadsheet
162 * References::                  How to refer to another field or range
163 * Formula syntax for Calc::     Using Calc to compute stuff
164 * Formula syntax for Lisp::     Writing formulas in Emacs Lisp
165 * Field formulas::              Formulas valid for a single field
166 * Column formulas::             Formulas valid for an entire column
167 * Editing and debugging formulas::  Fixing formulas
168 * Updating the table::          Recomputing all dependent fields
169 * Advanced features::           Field names, parameters and automatic recalc
171 Hyperlinks
173 * Link format::                 How links in Org are formatted
174 * Internal links::              Links to other places in the current file
175 * External links::              URL-like links to the world
176 * Handling links::              Creating, inserting and following
177 * Using links outside Org::     Linking from my C source code?
178 * Link abbreviations::          Shortcuts for writing complex links
179 * Search options::              Linking to a specific location
180 * Custom searches::             When the default search is not enough
182 Internal links
184 * Radio targets::               Make targets trigger links in plain text
186 TODO items
188 * TODO basics::                 Marking and displaying TODO entries
189 * TODO extensions::             Workflow and assignments
190 * Progress logging::            Dates and notes for progress
191 * Priorities::                  Some things are more important than others
192 * Breaking down tasks::         Splitting a task into manageable pieces
193 * Checkboxes::                  Tick-off lists
195 Extended use of TODO keywords
197 * Workflow states::             From TODO to DONE in steps
198 * TODO types::                  I do this, Fred does the rest
199 * Multiple sets in one file::   Mixing it all, and still finding your way
200 * Fast access to TODO states::  Single letter selection of a state
201 * Per-file keywords::           Different files, different requirements
202 * Faces for TODO keywords::     Highlighting states
203 * TODO dependencies::           When one task needs to wait for others
205 Progress logging
207 * Closing items::               When was this entry marked DONE?
208 * Tracking TODO state changes::  When did the status change?
209 * Tracking your habits::        How consistent have you been?
211 Tags
213 * Tag inheritance::             Tags use the tree structure of the outline
214 * Setting tags::                How to assign tags to a headline
215 * Tag searches::                Searching for combinations of tags
217 Properties and columns
219 * Property syntax::             How properties are spelled out
220 * Special properties::          Access to other Org-mode features
221 * Property searches::           Matching property values
222 * Property inheritance::        Passing values down the tree
223 * Column view::                 Tabular viewing and editing
224 * Property API::                Properties for Lisp programmers
226 Column view
228 * Defining columns::            The COLUMNS format property
229 * Using column view::           How to create and use column view
230 * Capturing column view::       A dynamic block for column view
232 Defining columns
234 * Scope of column definitions::  Where defined, where valid?
235 * Column attributes::           Appearance and content of a column
237 Dates and times
239 * Timestamps::                  Assigning a time to a tree entry
240 * Creating timestamps::         Commands which insert timestamps
241 * Deadlines and scheduling::    Planning your work
242 * Clocking work time::          Tracking how long you spend on a task
243 * Resolving idle time::         Resolving time if you've been idle
244 * Effort estimates::            Planning work effort in advance
245 * Relative timer::              Notes with a running timer
247 Creating timestamps
249 * The date/time prompt::        How Org-mode helps you entering date and time
250 * Custom time format::          Making dates look different
252 Deadlines and scheduling
254 * Inserting deadline/schedule::  Planning items
255 * Repeated tasks::              Items that show up again and again
257 Capture - Refile - Archive
259 * Capture::                     Capturing new stuff
260 * Attachments::                 Add files to tasks
261 * RSS Feeds::                   Getting input from RSS feeds
262 * Protocols::                   External (e.g. Browser) access to Emacs and Org
263 * Refiling notes::              Moving a tree from one place to another
264 * Archiving::                   What to do with finished projects
266 Capture
268 * Setting up capture::          Where notes will be stored
269 * Using capture::               Commands to invoke and terminate capture
270 * Capture templates::           Define the outline of different note types
272 Capture templates
274 * Template elements::           What is needed for a complete template entry
275 * Template expansion::          Filling in information about time and context
277 Archiving
279 * Moving subtrees::             Moving a tree to an archive file
280 * Internal archiving::          Switch off a tree but keep it in the file
282 Agenda views
284 * Agenda files::                Files being searched for agenda information
285 * Agenda dispatcher::           Keyboard access to agenda views
286 * Built-in agenda views::       What is available out of the box?
287 * Presentation and sorting::    How agenda items are prepared for display
288 * Agenda commands::             Remote editing of Org trees
289 * Custom agenda views::         Defining special searches and views
290 * Exporting Agenda Views::      Writing a view to a file
291 * Agenda column view::          Using column view for collected entries
293 The built-in agenda views
295 * Weekly/daily agenda::         The calendar page with current tasks
296 * Global TODO list::            All unfinished action items
297 * Matching tags and properties::  Structured information with fine-tuned search
298 * Timeline::                    Time-sorted view for single file
299 * Search view::                 Find entries by searching for text
300 * Stuck projects::              Find projects you need to review
302 Presentation and sorting
304 * Categories::                  Not all tasks are equal
305 * Time-of-day specifications::  How the agenda knows the time
306 * Sorting of agenda items::     The order of things
308 Custom agenda views
310 * Storing searches::            Type once, use often
311 * Block agenda::                All the stuff you need in a single buffer
312 * Setting Options::             Changing the rules
314 Markup for rich export
316 * Structural markup elements::  The basic structure as seen by the exporter
317 * Images and tables::           Tables and Images will be included
318 * Literal examples::            Source code examples with special formatting
319 * Include files::               Include additional files into a document
320 * Index entries::               Making an index
321 * Macro replacement::           Use macros to create complex output
322 * Embedded LaTeX::              LaTeX can be freely used inside Org documents
324 Structural markup elements
326 * Document title::              Where the title is taken from
327 * Headings and sections::       The document structure as seen by the exporter
328 * Table of contents::           The if and where of the table of contents
329 * Initial text::                Text before the first heading?
330 * Lists::                       Lists
331 * Paragraphs::                  Paragraphs
332 * Footnote markup::             Footnotes
333 * Emphasis and monospace::      Bold, italic, etc.
334 * Horizontal rules::            Make a line
335 * Comment lines::               What will *not* be exported
337 Embedded La@TeX{}
339 * Special symbols::             Greek letters and other symbols
340 * Subscripts and superscripts::  Simple syntax for raising/lowering text
341 * LaTeX fragments::             Complex formulas made easy
342 * Previewing LaTeX fragments::  What will this snippet look like?
343 * CDLaTeX mode::                Speed up entering of formulas
345 Exporting
347 * Selective export::            Using tags to select and exclude trees
348 * Export options::              Per-file export settings
349 * The export dispatcher::       How to access exporter commands
350 * ASCII/Latin-1/UTF-8 export::  Exporting to flat files with encoding
351 * HTML export::                 Exporting to HTML
352 * LaTeX and PDF export::        Exporting to La@TeX{}, and processing to PDF
353 * DocBook export::              Exporting to DocBook
354 * TaskJuggler export::          Exporting to TaskJuggler
355 * Freemind export::             Exporting to Freemind mind maps
356 * XOXO export::                 Exporting to XOXO
357 * iCalendar export::            Exporting in iCalendar format
359 HTML export
361 * HTML Export commands::        How to invoke HTML export
362 * Quoting HTML tags::           Using direct HTML in Org-mode
363 * Links in HTML export::        How links will be interpreted and formatted
364 * Tables in HTML export::       How to modify the formatting of tables
365 * Images in HTML export::       How to insert figures into HTML output
366 * Math formatting in HTML export::  Beautiful math also on the web
367 * Text areas in HTML export::   An alternative way to show an example
368 * CSS support::                 Changing the appearance of the output
369 * JavaScript support::          Info and Folding in a web browser
371 La@TeX{} and PDF export
373 * LaTeX/PDF export commands::   Which key invokes which commands
374 * Header and sectioning::       Setting up the export file structure
375 * Quoting LaTeX code::          Incorporating literal La@TeX{} code
376 * Tables in LaTeX export::      Options for exporting tables to La@TeX{}
377 * Images in LaTeX export::      How to insert figures into La@TeX{} output
378 * Beamer class export::         Turning the file into a presentation
380 DocBook export
382 * DocBook export commands::     How to invoke DocBook export
383 * Quoting DocBook code::        Incorporating DocBook code in Org files
384 * Recursive sections::          Recursive sections in DocBook
385 * Tables in DocBook export::    Tables are exported as HTML tables
386 * Images in DocBook export::    How to insert figures into DocBook output
387 * Special characters::          How to handle special characters
389 Publishing
391 * Configuration::               Defining projects
392 * Uploading files::             How to get files up on the server
393 * Sample configuration::        Example projects
394 * Triggering publication::      Publication commands
396 Configuration
398 * Project alist::               The central configuration variable
399 * Sources and destinations::    From here to there
400 * Selecting files::             What files are part of the project?
401 * Publishing action::           Setting the function doing the publishing
402 * Publishing options::          Tweaking HTML export
403 * Publishing links::            Which links keep working after publishing?
404 * Sitemap::                     Generating a list of all pages
405 * Generating an index::         An index that reaches across pages
407 Sample configuration
409 * Simple example::              One-component publishing
410 * Complex example::             A multi-component publishing example
412 Working with source code
414 * Structure of code blocks::    Code block syntax described
415 * Editing source code::         Language major-mode editing
416 * Exporting code blocks::       Export contents and/or results
417 * Extracting source code::      Create pure source code files
418 * Evaluating code blocks::      Place results of evaluation in the Org-mode buffer
419 * Library of Babel::            Use and contribute to a library of useful code blocks
420 * Languages::                   List of supported code block languages
421 * Header arguments::            Configure code block functionality
422 * Results of evaluation::       How evaluation results are handled
423 * Noweb reference syntax::      Literate programming in Org-mode
424 * Key bindings and useful functions::  Work quickly with code blocks
425 * Batch execution::             Call functions from the command line
427 Header arguments
429 * Using header arguments::      Different ways to set header arguments
430 * Specific header arguments::   List of header arguments
432 Using header arguments
434 * System-wide header arguments::  Set global default values
435 * Language-specific header arguments::  Set default values by language
436 * Buffer-wide header arguments::  Set default values for a specific buffer
437 * Header arguments in Org-mode properties::  Set default values for a buffer or heading
438 * Code block specific header arguments::  The most common way to set values
440 Specific header arguments
442 * var::                         Pass arguments to code blocks
443 * results::                     Specify the type of results and how they will
444                                 be collected and handled
445 * file::                        Specify a path for file output
446 * dir::                         Specify the default (possibly remote)
447                                 directory for code block execution
448 * exports::                     Export code and/or results
449 * tangle::                      Toggle tangling and specify file name
450 * comments::                    Toggle insertion of comments in tangled
451                                 code files
452 * no-expand::                   Turn off variable assignment and noweb
453                                 expansion during tangling
454 * session::                     Preserve the state of code evaluation
455 * noweb::                       Toggle expansion of noweb references
456 * cache::                       Avoid re-evaluating unchanged code blocks
457 * hlines::                      Handle horizontal lines in tables
458 * colnames::                    Handle column names in tables
459 * rownames::                    Handle row names in tables
460 * shebang::                     Make tangled files executable
461 * eval::                        Limit evaluation of specific code blocks
463 Miscellaneous
465 * Completion::                  M-TAB knows what you need
466 * Easy Templates::              
467 * Speed keys::                  Electric commands at the beginning of a headline
468 * Code evaluation security::    Org mode files evaluate inline code
469 * Customization::               Adapting Org to your taste
470 * In-buffer settings::          Overview of the #+KEYWORDS
471 * The very busy C-c C-c key::   When in doubt, press C-c C-c
472 * Clean view::                  Getting rid of leading stars in the outline
473 * TTY keys::                    Using Org on a tty
474 * Interaction::                 Other Emacs packages
476 Interaction with other packages
478 * Cooperation::                 Packages Org cooperates with
479 * Conflicts::                   Packages that lead to conflicts
481 Hacking
483 * Hooks::                       Who to reach into Org's internals
484 * Add-on packages::             Available extensions
485 * Adding hyperlink types::      New custom link types
486 * Context-sensitive commands::  How to add functionality to such commands
487 * Tables in arbitrary syntax::  Orgtbl for La@TeX{} and other programs
488 * Dynamic blocks::              Automatically filled blocks
489 * Special agenda views::        Customized views
490 * Extracting agenda information::  Postprocessing of agenda information
491 * Using the property API::      Writing programs that use entry properties
492 * Using the mapping API::       Mapping over all or selected entries
494 Tables and lists in arbitrary syntax
496 * Radio tables::                Sending and receiving radio tables
497 * A LaTeX example::             Step by step, almost a tutorial
498 * Translator functions::        Copy and modify
499 * Radio lists::                 Doing the same for lists
501 MobileOrg
503 * Setting up the staging area::  Where to interact with the mobile device
504 * Pushing to MobileOrg::        Uploading Org files and agendas
505 * Pulling from MobileOrg::      Integrating captured and flagged items
507 @end detailmenu
508 @end menu
510 @node Introduction, Document Structure, Top, Top
511 @chapter Introduction
512 @cindex introduction
514 @menu
515 * Summary::                     Brief summary of what Org does
516 * Installation::                How to install a downloaded version of Org
517 * Activation::                  How to activate Org for certain buffers
518 * Feedback::                    Bug reports, ideas, patches etc.
519 * Conventions::                 Type-setting conventions in the manual
520 @end menu
522 @node Summary, Installation, Introduction, Introduction
523 @section Summary
524 @cindex summary
526 Org is a mode for keeping notes, maintaining TODO lists, and doing
527 project planning with a fast and effective plain-text system.
529 Org develops organizational tasks around NOTES files that contain
530 lists or information about projects as plain text.  Org is
531 implemented on top of Outline mode, which makes it possible to keep the
532 content of large files well structured.  Visibility cycling and
533 structure editing help to work with the tree.  Tables are easily created
534 with a built-in table editor.  Org supports TODO items, deadlines,
535 timestamps, and scheduling.  It dynamically compiles entries into an
536 agenda that utilizes and smoothly integrates much of the Emacs calendar
537 and diary.  Plain text URL-like links connect to websites, emails,
538 Usenet messages, BBDB entries, and any files related to the projects.
539 For printing and sharing of notes, an Org file can be exported as a
540 structured ASCII file, as HTML, or (TODO and agenda items only) as an
541 iCalendar file.  It can also serve as a publishing tool for a set of
542 linked web pages.
544 As a project planning environment, Org works by adding metadata to outline
545 nodes.  Based on this data, specific entries can be extracted in queries and
546 create dynamic @i{agenda views}.
548 Org mode contains the Org Babel environment which allows to work with
549 embedded source code block in a file, to facilitate code evaluation,
550 documentation, and tangling.
552 Org's automatic, context-sensitive table editor with spreadsheet
553 capabilities can be integrated into any major mode by activating the
554 minor Orgtbl mode.  Using a translation step, it can be used to maintain
555 tables in arbitrary file types, for example in La@TeX{}.  The structure
556 editing and list creation capabilities can be used outside Org with
557 the minor Orgstruct mode.
559 Org keeps simple things simple.  When first fired up, it should
560 feel like a straightforward, easy to use outliner.  Complexity is not
561 imposed, but a large amount of functionality is available when you need
562 it.  Org is a toolbox and can be used in different ways and for different
563 ends, for example:
565 @example
566 @r{@bullet{} an outline extension with visibility cycling and structure editing}
567 @r{@bullet{} an ASCII system and table editor for taking structured notes}
568 @r{@bullet{} a TODO list editor}
569 @r{@bullet{} a full agenda and planner with deadlines and work scheduling}
570 @pindex GTD, Getting Things Done
571 @r{@bullet{} an environment in which to implement David Allen's GTD system}
572 @r{@bullet{} a simple hypertext system, with HTML and La@TeX{} export}
573 @r{@bullet{} a publishing tool to create a set of interlinked webpages}
574 @r{@bullet{} an environment for literate programming}
575 @end example
578 @cindex FAQ
579 There is a website for Org which provides links to the newest
580 version of Org, as well as additional information, frequently asked
581 questions (FAQ), links to tutorials, etc@.  This page is located at
582 @uref{http://orgmode.org}.
584 @page
587 @node Installation, Activation, Summary, Introduction
588 @section Installation
589 @cindex installation
590 @cindex XEmacs
592 @b{Important:} @i{If you are using a version of Org that is part of the Emacs
593 distribution or an XEmacs package, please skip this section and go directly
594 to @ref{Activation}.}
596 If you have downloaded Org from the Web, either as a distribution @file{.zip}
597 or @file{.tar} file, or as a Git archive, you must take the following steps
598 to install it: go into the unpacked Org distribution directory and edit the
599 top section of the file @file{Makefile}.  You must set the name of the Emacs
600 binary (likely either @file{emacs} or @file{xemacs}), and the paths to the
601 directories where local Lisp and Info files are kept.  If you don't have
602 access to the system-wide directories, you can simply run Org directly from
603 the distribution directory by adding the @file{lisp} subdirectory to the
604 Emacs load path.  To do this, add the following line to @file{.emacs}:
606 @example
607 (setq load-path (cons "~/path/to/orgdir/lisp" load-path))
608 @end example
610 @noindent
611 If you plan to use code from the @file{contrib} subdirectory, do a similar
612 step for this directory:
614 @example
615 (setq load-path (cons "~/path/to/orgdir/contrib/lisp" load-path))
616 @end example
618 @sp 2
619 @cartouche
620 XEmacs users now need to install the file @file{noutline.el} from
621 the @file{xemacs} sub-directory of the Org distribution.  Use the
622 command:
624 @example
625      make install-noutline
626 @end example
627 @end cartouche
628 @sp 2
630 @noindent Now byte-compile the Lisp files with the shell command:
632 @example
633 make
634 @end example
636 @noindent If you are running Org from the distribution directory, this is
637 all.  If you want to install Org into the system directories, use (as
638 administrator)
640 @example
641 make install
642 @end example
644 Installing Info files is system dependent, because of differences in the
645 @file{install-info} program.  In Debian it copies the info files into the
646 correct directory and modifies the info directory file.  In many other
647 systems, the files need to be copied to the correct directory separately, and
648 @file{install-info} then only modifies the directory file.  Check your system
649 documentation to find out which of the following commands you need:
651 @example
652 make install-info
653 make install-info-debian
654 @end example
656 Then add the following line to @file{.emacs}.  It is needed so that
657 Emacs can autoload functions that are located in files not immediately loaded
658 when Org-mode starts.
659 @lisp
660 (require 'org-install)
661 @end lisp
663 Do not forget to activate Org as described in the following section.
664 @page
666 @node Activation, Feedback, Installation, Introduction
667 @section Activation
668 @cindex activation
669 @cindex autoload
670 @cindex global key bindings
671 @cindex key bindings, global
673 Add the following lines to your @file{.emacs} file.  The last three lines
674 define @emph{global} keys for the commands @command{org-store-link},
675 @command{org-agenda}, and @command{org-iswitchb}---please choose suitable
676 keys yourself.
678 @lisp
679 ;; The following lines are always needed.  Choose your own keys.
680 (add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
681 (global-set-key "\C-cl" 'org-store-link)
682 (global-set-key "\C-ca" 'org-agenda)
683 (global-set-key "\C-cb" 'org-iswitchb)
684 @end lisp
686 Furthermore, you must activate @code{font-lock-mode} in Org
687 buffers, because significant functionality depends on font-locking being
688 active.  You can do this with either one of the following two lines
689 (XEmacs users must use the second option):
690 @lisp
691 (global-font-lock-mode 1)                     ; for all buffers
692 (add-hook 'org-mode-hook 'turn-on-font-lock)  ; Org buffers only
693 @end lisp
695 @cindex Org-mode, turning on
696 With this setup, all files with extension @samp{.org} will be put
697 into Org-mode.  As an alternative, make the first line of a file look
698 like this:
700 @example
701 MY PROJECTS    -*- mode: org; -*-
702 @end example
704 @vindex org-insert-mode-line-in-empty-file
705 @noindent which will select Org-mode for this buffer no matter what
706 the file's name is.  See also the variable
707 @code{org-insert-mode-line-in-empty-file}.
709 Many commands in Org work on the region if the region is @i{active}.  To make
710 use of this, you need to have @code{transient-mark-mode}
711 (@code{zmacs-regions} in XEmacs) turned on.  In Emacs 23 this is the default,
712 in Emacs 22 you need to do this yourself with
713 @lisp
714 (transient-mark-mode 1)
715 @end lisp
716 @noindent If you do not like @code{transient-mark-mode}, you can create an
717 active region by using the mouse to select a region, or pressing
718 @kbd{C-@key{SPC}} twice before moving the cursor.
720 @node Feedback, Conventions, Activation, Introduction
721 @section Feedback
722 @cindex feedback
723 @cindex bug reports
724 @cindex maintainer
725 @cindex author
727 If you find problems with Org, or if you have questions, remarks, or ideas
728 about it, please mail to the Org mailing list @email{emacs-orgmode@@gnu.org}.
729 If you are not a member of the mailing list, your mail will be passed to the
730 list after a moderator has approved it.
732 For bug reports, please provide as much information as possible, including
733 the version information of Emacs (@kbd{M-x emacs-version @key{RET}}) and Org
734 (@kbd{M-x org-version @key{RET}}), as well as the Org related setup in
735 @file{.emacs}.  The easiest way to do this is to use the command
736 @example
737 @kbd{M-x org-submit-bug-report}
738 @end example
739 @noindent which will put all this information into an Emacs mail buffer so
740 that you only need to add your description.  If you re not sending the Email
741 from within Emacs, please copy and paste the content into your Email program.
743 If an error occurs, a backtrace can be very useful (see below on how to
744 create one).  Often a small example file helps, along with clear information
745 about:
747 @enumerate
748 @item What exactly did you do?
749 @item What did you expect to happen?
750 @item What happened instead?
751 @end enumerate
752 @noindent Thank you for helping to improve this mode.
754 @subsubheading How to create a useful backtrace
756 @cindex backtrace of an error
757 If working with Org produces an error with a message you don't
758 understand, you may have hit a bug.  The best way to report this is by
759 providing, in addition to what was mentioned above, a @emph{backtrace}.
760 This is information from the built-in debugger about where and how the
761 error occurred.  Here is how to produce a useful backtrace:
763 @enumerate
764 @item
765 Reload uncompiled versions of all Org-mode Lisp files.  The backtrace
766 contains much more information if it is produced with uncompiled code.
767 To do this, use
768 @example
769 C-u M-x org-reload RET
770 @end example
771 @noindent
772 or select @code{Org -> Refresh/Reload -> Reload Org uncompiled} from the
773 menu.
774 @item
775 Go to the @code{Options} menu and select @code{Enter Debugger on Error}
776 (XEmacs has this option in the @code{Troubleshooting} sub-menu).
777 @item
778 Do whatever you have to do to hit the error.  Don't forget to
779 document the steps you take.
780 @item
781 When you hit the error, a @file{*Backtrace*} buffer will appear on the
782 screen.  Save this buffer to a file (for example using @kbd{C-x C-w}) and
783 attach it to your bug report.
784 @end enumerate
786 @node Conventions,  , Feedback, Introduction
787 @section Typesetting conventions used in this manual
789 Org uses three types of keywords: TODO keywords, tags, and property
790 names.  In this manual we use the following conventions:
792 @table @code
793 @item TODO
794 @itemx WAITING
795 TODO keywords are written with all capitals, even if they are
796 user-defined.
797 @item boss
798 @itemx ARCHIVE
799 User-defined tags are written in lowercase; built-in tags with special
800 meaning are written with all capitals.
801 @item Release
802 @itemx PRIORITY
803 User-defined properties are capitalized; built-in properties with
804 special meaning are written with all capitals.
805 @end table
807 @node Document Structure, Tables, Introduction, Top
808 @chapter Document structure
809 @cindex document structure
810 @cindex structure of document
812 Org is based on Outline mode and provides flexible commands to
813 edit the structure of the document.
815 @menu
816 * Outlines::                    Org is based on Outline mode
817 * Headlines::                   How to typeset Org tree headlines
818 * Visibility cycling::          Show and hide, much simplified
819 * Motion::                      Jumping to other headlines
820 * Structure editing::           Changing sequence and level of headlines
821 * Sparse trees::                Matches embedded in context
822 * Plain lists::                 Additional structure within an entry
823 * Drawers::                     Tucking stuff away
824 * Blocks::                      Folding blocks
825 * Footnotes::                   How footnotes are defined in Org's syntax
826 * Orgstruct mode::              Structure editing outside Org
827 @end menu
829 @node Outlines, Headlines, Document Structure, Document Structure
830 @section Outlines
831 @cindex outlines
832 @cindex Outline mode
834 Org is implemented on top of Outline mode.  Outlines allow a
835 document to be organized in a hierarchical structure, which (at least
836 for me) is the best representation of notes and thoughts.  An overview
837 of this structure is achieved by folding (hiding) large parts of the
838 document to show only the general document structure and the parts
839 currently being worked on.  Org greatly simplifies the use of
840 outlines by compressing the entire show/hide functionality into a single
841 command, @command{org-cycle}, which is bound to the @key{TAB} key.
843 @node Headlines, Visibility cycling, Outlines, Document Structure
844 @section Headlines
845 @cindex headlines
846 @cindex outline tree
847 @vindex org-special-ctrl-a/e
848 @vindex org-special-ctrl-k
849 @vindex org-ctrl-k-protect-subtree
851 Headlines define the structure of an outline tree.  The headlines in Org
852 start with one or more stars, on the left margin@footnote{See the variables
853 @code{org-special-ctrl-a/e}, @code{org-special-ctrl-k}, and
854 @code{org-ctrl-k-protect-subtree} to configure special behavior of @kbd{C-a},
855 @kbd{C-e}, and @kbd{C-k} in headlines.}.  For example:
857 @example
858 * Top level headline
859 ** Second level
860 *** 3rd level
861     some text
862 *** 3rd level
863     more text
865 * Another top level headline
866 @end example
868 @noindent Some people find the many stars too noisy and would prefer an
869 outline that has whitespace followed by a single star as headline
870 starters.  @ref{Clean view}, describes a setup to realize this.
872 @vindex org-cycle-separator-lines
873 An empty line after the end of a subtree is considered part of it and
874 will be hidden when the subtree is folded.  However, if you leave at
875 least two empty lines, one empty line will remain visible after folding
876 the subtree, in order to structure the collapsed view.  See the
877 variable @code{org-cycle-separator-lines} to modify this behavior.
879 @node Visibility cycling, Motion, Headlines, Document Structure
880 @section Visibility cycling
881 @cindex cycling, visibility
882 @cindex visibility cycling
883 @cindex trees, visibility
884 @cindex show hidden text
885 @cindex hide text
887 Outlines make it possible to hide parts of the text in the buffer.
888 Org uses just two commands, bound to @key{TAB} and
889 @kbd{S-@key{TAB}} to change the visibility in the buffer.
891 @cindex subtree visibility states
892 @cindex subtree cycling
893 @cindex folded, subtree visibility state
894 @cindex children, subtree visibility state
895 @cindex subtree, subtree visibility state
896 @table @kbd
897 @kindex @key{TAB}
898 @item @key{TAB}
899 @emph{Subtree cycling}: Rotate current subtree among the states
901 @example
902 ,-> FOLDED -> CHILDREN -> SUBTREE --.
903 '-----------------------------------'
904 @end example
906 @vindex org-cycle-emulate-tab
907 @vindex org-cycle-global-at-bob
908 The cursor must be on a headline for this to work@footnote{see, however,
909 the option @code{org-cycle-emulate-tab}.}.  When the cursor is at the
910 beginning of the buffer and the first line is not a headline, then
911 @key{TAB} actually runs global cycling (see below)@footnote{see the
912 option @code{org-cycle-global-at-bob}.}.  Also when called with a prefix
913 argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
915 @cindex global visibility states
916 @cindex global cycling
917 @cindex overview, global visibility state
918 @cindex contents, global visibility state
919 @cindex show all, global visibility state
920 @kindex S-@key{TAB}
921 @item S-@key{TAB}
922 @itemx C-u @key{TAB}
923 @emph{Global cycling}: Rotate the entire buffer among the states
925 @example
926 ,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
927 '--------------------------------------'
928 @end example
930 When @kbd{S-@key{TAB}} is called with a numeric prefix argument N, the
931 CONTENTS view up to headlines of level N will be shown.  Note that inside
932 tables, @kbd{S-@key{TAB}} jumps to the previous field.
934 @cindex show all, command
935 @kindex C-u C-u C-u @key{TAB}
936 @item C-u C-u C-u @key{TAB}
937 Show all, including drawers.
938 @kindex C-c C-r
939 @item C-c C-r
940 Reveal context around point, showing the current entry, the following heading
941 and the hierarchy above.  Useful for working near a location that has been
942 exposed by a sparse tree command (@pxref{Sparse trees}) or an agenda command
943 (@pxref{Agenda commands}).  With a prefix argument show, on each
944 level, all sibling headings.  With double prefix arg, also show the entire
945 subtree of the parent.
946 @kindex C-c C-k
947 @item C-c C-k
948 Expose all the headings of the subtree, CONTENT view for just one subtree.
949 @kindex C-c C-x b
950 @item C-c C-x b
951 Show the current subtree in an indirect buffer@footnote{The indirect
952 buffer
953 @ifinfo
954 (@pxref{Indirect Buffers,,,emacs,GNU Emacs Manual})
955 @end ifinfo
956 @ifnotinfo
957 (see the Emacs manual for more information about indirect buffers)
958 @end ifnotinfo
959 will contain the entire buffer, but will be narrowed to the current
960 tree.  Editing the indirect buffer will also change the original buffer,
961 but without affecting visibility in that buffer.}.  With a numeric
962 prefix argument N, go up to level N and then take that tree.  If N is
963 negative then go up that many levels.  With a @kbd{C-u} prefix, do not remove
964 the previously used indirect buffer.
965 @end table
967 @vindex org-startup-folded
968 @cindex @code{overview}, STARTUP keyword
969 @cindex @code{content}, STARTUP keyword
970 @cindex @code{showall}, STARTUP keyword
971 @cindex @code{showeverything}, STARTUP keyword
973 When Emacs first visits an Org file, the global state is set to
974 OVERVIEW, i.e. only the top level headlines are visible.  This can be
975 configured through the variable @code{org-startup-folded}, or on a
976 per-file basis by adding one of the following lines anywhere in the
977 buffer:
979 @example
980 #+STARTUP: overview
981 #+STARTUP: content
982 #+STARTUP: showall
983 #+STARTUP: showeverything
984 @end example
986 @cindex property, VISIBILITY
987 @noindent
988 Furthermore, any entries with a @samp{VISIBILITY} property (@pxref{Properties
989 and Columns}) will get their visibility adapted accordingly.  Allowed values
990 for this property are @code{folded}, @code{children}, @code{content}, and
991 @code{all}.
992 @table @kbd
993 @kindex C-u C-u @key{TAB}
994 @item C-u C-u @key{TAB}
995 Switch back to the startup visibility of the buffer, i.e. whatever is
996 requested by startup options and @samp{VISIBILITY} properties in individual
997 entries.
998 @end table
1000 @node Motion, Structure editing, Visibility cycling, Document Structure
1001 @section Motion
1002 @cindex motion, between headlines
1003 @cindex jumping, to headlines
1004 @cindex headline navigation
1005 The following commands jump to other headlines in the buffer.
1007 @table @kbd
1008 @kindex C-c C-n
1009 @item C-c C-n
1010 Next heading.
1011 @kindex C-c C-p
1012 @item C-c C-p
1013 Previous heading.
1014 @kindex C-c C-f
1015 @item C-c C-f
1016 Next heading same level.
1017 @kindex C-c C-b
1018 @item C-c C-b
1019 Previous heading same level.
1020 @kindex C-c C-u
1021 @item C-c C-u
1022 Backward to higher level heading.
1023 @kindex C-c C-j
1024 @item C-c C-j
1025 Jump to a different place without changing the current outline
1026 visibility.  Shows the document structure in a temporary buffer, where
1027 you can use the following keys to find your destination:
1028 @vindex org-goto-auto-isearch
1029 @example
1030 @key{TAB}         @r{Cycle visibility.}
1031 @key{down} / @key{up}   @r{Next/previous visible headline.}
1032 @key{RET}         @r{Select this location.}
1033 @kbd{/}           @r{Do a Sparse-tree search}
1034 @r{The following keys work if you turn off @code{org-goto-auto-isearch}}
1035 n / p        @r{Next/previous visible headline.}
1036 f / b        @r{Next/previous headline same level.}
1037 u            @r{One level up.}
1038 0-9          @r{Digit argument.}
1039 q            @r{Quit}
1040 @end example
1041 @vindex org-goto-interface
1042 @noindent
1043 See also the variable @code{org-goto-interface}.
1044 @end table
1046 @node Structure editing, Sparse trees, Motion, Document Structure
1047 @section Structure editing
1048 @cindex structure editing
1049 @cindex headline, promotion and demotion
1050 @cindex promotion, of subtrees
1051 @cindex demotion, of subtrees
1052 @cindex subtree, cut and paste
1053 @cindex pasting, of subtrees
1054 @cindex cutting, of subtrees
1055 @cindex copying, of subtrees
1056 @cindex sorting, of subtrees
1057 @cindex subtrees, cut and paste
1059 @table @kbd
1060 @kindex M-@key{RET}
1061 @item M-@key{RET}
1062 @vindex org-M-RET-may-split-line
1063 Insert new heading with same level as current.  If the cursor is in a
1064 plain list item, a new item is created (@pxref{Plain lists}).  To force
1065 creation of a new headline, use a prefix argument, or first press @key{RET}
1066 to get to the beginning of the next line.  When this command is used in
1067 the middle of a line, the line is split and the rest of the line becomes
1068 the new headline@footnote{If you do not want the line to be split,
1069 customize the variable @code{org-M-RET-may-split-line}.}.  If the
1070 command is used at the beginning of a headline, the new headline is
1071 created before the current line.  If at the beginning of any other line,
1072 the content of that line is made the new heading.  If the command is
1073 used at the end of a folded subtree (i.e. behind the ellipses at the end
1074 of a headline), then a headline like the current one will be inserted
1075 after the end of the subtree.
1076 @kindex C-@key{RET}
1077 @item C-@key{RET}
1078 Just like @kbd{M-@key{RET}}, except when adding a new heading below the
1079 current heading, the new heading is placed after the body instead of before
1080 it.  This command works from anywhere in the entry.
1081 @kindex M-S-@key{RET}
1082 @item M-S-@key{RET}
1083 @vindex org-treat-insert-todo-heading-as-state-change
1084 Insert new TODO entry with same level as current heading.  See also the
1085 variable @code{org-treat-insert-todo-heading-as-state-change}.
1086 @kindex C-S-@key{RET}
1087 @item C-S-@key{RET}
1088 Insert new TODO entry with same level as current heading.  Like
1089 @kbd{C-@key{RET}}, the new headline will be inserted after the current
1090 subtree.
1091 @kindex @key{TAB}
1092 @item @key{TAB} @r{in new, empty entry}
1093 In a new entry with no text yet, the first @key{TAB} demotes the entry to
1094 become a child of the previous one.  The next @key{TAB} makes it a parent,
1095 and so on, all the way to top level.  Yet another @key{TAB}, and you are back
1096 to the initial level.
1097 @kindex M-@key{left}
1098 @item M-@key{left}
1099 Promote current heading by one level.
1100 @kindex M-@key{right}
1101 @item M-@key{right}
1102 Demote current heading by one level.
1103 @kindex M-S-@key{left}
1104 @item M-S-@key{left}
1105 Promote the current subtree by one level.
1106 @kindex M-S-@key{right}
1107 @item M-S-@key{right}
1108 Demote the current subtree by one level.
1109 @kindex M-S-@key{up}
1110 @item M-S-@key{up}
1111 Move subtree up (swap with previous subtree of same
1112 level).
1113 @kindex M-S-@key{down}
1114 @item M-S-@key{down}
1115 Move subtree down (swap with next subtree of same level).
1116 @kindex C-c C-x C-w
1117 @item C-c C-x C-w
1118 Kill subtree, i.e. remove it from buffer but save in kill ring.
1119 With a numeric prefix argument N, kill N sequential subtrees.
1120 @kindex C-c C-x M-w
1121 @item C-c C-x M-w
1122 Copy subtree to kill ring.  With a numeric prefix argument N, copy the N
1123 sequential subtrees.
1124 @kindex C-c C-x C-y
1125 @item C-c C-x C-y
1126 Yank subtree from kill ring.  This does modify the level of the subtree to
1127 make sure the tree fits in nicely at the yank position.  The yank level can
1128 also be specified with a numeric prefix argument, or by yanking after a
1129 headline marker like @samp{****}.
1130 @kindex C-y
1131 @item C-y
1132 @vindex org-yank-adjusted-subtrees
1133 @vindex org-yank-folded-subtrees
1134 Depending on the variables @code{org-yank-adjusted-subtrees} and
1135 @code{org-yank-folded-subtrees}, Org's internal @code{yank} command will
1136 paste subtrees folded and in a clever way, using the same command as @kbd{C-c
1137 C-x C-y}.  With the default settings, no level adjustment will take place,
1138 but the yanked tree will be folded unless doing so would swallow text
1139 previously visible.  Any prefix argument to this command will force a normal
1140 @code{yank} to be executed, with the prefix passed along.  A good way to
1141 force a normal yank is @kbd{C-u C-y}.  If you use @code{yank-pop} after a
1142 yank, it will yank previous kill items plainly, without adjustment and
1143 folding.
1144 @kindex C-c C-x c
1145 @item C-c C-x c
1146 Clone a subtree by making a number of sibling copies of it.  You will be
1147 prompted for the number of copies to make, and you can also specify if any
1148 timestamps in the entry should be shifted.  This can be useful, for example,
1149 to create a number of tasks related to a series of lectures to prepare.  For
1150 more details, see the docstring of the command
1151 @code{org-clone-subtree-with-time-shift}.
1152 @kindex C-c C-w
1153 @item C-c C-w
1154 Refile entry or region to a different location.  @xref{Refiling notes}.
1155 @kindex C-c ^
1156 @item C-c ^
1157 Sort same-level entries.  When there is an active region, all entries in the
1158 region will be sorted.  Otherwise the children of the current headline are
1159 sorted.  The command prompts for the sorting method, which can be
1160 alphabetically, numerically, by time (first timestamp with active preferred,
1161 creation time, scheduled time, deadline time), by priority, by TODO keyword
1162 (in the sequence the keywords have been defined in the setup) or by the value
1163 of a property.  Reverse sorting is possible as well.  You can also supply
1164 your own function to extract the sorting key.  With a @kbd{C-u} prefix,
1165 sorting will be case-sensitive.  With two @kbd{C-u C-u} prefixes, duplicate
1166 entries will also be removed.
1167 @kindex C-x n s
1168 @item C-x n s
1169 Narrow buffer to current subtree.
1170 @kindex C-x n w
1171 @item C-x n w
1172 Widen buffer to remove narrowing.
1173 @kindex C-c *
1174 @item C-c *
1175 Turn a normal line or plain list item into a headline (so that it becomes a
1176 subheading at its location).  Also turn a headline into a normal line by
1177 removing the stars.  If there is an active region, turn all lines in the
1178 region into headlines.  If the first line in the region was an item, turn
1179 only the item lines into headlines.  Finally, if the first line is a
1180 headline, remove the stars from all headlines in the region.
1181 @end table
1183 @cindex region, active
1184 @cindex active region
1185 @cindex transient mark mode
1186 When there is an active region (Transient Mark mode), promotion and
1187 demotion work on all headlines in the region.  To select a region of
1188 headlines, it is best to place both point and mark at the beginning of a
1189 line, mark at the beginning of the first headline, and point at the line
1190 just after the last headline to change.  Note that when the cursor is
1191 inside a table (@pxref{Tables}), the Meta-Cursor keys have different
1192 functionality.
1195 @node Sparse trees, Plain lists, Structure editing, Document Structure
1196 @section Sparse trees
1197 @cindex sparse trees
1198 @cindex trees, sparse
1199 @cindex folding, sparse trees
1200 @cindex occur, command
1202 @vindex org-show-hierarchy-above
1203 @vindex org-show-following-heading
1204 @vindex org-show-siblings
1205 @vindex org-show-entry-below
1206 An important feature of Org-mode is the ability to construct @emph{sparse
1207 trees} for selected information in an outline tree, so that the entire
1208 document is folded as much as possible, but the selected information is made
1209 visible along with the headline structure above it@footnote{See also the
1210 variables @code{org-show-hierarchy-above}, @code{org-show-following-heading},
1211 @code{org-show-siblings}, and @code{org-show-entry-below} for detailed
1212 control on how much context is shown around each match.}.  Just try it out
1213 and you will see immediately how it works.
1215 Org-mode contains several commands creating such trees, all these
1216 commands can be accessed through a dispatcher:
1218 @table @kbd
1219 @kindex C-c /
1220 @item C-c /
1221 This prompts for an extra key to select a sparse-tree creating command.
1222 @kindex C-c / r
1223 @item C-c / r
1224 @vindex org-remove-highlights-with-change
1225 Occur.  Prompts for a regexp and shows a sparse tree with all matches.  If
1226 the match is in a headline, the headline is made visible.  If the match is in
1227 the body of an entry, headline and body are made visible.  In order to
1228 provide minimal context, also the full hierarchy of headlines above the match
1229 is shown, as well as the headline following the match.  Each match is also
1230 highlighted; the highlights disappear when the buffer is changed by an
1231 editing command@footnote{This depends on the option
1232 @code{org-remove-highlights-with-change}}, or by pressing @kbd{C-c C-c}.
1233 When called with a @kbd{C-u} prefix argument, previous highlights are kept,
1234 so several calls to this command can be stacked.
1235 @end table
1237 @noindent
1238 @vindex org-agenda-custom-commands
1239 For frequently used sparse trees of specific search strings, you can
1240 use the variable @code{org-agenda-custom-commands} to define fast
1241 keyboard access to specific sparse trees.  These commands will then be
1242 accessible through the agenda dispatcher (@pxref{Agenda dispatcher}).
1243 For example:
1245 @lisp
1246 (setq org-agenda-custom-commands
1247       '(("f" occur-tree "FIXME")))
1248 @end lisp
1250 @noindent will define the key @kbd{C-c a f} as a shortcut for creating
1251 a sparse tree matching the string @samp{FIXME}.
1253 The other sparse tree commands select headings based on TODO keywords,
1254 tags, or properties and will be discussed later in this manual.
1256 @kindex C-c C-e v
1257 @cindex printing sparse trees
1258 @cindex visible text, printing
1259 To print a sparse tree, you can use the Emacs command
1260 @code{ps-print-buffer-with-faces} which does not print invisible parts
1261 of the document @footnote{This does not work under XEmacs, because
1262 XEmacs uses selective display for outlining, not text properties.}.
1263 Or you can use the command @kbd{C-c C-e v} to export only the visible
1264 part of the document and print the resulting file.
1266 @node Plain lists, Drawers, Sparse trees, Document Structure
1267 @section Plain lists
1268 @cindex plain lists
1269 @cindex lists, plain
1270 @cindex lists, ordered
1271 @cindex ordered lists
1273 Within an entry of the outline tree, hand-formatted lists can provide
1274 additional structure.  They also provide a way to create lists of
1275 checkboxes (@pxref{Checkboxes}).  Org supports editing such lists,
1276 and the HTML exporter (@pxref{Exporting}) parses and formats them.
1278 Org knows ordered lists, unordered lists, and description lists.
1279 @itemize @bullet
1280 @item
1281 @emph{Unordered} list items start with @samp{-}, @samp{+}, or
1282 @samp{*}@footnote{When using @samp{*} as a bullet, lines must be indented or
1283 they will be seen as top-level headlines.  Also, when you are hiding leading
1284 stars to get a clean outline view, plain list items starting with a star are
1285 visually indistinguishable from true headlines.  In short: even though
1286 @samp{*} is supported, it may be better to not use it for plain list items.}
1287 as bullets.
1288 @item
1289 @emph{Ordered} list items start with a numeral followed by either a period or
1290 a right parenthesis, such as @samp{1.} or @samp{1)}.  If you want a list to
1291 start a different value (e.g. 20), start the text of the item with
1292 @code{[@@start:20]}.
1293 @item
1294 @emph{Description} list items are unordered list items, and contain the
1295 separator @samp{ :: } to separate the description @emph{term} from the
1296 description.
1297 @end itemize
1299 @vindex org-empty-line-terminates-plain-lists
1300 Items belonging to the same list must have the same indentation on the first
1301 line.  In particular, if an ordered list reaches number @samp{10.}, then the
1302 2--digit numbers must be written left-aligned with the other numbers in the
1303 list.  Indentation also determines the end of a list item.  It ends before
1304 the next line that is indented like the bullet/number, or less.  Empty lines
1305 are part of the previous item, so you can have several paragraphs in one
1306 item.  If you would like an empty line to terminate all currently open plain
1307 lists, configure the variable @code{org-empty-line-terminates-plain-lists}.
1308 Here is an example:
1310 @example
1311 @group
1312 ** Lord of the Rings
1313    My favorite scenes are (in this order)
1314    1. The attack of the Rohirrim
1315    2. Eowyn's fight with the witch king
1316       + this was already my favorite scene in the book
1317       + I really like Miranda Otto.
1318    3. Peter Jackson being shot by Legolas
1319        - on DVD only
1320       He makes a really funny face when it happens.
1321    But in the end, no individual scenes matter but the film as a whole.
1322    Important actors in this film are:
1323    - @b{Elijah Wood} :: He plays Frodo
1324    - @b{Sean Austin} :: He plays Sam, Frodo's friend.  I still remember
1325      him very well from his role as Mikey Walsh in @i{The Goonies}.
1326 @end group
1327 @end example
1329 Org supports these lists by tuning filling and wrapping commands to deal with
1330 them correctly@footnote{Org only changes the filling settings for Emacs.  For
1331 XEmacs, you should use Kyle E. Jones' @file{filladapt.el}.  To turn this on,
1332 put into @file{.emacs}: @code{(require 'filladapt)}}, and by exporting them
1333 properly (@pxref{Exporting}).  Since indentation is what governs the
1334 structure of these lists, many structural constructs like @code{#+BEGIN_...}
1335 blocks can be indented to signal that they should be part of a list item.
1337 @vindex org-list-demote-modify-bullet
1338 If you find that using a different bullet for a sub-list (than that used for
1339 the current list-level) improves readability, customize the variable
1340 @code{org-list-demote-modify-bullet}.
1342 The following commands act on items when the cursor is in the first line
1343 of an item (the line with the bullet or number).
1345 @table @kbd
1346 @kindex @key{TAB}
1347 @item @key{TAB}
1348 @vindex org-cycle-include-plain-lists
1349 Items can be folded just like headline levels.  Normally this works only if
1350 the cursor is on a plain list item.  For more details, see the variable
1351 @code{org-cycle-include-plain-lists}. to @code{integrate}, plain list items
1352 will be treated like low-level.  The level of an item is then given by the
1353 indentation of the bullet/number.  Items are always subordinate to real
1354 headlines, however; the hierarchies remain completely separated.
1356 If @code{org-cycle-include-plain-lists} has not been set, @key{TAB}
1357 fixes the indentation of the current line in a heuristic way.
1358 @kindex M-@key{RET}
1359 @item M-@key{RET}
1360 @vindex org-M-RET-may-split-line
1361 Insert new item at current level.  With a prefix argument, force a new
1362 heading (@pxref{Structure editing}).  If this command is used in the middle
1363 of a line, the line is @emph{split} and the rest of the line becomes the new
1364 item@footnote{If you do not want the line to be split, customize the variable
1365 @code{org-M-RET-may-split-line}.}.  If this command is executed in the
1366 @emph{whitespace before a bullet or number}, the new item is created
1367 @emph{before} the current item.  If the command is executed in the white
1368 space before the text that is part of an item but does not contain the
1369 bullet, a bullet is added to the current line.
1370 @kindex M-S-@key{RET}
1371 @item M-S-@key{RET}
1372 Insert a new item with a checkbox (@pxref{Checkboxes}).
1373 @kindex @key{TAB}
1374 @item @key{TAB} @r{in new, empty item}
1375 In a new item with no text yet, the first @key{TAB} demotes the item to
1376 become a child of the previous one.  The next @key{TAB} makes it a parent,
1377 and so on, all the way to the left margin.  Yet another @key{TAB}, and you
1378 are back to the initial level.
1379 @kindex S-@key{up}
1380 @kindex S-@key{down}
1381 @item S-@key{up}
1382 @itemx S-@key{down}
1383 @cindex shift-selection-mode
1384 @vindex org-support-shift-select
1385 Jump to the previous/next item in the current list, but only if
1386 @code{org-support-shift-select} is off.  If not, you can still use paragraph
1387 jumping commands like @kbd{C-@key{up}} and @kbd{C-@key{down}} to quite
1388 similar effect.
1389 @kindex M-S-@key{up}
1390 @kindex M-S-@key{down}
1391 @item M-S-@key{up}
1392 @itemx M-S-@key{down}
1393 Move the item including subitems up/down (swap with previous/next item
1394 of same indentation).  If the list is ordered, renumbering is
1395 automatic.
1396 @kindex M-@key{left}
1397 @kindex M-@key{right}
1398 @item M-@key{left}
1399 @itemx M-@key{right}
1400 Decrease/increase the indentation of an item, leaving children alone.
1401 @kindex M-S-@key{left}
1402 @kindex M-S-@key{right}
1403 @item M-S-@key{left}
1404 @itemx M-S-@key{right}
1405 Decrease/increase the indentation of the item, including subitems.
1406 Initially, the item tree is selected based on current indentation.
1407 When these commands are executed several times in direct succession,
1408 the initially selected region is used, even if the new indentation
1409 would imply a different hierarchy.  To use the new hierarchy, break
1410 the command chain with a cursor motion or so.
1411 @kindex C-c C-c
1412 @item C-c C-c
1413 If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the
1414 state of the checkbox.  If not, this command makes sure that all the
1415 items on this list level use the same bullet.  Furthermore, if this is
1416 an ordered list, make sure the numbering is OK.
1417 @kindex C-c -
1418 @item C-c -
1419 Cycle the entire list level through the different itemize/enumerate bullets
1420 (@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}).  With a numeric prefix
1421 argument N, select the Nth bullet from this list.  If there is an active
1422 region when calling this, all lines will be converted to list items.  If the
1423 first line already was a list item, any item markers will be removed from the
1424 list.  Finally, even without an active region, a normal line will be
1425 converted into a list item.
1426 @kindex C-c *
1427 @item C-c *
1428 Turn a plain list item into a headline (so that it becomes a subheading at
1429 its location). @xref{Structure editing}, for a detailed explanation.
1430 @kindex S-@key{left}
1431 @kindex S-@key{right}
1432 @item S-@key{left}/@key{right}
1433 @vindex org-support-shift-select
1434 This command also cycles bullet styles when the cursor in on the bullet or
1435 anywhere in an item line, details depending on
1436 @code{org-support-shift-select}.
1437 @kindex C-c ^
1438 @item C-c ^
1439 Sort the plain list.  You will be prompted for the sorting method:
1440 numerically, alphabetically, by time, or by custom function.
1441 @end table
1443 @node Drawers, Blocks, Plain lists, Document Structure
1444 @section Drawers
1445 @cindex drawers
1446 @cindex #+DRAWERS
1447 @cindex visibility cycling, drawers
1449 @vindex org-drawers
1450 Sometimes you want to keep information associated with an entry, but you
1451 normally don't want to see it.  For this, Org-mode has @emph{drawers}.
1452 Drawers need to be configured with the variable
1453 @code{org-drawers}@footnote{You can define drawers on a per-file basis
1454 with a line like @code{#+DRAWERS: HIDDEN PROPERTIES STATE}}.  Drawers
1455 look like this:
1457 @example
1458 ** This is a headline
1459    Still outside the drawer
1460    :DRAWERNAME:
1461       This is inside the drawer.
1462    :END:
1463    After the drawer.
1464 @end example
1466 Visibility cycling (@pxref{Visibility cycling}) on the headline will hide and
1467 show the entry, but keep the drawer collapsed to a single line.  In order to
1468 look inside the drawer, you need to move the cursor to the drawer line and
1469 press @key{TAB} there.  Org-mode uses the @code{PROPERTIES} drawer for
1470 storing properties (@pxref{Properties and Columns}), and you can also arrange
1471 for state change notes (@pxref{Tracking TODO state changes}) and clock times
1472 (@pxref{Clocking work time}) to be stored in a drawer @code{LOGBOOK}.  If you
1473 want to store a quick note in the LOGBOOK drawer, in a similar way as this is
1474 done by state changes, use
1476 @table @kbd
1477 @kindex C-c C-z
1478 @item C-c C-z
1479 Add a time-stamped note to the LOGBOOK drawer.
1480 @end table
1482 @node Blocks, Footnotes, Drawers, Document Structure
1483 @section Blocks
1485 @vindex org-hide-block-startup
1486 @cindex blocks, folding
1487 Org-mode uses begin...end blocks for various purposes from including source
1488 code examples (@pxref{Literal examples}) to capturing time logging
1489 information (@pxref{Clocking work time}).  These blocks can be folded and
1490 unfolded by pressing TAB in the begin line.  You can also get all blocks
1491 folded at startup by configuring the variable @code{org-hide-block-startup}
1492 or on a per-file basis by using
1494 @cindex @code{hideblocks}, STARTUP keyword
1495 @cindex @code{nohideblocks}, STARTUP keyword
1496 @example
1497 #+STARTUP: hideblocks
1498 #+STARTUP: nohideblocks
1499 @end example
1501 @node Footnotes, Orgstruct mode, Blocks, Document Structure
1502 @section Footnotes
1503 @cindex footnotes
1505 Org-mode supports the creation of footnotes.  In contrast to the
1506 @file{footnote.el} package, Org-mode's footnotes are designed for work on a
1507 larger document, not only for one-off documents like emails.  The basic
1508 syntax is similar to the one used by @file{footnote.el}, i.e. a footnote is
1509 defined in a paragraph that is started by a footnote marker in square
1510 brackets in column 0, no indentation allowed.  If you need a paragraph break
1511 inside a footnote, use the La@TeX{} idiom @samp{\par}.  The footnote reference
1512 is simply the marker in square brackets, inside text.  For example:
1514 @example
1515 The Org homepage[fn:1] now looks a lot better than it used to.
1517 [fn:1] The link is: http://orgmode.org
1518 @end example
1520 Org-mode extends the number-based syntax to @emph{named} footnotes and
1521 optional inline definition.  Using plain numbers as markers (as
1522 @file{footnote.el} does) is supported for backward compatibility, but not
1523 encouraged because of possible conflicts with La@TeX{} snippets (@pxref{Embedded
1524 LaTeX}).  Here are the valid references:
1526 @table @code
1527 @item [1]
1528 A plain numeric footnote marker.  Compatible with @file{footnote.el}, but not
1529 recommended because something like @samp{[1]} could easily be part of a code
1530 snippet.
1531 @item [fn:name]
1532 A named footnote reference, where @code{name} is a unique label word, or, for
1533 simplicity of automatic creation, a number.
1534 @item [fn:: This is the inline definition of this footnote]
1535 A La@TeX{}-like anonymous footnote where the definition is given directly at the
1536 reference point.
1537 @item [fn:name: a definition]
1538 An inline definition of a footnote, which also specifies a name for the note.
1539 Since Org allows multiple references to the same note, you can then use
1540 @code{[fn:name]} to create additional references.
1541 @end table
1543 @vindex org-footnote-auto-label
1544 Footnote labels can be created automatically, or you can create names yourself.
1545 This is handled by the variable @code{org-footnote-auto-label} and its
1546 corresponding @code{#+STARTUP} keywords, see the docstring of that variable
1547 for details.
1549 @noindent The following command handles footnotes:
1551 @table @kbd
1552 @kindex C-c C-x f
1553 @item C-c C-x f
1554 The footnote action command.
1556 When the cursor is on a footnote reference, jump to the definition.  When it
1557 is at a definition, jump to the (first) reference.
1559 @vindex org-footnote-define-inline
1560 @vindex org-footnote-section
1561 @vindex org-footnote-auto-adjust
1562 Otherwise, create a new footnote.  Depending on the variable
1563 @code{org-footnote-define-inline}@footnote{The corresponding in-buffer
1564 setting is: @code{#+STARTUP: fninline} or @code{#+STARTUP: nofninline}}, the
1565 definition will be placed right into the text as part of the reference, or
1566 separately into the location determined by the variable
1567 @code{org-footnote-section}.
1569 When this command is called with a prefix argument, a menu of additional
1570 options is offered:
1571 @example
1572 s   @r{Sort the footnote definitions by reference sequence.  During editing,}
1573     @r{Org makes no effort to sort footnote definitions into a particular}
1574     @r{sequence.  If you want them sorted, use this command, which will}
1575     @r{also move entries according to @code{org-footnote-section}.  Automatic}
1576     @r{sorting after each insertion/deletion can be configured using the}
1577     @r{variable @code{org-footnote-auto-adjust}.}
1578 r   @r{Renumber the simple @code{fn:N} footnotes.  Automatic renumbering}
1579     @r{after each insertion/deletion can be configured using the variable}
1580     @r{@code{org-footnote-auto-adjust}.}
1581 S   @r{Short for first @code{r}, then @code{s} action.}
1582 n   @r{Normalize the footnotes by collecting all definitions (including}
1583     @r{inline definitions) into a special section, and then numbering them}
1584     @r{in sequence.  The references will then also be numbers.  This is}
1585     @r{meant to be the final step before finishing a document (e.g. sending}
1586     @r{off an email).  The exporters do this automatically, and so could}
1587     @r{something like @code{message-send-hook}.}
1588 d   @r{Delete the footnote at point, and all definitions of and references}
1589     @r{to it.}
1590 @end example
1591 Depending on the variable @code{org-footnote-auto-adjust}@footnote{the
1592 corresponding in-buffer options are @code{fnadjust} and @code{nofnadjust}.},
1593 renumbering and sorting footnotes can be automatic after each insertion or
1594 deletion.
1596 @kindex C-c C-c
1597 @item C-c C-c
1598 If the cursor is on a footnote reference, jump to the definition.  If it is a
1599 the definition, jump back to the reference.  When called at a footnote
1600 location with a prefix argument, offer the same menu as @kbd{C-c C-x f}.
1601 @kindex C-c C-o
1602 @kindex mouse-1
1603 @kindex mouse-2
1604 @item C-c C-o  @r{or} mouse-1/2
1605 Footnote labels are also links to the corresponding definition/reference, and
1606 you can use the usual commands to follow these links.
1607 @end table
1609 @node Orgstruct mode,  , Footnotes, Document Structure
1610 @section The Orgstruct minor mode
1611 @cindex Orgstruct mode
1612 @cindex minor mode for structure editing
1614 If you like the intuitive way the Org-mode structure editing and list
1615 formatting works, you might want to use these commands in other modes like
1616 Text mode or Mail mode as well.  The minor mode @code{orgstruct-mode} makes
1617 this possible.   Toggle the mode with @kbd{M-x orgstruct-mode}, or
1618 turn it on by default, for example in Mail mode, with one of:
1620 @lisp
1621 (add-hook 'mail-mode-hook 'turn-on-orgstruct)
1622 (add-hook 'mail-mode-hook 'turn-on-orgstruct++)
1623 @end lisp
1625 When this mode is active and the cursor is on a line that looks to Org like a
1626 headline or the first line of a list item, most structure editing commands
1627 will work, even if the same keys normally have different functionality in the
1628 major mode you are using.  If the cursor is not in one of those special
1629 lines, Orgstruct mode lurks silently in the shadow.  When you use
1630 @code{orgstruct++-mode}, Org will also export indentation and autofill
1631 settings into that mode, and detect item context after the first line of an
1632 item.
1634 @node Tables, Hyperlinks, Document Structure, Top
1635 @chapter Tables
1636 @cindex tables
1637 @cindex editing tables
1639 Org comes with a fast and intuitive table editor.  Spreadsheet-like
1640 calculations are supported in connection with the Emacs @file{calc}
1641 package
1642 @ifinfo
1643 (@pxref{Top,Calc,,Calc,Gnu Emacs Calculator Manual}).
1644 @end ifinfo
1645 @ifnotinfo
1646 (see the Emacs Calculator manual for more information about the Emacs
1647 calculator).
1648 @end ifnotinfo
1650 @menu
1651 * Built-in table editor::       Simple tables
1652 * Column width and alignment::  Overrule the automatic settings
1653 * Column groups::               Grouping to trigger vertical lines
1654 * Orgtbl mode::                 The table editor as minor mode
1655 * The spreadsheet::             The table editor has spreadsheet capabilities
1656 * Org-Plot::                    Plotting from org tables
1657 @end menu
1659 @node Built-in table editor, Column width and alignment, Tables, Tables
1660 @section The built-in table editor
1661 @cindex table editor, built-in
1663 Org makes it easy to format tables in plain ASCII.  Any line with
1664 @samp{|} as the first non-whitespace character is considered part of a
1665 table.  @samp{|} is also the column separator.  A table might look like
1666 this:
1668 @example
1669 | Name  | Phone | Age |
1670 |-------+-------+-----|
1671 | Peter |  1234 |  17 |
1672 | Anna  |  4321 |  25 |
1673 @end example
1675 A table is re-aligned automatically each time you press @key{TAB} or
1676 @key{RET} or @kbd{C-c C-c} inside the table.  @key{TAB} also moves to
1677 the next field (@key{RET} to the next row) and creates new table rows
1678 at the end of the table or before horizontal lines.  The indentation
1679 of the table is set by the first line.  Any line starting with
1680 @samp{|-} is considered as a horizontal separator line and will be
1681 expanded on the next re-align to span the whole table width.  So, to
1682 create the above table, you would only type
1684 @example
1685 |Name|Phone|Age|
1687 @end example
1689 @noindent and then press @key{TAB} to align the table and start filling in
1690 fields.  Even faster would be to type @code{|Name|Phone|Age} followed by
1691 @kbd{C-c @key{RET}}.
1693 @vindex org-enable-table-editor
1694 @vindex org-table-auto-blank-field
1695 When typing text into a field, Org treats @key{DEL},
1696 @key{Backspace}, and all character keys in a special way, so that
1697 inserting and deleting avoids shifting other fields.  Also, when
1698 typing @emph{immediately after the cursor was moved into a new field
1699 with @kbd{@key{TAB}}, @kbd{S-@key{TAB}} or @kbd{@key{RET}}}, the
1700 field is automatically made blank.  If this behavior is too
1701 unpredictable for you, configure the variables
1702 @code{org-enable-table-editor} and @code{org-table-auto-blank-field}.
1704 @table @kbd
1705 @tsubheading{Creation and conversion}
1706 @kindex C-c |
1707 @item C-c |
1708 Convert the active region to table. If every line contains at least one
1709 TAB character, the function assumes that the material is tab separated.
1710 If every line contains a comma, comma-separated values (CSV) are assumed.
1711 If not, lines are split at whitespace into fields.  You can use a prefix
1712 argument to force a specific separator: @kbd{C-u} forces CSV, @kbd{C-u
1713 C-u} forces TAB, and a numeric argument N indicates that at least N
1714 consecutive spaces, or alternatively a TAB will be the separator.
1716 If there is no active region, this command creates an empty Org
1717 table.  But it's easier just to start typing, like
1718 @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
1720 @tsubheading{Re-aligning and field motion}
1721 @kindex C-c C-c
1722 @item C-c C-c
1723 Re-align the table without moving the cursor.
1725 @kindex @key{TAB}
1726 @item @key{TAB}
1727 Re-align the table, move to the next field.  Creates a new row if
1728 necessary.
1730 @kindex S-@key{TAB}
1731 @item S-@key{TAB}
1732 Re-align, move to previous field.
1734 @kindex @key{RET}
1735 @item @key{RET}
1736 Re-align the table and move down to next row.  Creates a new row if
1737 necessary.  At the beginning or end of a line, @key{RET} still does
1738 NEWLINE, so it can be used to split a table.
1740 @kindex M-a
1741 @item M-a
1742 Move to beginning of the current table field, or on to the previous field.
1743 @kindex M-e
1744 @item M-e
1745 Move to end of the current table field, or on to the next field.
1747 @tsubheading{Column and row editing}
1748 @kindex M-@key{left}
1749 @kindex M-@key{right}
1750 @item M-@key{left}
1751 @itemx M-@key{right}
1752 Move the current column left/right.
1754 @kindex M-S-@key{left}
1755 @item M-S-@key{left}
1756 Kill the current column.
1758 @kindex M-S-@key{right}
1759 @item M-S-@key{right}
1760 Insert a new column to the left of the cursor position.
1762 @kindex M-@key{up}
1763 @kindex M-@key{down}
1764 @item M-@key{up}
1765 @itemx M-@key{down}
1766 Move the current row up/down.
1768 @kindex M-S-@key{up}
1769 @item M-S-@key{up}
1770 Kill the current row or horizontal line.
1772 @kindex M-S-@key{down}
1773 @item M-S-@key{down}
1774 Insert a new row above the current row.  With a prefix argument, the line is
1775 created below the current one.
1777 @kindex C-c -
1778 @item C-c -
1779 Insert a horizontal line below current row.  With a prefix argument, the line
1780 is created above the current line.
1782 @kindex C-c @key{RET}
1783 @item C-c @key{RET}
1784 Insert a horizontal line below current row, and move the cursor into the row
1785 below that line.
1787 @kindex C-c ^
1788 @item C-c ^
1789 Sort the table lines in the region.  The position of point indicates the
1790 column to be used for sorting, and the range of lines is the range
1791 between the nearest horizontal separator lines, or the entire table.  If
1792 point is before the first column, you will be prompted for the sorting
1793 column.  If there is an active region, the mark specifies the first line
1794 and the sorting column, while point should be in the last line to be
1795 included into the sorting.  The command prompts for the sorting type
1796 (alphabetically, numerically, or by time).  When called with a prefix
1797 argument, alphabetic sorting will be case-sensitive.
1799 @tsubheading{Regions}
1800 @kindex C-c C-x M-w
1801 @item C-c C-x M-w
1802 Copy a rectangular region from a table to a special clipboard.  Point and
1803 mark determine edge fields of the rectangle.  If there is no active region,
1804 copy just the current field.  The process ignores horizontal separator lines.
1806 @kindex C-c C-x C-w
1807 @item C-c C-x C-w
1808 Copy a rectangular region from a table to a special clipboard, and
1809 blank all fields in the rectangle.  So this is the ``cut'' operation.
1811 @kindex C-c C-x C-y
1812 @item C-c C-x C-y
1813 Paste a rectangular region into a table.
1814 The upper left corner ends up in the current field.  All involved fields
1815 will be overwritten.  If the rectangle does not fit into the present table,
1816 the table is enlarged as needed.  The process ignores horizontal separator
1817 lines.
1819 @kindex M-@key{RET}
1820 @itemx M-@kbd{RET}
1821 Wrap several fields in a column like a paragraph.  If there is an active
1822 region, and both point and mark are in the same column, the text in the
1823 column is wrapped to minimum width for the given number of lines.  A numeric
1824 prefix argument may be used to change the number of desired lines.  If there
1825 is no region, the current field is split at the cursor position and the text
1826 fragment to the right of the cursor is prepended to the field one line
1827 down. If there is no region, but you specify a prefix argument, the current
1828 field is made blank, and the content is appended to the field above.
1830 @tsubheading{Calculations}
1831 @cindex formula, in tables
1832 @cindex calculations, in tables
1833 @cindex region, active
1834 @cindex active region
1835 @cindex transient mark mode
1836 @kindex C-c +
1837 @item C-c +
1838 Sum the numbers in the current column, or in the rectangle defined by
1839 the active region.  The result is shown in the echo area and can
1840 be inserted with @kbd{C-y}.
1842 @kindex S-@key{RET}
1843 @item S-@key{RET}
1844 @vindex org-table-copy-increment
1845 When current field is empty, copy from first non-empty field above.  When not
1846 empty, copy current field down to next row and move cursor along with it.
1847 Depending on the variable @code{org-table-copy-increment}, integer field
1848 values will be incremented during copy.  Integers that are too large will not
1849 be incremented.  Also, a @code{0} prefix argument temporarily disables the
1850 increment.  This key is also used by shift-selection and related modes
1851 (@pxref{Conflicts}).
1853 @tsubheading{Miscellaneous}
1854 @kindex C-c `
1855 @item C-c `
1856 Edit the current field in a separate window.  This is useful for fields that
1857 are not fully visible (@pxref{Column width and alignment}).  When called with
1858 a @kbd{C-u} prefix, just make the full field visible, so that it can be
1859 edited in place.
1861 @item M-x org-table-import
1862 Import a file as a table.  The table should be TAB or whitespace
1863 separated.  Use, for example, to import a spreadsheet table or data
1864 from a database, because these programs generally can write
1865 TAB-separated text files.  This command works by inserting the file into
1866 the buffer and then converting the region to a table.  Any prefix
1867 argument is passed on to the converter, which uses it to determine the
1868 separator.
1869 @item C-c |
1870 Tables can also be imported by pasting tabular text into the Org
1871 buffer, selecting the pasted text with @kbd{C-x C-x} and then using the
1872 @kbd{C-c |} command (see above under @i{Creation and conversion}).
1874 @item M-x org-table-export
1875 @vindex org-table-export-default-format
1876 Export the table, by default as a TAB-separated file.  Use for data
1877 exchange with, for example, spreadsheet or database programs.  The format
1878 used to export the file can be configured in the variable
1879 @code{org-table-export-default-format}.  You may also use properties
1880 @code{TABLE_EXPORT_FILE} and @code{TABLE_EXPORT_FORMAT} to specify the file
1881 name and the format for table export in a subtree.  Org supports quite
1882 general formats for exported tables.  The exporter format is the same as the
1883 format used by Orgtbl radio tables, see @ref{Translator functions}, for a
1884 detailed description.
1885 @end table
1887 If you don't like the automatic table editor because it gets in your
1888 way on lines which you would like to start with @samp{|}, you can turn
1889 it off with
1891 @lisp
1892 (setq org-enable-table-editor nil)
1893 @end lisp
1895 @noindent Then the only table command that still works is
1896 @kbd{C-c C-c} to do a manual re-align.
1898 @node Column width and alignment, Column groups, Built-in table editor, Tables
1899 @section Column width and alignment
1900 @cindex narrow columns in tables
1901 @cindex alignment in tables
1903 The width of columns is automatically determined by the table editor.  And
1904 also the alignment of a column is determined automatically from the fraction
1905 of number-like versus non-number fields in the column.
1907 Sometimes a single field or a few fields need to carry more text, leading to
1908 inconveniently wide columns.  Or maybe you want to make a table with several
1909 columns having a fixed width, regardless of content.  To set@footnote{This
1910 feature does not work on XEmacs.} the width of a column, one field anywhere
1911 in the column may contain just the string @samp{<N>} where @samp{N} is an
1912 integer specifying the width of the column in characters.  The next re-align
1913 will then set the width of this column to this value.
1915 @example
1916 @group
1917 |---+------------------------------|               |---+--------|
1918 |   |                              |               |   | <6>    |
1919 | 1 | one                          |               | 1 | one    |
1920 | 2 | two                          |     ----\     | 2 | two    |
1921 | 3 | This is a long chunk of text |     ----/     | 3 | This=> |
1922 | 4 | four                         |               | 4 | four   |
1923 |---+------------------------------|               |---+--------|
1924 @end group
1925 @end example
1927 @noindent
1928 Fields that are wider become clipped and end in the string @samp{=>}.
1929 Note that the full text is still in the buffer, it is only invisible.
1930 To see the full text, hold the mouse over the field---a tool-tip window
1931 will show the full content.  To edit such a field, use the command
1932 @kbd{C-c `} (that is @kbd{C-c} followed by the backquote).  This will
1933 open a new window with the full field.  Edit it and finish with @kbd{C-c
1934 C-c}.
1936 @vindex org-startup-align-all-tables
1937 When visiting a file containing a table with narrowed columns, the
1938 necessary character hiding has not yet happened, and the table needs to
1939 be aligned before it looks nice.  Setting the option
1940 @code{org-startup-align-all-tables} will realign all tables in a file
1941 upon visiting, but also slow down startup.  You can also set this option
1942 on a per-file basis with:
1944 @example
1945 #+STARTUP: align
1946 #+STARTUP: noalign
1947 @end example
1949 If you would like to overrule the automatic alignment of number-rich columns
1950 to the right and of string-rich column to the left, you and use @samp{<r>} or
1951 @samp{<l>} in a similar fashion.  You may also combine alignment and field
1952 width like this: @samp{<l10>}.
1954 Lines which only contain these formatting cookies will be removed
1955 automatically when exporting the document.
1957 @node Column groups, Orgtbl mode, Column width and alignment, Tables
1958 @section Column groups
1959 @cindex grouping columns in tables
1961 When Org exports tables, it does so by default without vertical
1962 lines because that is visually more satisfying in general.  Occasionally
1963 however, vertical lines can be useful to structure a table into groups
1964 of columns, much like horizontal lines can do for groups of rows.  In
1965 order to specify column groups, you can use a special row where the
1966 first field contains only @samp{/}.  The further fields can either
1967 contain @samp{<} to indicate that this column should start a group,
1968 @samp{>} to indicate the end of a column, or @samp{<>} to make a column
1969 a group of its own.  Boundaries between column groups will upon export be
1970 marked with vertical lines.  Here is an example:
1972 @example
1973 | N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
1974 |---+-----+-----+-----+---------+------------|
1975 | / |   < |     |   > |       < |          > |
1976 | 1 |   1 |   1 |   1 |       1 |          1 |
1977 | 2 |   4 |   8 |  16 |  1.4142 |     1.1892 |
1978 | 3 |   9 |  27 |  81 |  1.7321 |     1.3161 |
1979 |---+-----+-----+-----+---------+------------|
1980 #+TBLFM: $2=$1^2::$3=$1^3::$4=$1^4::$5=sqrt($1)::$6=sqrt(sqrt(($1)))
1981 @end example
1983 It is also sufficient to just insert the column group starters after
1984 every vertical line you would like to have:
1986 @example
1987 |  N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
1988 |----+-----+-----+-----+---------+------------|
1989 | /  | <   |     |     | <       |            |
1990 @end example
1992 @node Orgtbl mode, The spreadsheet, Column groups, Tables
1993 @section The Orgtbl minor mode
1994 @cindex Orgtbl mode
1995 @cindex minor mode for tables
1997 If you like the intuitive way the Org table editor works, you
1998 might also want to use it in other modes like Text mode or Mail mode.
1999 The minor mode Orgtbl mode makes this possible.  You can always toggle
2000 the mode with @kbd{M-x orgtbl-mode}.  To turn it on by default, for
2001 example in mail mode, use
2003 @lisp
2004 (add-hook 'mail-mode-hook 'turn-on-orgtbl)
2005 @end lisp
2007 Furthermore, with some special setup, it is possible to maintain tables
2008 in arbitrary syntax with Orgtbl mode.  For example, it is possible to
2009 construct La@TeX{} tables with the underlying ease and power of
2010 Orgtbl mode, including spreadsheet capabilities.  For details, see
2011 @ref{Tables in arbitrary syntax}.
2013 @node The spreadsheet, Org-Plot, Orgtbl mode, Tables
2014 @section The spreadsheet
2015 @cindex calculations, in tables
2016 @cindex spreadsheet capabilities
2017 @cindex @file{calc} package
2019 The table editor makes use of the Emacs @file{calc} package to implement
2020 spreadsheet-like capabilities.  It can also evaluate Emacs Lisp forms to
2021 derive fields from other fields.  While fully featured, Org's implementation
2022 is not identical to other spreadsheets.  For example, Org knows the concept
2023 of a @emph{column formula} that will be applied to all non-header fields in a
2024 column without having to copy the formula to each relevant field.  There is
2025 also a formula debugger, and a formula editor with features for highlighting
2026 fields in the table corresponding to the references at the point in the
2027 formula, moving these references by arrow keys
2029 @menu
2030 * References::                  How to refer to another field or range
2031 * Formula syntax for Calc::     Using Calc to compute stuff
2032 * Formula syntax for Lisp::     Writing formulas in Emacs Lisp
2033 * Field formulas::              Formulas valid for a single field
2034 * Column formulas::             Formulas valid for an entire column
2035 * Editing and debugging formulas::  Fixing formulas
2036 * Updating the table::          Recomputing all dependent fields
2037 * Advanced features::           Field names, parameters and automatic recalc
2038 @end menu
2040 @node References, Formula syntax for Calc, The spreadsheet, The spreadsheet
2041 @subsection References
2042 @cindex references
2044 To compute fields in the table from other fields, formulas must
2045 reference other fields or ranges.  In Org, fields can be referenced
2046 by name, by absolute coordinates, and by relative coordinates.  To find
2047 out what the coordinates of a field are, press @kbd{C-c ?} in that
2048 field, or press @kbd{C-c @}} to toggle the display of a grid.
2050 @subsubheading Field references
2051 @cindex field references
2052 @cindex references, to fields
2054 Formulas can reference the value of another field in two ways.  Like in
2055 any other spreadsheet, you may reference fields with a letter/number
2056 combination like @code{B3}, meaning the 2nd field in the 3rd row.
2057 @c Such references are always fixed to that field, they don't change
2058 @c when you copy and paste a formula to a different field.  So
2059 @c Org's @code{B3} behaves like @code{$B$3} in other spreadsheets.
2061 @noindent
2062 Org also uses another, more general operator that looks like this:
2063 @example
2064 @@@var{row}$@var{column}
2065 @end example
2067 @noindent
2068 Column references can be absolute like @samp{1}, @samp{2},...@samp{@var{N}},
2069 or relative to the current column like @samp{+1} or @samp{-2}.
2071 The row specification only counts data lines and ignores horizontal
2072 separator lines (hlines).  You can use absolute row numbers
2073 @samp{1}...@samp{@var{N}}, and row numbers relative to the current row like
2074 @samp{+3} or @samp{-1}.  Or specify the row relative to one of the
2075 hlines: @samp{I} refers to the first hline@footnote{Note that only
2076 hlines are counted that @emph{separate} table lines.  If the table
2077 starts with a hline above the header, it does not count.}, @samp{II} to
2078 the second, etc@.  @samp{-I} refers to the first such line above the
2079 current line, @samp{+I} to the first such line below the current line.
2080 You can also write @samp{III+2} which is the second data line after the
2081 third hline in the table.
2083 @samp{0} refers to the current row and column.  Also, if you omit
2084 either the column or the row part of the reference, the current
2085 row/column is implied.
2087 Org's references with @emph{unsigned} numbers are fixed references
2088 in the sense that if you use the same reference in the formula for two
2089 different fields, the same field will be referenced each time.
2090 Org's references with @emph{signed} numbers are floating
2091 references because the same reference operator can reference different
2092 fields depending on the field being calculated by the formula.
2094 As a special case, references like @samp{$LR5} and @samp{$LR12} can be used
2095 to refer in a stable way to the 5th and 12th field in the last row of the
2096 table.
2098 Here are a few examples:
2100 @example
2101 @@2$3      @r{2nd row, 3rd column}
2102 C2        @r{same as previous}
2103 $5        @r{column 5 in the current row}
2104 E&        @r{same as previous}
2105 @@2        @r{current column, row 2}
2106 @@-1$-3    @r{the field one row up, three columns to the left}
2107 @@-I$2     @r{field just under hline above current row, column 2}
2108 @end example
2110 @subsubheading Range references
2111 @cindex range references
2112 @cindex references, to ranges
2114 You may reference a rectangular range of fields by specifying two field
2115 references connected by two dots @samp{..}.  If both fields are in the
2116 current row, you may simply use @samp{$2..$7}, but if at least one field
2117 is in a different row, you need to use the general @code{@@row$column}
2118 format at least for the first field (i.e the reference must start with
2119 @samp{@@} in order to be interpreted correctly).  Examples:
2121 @example
2122 $1..$3        @r{First three fields in the current row.}
2123 $P..$Q        @r{Range, using column names (see under Advanced)}
2124 @@2$1..@@4$3    @r{6 fields between these two fields.}
2125 A2..C4        @r{Same as above.}
2126 @@-1$-2..@@-1   @r{3 numbers from the column to the left, 2 up to current row}
2127 @end example
2129 @noindent Range references return a vector of values that can be fed
2130 into Calc vector functions.  Empty fields in ranges are normally
2131 suppressed, so that the vector contains only the non-empty fields (but
2132 see the @samp{E} mode switch below).  If there are no non-empty fields,
2133 @samp{[0]} is returned to avoid syntax errors in formulas.
2135 @subsubheading Field coordinates in formulas
2136 @cindex field coordinates
2137 @cindex coordinates, of field
2138 @cindex row, of field coordinates
2139 @cindex column, of field coordinates
2141 For Calc formulas and Lisp formulas @code{@@#} and @code{$#} can be used to
2142 get the row or column number of the field where the formula result goes.
2143 The traditional Lisp formula equivalents are @code{org-table-current-dline}
2144 and @code{org-table-current-column}.  Examples:
2146 @example
2147 if(@@# % 2, $#, string(""))   @r{column number on odd lines only}
2148 $3 = remote(FOO, @@@@#$2)      @r{copy column 2 from table FOO into}
2149                              @r{column 3 of the current table}
2150 @end example
2152 @noindent For the second example, table FOO must have at least as many rows
2153 as the current table.  Inefficient@footnote{The computation time scales as
2154 O(N^2) because table FOO is parsed for each field to be copied.} for large
2155 number of rows.
2157 @subsubheading Named references
2158 @cindex named references
2159 @cindex references, named
2160 @cindex name, of column or field
2161 @cindex constants, in calculations
2162 @cindex #+CONSTANTS
2164 @vindex org-table-formula-constants
2165 @samp{$name} is interpreted as the name of a column, parameter or
2166 constant.  Constants are defined globally through the variable
2167 @code{org-table-formula-constants}, and locally (for the file) through a
2168 line like
2170 @example
2171 #+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6
2172 @end example
2174 @noindent
2175 @vindex constants-unit-system
2176 @pindex constants.el
2177 Also properties (@pxref{Properties and Columns}) can be used as
2178 constants in table formulas: for a property @samp{:Xyz:} use the name
2179 @samp{$PROP_Xyz}, and the property will be searched in the current
2180 outline entry and in the hierarchy above it.  If you have the
2181 @file{constants.el} package, it will also be used to resolve constants,
2182 including natural constants like @samp{$h} for Planck's constant, and
2183 units like @samp{$km} for kilometers@footnote{@file{constants.el} can
2184 supply the values of constants in two different unit systems, @code{SI}
2185 and @code{cgs}.  Which one is used depends on the value of the variable
2186 @code{constants-unit-system}.  You can use the @code{#+STARTUP} options
2187 @code{constSI} and @code{constcgs} to set this value for the current
2188 buffer.}.  Column names and parameters can be specified in special table
2189 lines.  These are described below, see @ref{Advanced features}.  All
2190 names must start with a letter, and further consist of letters and
2191 numbers.
2193 @subsubheading Remote references
2194 @cindex remote references
2195 @cindex references, remote
2196 @cindex references, to a different table
2197 @cindex name, of column or field
2198 @cindex constants, in calculations
2199 @cindex #+TBLNAME
2201 You may also reference constants, fields and ranges from a different table,
2202 either in the current file or even in a different file.  The syntax is
2204 @example
2205 remote(NAME-OR-ID,REF)
2206 @end example
2208 @noindent
2209 where NAME can be the name of a table in the current file as set by a
2210 @code{#+TBLNAME: NAME} line before the table.  It can also be the ID of an
2211 entry, even in a different file, and the reference then refers to the first
2212 table in that entry.  REF is an absolute field or range reference as
2213 described above for example @code{@@3$3} or @code{$somename}, valid in the
2214 referenced table.
2216 @node Formula syntax for Calc, Formula syntax for Lisp, References, The spreadsheet
2217 @subsection Formula syntax for Calc
2218 @cindex formula syntax, Calc
2219 @cindex syntax, of formulas
2221 A formula can be any algebraic expression understood by the Emacs
2222 @file{Calc} package.  @b{Note that @file{calc} has the
2223 non-standard convention that @samp{/} has lower precedence than
2224 @samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.}  Before
2225 evaluation by @code{calc-eval} (@pxref{Calling Calc from
2226 Your Programs,calc-eval,Calling Calc from Your Lisp Programs,Calc,GNU
2227 Emacs Calc Manual}),
2228 @c FIXME:  The link to the Calc manual in HTML does not work.
2229 variable substitution takes place according to the rules described above.
2230 @cindex vectors, in table calculations
2231 The range vectors can be directly fed into the Calc vector functions
2232 like @samp{vmean} and @samp{vsum}.
2234 @cindex format specifier
2235 @cindex mode, for @file{calc}
2236 @vindex org-calc-default-modes
2237 A formula can contain an optional mode string after a semicolon.  This
2238 string consists of flags to influence Calc and other modes during
2239 execution.  By default, Org uses the standard Calc modes (precision
2240 12, angular units degrees, fraction and symbolic modes off).  The display
2241 format, however, has been changed to @code{(float 8)} to keep tables
2242 compact.  The default settings can be configured using the variable
2243 @code{org-calc-default-modes}.
2245 @example
2246 p20           @r{set the internal Calc calculation precision to 20 digits}
2247 n3 s3 e2 f4   @r{Normal, scientific, engineering, or fixed}
2248               @r{format of the result of Calc passed back to Org.}
2249               @r{Calc formatting is unlimited in precision as}
2250               @r{long as the Calc calculation precision is greater.}
2251 D R           @r{angle modes: degrees, radians}
2252 F S           @r{fraction and symbolic modes}
2253 N             @r{interpret all fields as numbers, use 0 for non-numbers}
2254 T             @r{force text interpretation}
2255 E             @r{keep empty fields in ranges}
2256 L             @r{literal}
2257 @end example
2259 @noindent
2260 Unless you use large integer numbers or high-precision-calculation
2261 and -display for floating point numbers you may alternatively provide a
2262 @code{printf} format specifier to reformat the Calc result after it has been
2263 passed back to Org instead of letting Calc already do the
2264 formatting@footnote{The @code{printf} reformatting is limited in precision
2265 because the value passed to it is converted into an @code{integer} or
2266 @code{double}.  The @code{integer} is limited in size by truncating the
2267 signed value to 32 bits.  The @code{double} is limited in precision to 64
2268 bits overall which leaves approximately 16 significant decimal digits.}.
2269 A few examples:
2271 @example
2272 $1+$2                @r{Sum of first and second field}
2273 $1+$2;%.2f           @r{Same, format result to two decimals}
2274 exp($2)+exp($1)      @r{Math functions can be used}
2275 $0;%.1f              @r{Reformat current cell to 1 decimal}
2276 ($3-32)*5/9          @r{Degrees F -> C conversion}
2277 $c/$1/$cm            @r{Hz -> cm conversion, using @file{constants.el}}
2278 tan($1);Dp3s1        @r{Compute in degrees, precision 3, display SCI 1}
2279 sin($1);Dp3%.1e      @r{Same, but use printf specifier for display}
2280 vmean($2..$7)        @r{Compute column range mean, using vector function}
2281 vmean($2..$7);EN     @r{Same, but treat empty fields as 0}
2282 taylor($3,x=7,2)     @r{taylor series of $3, at x=7, second degree}
2283 @end example
2285 Calc also contains a complete set of logical operations.  For example
2287 @example
2288 if($1<20,teen,string(""))  @r{``teen'' if age $1 less than 20, else empty}
2289 @end example
2291 @node Formula syntax for Lisp, Field formulas, Formula syntax for Calc, The spreadsheet
2292 @subsection Emacs Lisp forms as formulas
2293 @cindex Lisp forms, as table formulas
2295 It is also possible to write a formula in Emacs Lisp; this can be useful
2296 for string manipulation and control structures, if Calc's
2297 functionality is not enough.  If a formula starts with a single-quote
2298 followed by an opening parenthesis, then it is evaluated as a Lisp form.
2299 The evaluation should return either a string or a number.  Just as with
2300 @file{calc} formulas, you can specify modes and a printf format after a
2301 semicolon.  With Emacs Lisp forms, you need to be conscious about the way
2302 field references are interpolated into the form.  By default, a
2303 reference will be interpolated as a Lisp string (in double-quotes)
2304 containing the field.  If you provide the @samp{N} mode switch, all
2305 referenced elements will be numbers (non-number fields will be zero) and
2306 interpolated as Lisp numbers, without quotes.  If you provide the
2307 @samp{L} flag, all fields will be interpolated literally, without quotes.
2308 I.e., if you want a reference to be interpreted as a string by the Lisp
2309 form, enclose the reference operator itself in double-quotes, like
2310 @code{"$3"}.  Ranges are inserted as space-separated fields, so you can
2311 embed them in list or vector syntax.  A few examples, note how the
2312 @samp{N} mode is used when we do computations in Lisp.
2314 @example
2315 @r{Swap the first two characters of the content of column 1}
2316   '(concat (substring $1 1 2) (substring $1 0 1) (substring $1 2))
2317 @r{Add columns 1 and 2, equivalent to Calc's @code{$1+$2}}
2318   '(+ $1 $2);N
2319 @r{Compute the sum of columns 1-4, like Calc's @code{vsum($1..$4)}}
2320   '(apply '+ '($1..$4));N
2321 @end example
2323 @node Field formulas, Column formulas, Formula syntax for Lisp, The spreadsheet
2324 @subsection Field formulas
2325 @cindex field formula
2326 @cindex formula, for individual table field
2328 To assign a formula to a particular field, type it directly into the
2329 field, preceded by @samp{:=}, for example @samp{:=$1+$2}.  When you
2330 press @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in
2331 the field, the formula will be stored as the formula for this field,
2332 evaluated, and the current field replaced with the result.
2334 @cindex #+TBLFM
2335 Formulas are stored in a special line starting with @samp{#+TBLFM:}
2336 directly below the table.  If you typed the equation in the 4th field of
2337 the 3rd data line in the table, the formula will look like
2338 @samp{@@3$4=$1+$2}.  When inserting/deleting/swapping column and rows
2339 with the appropriate commands, @i{absolute references} (but not relative
2340 ones) in stored formulas are modified in order to still reference the
2341 same field.  Of course this is not true if you edit the table structure
2342 with normal editing commands---then you must fix the equations yourself.
2343 The left-hand side of a formula may also be a named field (@pxref{Advanced
2344 features}), or a last-row reference like @samp{$LR3}.
2346 Instead of typing an equation into the field, you may also use the
2347 following command
2349 @table @kbd
2350 @kindex C-u C-c =
2351 @item C-u C-c =
2352 Install a new formula for the current field.  The command prompts for a
2353 formula with default taken from the @samp{#+TBLFM:} line, applies
2354 it to the current field, and stores it.
2355 @end table
2357 @node Column formulas, Editing and debugging formulas, Field formulas, The spreadsheet
2358 @subsection Column formulas
2359 @cindex column formula
2360 @cindex formula, for table column
2362 Often in a table, the same formula should be used for all fields in a
2363 particular column.  Instead of having to copy the formula to all fields
2364 in that column, Org allows you to assign a single formula to an entire
2365 column.  If the table contains horizontal separator hlines, everything
2366 before the first such line is considered part of the table @emph{header}
2367 and will not be modified by column formulas.
2369 To assign a formula to a column, type it directly into any field in the
2370 column, preceded by an equal sign, like @samp{=$1+$2}.  When you press
2371 @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the field,
2372 the formula will be stored as the formula for the current column, evaluated
2373 and the current field replaced with the result.  If the field contains only
2374 @samp{=}, the previously stored formula for this column is used.  For each
2375 column, Org will only remember the most recently used formula.  In the
2376 @samp{#+TBLFM:} line, column formulas will look like @samp{$4=$1+$2}.  The left-hand
2377 side of a column formula cannot currently be the name of column, it
2378 must be the numeric column reference.
2380 Instead of typing an equation into the field, you may also use the
2381 following command:
2383 @table @kbd
2384 @kindex C-c =
2385 @item C-c =
2386 Install a new formula for the current column and replace current field with
2387 the result of the formula.  The command prompts for a formula, with default
2388 taken from the @samp{#+TBLFM} line, applies it to the current field and
2389 stores it.  With a numeric prefix argument(e.g. @kbd{C-5 C-c =}) the command
2390 will apply it to that many consecutive fields in the current column.
2391 @end table
2393 @node Editing and debugging formulas, Updating the table, Column formulas, The spreadsheet
2394 @subsection Editing and debugging formulas
2395 @cindex formula editing
2396 @cindex editing, of table formulas
2398 @vindex org-table-use-standard-references
2399 You can edit individual formulas in the minibuffer or directly in the
2400 field.  Org can also prepare a special buffer with all active
2401 formulas of a table.  When offering a formula for editing, Org
2402 converts references to the standard format (like @code{B3} or @code{D&})
2403 if possible.  If you prefer to only work with the internal format (like
2404 @code{@@3$2} or @code{$4}), configure the variable
2405 @code{org-table-use-standard-references}.
2407 @table @kbd
2408 @kindex C-c =
2409 @kindex C-u C-c =
2410 @item C-c =
2411 @itemx C-u C-c =
2412 Edit the formula associated with the current column/field in the
2413 minibuffer.  See @ref{Column formulas}, and @ref{Field formulas}.
2414 @kindex C-u C-u C-c =
2415 @item C-u C-u C-c =
2416 Re-insert the active formula (either a
2417 field formula, or a column formula) into the current field, so that you
2418 can edit it directly in the field.  The advantage over editing in the
2419 minibuffer is that you can use the command @kbd{C-c ?}.
2420 @kindex C-c ?
2421 @item C-c ?
2422 While editing a formula in a table field, highlight the field(s)
2423 referenced by the reference at the cursor position in the formula.
2424 @kindex C-c @}
2425 @item C-c @}
2426 Toggle the display of row and column numbers for a table, using
2427 overlays.  These are updated each time the table is aligned; you can
2428 force it with @kbd{C-c C-c}.
2429 @kindex C-c @{
2430 @item C-c @{
2431 Toggle the formula debugger on and off.  See below.
2432 @kindex C-c '
2433 @item C-c '
2434 Edit all formulas for the current table in a special buffer, where the
2435 formulas will be displayed one per line.  If the current field has an
2436 active formula, the cursor in the formula editor will mark it.
2437 While inside the special buffer, Org will automatically highlight
2438 any field or range reference at the cursor position.  You may edit,
2439 remove and add formulas, and use the following commands:
2440 @table @kbd
2441 @kindex C-c C-c
2442 @kindex C-x C-s
2443 @item C-c C-c
2444 @itemx C-x C-s
2445 Exit the formula editor and store the modified formulas.  With @kbd{C-u}
2446 prefix, also apply the new formulas to the entire table.
2447 @kindex C-c C-q
2448 @item C-c C-q
2449 Exit the formula editor without installing changes.
2450 @kindex C-c C-r
2451 @item C-c C-r
2452 Toggle all references in the formula editor between standard (like
2453 @code{B3}) and internal (like @code{@@3$2}).
2454 @kindex @key{TAB}
2455 @item @key{TAB}
2456 Pretty-print or indent Lisp formula at point.  When in a line containing
2457 a Lisp formula, format the formula according to Emacs Lisp rules.
2458 Another @key{TAB} collapses the formula back again.  In the open
2459 formula, @key{TAB} re-indents just like in Emacs Lisp mode.
2460 @kindex M-@key{TAB}
2461 @item M-@key{TAB}
2462 Complete Lisp symbols, just like in Emacs Lisp mode.
2463 @kindex S-@key{up}
2464 @kindex S-@key{down}
2465 @kindex S-@key{left}
2466 @kindex S-@key{right}
2467 @item S-@key{up}/@key{down}/@key{left}/@key{right}
2468 Shift the reference at point.  For example, if the reference is
2469 @code{B3} and you press @kbd{S-@key{right}}, it will become @code{C3}.
2470 This also works for relative references and for hline references.
2471 @kindex M-S-@key{up}
2472 @kindex M-S-@key{down}
2473 @item M-S-@key{up}/@key{down}
2474 Move the test line for column formulas in the Org buffer up and
2475 down.
2476 @kindex M-@key{up}
2477 @kindex M-@key{down}
2478 @item M-@key{up}/@key{down}
2479 Scroll the window displaying the table.
2480 @kindex C-c @}
2481 @item C-c @}
2482 Turn the coordinate grid in the table on and off.
2483 @end table
2484 @end table
2486 Making a table field blank does not remove the formula associated with
2487 the field, because that is stored in a different line (the @samp{#+TBLFM}
2488 line)---during the next recalculation the field will be filled again.
2489 To remove a formula from a field, you have to give an empty reply when
2490 prompted for the formula, or to edit the @samp{#+TBLFM} line.
2492 @kindex C-c C-c
2493 You may edit the @samp{#+TBLFM} directly and re-apply the changed
2494 equations with @kbd{C-c C-c} in that line or with the normal
2495 recalculation commands in the table.
2497 @subsubheading Debugging formulas
2498 @cindex formula debugging
2499 @cindex debugging, of table formulas
2500 When the evaluation of a formula leads to an error, the field content
2501 becomes the string @samp{#ERROR}.  If you would like see what is going
2502 on during variable substitution and calculation in order to find a bug,
2503 turn on formula debugging in the @code{Tbl} menu and repeat the
2504 calculation, for example by pressing @kbd{C-u C-u C-c = @key{RET}} in a
2505 field.  Detailed information will be displayed.
2507 @node Updating the table, Advanced features, Editing and debugging formulas, The spreadsheet
2508 @subsection Updating the table
2509 @cindex recomputing table fields
2510 @cindex updating, table
2512 Recalculation of a table is normally not automatic, but needs to be
2513 triggered by a command.  See @ref{Advanced features}, for a way to make
2514 recalculation at least semi-automatic.
2516 In order to recalculate a line of a table or the entire table, use the
2517 following commands:
2519 @table @kbd
2520 @kindex C-c *
2521 @item C-c *
2522 Recalculate the current row by first applying the stored column formulas
2523 from left to right, and all field formulas in the current row.
2525 @kindex C-u C-c *
2526 @item C-u C-c *
2527 @kindex C-u C-c C-c
2528 @itemx C-u C-c C-c
2529 Recompute the entire table, line by line.  Any lines before the first
2530 hline are left alone, assuming that these are part of the table header.
2532 @kindex C-u C-u C-c *
2533 @kindex C-u C-u C-c C-c
2534 @item C-u C-u C-c *
2535 @itemx C-u C-u C-c C-c
2536 Iterate the table by recomputing it until no further changes occur.
2537 This may be necessary if some computed fields use the value of other
2538 fields that are computed @i{later} in the calculation sequence.
2539 @item M-x org-table-recalculate-buffer-tables
2540 Recompute all tables in the current buffer.
2541 @item M-x org-table-iterate-buffer-tables
2542 Iterate all tables in the current buffer, in order to converge table-to-table
2543 dependencies.
2544 @end table
2546 @node Advanced features,  , Updating the table, The spreadsheet
2547 @subsection Advanced features
2549 If you want the recalculation of fields to happen automatically, or if
2550 you want to be able to assign @i{names} to fields and columns, you need
2551 to reserve the first column of the table for special marking characters.
2552 @table @kbd
2553 @kindex C-#
2554 @item C-#
2555 Rotate the calculation mark in first column through the states @samp{ },
2556 @samp{#}, @samp{*}, @samp{!}, @samp{$}.  When there is an active region,
2557 change all marks in the region.
2558 @end table
2560 Here is an example of a table that collects exam results of students and
2561 makes use of these features:
2563 @example
2564 @group
2565 |---+---------+--------+--------+--------+-------+------|
2566 |   | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
2567 |---+---------+--------+--------+--------+-------+------|
2568 | ! |         |     P1 |     P2 |     P3 |   Tot |      |
2569 | # | Maximum |     10 |     15 |     25 |    50 | 10.0 |
2570 | ^ |         |     m1 |     m2 |     m3 |    mt |      |
2571 |---+---------+--------+--------+--------+-------+------|
2572 | # | Peter   |     10 |      8 |     23 |    41 |  8.2 |
2573 | # | Sam     |      2 |      4 |      3 |     9 |  1.8 |
2574 |---+---------+--------+--------+--------+-------+------|
2575 |   | Average |        |        |        |  29.7 |      |
2576 | ^ |         |        |        |        |    at |      |
2577 | $ | max=50  |        |        |        |       |      |
2578 |---+---------+--------+--------+--------+-------+------|
2579 #+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@@-II..@@-I);%.1f
2580 @end group
2581 @end example
2583 @noindent @b{Important}: please note that for these special tables,
2584 recalculating the table with @kbd{C-u C-c *} will only affect rows that
2585 are marked @samp{#} or @samp{*}, and fields that have a formula assigned
2586 to the field itself.  The column formulas are not applied in rows with
2587 empty first field.
2589 @cindex marking characters, tables
2590 The marking characters have the following meaning:
2591 @table @samp
2592 @item !
2593 The fields in this line define names for the columns, so that you may
2594 refer to a column as @samp{$Tot} instead of @samp{$6}.
2595 @item ^
2596 This row defines names for the fields @emph{above} the row.  With such
2597 a definition, any formula in the table may use @samp{$m1} to refer to
2598 the value @samp{10}.  Also, if you assign a formula to a names field, it
2599 will be stored as @samp{$name=...}.
2600 @item _
2601 Similar to @samp{^}, but defines names for the fields in the row
2602 @emph{below}.
2603 @item $
2604 Fields in this row can define @emph{parameters} for formulas.  For
2605 example, if a field in a @samp{$} row contains @samp{max=50}, then
2606 formulas in this table can refer to the value 50 using @samp{$max}.
2607 Parameters work exactly like constants, only that they can be defined on
2608 a per-table basis.
2609 @item #
2610 Fields in this row are automatically recalculated when pressing
2611 @key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row.  Also, this row
2612 is selected for a global recalculation with @kbd{C-u C-c *}.  Unmarked
2613 lines will be left alone by this command.
2614 @item *
2615 Selects this line for global recalculation with @kbd{C-u C-c *}, but
2616 not for automatic recalculation.  Use this when automatic
2617 recalculation slows down editing too much.
2618 @item
2619 Unmarked lines are exempt from recalculation with @kbd{C-u C-c *}.
2620 All lines that should be recalculated should be marked with @samp{#}
2621 or @samp{*}.
2622 @item /
2623 Do not export this line.  Useful for lines that contain the narrowing
2624 @samp{<N>} markers or column group markers.
2625 @end table
2627 Finally, just to whet your appetite for what can be done with the
2628 fantastic @file{calc.el} package, here is a table that computes the Taylor
2629 series of degree @code{n} at location @code{x} for a couple of
2630 functions.
2632 @example
2633 @group
2634 |---+-------------+---+-----+--------------------------------------|
2635 |   | Func        | n | x   | Result                               |
2636 |---+-------------+---+-----+--------------------------------------|
2637 | # | exp(x)      | 1 | x   | 1 + x                                |
2638 | # | exp(x)      | 2 | x   | 1 + x + x^2 / 2                      |
2639 | # | exp(x)      | 3 | x   | 1 + x + x^2 / 2 + x^3 / 6            |
2640 | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
2641 | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2    |
2642 | * | tan(x)      | 3 | x   | 0.0175 x + 1.77e-6 x^3               |
2643 |---+-------------+---+-----+--------------------------------------|
2644 #+TBLFM: $5=taylor($2,$4,$3);n3
2645 @end group
2646 @end example
2648 @node Org-Plot,  , The spreadsheet, Tables
2649 @section Org-Plot
2650 @cindex graph, in tables
2651 @cindex plot tables using Gnuplot
2652 @cindex #+PLOT
2654 Org-Plot can produce 2D and 3D graphs of information stored in org tables
2655 using @file{Gnuplot} @uref{http://www.gnuplot.info/} and @file{gnuplot-mode}
2656 @uref{http://cars9.uchicago.edu/~ravel/software/gnuplot-mode.html}.  To see
2657 this in action, ensure that you have both Gnuplot and Gnuplot mode installed
2658 on your system, then call @code{org-plot/gnuplot} on the following table.
2660 @example
2661 @group
2662 #+PLOT: title:"Citas" ind:1 deps:(3) type:2d with:histograms set:"yrange [0:]"
2663 | Sede      | Max cites | H-index |
2664 |-----------+-----------+---------|
2665 | Chile     |    257.72 |   21.39 |
2666 | Leeds     |    165.77 |   19.68 |
2667 | Sao Paolo |     71.00 |   11.50 |
2668 | Stockholm |    134.19 |   14.33 |
2669 | Morelia   |    257.56 |   17.67 |
2670 @end group
2671 @end example
2673 Notice that Org Plot is smart enough to apply the table's headers as labels.
2674 Further control over the labels, type, content, and appearance of plots can
2675 be exercised through the @code{#+PLOT:} lines preceding a table.  See below
2676 for a complete list of Org-plot options.  For more information and examples
2677 see the Org-plot tutorial at
2678 @uref{http://orgmode.org/worg/org-tutorials/org-plot.php}.
2680 @subsubheading Plot Options
2682 @table @code
2683 @item set
2684 Specify any @command{gnuplot} option to be set when graphing.
2686 @item title
2687 Specify the title of the plot.
2689 @item ind
2690 Specify which column of the table to use as the @code{x} axis.
2692 @item deps
2693 Specify the columns to graph as a Lisp style list, surrounded by parentheses
2694 and separated by spaces for example @code{dep:(3 4)} to graph the third and
2695 fourth columns (defaults to graphing all other columns aside from the @code{ind}
2696 column).
2698 @item type
2699 Specify whether the plot will be @code{2d}, @code{3d}, or @code{grid}.
2701 @item with
2702 Specify a @code{with} option to be inserted for every col being plotted
2703 (e.g. @code{lines}, @code{points}, @code{boxes}, @code{impulses}, etc...).
2704 Defaults to @code{lines}.
2706 @item file
2707 If you want to plot to a file, specify @code{"@var{path/to/desired/output-file}"}.
2709 @item labels
2710 List of labels to be used for the deps (defaults to the column headers if
2711 they exist).
2713 @item line
2714 Specify an entire line to be inserted in the Gnuplot script.
2716 @item map
2717 When plotting @code{3d} or @code{grid} types, set this to @code{t} to graph a
2718 flat mapping rather than a @code{3d} slope.
2720 @item timefmt
2721 Specify format of Org-mode timestamps as they will be parsed by Gnuplot.
2722 Defaults to @samp{%Y-%m-%d-%H:%M:%S}.
2724 @item script
2725 If you want total control, you can specify a script file (place the file name
2726 between double-quotes) which will be used to plot.  Before plotting, every
2727 instance of @code{$datafile} in the specified script will be replaced with
2728 the path to the generated data file.  Note: even if you set this option, you
2729 may still want to specify the plot type, as that can impact the content of
2730 the data file.
2731 @end table
2733 @node Hyperlinks, TODO Items, Tables, Top
2734 @chapter Hyperlinks
2735 @cindex hyperlinks
2737 Like HTML, Org provides links inside a file, external links to
2738 other files, Usenet articles, emails, and much more.
2740 @menu
2741 * Link format::                 How links in Org are formatted
2742 * Internal links::              Links to other places in the current file
2743 * External links::              URL-like links to the world
2744 * Handling links::              Creating, inserting and following
2745 * Using links outside Org::     Linking from my C source code?
2746 * Link abbreviations::          Shortcuts for writing complex links
2747 * Search options::              Linking to a specific location
2748 * Custom searches::             When the default search is not enough
2749 @end menu
2751 @node Link format, Internal links, Hyperlinks, Hyperlinks
2752 @section Link format
2753 @cindex link format
2754 @cindex format, of links
2756 Org will recognize plain URL-like links and activate them as
2757 clickable links.  The general link format, however, looks like this:
2759 @example
2760 [[link][description]]       @r{or alternatively}           [[link]]
2761 @end example
2763 @noindent
2764 Once a link in the buffer is complete (all brackets present), Org
2765 will change the display so that @samp{description} is displayed instead
2766 of @samp{[[link][description]]} and @samp{link} is displayed instead of
2767 @samp{[[link]]}.  Links will be highlighted in the face @code{org-link},
2768 which by default is an underlined face.  You can directly edit the
2769 visible part of a link.  Note that this can be either the @samp{link}
2770 part (if there is no description) or the @samp{description} part.  To
2771 edit also the invisible @samp{link} part, use @kbd{C-c C-l} with the
2772 cursor on the link.
2774 If you place the cursor at the beginning or just behind the end of the
2775 displayed text and press @key{BACKSPACE}, you will remove the
2776 (invisible) bracket at that location.  This makes the link incomplete
2777 and the internals are again displayed as plain text.  Inserting the
2778 missing bracket hides the link internals again.  To show the
2779 internal structure of all links, use the menu entry
2780 @code{Org->Hyperlinks->Literal links}.
2782 @node Internal links, External links, Link format, Hyperlinks
2783 @section Internal links
2784 @cindex internal links
2785 @cindex links, internal
2786 @cindex targets, for links
2788 @cindex property, CUSTOM_ID
2789 If the link does not look like a URL, it is considered to be internal in the
2790 current file.  The most important case is a link like
2791 @samp{[[#my-custom-id]]} which will link to the entry with the
2792 @code{CUSTOM_ID} property @samp{my-custom-id}.  Such custom IDs are very good
2793 for HTML export (@pxref{HTML export}) where they produce pretty section
2794 links.  You are responsible yourself to make sure these custom IDs are unique
2795 in a file.
2797 Links such as @samp{[[My Target]]} or @samp{[[My Target][Find my target]]}
2798 lead to a text search in the current file.
2800 The link can be followed with @kbd{C-c C-o} when the cursor is on the link,
2801 or with a mouse click (@pxref{Handling links}).  Links to custom IDs will
2802 point to the corresponding headline.  The preferred match for a text link is
2803 a @i{dedicated target}: the same string in double angular brackets.  Targets
2804 may be located anywhere; sometimes it is convenient to put them into a
2805 comment line. For example
2807 @example
2808 # <<My Target>>
2809 @end example
2811 @noindent In HTML export (@pxref{HTML export}), such targets will become
2812 named anchors for direct access through @samp{http} links@footnote{Note that
2813 text before the first headline is usually not exported, so the first such
2814 target should be after the first headline, or in the line directly before the
2815 first headline.}.
2817 If no dedicated target exists, Org will search for a headline that is exactly
2818 the link text but may also include a TODO keyword and tags@footnote{To insert
2819 a link targeting a headline, in-buffer completion can be used.  Just type a
2820 star followed by a few optional letters into the buffer and press
2821 @kbd{M-@key{TAB}}.  All headlines in the current buffer will be offered as
2822 completions.}.  In non-Org files, the search will look for the words in the
2823 link text, in the above example the search would be for @samp{my target}.
2825 Following a link pushes a mark onto Org's own mark ring.  You can
2826 return to the previous position with @kbd{C-c &}.  Using this command
2827 several times in direct succession goes back to positions recorded
2828 earlier.
2830 @menu
2831 * Radio targets::               Make targets trigger links in plain text
2832 @end menu
2834 @node Radio targets,  , Internal links, Internal links
2835 @subsection Radio targets
2836 @cindex radio targets
2837 @cindex targets, radio
2838 @cindex links, radio targets
2840 Org can automatically turn any occurrences of certain target names
2841 in normal text into a link.  So without explicitly creating a link, the
2842 text connects to the target radioing its position.  Radio targets are
2843 enclosed by triple angular brackets.  For example, a target @samp{<<<My
2844 Target>>>} causes each occurrence of @samp{my target} in normal text to
2845 become activated as a link.  The Org file is scanned automatically
2846 for radio targets only when the file is first loaded into Emacs.  To
2847 update the target list during editing, press @kbd{C-c C-c} with the
2848 cursor on or at a target.
2850 @node External links, Handling links, Internal links, Hyperlinks
2851 @section External links
2852 @cindex links, external
2853 @cindex external links
2854 @cindex links, external
2855 @cindex Gnus links
2856 @cindex BBDB links
2857 @cindex IRC links
2858 @cindex URL links
2859 @cindex file links
2860 @cindex VM links
2861 @cindex RMAIL links
2862 @cindex WANDERLUST links
2863 @cindex MH-E links
2864 @cindex USENET links
2865 @cindex SHELL links
2866 @cindex Info links
2867 @cindex Elisp links
2869 Org supports links to files, websites, Usenet and email messages,
2870 BBDB database entries and links to both IRC conversations and their
2871 logs.  External links are URL-like locators.  They start with a short
2872 identifying string followed by a colon.  There can be no space after
2873 the colon.  The following list shows examples for each link type.
2875 @example
2876 http://www.astro.uva.nl/~dominik          @r{on the web}
2877 doi:10.1000/182                           @r{DOI for an electronic resource}
2878 file:/home/dominik/images/jupiter.jpg     @r{file, absolute path}
2879 /home/dominik/images/jupiter.jpg          @r{same as above}
2880 file:papers/last.pdf                      @r{file, relative path}
2881 ./papers/last.pdf                         @r{same as above}
2882 file:/myself@@some.where:papers/last.pdf   @r{file, path on remote machine}
2883 /myself@@some.where:papers/last.pdf        @r{same as above}
2884 file:sometextfile::NNN                    @r{file with line number to jump to}
2885 file:projects.org                         @r{another Org file}
2886 file:projects.org::some words             @r{text search in Org file}
2887 file:projects.org::*task title            @r{heading search in Org file}
2888 docview:papers/last.pdf::NNN              @r{open file in doc-view mode at page NNN}
2889 id:B7423F4D-2E8A-471B-8810-C40F074717E9   @r{Link to heading by ID}
2890 news:comp.emacs                           @r{Usenet link}
2891 mailto:adent@@galaxy.net                   @r{Mail link}
2892 vm:folder                                 @r{VM folder link}
2893 vm:folder#id                              @r{VM message link}
2894 vm://myself@@some.where.org/folder#id      @r{VM on remote machine}
2895 wl:folder                                 @r{WANDERLUST folder link}
2896 wl:folder#id                              @r{WANDERLUST message link}
2897 mhe:folder                                @r{MH-E folder link}
2898 mhe:folder#id                             @r{MH-E message link}
2899 rmail:folder                              @r{RMAIL folder link}
2900 rmail:folder#id                           @r{RMAIL message link}
2901 gnus:group                                @r{Gnus group link}
2902 gnus:group#id                             @r{Gnus article link}
2903 bbdb:R.*Stallman                          @r{BBDB link (with regexp)}
2904 irc:/irc.com/#emacs/bob                   @r{IRC link}
2905 info:org:External%20links                 @r{Info node link (with encoded space)}
2906 shell:ls *.org                            @r{A shell command}
2907 elisp:org-agenda                          @r{Interactive Elisp command}
2908 elisp:(find-file-other-frame "Elisp.org") @r{Elisp form to evaluate}
2909 @end example
2911 A link should be enclosed in double brackets and may contain a
2912 descriptive text to be displayed instead of the URL (@pxref{Link
2913 format}), for example:
2915 @example
2916 [[http://www.gnu.org/software/emacs/][GNU Emacs]]
2917 @end example
2919 @noindent
2920 If the description is a file name or URL that points to an image, HTML
2921 export (@pxref{HTML export}) will inline the image as a clickable
2922 button.  If there is no description at all and the link points to an
2923 image,
2924 that image will be inlined into the exported HTML file.
2926 @cindex square brackets, around links
2927 @cindex plain text external links
2928 Org also finds external links in the normal text and activates them
2929 as links.  If spaces must be part of the link (for example in
2930 @samp{bbdb:Richard Stallman}), or if you need to remove ambiguities
2931 about the end of the link, enclose them in square brackets.
2933 @node Handling links, Using links outside Org, External links, Hyperlinks
2934 @section Handling links
2935 @cindex links, handling
2937 Org provides methods to create a link in the correct syntax, to
2938 insert it into an Org file, and to follow the link.
2940 @table @kbd
2941 @kindex C-c l
2942 @cindex storing links
2943 @item C-c l
2944 Store a link to the current location.  This is a @emph{global} command (you
2945 must create the key binding yourself) which can be used in any buffer to
2946 create a link.  The link will be stored for later insertion into an Org
2947 buffer (see below).  What kind of link will be created depends on the current
2948 buffer:
2950 @b{Org-mode buffers}@*
2951 For Org files, if there is a @samp{<<target>>} at the cursor, the link points
2952 to the target.  Otherwise it points to the current headline, which will also
2953 be the description.
2955 @vindex org-link-to-org-use-id
2956 @cindex property, CUSTOM_ID
2957 @cindex property, ID
2958 If the headline has a @code{CUSTOM_ID} property, a link to this custom ID
2959 will be stored.  In addition or alternatively (depending on the value of
2960 @code{org-link-to-org-use-id}), a globally unique @code{ID} property will be
2961 created and/or used to construct a link.  So using this command in Org
2962 buffers will potentially create two links: a human-readable from the custom
2963 ID, and one that is globally unique and works even if the entry is moved from
2964 file to file.  Later, when inserting the link, you need to decide which one
2965 to use.
2967 @b{Email/News clients: VM, Rmail, Wanderlust, MH-E, Gnus}@*
2968 Pretty much all Emacs mail clients are supported.  The link will point to the
2969 current article, or, in some GNUS buffers, to the group.  The description is
2970 constructed from the author and the subject.
2972 @b{Web browsers: W3 and W3M}@*
2973 Here the link will be the current URL, with the page title as description.
2975 @b{Contacts: BBDB}@*
2976 Links created in a BBDB buffer will point to the current entry.
2978 @b{Chat: IRC}@*
2979 @vindex org-irc-link-to-logs
2980 For IRC links, if you set the variable @code{org-irc-link-to-logs} to
2981 @code{t}, a @samp{file:/} style link to the relevant point in the logs for
2982 the current conversation is created.  Otherwise an @samp{irc:/} style link to
2983 the user/channel/server under the point will be stored.
2985 @b{Other files}@*
2986 For any other files, the link will point to the file, with a search string
2987 (@pxref{Search options}) pointing to the contents of the current line.  If
2988 there is an active region, the selected words will form the basis of the
2989 search string.  If the automatically created link is not working correctly or
2990 accurately enough, you can write custom functions to select the search string
2991 and to do the search for particular file types---see @ref{Custom searches}.
2992 The key binding @kbd{C-c l} is only a suggestion---see @ref{Installation}.
2994 @b{Agenda view}@*
2995 When the cursor is in an agenda view, the created link points to the
2996 entry referenced by the current line.
2999 @kindex C-c C-l
3000 @cindex link completion
3001 @cindex completion, of links
3002 @cindex inserting links
3003 @item C-c C-l
3004 @vindex org-keep-stored-link-after-insertion
3005 Insert a link@footnote{ Note that you don't have to use this command to
3006 insert a link.  Links in Org are plain text, and you can type or paste them
3007 straight into the buffer.  By using this command, the links are automatically
3008 enclosed in double brackets, and you will be asked for the optional
3009 descriptive text.}.  This prompts for a link to be inserted into the buffer.
3010 You can just type a link, using text for an internal link, or one of the link
3011 type prefixes mentioned in the examples above.  The link will be inserted
3012 into the buffer@footnote{After insertion of a stored link, the link will be
3013 removed from the list of stored links.  To keep it in the list later use, use
3014 a triple @kbd{C-u} prefix argument to @kbd{C-c C-l}, or configure the option
3015 @code{org-keep-stored-link-after-insertion}.}, along with a descriptive text.
3016 If some text was selected when this command is called, the selected text
3017 becomes the default description.
3019 @b{Inserting stored links}@*
3020 All links stored during the
3021 current session are part of the history for this prompt, so you can access
3022 them with @key{up} and @key{down} (or @kbd{M-p/n}).
3024 @b{Completion support}@* Completion with @key{TAB} will help you to insert
3025 valid link prefixes like @samp{http:} or @samp{ftp:}, including the prefixes
3026 defined through link abbreviations (@pxref{Link abbreviations}).  If you
3027 press @key{RET} after inserting only the @var{prefix}, Org will offer
3028 specific completion support for some link types@footnote{This works by
3029 calling a special function @code{org-PREFIX-complete-link}.}  For
3030 example, if you type @kbd{file @key{RET}}, file name completion (alternative
3031 access: @kbd{C-u C-c C-l}, see below) will be offered, and after @kbd{bbdb
3032 @key{RET}} you can complete contact names.
3033 @kindex C-u C-c C-l
3034 @cindex file name completion
3035 @cindex completion, of file names
3036 @item C-u C-c C-l
3037 When @kbd{C-c C-l} is called with a @kbd{C-u} prefix argument, a link to
3038 a file will be inserted and you may use file name completion to select
3039 the name of the file.  The path to the file is inserted relative to the
3040 directory of the current Org file, if the linked file is in the current
3041 directory or in a sub-directory of it, or if the path is written relative
3042 to the current directory using @samp{../}.  Otherwise an absolute path
3043 is used, if possible with @samp{~/} for your home directory.  You can
3044 force an absolute path with two @kbd{C-u} prefixes.
3046 @item C-c C-l @ @r{(with cursor on existing link)}
3047 When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
3048 link and description parts of the link.
3050 @cindex following links
3051 @kindex C-c C-o
3052 @kindex @key{RET}
3053 @item C-c C-o @ @r{(or, if @code{org-return-follows-link} is set, also} @key{RET}
3054 @vindex org-file-apps
3055 Open link at point.  This will launch a web browser for URLs (using
3056 @command{browse-url-at-point}), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for
3057 the corresponding links, and execute the command in a shell link.  When the
3058 cursor is on an internal link, this command runs the corresponding search.
3059 When the cursor is on a TAG list in a headline, it creates the corresponding
3060 TAGS view.  If the cursor is on a timestamp, it compiles the agenda for that
3061 date.  Furthermore, it will visit text and remote files in @samp{file:} links
3062 with Emacs and select a suitable application for local non-text files.
3063 Classification of files is based on file extension only.  See option
3064 @code{org-file-apps}.  If you want to override the default application and
3065 visit the file with Emacs, use a @kbd{C-u} prefix.  If you want to avoid
3066 opening in Emacs, use a @kbd{C-u C-u} prefix.@*
3067 If the cursor is on a headline, but not on a link, offer all links in the
3068 headline and entry text.
3070 @kindex mouse-2
3071 @kindex mouse-1
3072 @item mouse-2
3073 @itemx mouse-1
3074 On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o}
3075 would.  Under Emacs 22, @kbd{mouse-1} will also follow a link.
3077 @kindex mouse-3
3078 @item mouse-3
3079 @vindex org-display-internal-link-with-indirect-buffer
3080 Like @kbd{mouse-2}, but force file links to be opened with Emacs, and
3081 internal links to be displayed in another window@footnote{See the
3082 variable @code{org-display-internal-link-with-indirect-buffer}}.
3084 @cindex inlining images
3085 @cindex images, inlining
3086 @kindex C-c C-x C-v
3087 @item C-c C-x C-v
3088 Toggle the inline display of linked images.  Normally this will only inline
3089 images that have no description part in the link, i.e. images that will also
3090 be inlined during export.  When called with a prefix argument, also display
3091 images that do have a link description.
3092 @cindex mark ring
3093 @kindex C-c %
3094 @item C-c %
3095 Push the current position onto the mark ring, to be able to return
3096 easily. Commands following an internal link do this automatically.
3098 @cindex links, returning to
3099 @kindex C-c &
3100 @item C-c &
3101 Jump back to a recorded position.  A position is recorded by the
3102 commands following internal links, and by @kbd{C-c %}.  Using this
3103 command several times in direct succession moves through a ring of
3104 previously recorded positions.
3106 @kindex C-c C-x C-n
3107 @kindex C-c C-x C-p
3108 @cindex links, finding next/previous
3109 @item C-c C-x C-n
3110 @itemx C-c C-x C-p
3111 Move forward/backward to the next link in the buffer.  At the limit of
3112 the buffer, the search fails once, and then wraps around.  The key
3113 bindings for this are really too long, you might want to bind this also
3114 to @kbd{C-n} and @kbd{C-p}
3115 @lisp
3116 (add-hook 'org-load-hook
3117   (lambda ()
3118     (define-key 'org-mode-map "\C-n" 'org-next-link)
3119     (define-key 'org-mode-map "\C-p" 'org-previous-link)))
3120 @end lisp
3121 @end table
3123 @node Using links outside Org, Link abbreviations, Handling links, Hyperlinks
3124 @section Using links outside Org
3126 You can insert and follow links that have Org syntax not only in
3127 Org, but in any Emacs buffer.  For this, you should create two
3128 global commands, like this (please select suitable global keys
3129 yourself):
3131 @lisp
3132 (global-set-key "\C-c L" 'org-insert-link-global)
3133 (global-set-key "\C-c o" 'org-open-at-point-global)
3134 @end lisp
3136 @node Link abbreviations, Search options, Using links outside Org, Hyperlinks
3137 @section Link abbreviations
3138 @cindex link abbreviations
3139 @cindex abbreviation, links
3141 Long URLs can be cumbersome to type, and often many similar links are
3142 needed in a document.  For this you can use link abbreviations.  An
3143 abbreviated link looks like this
3145 @example
3146 [[linkword:tag][description]]
3147 @end example
3149 @noindent
3150 @vindex org-link-abbrev-alist
3151 where the tag is optional.
3152 The @i{linkword} must be a word, starting with a letter, followed by
3153 letters, numbers, @samp{-}, and @samp{_}.  Abbreviations are resolved
3154 according to the information in the variable @code{org-link-abbrev-alist}
3155 that relates the linkwords to replacement text.  Here is an example:
3157 @lisp
3158 @group
3159 (setq org-link-abbrev-alist
3160   '(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
3161     ("google"   . "http://www.google.com/search?q=")
3162     ("ads"      . "http://adsabs.harvard.edu/cgi-bin/
3163                    nph-abs_connect?author=%s&db_key=AST")))
3164 @end group
3165 @end lisp
3167 If the replacement text contains the string @samp{%s}, it will be
3168 replaced with the tag.  Otherwise the tag will be appended to the string
3169 in order to create the link.  You may also specify a function that will
3170 be called with the tag as the only argument to create the link.
3172 With the above setting, you could link to a specific bug with
3173 @code{[[bugzilla:129]]}, search the web for @samp{OrgMode} with
3174 @code{[[google:OrgMode]]} and find out what the Org author is
3175 doing besides Emacs hacking with @code{[[ads:Dominik,C]]}.
3177 If you need special abbreviations just for a single Org buffer, you
3178 can define them in the file with
3180 @cindex #+LINK
3181 @example
3182 #+LINK: bugzilla  http://10.1.2.9/bugzilla/show_bug.cgi?id=
3183 #+LINK: google    http://www.google.com/search?q=%s
3184 @end example
3186 @noindent
3187 In-buffer completion (@pxref{Completion}) can be used after @samp{[} to
3188 complete link abbreviations.  You may also define a function
3189 @code{org-PREFIX-complete-link} that implements special (e.g. completion)
3190 support for inserting such a link with @kbd{C-c C-l}.  Such a function should
3191 not accept any arguments, and return the full link with prefix.
3193 @node Search options, Custom searches, Link abbreviations, Hyperlinks
3194 @section Search options in file links
3195 @cindex search option in file links
3196 @cindex file links, searching
3198 File links can contain additional information to make Emacs jump to a
3199 particular location in the file when following a link.  This can be a
3200 line number or a search option after a double@footnote{For backward
3201 compatibility, line numbers can also follow a single colon.} colon. For
3202 example, when the command @kbd{C-c l} creates a link (@pxref{Handling
3203 links}) to a file, it encodes the words in the current line as a search
3204 string that can be used to find this line back later when following the
3205 link with @kbd{C-c C-o}.
3207 Here is the syntax of the different ways to attach a search to a file
3208 link, together with an explanation:
3210 @example
3211 [[file:~/code/main.c::255]]
3212 [[file:~/xx.org::My Target]]
3213 [[file:~/xx.org::*My Target]]
3214 [[file:~/xx.org::#my-custom-id]]
3215 [[file:~/xx.org::/regexp/]]
3216 @end example
3218 @table @code
3219 @item 255
3220 Jump to line 255.
3221 @item My Target
3222 Search for a link target @samp{<<My Target>>}, or do a text search for
3223 @samp{my target}, similar to the search in internal links, see
3224 @ref{Internal links}.  In HTML export (@pxref{HTML export}), such a file
3225 link will become an HTML reference to the corresponding named anchor in
3226 the linked file.
3227 @item *My Target
3228 In an Org file, restrict search to headlines.
3229 @item #my-custom-id
3230 Link to a heading with a @code{CUSTOM_ID} property
3231 @item /regexp/
3232 Do a regular expression search for @code{regexp}.  This uses the Emacs
3233 command @code{occur} to list all matches in a separate window.  If the
3234 target file is in Org-mode, @code{org-occur} is used to create a
3235 sparse tree with the matches.
3236 @c If the target file is a directory,
3237 @c @code{grep} will be used to search all files in the directory.
3238 @end table
3240 As a degenerate case, a file link with an empty file name can be used
3241 to search the current file.  For example, @code{[[file:::find me]]} does
3242 a search for @samp{find me} in the current file, just as
3243 @samp{[[find me]]} would.
3245 @node Custom searches,  , Search options, Hyperlinks
3246 @section Custom Searches
3247 @cindex custom search strings
3248 @cindex search strings, custom
3250 The default mechanism for creating search strings and for doing the
3251 actual search related to a file link may not work correctly in all
3252 cases.  For example, Bib@TeX{} database files have many entries like
3253 @samp{year="1993"} which would not result in good search strings,
3254 because the only unique identification for a Bib@TeX{} entry is the
3255 citation key.
3257 @vindex org-create-file-search-functions
3258 @vindex org-execute-file-search-functions
3259 If you come across such a problem, you can write custom functions to set
3260 the right search string for a particular file type, and to do the search
3261 for the string in the file.  Using @code{add-hook}, these functions need
3262 to be added to the hook variables
3263 @code{org-create-file-search-functions} and
3264 @code{org-execute-file-search-functions}.  See the docstring for these
3265 variables for more information.  Org actually uses this mechanism
3266 for Bib@TeX{} database files, and you can use the corresponding code as
3267 an implementation example.  See the file @file{org-bibtex.el}.
3269 @node TODO Items, Tags, Hyperlinks, Top
3270 @chapter TODO items
3271 @cindex TODO items
3273 Org-mode does not maintain TODO lists as separate documents@footnote{Of
3274 course, you can make a document that contains only long lists of TODO items,
3275 but this is not required.}.  Instead, TODO items are an integral part of the
3276 notes file, because TODO items usually come up while taking notes!  With Org
3277 mode, simply mark any entry in a tree as being a TODO item.  In this way,
3278 information is not duplicated, and the entire context from which the TODO
3279 item emerged is always present.
3281 Of course, this technique for managing TODO items scatters them
3282 throughout your notes file.  Org-mode compensates for this by providing
3283 methods to give you an overview of all the things that you have to do.
3285 @menu
3286 * TODO basics::                 Marking and displaying TODO entries
3287 * TODO extensions::             Workflow and assignments
3288 * Progress logging::            Dates and notes for progress
3289 * Priorities::                  Some things are more important than others
3290 * Breaking down tasks::         Splitting a task into manageable pieces
3291 * Checkboxes::                  Tick-off lists
3292 @end menu
3294 @node TODO basics, TODO extensions, TODO Items, TODO Items
3295 @section Basic TODO functionality
3297 Any headline becomes a TODO item when it starts with the word
3298 @samp{TODO}, for example:
3300 @example
3301 *** TODO Write letter to Sam Fortune
3302 @end example
3304 @noindent
3305 The most important commands to work with TODO entries are:
3307 @table @kbd
3308 @kindex C-c C-t
3309 @cindex cycling, of TODO states
3310 @item C-c C-t
3311 Rotate the TODO state of the current item among
3313 @example
3314 ,-> (unmarked) -> TODO -> DONE --.
3315 '--------------------------------'
3316 @end example
3318 The same rotation can also be done ``remotely'' from the timeline and
3319 agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
3321 @kindex C-u C-c C-t
3322 @item C-u C-c C-t
3323 Select a specific keyword using completion or (if it has been set up)
3324 the fast selection interface.  For the latter, you need to assign keys
3325 to TODO states, see @ref{Per-file keywords}, and @ref{Setting tags}, for
3326 more information.
3328 @kindex S-@key{right}
3329 @kindex S-@key{left}
3330 @vindex org-treat-S-cursor-todo-selection-as-state-change
3331 @item S-@key{right}
3332 @itemx S-@key{left}
3333 Select the following/preceding TODO state, similar to cycling.  Useful
3334 mostly if more than two TODO states are possible (@pxref{TODO
3335 extensions}).  See also @ref{Conflicts}, for a discussion of the interaction
3336 with @code{shift-selection-mode}.  See also the variable
3337 @code{org-treat-S-cursor-todo-selection-as-state-change}.
3338 @kindex C-c / t
3339 @cindex sparse tree, for TODO
3340 @itemx C-c / t
3341 @vindex org-todo-keywords
3342 View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}).  Folds the
3343 entire buffer, but shows all TODO items (with not-DONE state) and the
3344 headings hierarchy above them.  With a prefix argument (or by using @kbd{C-c
3345 / T}), search for a specific TODO.  You will be prompted for the keyword, and
3346 you can also give a list of keywords like @code{KWD1|KWD2|...} to list
3347 entries that match any one of these keywords.  With numeric prefix argument
3348 N, show the tree for the Nth keyword in the variable
3349 @code{org-todo-keywords}.  With two prefix arguments, find all TODO states,
3350 both un-done and done.
3351 @kindex C-c a t
3352 @item C-c a t
3353 Show the global TODO list.  Collects the TODO items (with not-DONE states)
3354 from all agenda files (@pxref{Agenda Views}) into a single buffer.  The new
3355 buffer will be in @code{agenda-mode}, which provides commands to examine and
3356 manipulate the TODO entries from the new buffer (@pxref{Agenda commands}).
3357 @xref{Global TODO list}, for more information.
3358 @kindex S-M-@key{RET}
3359 @item S-M-@key{RET}
3360 Insert a new TODO entry below the current one.
3361 @end table
3363 @noindent
3364 @vindex org-todo-state-tags-triggers
3365 Changing a TODO state can also trigger tag changes.  See the docstring of the
3366 option @code{org-todo-state-tags-triggers} for details.
3368 @node TODO extensions, Progress logging, TODO basics, TODO Items
3369 @section Extended use of TODO keywords
3370 @cindex extended TODO keywords
3372 @vindex org-todo-keywords
3373 By default, marked TODO entries have one of only two states: TODO and
3374 DONE.  Org-mode allows you to classify TODO items in more complex ways
3375 with @emph{TODO keywords} (stored in @code{org-todo-keywords}).  With
3376 special setup, the TODO keyword system can work differently in different
3377 files.
3379 Note that @i{tags} are another way to classify headlines in general and
3380 TODO items in particular (@pxref{Tags}).
3382 @menu
3383 * Workflow states::             From TODO to DONE in steps
3384 * TODO types::                  I do this, Fred does the rest
3385 * Multiple sets in one file::   Mixing it all, and still finding your way
3386 * Fast access to TODO states::  Single letter selection of a state
3387 * Per-file keywords::           Different files, different requirements
3388 * Faces for TODO keywords::     Highlighting states
3389 * TODO dependencies::           When one task needs to wait for others
3390 @end menu
3392 @node Workflow states, TODO types, TODO extensions, TODO extensions
3393 @subsection TODO keywords as workflow states
3394 @cindex TODO workflow
3395 @cindex workflow states as TODO keywords
3397 You can use TODO keywords to indicate different @emph{sequential} states
3398 in the process of working on an item, for example@footnote{Changing
3399 this variable only becomes effective after restarting Org-mode in a
3400 buffer.}:
3402 @lisp
3403 (setq org-todo-keywords
3404   '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
3405 @end lisp
3407 The vertical bar separates the TODO keywords (states that @emph{need
3408 action}) from the DONE states (which need @emph{no further action}).  If
3409 you don't provide the separator bar, the last state is used as the DONE
3410 state.
3411 @cindex completion, of TODO keywords
3412 With this setup, the command @kbd{C-c C-t} will cycle an entry from TODO
3413 to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED.  You may
3414 also use a numeric prefix argument to quickly select a specific state.  For
3415 example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
3416 Or you can use @kbd{S-@key{left}} to go backward through the sequence.  If you
3417 define many keywords, you can use in-buffer completion
3418 (@pxref{Completion}) or even a special one-key selection scheme
3419 (@pxref{Fast access to TODO states}) to insert these words into the
3420 buffer.  Changing a TODO state can be logged with a timestamp, see
3421 @ref{Tracking TODO state changes}, for more information.
3423 @node TODO types, Multiple sets in one file, Workflow states, TODO extensions
3424 @subsection TODO keywords as types
3425 @cindex TODO types
3426 @cindex names as TODO keywords
3427 @cindex types as TODO keywords
3429 The second possibility is to use TODO keywords to indicate different
3430 @emph{types} of action items.  For example, you might want to indicate
3431 that items are for ``work'' or ``home''.  Or, when you work with several
3432 people on a single project, you might want to assign action items
3433 directly to persons, by using their names as TODO keywords.  This would
3434 be set up like this:
3436 @lisp
3437 (setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
3438 @end lisp
3440 In this case, different keywords do not indicate a sequence, but rather
3441 different types.  So the normal work flow would be to assign a task to a
3442 person, and later to mark it DONE.  Org-mode supports this style by adapting
3443 the workings of the command @kbd{C-c C-t}@footnote{This is also true for the
3444 @kbd{t} command in the timeline and agenda buffers.}.  When used several
3445 times in succession, it will still cycle through all names, in order to first
3446 select the right type for a task.  But when you return to the item after some
3447 time and execute @kbd{C-c C-t} again, it will switch from any name directly
3448 to DONE.  Use prefix arguments or completion to quickly select a specific
3449 name.  You can also review the items of a specific TODO type in a sparse tree
3450 by using a numeric prefix to @kbd{C-c / t}.  For example, to see all things
3451 Lucy has to do, you would use @kbd{C-3 C-c / t}.  To collect Lucy's items
3452 from all agenda files into a single buffer, you would use the numeric prefix
3453 argument as well when creating the global TODO list: @kbd{C-3 C-c a t}.
3455 @node Multiple sets in one file, Fast access to TODO states, TODO types, TODO extensions
3456 @subsection Multiple keyword sets in one file
3457 @cindex TODO keyword sets
3459 Sometimes you may want to use different sets of TODO keywords in
3460 parallel.  For example, you may want to have the basic
3461 @code{TODO}/@code{DONE}, but also a workflow for bug fixing, and a
3462 separate state indicating that an item has been canceled (so it is not
3463 DONE, but also does not require action).  Your setup would then look
3464 like this:
3466 @lisp
3467 (setq org-todo-keywords
3468       '((sequence "TODO" "|" "DONE")
3469         (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
3470         (sequence "|" "CANCELED")))
3471 @end lisp
3473 The keywords should all be different, this helps Org-mode to keep track
3474 of which subsequence should be used for a given entry.  In this setup,
3475 @kbd{C-c C-t} only operates within a subsequence, so it switches from
3476 @code{DONE} to (nothing) to @code{TODO}, and from @code{FIXED} to
3477 (nothing) to @code{REPORT}.  Therefore you need a mechanism to initially
3478 select the correct sequence.  Besides the obvious ways like typing a
3479 keyword or using completion, you may also apply the following commands:
3481 @table @kbd
3482 @kindex C-S-@key{right}
3483 @kindex C-S-@key{left}
3484 @kindex C-u C-u C-c C-t
3485 @item C-u C-u C-c C-t
3486 @itemx C-S-@key{right}
3487 @itemx C-S-@key{left}
3488 These keys jump from one TODO subset to the next.  In the above example,
3489 @kbd{C-u C-u C-c C-t} or @kbd{C-S-@key{right}} would jump from @code{TODO} or
3490 @code{DONE} to @code{REPORT}, and any of the words in the second row to
3491 @code{CANCELED}.  Note that the @kbd{C-S-} key binding conflict with
3492 @code{shift-selection-mode} (@pxref{Conflicts}).
3493 @kindex S-@key{right}
3494 @kindex S-@key{left}
3495 @item S-@key{right}
3496 @itemx S-@key{left}
3497 @kbd{S-@key{<left>}} and @kbd{S-@key{<right>}} and walk through @emph{all}
3498 keywords from all sets, so for example @kbd{S-@key{<right>}} would switch
3499 from @code{DONE} to @code{REPORT} in the example above.  See also
3500 @ref{Conflicts}, for a discussion of the interaction with
3501 @code{shift-selection-mode}.
3502 @end table
3504 @node Fast access to TODO states, Per-file keywords, Multiple sets in one file, TODO extensions
3505 @subsection Fast access to TODO states
3507 If you would like to quickly change an entry to an arbitrary TODO state
3508 instead of cycling through the states, you can set up keys for
3509 single-letter access to the states.  This is done by adding the section
3510 key after each keyword, in parentheses.  For example:
3512 @lisp
3513 (setq org-todo-keywords
3514       '((sequence "TODO(t)" "|" "DONE(d)")
3515         (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
3516         (sequence "|" "CANCELED(c)")))
3517 @end lisp
3519 @vindex org-fast-tag-selection-include-todo
3520 If you then press @code{C-c C-t} followed by the selection key, the entry
3521 will be switched to this state.  @key{SPC} can be used to remove any TODO
3522 keyword from an entry.@footnote{Check also the variable
3523 @code{org-fast-tag-selection-include-todo}, it allows you to change the TODO
3524 state through the tags interface (@pxref{Setting tags}), in case you like to
3525 mingle the two concepts.  Note that this means you need to come up with
3526 unique keys across both sets of keywords.}
3528 @node Per-file keywords, Faces for TODO keywords, Fast access to TODO states, TODO extensions
3529 @subsection Setting up keywords for individual files
3530 @cindex keyword options
3531 @cindex per-file keywords
3532 @cindex #+TODO
3533 @cindex #+TYP_TODO
3534 @cindex #+SEQ_TODO
3536 It can be very useful to use different aspects of the TODO mechanism in
3537 different files.  For file-local settings, you need to add special lines
3538 to the file which set the keywords and interpretation for that file
3539 only.  For example, to set one of the two examples discussed above, you
3540 need one of the following lines, starting in column zero anywhere in the
3541 file:
3543 @example
3544 #+TODO: TODO FEEDBACK VERIFY | DONE CANCELED
3545 @end example
3546 @noindent (you may also write @code{#+SEQ_TODO} to be explicit about the
3547 interpretation, but it means the same as @code{#+TODO}), or
3548 @example
3549 #+TYP_TODO: Fred Sara Lucy Mike | DONE
3550 @end example
3552 A setup for using several sets in parallel would be:
3554 @example
3555 #+TODO: TODO | DONE
3556 #+TODO: REPORT BUG KNOWNCAUSE | FIXED
3557 #+TODO: | CANCELED
3558 @end example
3560 @cindex completion, of option keywords
3561 @kindex M-@key{TAB}
3562 @noindent To make sure you are using the correct keyword, type
3563 @samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
3565 @cindex DONE, final TODO keyword
3566 Remember that the keywords after the vertical bar (or the last keyword
3567 if no bar is there) must always mean that the item is DONE (although you
3568 may use a different word).  After changing one of these lines, use
3569 @kbd{C-c C-c} with the cursor still in the line to make the changes
3570 known to Org-mode@footnote{Org-mode parses these lines only when
3571 Org-mode is activated after visiting a file.  @kbd{C-c C-c} with the
3572 cursor in a line starting with @samp{#+} is simply restarting Org-mode
3573 for the current buffer.}.
3575 @node Faces for TODO keywords, TODO dependencies, Per-file keywords, TODO extensions
3576 @subsection Faces for TODO keywords
3577 @cindex faces, for TODO keywords
3579 @vindex org-todo @r{(face)}
3580 @vindex org-done @r{(face)}
3581 @vindex org-todo-keyword-faces
3582 Org-mode highlights TODO keywords with special faces: @code{org-todo}
3583 for keywords indicating that an item still has to be acted upon, and
3584 @code{org-done} for keywords indicating that an item is finished.  If
3585 you are using more than 2 different states, you might want to use
3586 special faces for some of them.  This can be done using the variable
3587 @code{org-todo-keyword-faces}.  For example:
3589 @lisp
3590 @group
3591 (setq org-todo-keyword-faces
3592       '(("TODO" . org-warning) ("STARTED" . "yellow")
3593         ("CANCELED" . (:foreground "blue" :weight bold))))
3594 @end group
3595 @end lisp
3597 While using a list with face properties as shown for CANCELED @emph{should}
3598 work, this does not aways seem to be the case.  If necessary, define a
3599 special face and use that.  A string is interpreted as a color.  The variable
3600 @code{org-faces-easy-properties} determines if that color is interpreted as a
3601 foreground or a background color.
3603 @node TODO dependencies,  , Faces for TODO keywords, TODO extensions
3604 @subsection TODO dependencies
3605 @cindex TODO dependencies
3606 @cindex dependencies, of TODO states
3608 @vindex org-enforce-todo-dependencies
3609 @cindex property, ORDERED
3610 The structure of Org files (hierarchy and lists) makes it easy to define TODO
3611 dependencies.  Usually, a parent TODO task should not be marked DONE until
3612 all subtasks (defined as children tasks) are marked as DONE.  And sometimes
3613 there is a logical sequence to a number of (sub)tasks, so that one task
3614 cannot be acted upon before all siblings above it are done.  If you customize
3615 the variable @code{org-enforce-todo-dependencies}, Org will block entries
3616 from changing state to DONE while they have children that are not DONE.
3617 Furthermore, if an entry has a property @code{ORDERED}, each of its children
3618 will be blocked until all earlier siblings are marked DONE.  Here is an
3619 example:
3621 @example
3622 * TODO Blocked until (two) is done
3623 ** DONE one
3624 ** TODO two
3626 * Parent
3627   :PROPERTIES:
3628     :ORDERED: t
3629   :END:
3630 ** TODO a
3631 ** TODO b, needs to wait for (a)
3632 ** TODO c, needs to wait for (a) and (b)
3633 @end example
3635 @table @kbd
3636 @kindex C-c C-x o
3637 @item C-c C-x o
3638 @vindex org-track-ordered-property-with-tag
3639 @cindex property, ORDERED
3640 Toggle the @code{ORDERED} property of the current entry.  A property is used
3641 for this behavior because this should be local to the current entry, not
3642 inherited like a tag.  However, if you would like to @i{track} the value of
3643 this property with a tag for better visibility, customize the variable
3644 @code{org-track-ordered-property-with-tag}.
3645 @kindex C-u C-u C-u C-c C-t
3646 @item C-u C-u C-u C-c C-t
3647 Change TODO state, circumventing any state blocking.
3648 @end table
3650 @vindex org-agenda-dim-blocked-tasks
3651 If you set the variable @code{org-agenda-dim-blocked-tasks}, TODO entries
3652 that cannot be closed because of such dependencies will be shown in a dimmed
3653 font or even made invisible in agenda views (@pxref{Agenda Views}).
3655 @cindex checkboxes and TODO dependencies
3656 @vindex org-enforce-todo-dependencies
3657 You can also block changes of TODO states by looking at checkboxes
3658 (@pxref{Checkboxes}).  If you set the variable
3659 @code{org-enforce-todo-checkbox-dependencies}, an entry that has unchecked
3660 checkboxes will be blocked from switching to DONE.
3662 If you need more complex dependency structures, for example dependencies
3663 between entries in different trees or files, check out the contributed
3664 module @file{org-depend.el}.
3666 @page
3667 @node Progress logging, Priorities, TODO extensions, TODO Items
3668 @section Progress logging
3669 @cindex progress logging
3670 @cindex logging, of progress
3672 Org-mode can automatically record a timestamp and possibly a note when
3673 you mark a TODO item as DONE, or even each time you change the state of
3674 a TODO item.  This system is highly configurable, settings can be on a
3675 per-keyword basis and can be localized to a file or even a subtree.  For
3676 information on how to clock working time for a task, see @ref{Clocking
3677 work time}.
3679 @menu
3680 * Closing items::               When was this entry marked DONE?
3681 * Tracking TODO state changes::  When did the status change?
3682 * Tracking your habits::        How consistent have you been?
3683 @end menu
3685 @node Closing items, Tracking TODO state changes, Progress logging, Progress logging
3686 @subsection Closing items
3688 The most basic logging is to keep track of @emph{when} a certain TODO
3689 item was finished.  This is achieved with@footnote{The corresponding
3690 in-buffer setting is: @code{#+STARTUP: logdone}}.
3692 @lisp
3693 (setq org-log-done 'time)
3694 @end lisp
3696 @noindent
3697 Then each time you turn an entry from a TODO (not-done) state into any
3698 of the DONE states, a line @samp{CLOSED: [timestamp]} will be inserted
3699 just after the headline.  If you turn the entry back into a TODO item
3700 through further state cycling, that line will be removed again.  If you
3701 want to record a note along with the timestamp, use@footnote{The
3702 corresponding in-buffer setting is: @code{#+STARTUP: lognotedone}}
3704 @lisp
3705 (setq org-log-done 'note)
3706 @end lisp
3708 @noindent
3709 You will then be prompted for a note, and that note will be stored below
3710 the entry with a @samp{Closing Note} heading.
3712 In the timeline (@pxref{Timeline}) and in the agenda
3713 (@pxref{Weekly/daily agenda}), you can then use the @kbd{l} key to
3714 display the TODO items with a @samp{CLOSED} timestamp on each day,
3715 giving you an overview of what has been done.
3717 @node Tracking TODO state changes, Tracking your habits, Closing items, Progress logging
3718 @subsection Tracking TODO state changes
3719 @cindex drawer, for state change recording
3721 @vindex org-log-states-order-reversed
3722 @vindex org-log-into-drawer
3723 @cindex property, LOG_INTO_DRAWER
3724 When TODO keywords are used as workflow states (@pxref{Workflow states}), you
3725 might want to keep track of when a state change occurred and maybe take a
3726 note about this change.  You can either record just a timestamp, or a
3727 time-stamped note for a change.  These records will be inserted after the
3728 headline as an itemized list, newest first@footnote{See the variable
3729 @code{org-log-states-order-reversed}}.  When taking a lot of notes, you might
3730 want to get the notes out of the way into a drawer (@pxref{Drawers}).
3731 Customize the variable @code{org-log-into-drawer} to get this
3732 behavior---the recommended drawer for this is called @code{LOGBOOK}.  You can
3733 also overrule the setting of this variable for a subtree by setting a
3734 @code{LOG_INTO_DRAWER} property.
3736 Since it is normally too much to record a note for every state, Org-mode
3737 expects configuration on a per-keyword basis for this.  This is achieved by
3738 adding special markers @samp{!} (for a timestamp) and @samp{@@} (for a note)
3739 in parentheses after each keyword.  For example, with the setting
3741 @lisp
3742 (setq org-todo-keywords
3743   '((sequence "TODO(t)" "WAIT(w@@/!)" "|" "DONE(d!)" "CANCELED(c@@)")))
3744 @end lisp
3746 @noindent
3747 @vindex org-log-done
3748 you not only define global TODO keywords and fast access keys, but also
3749 request that a time is recorded when the entry is set to
3750 DONE@footnote{It is possible that Org-mode will record two timestamps
3751 when you are using both @code{org-log-done} and state change logging.
3752 However, it will never prompt for two notes---if you have configured
3753 both, the state change recording note will take precedence and cancel
3754 the @samp{Closing Note}.}, and that a note is recorded when switching to
3755 WAIT or CANCELED.  The setting for WAIT is even more special: the
3756 @samp{!} after the slash means that in addition to the note taken when
3757 entering the state, a timestamp should be recorded when @i{leaving} the
3758 WAIT state, if and only if the @i{target} state does not configure
3759 logging for entering it.  So it has no effect when switching from WAIT
3760 to DONE, because DONE is configured to record a timestamp only.  But
3761 when switching from WAIT back to TODO, the @samp{/!} in the WAIT
3762 setting now triggers a timestamp even though TODO has no logging
3763 configured.
3765 You can use the exact same syntax for setting logging preferences local
3766 to a buffer:
3767 @example
3768 #+TODO: TODO(t) WAIT(w@@/!) | DONE(d!) CANCELED(c@@)
3769 @end example
3771 @cindex property, LOGGING
3772 In order to define logging settings that are local to a subtree or a
3773 single item, define a LOGGING property in this entry.  Any non-empty
3774 LOGGING property resets all logging settings to nil.  You may then turn
3775 on logging for this specific tree using STARTUP keywords like
3776 @code{lognotedone} or @code{logrepeat}, as well as adding state specific
3777 settings like @code{TODO(!)}.  For example
3779 @example
3780 * TODO Log each state with only a time
3781   :PROPERTIES:
3782   :LOGGING: TODO(!) WAIT(!) DONE(!) CANCELED(!)
3783   :END:
3784 * TODO Only log when switching to WAIT, and when repeating
3785   :PROPERTIES:
3786   :LOGGING: WAIT(@@) logrepeat
3787   :END:
3788 * TODO No logging at all
3789   :PROPERTIES:
3790   :LOGGING: nil
3791   :END:
3792 @end example
3794 @node Tracking your habits,  , Tracking TODO state changes, Progress logging
3795 @subsection Tracking your habits
3796 @cindex habits
3798 Org has the ability to track the consistency of a special category of TODOs,
3799 called ``habits''.  A habit has the following properties:
3801 @enumerate
3802 @item
3803 You have enabled the @code{habits} module by customizing the variable
3804 @code{org-modules}.
3805 @item
3806 The habit is a TODO, with a TODO keyword representing an open state.
3807 @item
3808 The property @code{STYLE} is set to the value @code{habit}.
3809 @item
3810 The TODO has a scheduled date, with a @code{.+} style repeat interval.
3811 @item
3812 The TODO may also have minimum and maximum ranges specified by using the
3813 syntax @samp{.+2d/3d}, which says that you want to do the task at least every
3814 three days, but at most every two days.
3815 @item
3816 You must also have state logging for the @code{DONE} state enabled, in order
3817 for historical data to be represented in the consistency graph.  If it's not
3818 enabled it's not an error, but the consistency graphs will be largely
3819 meaningless.
3820 @end enumerate
3822 To give you an idea of what the above rules look like in action, here's an
3823 actual habit with some history:
3825 @example
3826 ** TODO Shave
3827    SCHEDULED: <2009-10-17 Sat .+2d/4d>
3828    - State "DONE"       from "TODO"       [2009-10-15 Thu]
3829    - State "DONE"       from "TODO"       [2009-10-12 Mon]
3830    - State "DONE"       from "TODO"       [2009-10-10 Sat]
3831    - State "DONE"       from "TODO"       [2009-10-04 Sun]
3832    - State "DONE"       from "TODO"       [2009-10-02 Fri]
3833    - State "DONE"       from "TODO"       [2009-09-29 Tue]
3834    - State "DONE"       from "TODO"       [2009-09-25 Fri]
3835    - State "DONE"       from "TODO"       [2009-09-19 Sat]
3836    - State "DONE"       from "TODO"       [2009-09-16 Wed]
3837    - State "DONE"       from "TODO"       [2009-09-12 Sat]
3838    :PROPERTIES:
3839    :STYLE:    habit
3840    :LAST_REPEAT: [2009-10-19 Mon 00:36]
3841    :END:
3842 @end example
3844 What this habit says is: I want to shave at most every 2 days (given by the
3845 @code{SCHEDULED} date and repeat interval) and at least every 4 days.  If
3846 today is the 15th, then the habit first appears in the agenda on Oct 17,
3847 after the minimum of 2 days has elapsed, and will appear overdue on Oct 19,
3848 after four days have elapsed.
3850 What's really useful about habits is that they are displayed along with a
3851 consistency graph, to show how consistent you've been at getting that task
3852 done in the past.  This graph shows every day that the task was done over the
3853 past three weeks, with colors for each day.  The colors used are:
3855 @table @code
3856 @item Blue
3857 If the task wasn't to be done yet on that day.
3858 @item Green
3859 If the task could have been done on that day.
3860 @item Yellow
3861 If the task was going to be overdue the next day.
3862 @item Red
3863 If the task was overdue on that day.
3864 @end table
3866 In addition to coloring each day, the day is also marked with an asterisk if
3867 the task was actually done that day, and an exclamation mark to show where
3868 the current day falls in the graph.
3870 There are several configuration variables that can be used to change the way
3871 habits are displayed in the agenda.
3873 @table @code
3874 @item org-habit-graph-column
3875 The buffer column at which the consistency graph should be drawn.  This will
3876 overwrite any text in that column, so it's a good idea to keep your habits'
3877 titles brief and to the point.
3878 @item org-habit-preceding-days
3879 The amount of history, in days before today, to appear in consistency graphs.
3880 @item org-habit-following-days
3881 The number of days after today that will appear in consistency graphs.
3882 @item org-habit-show-habits-only-for-today
3883 If non-nil, only show habits in today's agenda view.  This is set to true by
3884 default.
3885 @end table
3887 Lastly, pressing @kbd{K} in the agenda buffer will cause habits to
3888 temporarily be disabled and they won't appear at all.  Press @kbd{K} again to
3889 bring them back.  They are also subject to tag filtering, if you have habits
3890 which should only be done in certain contexts, for example.
3892 @node Priorities, Breaking down tasks, Progress logging, TODO Items
3893 @section Priorities
3894 @cindex priorities
3896 If you use Org-mode extensively, you may end up with enough TODO items that
3897 it starts to make sense to prioritize them.  Prioritizing can be done by
3898 placing a @emph{priority cookie} into the headline of a TODO item, like this
3900 @example
3901 *** TODO [#A] Write letter to Sam Fortune
3902 @end example
3904 @noindent
3905 @vindex org-priority-faces
3906 By default, Org-mode supports three priorities: @samp{A}, @samp{B}, and
3907 @samp{C}.  @samp{A} is the highest priority.  An entry without a cookie is
3908 treated as priority @samp{B}.  Priorities make a difference only in the
3909 agenda (@pxref{Weekly/daily agenda}); outside the agenda, they have no
3910 inherent meaning to Org-mode.  The cookies can be highlighted with special
3911 faces by customizing the variable @code{org-priority-faces}.
3913 Priorities can be attached to any outline tree entries; they do not need
3914 to be TODO items.
3916 @table @kbd
3917 @kindex @kbd{C-c ,}
3918 @item @kbd{C-c ,}
3919 Set the priority of the current headline.  The command prompts for a
3920 priority character @samp{A}, @samp{B} or @samp{C}.  When you press
3921 @key{SPC} instead, the priority cookie is removed from the headline.
3922 The priorities can also be changed ``remotely'' from the timeline and
3923 agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
3925 @kindex S-@key{up}
3926 @kindex S-@key{down}
3927 @item S-@key{up}
3928 @itemx S-@key{down}
3929 @vindex org-priority-start-cycle-with-default
3930 Increase/decrease priority of current headline@footnote{See also the option
3931 @code{org-priority-start-cycle-with-default}.}.  Note that these keys are
3932 also used to modify timestamps (@pxref{Creating timestamps}).  See also
3933 @ref{Conflicts}, for a discussion of the interaction with
3934 @code{shift-selection-mode}.
3935 @end table
3937 @vindex org-highest-priority
3938 @vindex org-lowest-priority
3939 @vindex org-default-priority
3940 You can change the range of allowed priorities by setting the variables
3941 @code{org-highest-priority}, @code{org-lowest-priority}, and
3942 @code{org-default-priority}.  For an individual buffer, you may set
3943 these values (highest, lowest, default) like this (please make sure that
3944 the highest priority is earlier in the alphabet than the lowest
3945 priority):
3947 @cindex #+PRIORITIES
3948 @example
3949 #+PRIORITIES: A C B
3950 @end example
3952 @node Breaking down tasks, Checkboxes, Priorities, TODO Items
3953 @section Breaking tasks down into subtasks
3954 @cindex tasks, breaking down
3955 @cindex statistics, for TODO items
3957 @vindex org-agenda-todo-list-sublevels
3958 It is often advisable to break down large tasks into smaller, manageable
3959 subtasks.  You can do this by creating an outline tree below a TODO item,
3960 with detailed subtasks on the tree@footnote{To keep subtasks out of the
3961 global TODO list, see the @code{org-agenda-todo-list-sublevels}.}.  To keep
3962 the overview over the fraction of subtasks that are already completed, insert
3963 either @samp{[/]} or @samp{[%]} anywhere in the headline.  These cookies will
3964 be updated each time the TODO status of a child changes, or when pressing
3965 @kbd{C-c C-c} on the cookie.  For example:
3967 @example
3968 * Organize Party [33%]
3969 ** TODO Call people [1/2]
3970 *** TODO Peter
3971 *** DONE Sarah
3972 ** TODO Buy food
3973 ** DONE Talk to neighbor
3974 @end example
3976 @cindex property, COOKIE_DATA
3977 If a heading has both checkboxes and TODO children below it, the meaning of
3978 the statistics cookie become ambiguous.  Set the property
3979 @code{COOKIE_DATA} to either @samp{checkbox} or @samp{todo} to resolve
3980 this issue.
3982 @vindex org-hierarchical-todo-statistics
3983 If you would like to have the statistics cookie count any TODO entries in the
3984 subtree (not just direct children), configure the variable
3985 @code{org-hierarchical-todo-statistics}.  To do this for a single subtree,
3986 include the word @samp{recursive} into the value of the @code{COOKIE_DATA}
3987 property.
3989 @example
3990 * Parent capturing statistics [2/20]
3991   :PROPERTIES:
3992   :COOKIE_DATA: todo recursive
3993   :END:
3994 @end example
3996 If you would like a TODO entry to automatically change to DONE
3997 when all children are done, you can use the following setup:
3999 @example
4000 (defun org-summary-todo (n-done n-not-done)
4001   "Switch entry to DONE when all subentries are done, to TODO otherwise."
4002   (let (org-log-done org-log-states)   ; turn off logging
4003     (org-todo (if (= n-not-done 0) "DONE" "TODO"))))
4005 (add-hook 'org-after-todo-statistics-hook 'org-summary-todo)
4006 @end example
4009 Another possibility is the use of checkboxes to identify (a hierarchy of) a
4010 large number of subtasks (@pxref{Checkboxes}).
4013 @node Checkboxes,  , Breaking down tasks, TODO Items
4014 @section Checkboxes
4015 @cindex checkboxes
4017 Every item in a plain list (@pxref{Plain lists}) can be made into a
4018 checkbox by starting it with the string @samp{[ ]}.  This feature is
4019 similar to TODO items (@pxref{TODO Items}), but is more lightweight.
4020 Checkboxes are not included into the global TODO list, so they are often
4021 great to split a task into a number of simple steps.  Or you can use
4022 them in a shopping list.  To toggle a checkbox, use @kbd{C-c C-c}, or
4023 use the mouse (thanks to Piotr Zielinski's @file{org-mouse.el}).
4025 Here is an example of a checkbox list.
4027 @example
4028 * TODO Organize party [2/4]
4029   - [-] call people [1/3]
4030     - [ ] Peter
4031     - [X] Sarah
4032     - [ ] Sam
4033   - [X] order food
4034   - [ ] think about what music to play
4035   - [X] talk to the neighbors
4036 @end example
4038 Checkboxes work hierarchically, so if a checkbox item has children that
4039 are checkboxes, toggling one of the children checkboxes will make the
4040 parent checkbox reflect if none, some, or all of the children are
4041 checked.
4043 @cindex statistics, for checkboxes
4044 @cindex checkbox statistics
4045 @cindex property, COOKIE_DATA
4046 @vindex org-hierarchical-checkbox-statistics
4047 The @samp{[2/4]} and @samp{[1/3]} in the first and second line are cookies
4048 indicating how many checkboxes present in this entry have been checked off,
4049 and the total number of checkboxes present.  This can give you an idea on how
4050 many checkboxes remain, even without opening a folded entry.  The cookies can
4051 be placed into a headline or into (the first line of) a plain list item.
4052 Each cookie covers checkboxes of direct children structurally below the
4053 headline/item on which the cookie appears@footnote{Set the variable
4054 @code{org-hierarchical-checkbox-statistics} if you want such cookies to
4055 represent the all checkboxes below the cookie, not just the direct
4056 children.}.  You have to insert the cookie yourself by typing either
4057 @samp{[/]} or @samp{[%]}.  With @samp{[/]} you get an @samp{n out of m}
4058 result, as in the examples above.  With @samp{[%]} you get information about
4059 the percentage of checkboxes checked (in the above example, this would be
4060 @samp{[50%]} and @samp{[33%]}, respectively).  In a headline, a cookie can
4061 count either checkboxes below the heading or TODO states of children, and it
4062 will display whatever was changed last.  Set the property @code{COOKIE_DATA}
4063 to either @samp{checkbox} or @samp{todo} to resolve this issue.
4065 @cindex blocking, of checkboxes
4066 @cindex checkbox blocking
4067 @cindex property, ORDERED
4068 If the current outline node has an @code{ORDERED} property, checkboxes must
4069 be checked off in sequence, and an error will be thrown if you try to check
4070 off a box while there are unchecked boxes above it.
4072 @noindent The following commands work with checkboxes:
4074 @table @kbd
4075 @kindex C-c C-c
4076 @item C-c C-c
4077 Toggle checkbox status or (with prefix arg) checkbox presence at point.  With
4078 double prefix argument, set it to @samp{[-]}, which is considered to be an
4079 intermediate state.
4080 @kindex C-c C-x C-b
4081 @item C-c C-x C-b
4082 Toggle checkbox status or (with prefix arg) checkbox presence at point.  With
4083 double prefix argument, set it to @samp{[-]}, which is considered to be an
4084 intermediate state.
4085 @itemize @minus
4086 @item
4087 If there is an active region, toggle the first checkbox in the region
4088 and set all remaining boxes to the same status as the first.  With a prefix
4089 arg, add or remove the checkbox for all items in the region.
4090 @item
4091 If the cursor is in a headline, toggle checkboxes in the region between
4092 this headline and the next (so @emph{not} the entire subtree).
4093 @item
4094 If there is no active region, just toggle the checkbox at point.
4095 @end itemize
4096 @kindex M-S-@key{RET}
4097 @item M-S-@key{RET}
4098 Insert a new item with a checkbox.
4099 This works only if the cursor is already in a plain list item
4100 (@pxref{Plain lists}).
4101 @kindex C-c C-x o
4102 @item C-c C-x o
4103 @vindex org-track-ordered-property-with-tag
4104 @cindex property, ORDERED
4105 Toggle the @code{ORDERED} property of the entry, to toggle if checkboxes must
4106 be checked off in sequence.  A property is used for this behavior because
4107 this should be local to the current entry, not inherited like a tag.
4108 However, if you would like to @i{track} the value of this property with a tag
4109 for better visibility, customize the variable
4110 @code{org-track-ordered-property-with-tag}.
4111 @kindex C-c #
4112 @item C-c #
4113 Update the statistics cookie in the current outline entry.  When called with
4114 a @kbd{C-u} prefix, update the entire file.  Checkbox statistic cookies are
4115 updated automatically if you toggle checkboxes with @kbd{C-c C-c} and make
4116 new ones with @kbd{M-S-@key{RET}}.  TODO statistics cookies update when
4117 changing TODO states.  If you delete boxes/entries or add/change them by
4118 hand, use this command to get things back into sync.  Or simply toggle any
4119 entry twice (checkboxes with @kbd{C-c C-c}).
4120 @end table
4122 @node Tags, Properties and Columns, TODO Items, Top
4123 @chapter Tags
4124 @cindex tags
4125 @cindex headline tagging
4126 @cindex matching, tags
4127 @cindex sparse tree, tag based
4129 An excellent way to implement labels and contexts for cross-correlating
4130 information is to assign @i{tags} to headlines.  Org-mode has extensive
4131 support for tags.
4133 @vindex org-tag-faces
4134 Every headline can contain a list of tags; they occur at the end of the
4135 headline.  Tags are normal words containing letters, numbers, @samp{_}, and
4136 @samp{@@}.  Tags must be preceded and followed by a single colon, e.g.,
4137 @samp{:work:}.  Several tags can be specified, as in @samp{:work:urgent:}.
4138 Tags will by default be in bold face with the same color as the headline.
4139 You may specify special faces for specific tags using the variable
4140 @code{org-tag-faces}, in much the same way as you can for TODO keywords
4141 (@pxref{Faces for TODO keywords}).
4143 @menu
4144 * Tag inheritance::             Tags use the tree structure of the outline
4145 * Setting tags::                How to assign tags to a headline
4146 * Tag searches::                Searching for combinations of tags
4147 @end menu
4149 @node Tag inheritance, Setting tags, Tags, Tags
4150 @section Tag inheritance
4151 @cindex tag inheritance
4152 @cindex inheritance, of tags
4153 @cindex sublevels, inclusion into tags match
4155 @i{Tags} make use of the hierarchical structure of outline trees.  If a
4156 heading has a certain tag, all subheadings will inherit the tag as
4157 well.  For example, in the list
4159 @example
4160 * Meeting with the French group      :work:
4161 ** Summary by Frank                  :boss:notes:
4162 *** TODO Prepare slides for him      :action:
4163 @end example
4165 @noindent
4166 the final heading will have the tags @samp{:work:}, @samp{:boss:},
4167 @samp{:notes:}, and @samp{:action:} even though the final heading is not
4168 explicitly marked with those tags.  You can also set tags that all entries in
4169 a file should inherit just as if these tags were defined in a hypothetical
4170 level zero that surrounds the entire file.  Use a line like this@footnote{As
4171 with all these in-buffer settings, pressing @kbd{C-c C-c} activates any
4172 changes in the line.}:
4174 @cindex #+FILETAGS
4175 @example
4176 #+FILETAGS: :Peter:Boss:Secret:
4177 @end example
4179 @noindent
4180 @vindex org-use-tag-inheritance
4181 @vindex org-tags-exclude-from-inheritance
4182 To limit tag inheritance to specific tags, or to turn it off entirely, use
4183 the variables @code{org-use-tag-inheritance} and
4184 @code{org-tags-exclude-from-inheritance}.
4186 @vindex org-tags-match-list-sublevels
4187 When a headline matches during a tags search while tag inheritance is turned
4188 on, all the sublevels in the same tree will (for a simple match form) match
4189 as well@footnote{This is only true if the search does not involve more
4190 complex tests including properties (@pxref{Property searches}).}.  The list
4191 of matches may then become very long.  If you only want to see the first tags
4192 match in a subtree, configure the variable
4193 @code{org-tags-match-list-sublevels} (not recommended).
4195 @node Setting tags, Tag searches, Tag inheritance, Tags
4196 @section Setting tags
4197 @cindex setting tags
4198 @cindex tags, setting
4200 @kindex M-@key{TAB}
4201 Tags can simply be typed into the buffer at the end of a headline.
4202 After a colon, @kbd{M-@key{TAB}} offers completion on tags.  There is
4203 also a special command for inserting tags:
4205 @table @kbd
4206 @kindex C-c C-q
4207 @item C-c C-q
4208 @cindex completion, of tags
4209 @vindex org-tags-column
4210 Enter new tags for the current headline.  Org-mode will either offer
4211 completion or a special single-key interface for setting tags, see
4212 below.  After pressing @key{RET}, the tags will be inserted and aligned
4213 to @code{org-tags-column}.  When called with a @kbd{C-u} prefix, all
4214 tags in the current buffer will be aligned to that column, just to make
4215 things look nice.  TAGS are automatically realigned after promotion,
4216 demotion, and TODO state changes (@pxref{TODO basics}).
4217 @kindex C-c C-c
4218 @item C-c C-c
4219 When the cursor is in a headline, this does the same as @kbd{C-c C-q}.
4220 @end table
4222 @vindex org-tag-alist
4223 Org will support tag insertion based on a @emph{list of tags}.  By
4224 default this list is constructed dynamically, containing all tags
4225 currently used in the buffer.  You may also globally specify a hard list
4226 of tags with the variable @code{org-tag-alist}.  Finally you can set
4227 the default tags for a given file with lines like
4229 @cindex #+TAGS
4230 @example
4231 #+TAGS: @@work @@home @@tennisclub
4232 #+TAGS: laptop car pc sailboat
4233 @end example
4235 If you have globally defined your preferred set of tags using the
4236 variable @code{org-tag-alist}, but would like to use a dynamic tag list
4237 in a specific file, add an empty TAGS option line to that file:
4239 @example
4240 #+TAGS:
4241 @end example
4243 @vindex org-tag-persistent-alist
4244 If you have a preferred set of tags that you would like to use in every file,
4245 in addition to those defined on a per-file basis by TAGS option lines, then
4246 you may specify a list of tags with the variable
4247 @code{org-tag-persistent-alist}.  You may turn this off on a per-file basis
4248 by adding a STARTUP option line to that file:
4250 @example
4251 #+STARTUP: noptag
4252 @end example
4254 By default Org-mode uses the standard minibuffer completion facilities for
4255 entering tags.  However, it also implements another, quicker, tag selection
4256 method called @emph{fast tag selection}.  This allows you to select and
4257 deselect tags with just a single key press.  For this to work well you should
4258 assign unique letters to most of your commonly used tags.  You can do this
4259 globally by configuring the variable @code{org-tag-alist} in your
4260 @file{.emacs} file.  For example, you may find the need to tag many items in
4261 different files with @samp{:@@home:}.  In this case you can set something
4262 like:
4264 @lisp
4265 (setq org-tag-alist '(("@@work" . ?w) ("@@home" . ?h) ("laptop" . ?l)))
4266 @end lisp
4268 @noindent If the tag is only relevant to the file you are working on, then you
4269 can instead set the TAGS option line as:
4271 @example
4272 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t)  laptop(l)  pc(p)
4273 @end example
4275 @noindent The tags interface will show the available tags in a splash
4276 window.  If you want to start a new line after a specific tag, insert
4277 @samp{\n} into the tag list
4279 @example
4280 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t) \n laptop(l)  pc(p)
4281 @end example
4283 @noindent or write them in two lines:
4285 @example
4286 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t)
4287 #+TAGS: laptop(l)  pc(p)
4288 @end example
4290 @noindent
4291 You can also group together tags that are mutually exclusive by using
4292 braces, as in:
4294 @example
4295 #+TAGS: @{ @@work(w)  @@home(h)  @@tennisclub(t) @}  laptop(l)  pc(p)
4296 @end example
4298 @noindent you indicate that at most one of @samp{@@work}, @samp{@@home},
4299 and @samp{@@tennisclub} should be selected.  Multiple such groups are allowed.
4301 @noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
4302 these lines to activate any changes.
4304 @noindent
4305 To set these mutually exclusive groups in the variable @code{org-tags-alist},
4306 you must use the dummy tags @code{:startgroup} and @code{:endgroup} instead
4307 of the braces.  Similarly, you can use @code{:newline} to indicate a line
4308 break.  The previous example would be set globally by the following
4309 configuration:
4311 @lisp
4312 (setq org-tag-alist '((:startgroup . nil)
4313                       ("@@work" . ?w) ("@@home" . ?h)
4314                       ("@@tennisclub" . ?t)
4315                       (:endgroup . nil)
4316                       ("laptop" . ?l) ("pc" . ?p)))
4317 @end lisp
4319 If at least one tag has a selection key then pressing @kbd{C-c C-c} will
4320 automatically present you with a special interface, listing inherited tags,
4321 the tags of the current headline, and a list of all valid tags with
4322 corresponding keys@footnote{Keys will automatically be assigned to tags which
4323 have no configured keys.}.  In this interface, you can use the following
4324 keys:
4326 @table @kbd
4327 @item a-z...
4328 Pressing keys assigned to tags will add or remove them from the list of
4329 tags in the current line.  Selecting a tag in a group of mutually
4330 exclusive tags will turn off any other tags from that group.
4331 @kindex @key{TAB}
4332 @item @key{TAB}
4333 Enter a tag in the minibuffer, even if the tag is not in the predefined
4334 list.  You will be able to complete on all tags present in the buffer.
4335 @kindex @key{SPC}
4336 @item @key{SPC}
4337 Clear all tags for this line.
4338 @kindex @key{RET}
4339 @item @key{RET}
4340 Accept the modified set.
4341 @item C-g
4342 Abort without installing changes.
4343 @item q
4344 If @kbd{q} is not assigned to a tag, it aborts like @kbd{C-g}.
4345 @item !
4346 Turn off groups of mutually exclusive tags.  Use this to (as an
4347 exception) assign several tags from such a group.
4348 @item C-c
4349 Toggle auto-exit after the next change (see below).
4350 If you are using expert mode, the first @kbd{C-c} will display the
4351 selection window.
4352 @end table
4354 @noindent
4355 This method lets you assign tags to a headline with very few keys.  With
4356 the above setup, you could clear the current tags and set @samp{@@home},
4357 @samp{laptop} and @samp{pc} tags with just the following keys: @kbd{C-c
4358 C-c @key{SPC} h l p @key{RET}}.  Switching from @samp{@@home} to
4359 @samp{@@work} would be done with @kbd{C-c C-c w @key{RET}} or
4360 alternatively with @kbd{C-c C-c C-c w}.  Adding the non-predefined tag
4361 @samp{Sarah} could be done with @kbd{C-c C-c @key{TAB} S a r a h
4362 @key{RET} @key{RET}}.
4364 @vindex org-fast-tag-selection-single-key
4365 If you find that most of the time you need only a single key press to
4366 modify your list of tags, set the variable
4367 @code{org-fast-tag-selection-single-key}.  Then you no longer have to
4368 press @key{RET} to exit fast tag selection---it will immediately exit
4369 after the first change.  If you then occasionally need more keys, press
4370 @kbd{C-c} to turn off auto-exit for the current tag selection process
4371 (in effect: start selection with @kbd{C-c C-c C-c} instead of @kbd{C-c
4372 C-c}).  If you set the variable to the value @code{expert}, the special
4373 window is not even shown for single-key tag selection, it comes up only
4374 when you press an extra @kbd{C-c}.
4376 @node Tag searches,  , Setting tags, Tags
4377 @section Tag searches
4378 @cindex tag searches
4379 @cindex searching for tags
4381 Once a system of tags has been set up, it can be used to collect related
4382 information into special lists.
4384 @table @kbd
4385 @kindex C-c \
4386 @kindex C-c / m
4387 @item C-c \
4388 @itemx C-c / m
4389 Create a sparse tree with all headlines matching a tags search.  With a
4390 @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
4391 @kindex C-c a m
4392 @item C-c a m
4393 Create a global list of tag matches from all agenda files.
4394 @xref{Matching tags and properties}.
4395 @kindex C-c a M
4396 @item C-c a M
4397 @vindex org-tags-match-list-sublevels
4398 Create a global list of tag matches from all agenda files, but check
4399 only TODO items and force checking subitems (see variable
4400 @code{org-tags-match-list-sublevels}).
4401 @end table
4403 These commands all prompt for a match string which allows basic Boolean logic
4404 like @samp{+boss+urgent-project1}, to find entries with tags @samp{boss} and
4405 @samp{urgent}, but not @samp{project1}, or @samp{Kathy|Sally} to find entries
4406 which are tagged, like @samp{Kathy} or @samp{Sally}.  The full syntax of the search
4407 string is rich and allows also matching against TODO keywords, entry levels
4408 and properties.  For a complete description with many examples, see
4409 @ref{Matching tags and properties}.
4412 @node Properties and Columns, Dates and Times, Tags, Top
4413 @chapter Properties and columns
4414 @cindex properties
4416 Properties are a set of key-value pairs associated with an entry.  There
4417 are two main applications for properties in Org-mode.  First, properties
4418 are like tags, but with a value.  Second, you can use properties to
4419 implement (very basic) database capabilities in an Org buffer.  For
4420 an example of the first application, imagine maintaining a file where
4421 you document bugs and plan releases for a piece of software.  Instead of
4422 using tags like @code{:release_1:}, @code{:release_2:}, one can use a
4423 property, say @code{:Release:}, that in different subtrees has different
4424 values, such as @code{1.0} or @code{2.0}.  For an example of the second
4425 application of properties, imagine keeping track of your music CDs,
4426 where properties could be things such as the album, artist, date of
4427 release, number of tracks, and so on.
4429 Properties can be conveniently edited and viewed in column view
4430 (@pxref{Column view}).
4432 @menu
4433 * Property syntax::             How properties are spelled out
4434 * Special properties::          Access to other Org-mode features
4435 * Property searches::           Matching property values
4436 * Property inheritance::        Passing values down the tree
4437 * Column view::                 Tabular viewing and editing
4438 * Property API::                Properties for Lisp programmers
4439 @end menu
4441 @node Property syntax, Special properties, Properties and Columns, Properties and Columns
4442 @section Property syntax
4443 @cindex property syntax
4444 @cindex drawer, for properties
4446 Properties are key-value pairs.  They need to be inserted into a special
4447 drawer (@pxref{Drawers}) with the name @code{PROPERTIES}.  Each property
4448 is specified on a single line, with the key (surrounded by colons)
4449 first, and the value after it.  Here is an example:
4451 @example
4452 * CD collection
4453 ** Classic
4454 *** Goldberg Variations
4455     :PROPERTIES:
4456     :Title:     Goldberg Variations
4457     :Composer:  J.S. Bach
4458     :Artist:    Glen Gould
4459     :Publisher: Deutsche Grammophon
4460     :NDisks:    1
4461     :END:
4462 @end example
4464 You may define the allowed values for a particular property @samp{:Xyz:}
4465 by setting a property @samp{:Xyz_ALL:}.  This special property is
4466 @emph{inherited}, so if you set it in a level 1 entry, it will apply to
4467 the entire tree.  When allowed values are defined, setting the
4468 corresponding property becomes easier and is less prone to typing
4469 errors.  For the example with the CD collection, we can predefine
4470 publishers and the number of disks in a box like this:
4472 @example
4473 * CD collection
4474   :PROPERTIES:
4475   :NDisks_ALL:  1 2 3 4
4476   :Publisher_ALL: "Deutsche Grammophon" Philips EMI
4477   :END:
4478 @end example
4480 If you want to set properties that can be inherited by any entry in a
4481 file, use a line like
4482 @cindex property, _ALL
4483 @cindex #+PROPERTY
4484 @example
4485 #+PROPERTY: NDisks_ALL 1 2 3 4
4486 @end example
4488 @vindex org-global-properties
4489 Property values set with the global variable
4490 @code{org-global-properties} can be inherited by all entries in all
4491 Org files.
4493 @noindent
4494 The following commands help to work with properties:
4496 @table @kbd
4497 @kindex M-@key{TAB}
4498 @item M-@key{TAB}
4499 After an initial colon in a line, complete property keys.  All keys used
4500 in the current file will be offered as possible completions.
4501 @kindex C-c C-x p
4502 @item C-c C-x p
4503 Set a property.  This prompts for a property name and a value.  If
4504 necessary, the property drawer is created as well.
4505 @item M-x org-insert-property-drawer
4506 Insert a property drawer into the current entry.  The drawer will be
4507 inserted early in the entry, but after the lines with planning
4508 information like deadlines.
4509 @kindex C-c C-c
4510 @item C-c C-c
4511 With the cursor in a property drawer, this executes property commands.
4512 @item C-c C-c s
4513 Set a property in the current entry.  Both the property and the value
4514 can be inserted using completion.
4515 @kindex S-@key{right}
4516 @kindex S-@key{left}
4517 @item S-@key{left}/@key{right}
4518 Switch property at point to the next/previous allowed value.
4519 @item C-c C-c d
4520 Remove a property from the current entry.
4521 @item C-c C-c D
4522 Globally remove a property, from all entries in the current file.
4523 @item C-c C-c c
4524 Compute the property at point, using the operator and scope from the
4525 nearest column format definition.
4526 @end table
4528 @node Special properties, Property searches, Property syntax, Properties and Columns
4529 @section Special properties
4530 @cindex properties, special
4532 Special properties provide an alternative access method to Org-mode
4533 features, like the TODO state or the priority of an entry, discussed in the
4534 previous chapters.  This interface exists so that you can include
4535 these states in a column view (@pxref{Column view}), or to use them in
4536 queries.  The following property names are special and should not be
4537 used as keys in the properties drawer:
4539 @cindex property, special, TODO
4540 @cindex property, special, TAGS
4541 @cindex property, special, ALLTAGS
4542 @cindex property, special, CATEGORY
4543 @cindex property, special, PRIORITY
4544 @cindex property, special, DEADLINE
4545 @cindex property, special, SCHEDULED
4546 @cindex property, special, CLOSED
4547 @cindex property, special, TIMESTAMP
4548 @cindex property, special, TIMESTAMP_IA
4549 @cindex property, special, CLOCKSUM
4550 @cindex property, special, BLOCKED
4551 @c guessing that ITEM is needed in this area; also, should this list be sorted?
4552 @cindex property, special, ITEM
4553 @example
4554 TODO         @r{The TODO keyword of the entry.}
4555 TAGS         @r{The tags defined directly in the headline.}
4556 ALLTAGS      @r{All tags, including inherited ones.}
4557 CATEGORY     @r{The category of an entry.}
4558 PRIORITY     @r{The priority of the entry, a string with a single letter.}
4559 DEADLINE     @r{The deadline time string, without the angular brackets.}
4560 SCHEDULED    @r{The scheduling timestamp, without the angular brackets.}
4561 CLOSED       @r{When was this entry closed?}
4562 TIMESTAMP    @r{The first keyword-less timestamp in the entry.}
4563 TIMESTAMP_IA @r{The first inactive timestamp in the entry.}
4564 CLOCKSUM     @r{The sum of CLOCK intervals in the subtree.  @code{org-clock-sum}}
4565              @r{must be run first to compute the values.}
4566 BLOCKED      @r{"t" if task is currently blocked by children or siblings}
4567 ITEM         @r{The content of the entry.}
4568 @end example
4570 @node Property searches, Property inheritance, Special properties, Properties and Columns
4571 @section Property searches
4572 @cindex properties, searching
4573 @cindex searching, of properties
4575 To create sparse trees and special lists with selection based on properties,
4576 the same commands are used as for tag searches (@pxref{Tag searches}).
4577 @table @kbd
4578 @kindex C-c \
4579 @kindex C-c / m
4580 @item C-c \
4581 @itemx C-c / m
4582 Create a sparse tree with all matching entries.  With a
4583 @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
4584 @kindex C-c a m
4585 @item C-c a m
4586 Create a global list of tag/property  matches from all agenda files.
4587 @xref{Matching tags and properties}.
4588 @kindex C-c a M
4589 @item C-c a M
4590 @vindex org-tags-match-list-sublevels
4591 Create a global list of tag matches from all agenda files, but check
4592 only TODO items and force checking of subitems (see variable
4593 @code{org-tags-match-list-sublevels}).
4594 @end table
4596 The syntax for the search string is described in @ref{Matching tags and
4597 properties}.
4599 There is also a special command for creating sparse trees based on a
4600 single property:
4602 @table @kbd
4603 @kindex C-c / p
4604 @item C-c / p
4605 Create a sparse tree based on the value of a property.  This first
4606 prompts for the name of a property, and then for a value.  A sparse tree
4607 is created with all entries that define this property with the given
4608 value.  If you enclose the value into curly braces, it is interpreted as
4609 a regular expression and matched against the property values.
4610 @end table
4612 @node Property inheritance, Column view, Property searches, Properties and Columns
4613 @section Property Inheritance
4614 @cindex properties, inheritance
4615 @cindex inheritance, of properties
4617 @vindex org-use-property-inheritance
4618 The outline structure of Org-mode documents lends itself for an
4619 inheritance model of properties: if the parent in a tree has a certain
4620 property, the children can inherit this property.  Org-mode does not
4621 turn this on by default, because it can slow down property searches
4622 significantly and is often not needed.  However, if you find inheritance
4623 useful, you can turn it on by setting the variable
4624 @code{org-use-property-inheritance}.  It may be set to @code{t} to make
4625 all properties inherited from the parent, to a list of properties
4626 that should be inherited, or to a regular expression that matches
4627 inherited properties.  If a property has the value @samp{nil}, this is
4628 interpreted as an explicit undefine of he property, so that inheritance
4629 search will stop at this value and return @code{nil}.
4631 Org-mode has a few properties for which inheritance is hard-coded, at
4632 least for the special applications for which they are used:
4634 @cindex property, COLUMNS
4635 @table @code
4636 @item COLUMNS
4637 The @code{:COLUMNS:} property defines the format of column view
4638 (@pxref{Column view}).  It is inherited in the sense that the level
4639 where a @code{:COLUMNS:} property is defined is used as the starting
4640 point for a column view table, independently of the location in the
4641 subtree from where columns view is turned on.
4642 @item CATEGORY
4643 @cindex property, CATEGORY
4644 For agenda view, a category set through a @code{:CATEGORY:} property
4645 applies to the entire subtree.
4646 @item ARCHIVE
4647 @cindex property, ARCHIVE
4648 For archiving, the @code{:ARCHIVE:} property may define the archive
4649 location for the entire subtree (@pxref{Moving subtrees}).
4650 @item LOGGING
4651 @cindex property, LOGGING
4652 The LOGGING property may define logging settings for an entry or a
4653 subtree (@pxref{Tracking TODO state changes}).
4654 @end table
4656 @node Column view, Property API, Property inheritance, Properties and Columns
4657 @section Column view
4659 A great way to view and edit properties in an outline tree is
4660 @emph{column view}.  In column view, each outline node is turned into a
4661 table row.  Columns in this table provide access to properties of the
4662 entries.  Org-mode implements columns by overlaying a tabular structure
4663 over the headline of each item.  While the headlines have been turned
4664 into a table row, you can still change the visibility of the outline
4665 tree.  For example, you get a compact table by switching to CONTENTS
4666 view (@kbd{S-@key{TAB} S-@key{TAB}}, or simply @kbd{c} while column view
4667 is active), but you can still open, read, and edit the entry below each
4668 headline.  Or, you can switch to column view after executing a sparse
4669 tree command and in this way get a table only for the selected items.
4670 Column view also works in agenda buffers (@pxref{Agenda Views}) where
4671 queries have collected selected items, possibly from a number of files.
4673 @menu
4674 * Defining columns::            The COLUMNS format property
4675 * Using column view::           How to create and use column view
4676 * Capturing column view::       A dynamic block for column view
4677 @end menu
4679 @node Defining columns, Using column view, Column view, Column view
4680 @subsection Defining columns
4681 @cindex column view, for properties
4682 @cindex properties, column view
4684 Setting up a column view first requires defining the columns.  This is
4685 done by defining a column format line.
4687 @menu
4688 * Scope of column definitions::  Where defined, where valid?
4689 * Column attributes::           Appearance and content of a column
4690 @end menu
4692 @node Scope of column definitions, Column attributes, Defining columns, Defining columns
4693 @subsubsection Scope of column definitions
4695 To define a column format for an entire file, use a line like
4697 @cindex #+COLUMNS
4698 @example
4699 #+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
4700 @end example
4702 To specify a format that only applies to a specific tree, add a
4703 @code{:COLUMNS:} property to the top node of that tree, for example:
4705 @example
4706 ** Top node for columns view
4707    :PROPERTIES:
4708    :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
4709    :END:
4710 @end example
4712 If a @code{:COLUMNS:} property is present in an entry, it defines columns
4713 for the entry itself, and for the entire subtree below it.  Since the
4714 column definition is part of the hierarchical structure of the document,
4715 you can define columns on level 1 that are general enough for all
4716 sublevels, and more specific columns further down, when you edit a
4717 deeper part of the tree.
4719 @node Column attributes,  , Scope of column definitions, Defining columns
4720 @subsubsection Column attributes
4721 A column definition sets the attributes of a column.  The general
4722 definition looks like this:
4724 @example
4725  %[@var{width}]@var{property}[(@var{title})][@{@var{summary-type}@}]
4726 @end example
4728 @noindent
4729 Except for the percent sign and the property name, all items are
4730 optional.  The individual parts have the following meaning:
4732 @example
4733 @var{width}           @r{An integer specifying the width of the column in characters.}
4734                 @r{If omitted, the width will be determined automatically.}
4735 @var{property}        @r{The property that should be edited in this column.}
4736                 @r{Special properties representing meta data are allowed here}
4737                 @r{as well (@pxref{Special properties})}
4738 @var{title}     @r{The header text for the column. If omitted, the property}
4739                 @r{name is used.}
4740 @{@var{summary-type}@}  @r{The summary type.  If specified, the column values for}
4741                 @r{parent nodes are computed from the children.}
4742                 @r{Supported summary types are:}
4743                 @{+@}       @r{Sum numbers in this column.}
4744                 @{+;%.1f@}  @r{Like @samp{+}, but format result with @samp{%.1f}.}
4745                 @{$@}       @r{Currency, short for @samp{+;%.2f}.}
4746                 @{:@}       @r{Sum times, HH:MM, plain numbers are hours.}
4747                 @{X@}       @r{Checkbox status, @samp{[X]} if all children are @samp{[X]}.}
4748                 @{X/@}      @r{Checkbox status, @samp{[n/m]}.}
4749                 @{X%@}      @r{Checkbox status, @samp{[n%]}.}
4750                 @{min@}     @r{Smallest number in column.}
4751                 @{max@}     @r{Largest number.}
4752                 @{mean@}    @r{Arithmetic mean of numbers.}
4753                 @{:min@}    @r{Smallest time value in column.}
4754                 @{:max@}    @r{Largest time value.}
4755                 @{:mean@}   @r{Arithmetic mean of time values.}
4756                 @{@@min@}    @r{Minimum age (in days/hours/mins/seconds).}
4757                 @{@@max@}    @r{Maximum age (in days/hours/mins/seconds).}
4758                 @{@@mean@}   @r{Arithmetic mean of ages (in days/hours/mins/seconds).}
4759                 @{est+@}    @r{Add low-high estimates.}
4760 @end example
4762 @noindent
4763 Be aware that you can only have one summary type for any property you
4764 include. Subsequent columns referencing the same property will all display the
4765 same summary information.
4767 The @code{est+} summary type requires further explanation.  It is used for
4768 combining estimates, expressed as low-high ranges.  For example, instead
4769 of estimating a particular task will take 5 days, you might estimate it as
4770 5-6 days if you're fairly confident you know how much woark is required, or
4771 1-10 days if you don't really know what needs to be done.  Both ranges
4772 average at 5.5 days, but the first represents a more predictable delivery.
4774 When combining a set of such estimates, simply adding the lows and highs
4775 produces an unrealistically wide result. Instead, @code{est+} adds the
4776 statistical mean and variance of the sub-tasks, generating a final estimate
4777 from the sum.  For example, suppose you had ten tasks, each of which was
4778 estimated at 0.5 to 2 days of work.  Straight addition produces an estimate
4779 of 5 to 20 days, representing what to expect if everything goes either
4780 extremely well or extremely poorly. In contrast, @code{est+} estimates the
4781 full job more realistically, at 10-15 days.
4783 Here is an example for a complete columns definition, along with allowed
4784 values.
4786 @example
4787 :COLUMNS:  %25ITEM %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.}
4788                    %10Time_Estimate@{:@} %CLOCKSUM
4789 :Owner_ALL:    Tammy Mark Karl Lisa Don
4790 :Status_ALL:   "In progress" "Not started yet" "Finished" ""
4791 :Approved_ALL: "[ ]" "[X]"
4792 @end example
4794 @noindent
4795 The first column, @samp{%25ITEM}, means the first 25 characters of the
4796 item itself, i.e. of the headline.  You probably always should start the
4797 column definition with the @samp{ITEM} specifier.  The other specifiers
4798 create columns @samp{Owner} with a list of names as allowed values, for
4799 @samp{Status} with four different possible values, and for a checkbox
4800 field @samp{Approved}.  When no width is given after the @samp{%}
4801 character, the column will be exactly as wide as it needs to be in order
4802 to fully display all values.  The @samp{Approved} column does have a
4803 modified title (@samp{Approved?}, with a question mark).  Summaries will
4804 be created for the @samp{Time_Estimate} column by adding time duration
4805 expressions like HH:MM, and for the @samp{Approved} column, by providing
4806 an @samp{[X]} status if all children have been checked.  The
4807 @samp{CLOCKSUM} column is special, it lists the sum of CLOCK intervals
4808 in the subtree.
4810 @node Using column view, Capturing column view, Defining columns, Column view
4811 @subsection Using column view
4813 @table @kbd
4814 @tsubheading{Turning column view on and off}
4815 @kindex C-c C-x C-c
4816 @item C-c C-x C-c
4817 @vindex org-columns-default-format
4818 Turn on column view.  If the cursor is before the first headline in the file,
4819 column view is turned on for the entire file, using the @code{#+COLUMNS}
4820 definition.  If the cursor is somewhere inside the outline, this command
4821 searches the hierarchy, up from point, for a @code{:COLUMNS:} property that
4822 defines a format.  When one is found, the column view table is established
4823 for the tree starting at the entry that contains the @code{:COLUMNS:}
4824 property.  If no such property is found, the format is taken from the
4825 @code{#+COLUMNS} line or from the variable @code{org-columns-default-format},
4826 and column view is established for the current entry and its subtree.
4827 @kindex r
4828 @item r
4829 Recreate the column view, to include recent changes made in the buffer.
4830 @kindex g
4831 @item g
4832 Same as @kbd{r}.
4833 @kindex q
4834 @item q
4835 Exit column view.
4836 @tsubheading{Editing values}
4837 @item @key{left} @key{right} @key{up} @key{down}
4838 Move through the column view from field to field.
4839 @kindex S-@key{left}
4840 @kindex S-@key{right}
4841 @item  S-@key{left}/@key{right}
4842 Switch to the next/previous allowed value of the field.  For this, you
4843 have to have specified allowed values for a property.
4844 @item 1..9,0
4845 Directly select the nth allowed value, @kbd{0} selects the 10th value.
4846 @kindex n
4847 @kindex p
4848 @itemx  n / p
4849 Same as @kbd{S-@key{left}/@key{right}}
4850 @kindex e
4851 @item e
4852 Edit the property at point.  For the special properties, this will
4853 invoke the same interface that you normally use to change that
4854 property.  For example, when editing a TAGS property, the tag completion
4855 or fast selection interface will pop up.
4856 @kindex C-c C-c
4857 @item C-c C-c
4858 When there is a checkbox at point, toggle it.
4859 @kindex v
4860 @item v
4861 View the full value of this property.  This is useful if the width of
4862 the column is smaller than that of the value.
4863 @kindex a
4864 @item a
4865 Edit the list of allowed values for this property.  If the list is found
4866 in the hierarchy, the modified values is stored there.  If no list is
4867 found, the new value is stored in the first entry that is part of the
4868 current column view.
4869 @tsubheading{Modifying the table structure}
4870 @kindex <
4871 @kindex >
4872 @item < / >
4873 Make the column narrower/wider by one character.
4874 @kindex S-M-@key{right}
4875 @item S-M-@key{right}
4876 Insert a new column, to the left of the current column.
4877 @kindex S-M-@key{left}
4878 @item S-M-@key{left}
4879 Delete the current column.
4880 @end table
4882 @node Capturing column view,  , Using column view, Column view
4883 @subsection Capturing column view
4885 Since column view is just an overlay over a buffer, it cannot be
4886 exported or printed directly.  If you want to capture a column view, use
4887 a @code{columnview} dynamic block (@pxref{Dynamic blocks}).  The frame
4888 of this block looks like this:
4890 @cindex #+BEGIN, columnview
4891 @example
4892 * The column view
4893 #+BEGIN: columnview :hlines 1 :id "label"
4895 #+END:
4896 @end example
4898 @noindent This dynamic block has the following parameters:
4900 @table @code
4901 @item :id
4902 This is the most important parameter.  Column view is a feature that is
4903 often localized to a certain (sub)tree, and the capture block might be
4904 at a different location in the file.  To identify the tree whose view to
4905 capture, you can use 4 values:
4906 @cindex property, ID
4907 @example
4908 local     @r{use the tree in which the capture block is located}
4909 global    @r{make a global view, including all headings in the file}
4910 "file:@var{path-to-file}"
4911           @r{run column view at the top of this file}
4912 "@var{ID}"      @r{call column view in the tree that has an @code{:ID:}}
4913           @r{property with the value @i{label}.  You can use}
4914           @r{@kbd{M-x org-id-copy} to create a globally unique ID for}
4915           @r{the current entry and copy it to the kill-ring.}
4916 @end example
4917 @item :hlines
4918 When @code{t}, insert an hline after every line.  When a number @var{N}, insert
4919 an hline before each headline with level @code{<= @var{N}}.
4920 @item :vlines
4921 When set to @code{t}, force column groups to get vertical lines.
4922 @item :maxlevel
4923 When set to a number, don't capture entries below this level.
4924 @item :skip-empty-rows
4925 When set to @code{t}, skip rows where the only non-empty specifier of the
4926 column view is @code{ITEM}.
4928 @end table
4930 @noindent
4931 The following commands insert or update the dynamic block:
4933 @table @kbd
4934 @kindex C-c C-x i
4935 @item C-c C-x i
4936 Insert a dynamic block capturing a column view.  You will be prompted
4937 for the scope or ID of the view.
4938 @kindex C-c C-c
4939 @item C-c C-c
4940 @kindex C-c C-x C-u
4941 @itemx C-c C-x C-u
4942 Update dynamic block at point.  The cursor needs to be in the
4943 @code{#+BEGIN} line of the dynamic block.
4944 @kindex C-u C-c C-x C-u
4945 @item C-u C-c C-x C-u
4946 Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
4947 you have several clock table blocks in a buffer.
4948 @end table
4950 You can add formulas to the column view table and you may add plotting
4951 instructions in front of the table---these will survive an update of the
4952 block.  If there is a @code{#+TBLFM:} after the table, the table will
4953 actually be recalculated automatically after an update.
4955 An alternative way to capture and process property values into a table is
4956 provided by Eric Schulte's @file{org-collector.el} which is a contributed
4957 package@footnote{Contributed packages are not part of Emacs, but are
4958 distributed with the main distribution of Org (visit
4959 @uref{http://orgmode.org}).}.  It provides a general API to collect
4960 properties from entries in a certain scope, and arbitrary Lisp expressions to
4961 process these values before inserting them into a table or a dynamic block.
4963 @node Property API,  , Column view, Properties and Columns
4964 @section The Property API
4965 @cindex properties, API
4966 @cindex API, for properties
4968 There is a full API for accessing and changing properties.  This API can
4969 be used by Emacs Lisp programs to work with properties and to implement
4970 features based on them.  For more information see @ref{Using the
4971 property API}.
4973 @node Dates and Times, Capture - Refile - Archive, Properties and Columns, Top
4974 @chapter Dates and times
4975 @cindex dates
4976 @cindex times
4977 @cindex timestamp
4978 @cindex date stamp
4980 To assist project planning, TODO items can be labeled with a date and/or
4981 a time.  The specially formatted string carrying the date and time
4982 information is called a @emph{timestamp} in Org-mode.  This may be a
4983 little confusing because timestamp is often used as indicating when
4984 something was created or last changed.  However, in Org-mode this term
4985 is used in a much wider sense.
4987 @menu
4988 * Timestamps::                  Assigning a time to a tree entry
4989 * Creating timestamps::         Commands which insert timestamps
4990 * Deadlines and scheduling::    Planning your work
4991 * Clocking work time::          Tracking how long you spend on a task
4992 * Resolving idle time::         Resolving time if you've been idle
4993 * Effort estimates::            Planning work effort in advance
4994 * Relative timer::              Notes with a running timer
4995 @end menu
4998 @node Timestamps, Creating timestamps, Dates and Times, Dates and Times
4999 @section Timestamps, deadlines, and scheduling
5000 @cindex timestamps
5001 @cindex ranges, time
5002 @cindex date stamps
5003 @cindex deadlines
5004 @cindex scheduling
5006 A timestamp is a specification of a date (possibly with a time or a range of
5007 times) in a special format, either @samp{<2003-09-16 Tue>} or
5008 @samp{<2003-09-16 Tue 09:39>} or @samp{<2003-09-16 Tue
5009 12:00-12:30>}@footnote{This is inspired by the standard ISO 8601 date/time
5010 format.  To use an alternative format, see @ref{Custom time format}.}.  A
5011 timestamp can appear anywhere in the headline or body of an Org tree entry.
5012 Its presence causes entries to be shown on specific dates in the agenda
5013 (@pxref{Weekly/daily agenda}).  We distinguish:
5015 @table @var
5016 @item Plain timestamp; Event; Appointment
5017 @cindex timestamp
5018 A simple timestamp just assigns a date/time to an item.  This is just
5019 like writing down an appointment or event in a paper agenda.  In the
5020 timeline and agenda displays, the headline of an entry associated with a
5021 plain timestamp will be shown exactly on that date.
5023 @example
5024 * Meet Peter at the movies <2006-11-01 Wed 19:15>
5025 * Discussion on climate change <2006-11-02 Thu 20:00-22:00>
5026 @end example
5028 @item Timestamp with repeater interval
5029 @cindex timestamp, with repeater interval
5030 A timestamp may contain a @emph{repeater interval}, indicating that it
5031 applies not only on the given date, but again and again after a certain
5032 interval of N days (d), weeks (w), months (m), or years (y).  The
5033 following will show up in the agenda every Wednesday:
5035 @example
5036 * Pick up Sam at school <2007-05-16 Wed 12:30 +1w>
5037 @end example
5039 @item Diary-style sexp entries
5040 For more complex date specifications, Org-mode supports using the
5041 special sexp diary entries implemented in the Emacs calendar/diary
5042 package.  For example
5044 @example
5045 * The nerd meeting on every 2nd Thursday of the month
5046   <%%(diary-float t 4 2)>
5047 @end example
5049 @item Time/Date range
5050 @cindex timerange
5051 @cindex date range
5052 Two timestamps connected by @samp{--} denote a range.  The headline
5053 will be shown on the first and last day of the range, and on any dates
5054 that are displayed and fall in the range.  Here is an example:
5056 @example
5057 ** Meeting in Amsterdam
5058    <2004-08-23 Mon>--<2004-08-26 Thu>
5059 @end example
5061 @item Inactive timestamp
5062 @cindex timestamp, inactive
5063 @cindex inactive timestamp
5064 Just like a plain timestamp, but with square brackets instead of
5065 angular ones.  These timestamps are inactive in the sense that they do
5066 @emph{not} trigger an entry to show up in the agenda.
5068 @example
5069 * Gillian comes late for the fifth time [2006-11-01 Wed]
5070 @end example
5072 @end table
5074 @node Creating timestamps, Deadlines and scheduling, Timestamps, Dates and Times
5075 @section Creating timestamps
5076 @cindex creating timestamps
5077 @cindex timestamps, creating
5079 For Org-mode to recognize timestamps, they need to be in the specific
5080 format.  All commands listed below produce timestamps in the correct
5081 format.
5083 @table @kbd
5084 @kindex C-c .
5085 @item C-c .
5086 Prompt for a date and insert a corresponding timestamp.  When the cursor is
5087 at an existing timestamp in the buffer, the command is used to modify this
5088 timestamp instead of inserting a new one.  When this command is used twice in
5089 succession, a time range is inserted.
5091 @kindex C-c !
5092 @item C-c !
5093 Like @kbd{C-c .}, but insert an inactive timestamp that will not cause
5094 an agenda entry.
5096 @kindex C-u C-c .
5097 @kindex C-u C-c !
5098 @item C-u C-c .
5099 @itemx C-u C-c !
5100 @vindex org-time-stamp-rounding-minutes
5101 Like @kbd{C-c .} and @kbd{C-c !}, but use the alternative format which
5102 contains date and time.  The default time can be rounded to multiples of 5
5103 minutes, see the option @code{org-time-stamp-rounding-minutes}.
5105 @kindex C-c <
5106 @item C-c <
5107 Insert a timestamp corresponding to the cursor date in the Calendar.
5109 @kindex C-c >
5110 @item C-c >
5111 Access the Emacs calendar for the current date.  If there is a
5112 timestamp in the current line, go to the corresponding date
5113 instead.
5115 @kindex C-c C-o
5116 @item C-c C-o
5117 Access the agenda for the date given by the timestamp or -range at
5118 point (@pxref{Weekly/daily agenda}).
5120 @kindex S-@key{left}
5121 @kindex S-@key{right}
5122 @item S-@key{left}
5123 @itemx S-@key{right}
5124 Change date at cursor by one day.  These key bindings conflict with
5125 shift-selection and related modes (@pxref{Conflicts}).
5127 @kindex S-@key{up}
5128 @kindex S-@key{down}
5129 @item S-@key{up}
5130 @itemx S-@key{down}
5131 Change the item under the cursor in a timestamp.  The cursor can be on a
5132 year, month, day, hour or minute.  When the timestamp contains a time range
5133 like @samp{15:30-16:30}, modifying the first time will also shift the second,
5134 shifting the time block with constant length.  To change the length, modify
5135 the second time.  Note that if the cursor is in a headline and not at a
5136 timestamp, these same keys modify the priority of an item.
5137 (@pxref{Priorities}). The key bindings also conflict with shift-selection and
5138 related modes (@pxref{Conflicts}).
5140 @kindex C-c C-y
5141 @cindex evaluate time range
5142 @item C-c C-y
5143 Evaluate a time range by computing the difference between start and end.
5144 With a prefix argument, insert result after the time range (in a table: into
5145 the following column).
5146 @end table
5149 @menu
5150 * The date/time prompt::        How Org-mode helps you entering date and time
5151 * Custom time format::          Making dates look different
5152 @end menu
5154 @node The date/time prompt, Custom time format, Creating timestamps, Creating timestamps
5155 @subsection The date/time prompt
5156 @cindex date, reading in minibuffer
5157 @cindex time, reading in minibuffer
5159 @vindex org-read-date-prefer-future
5160 When Org-mode prompts for a date/time, the default is shown in default
5161 date/time format, and the prompt therefore seems to ask for a specific
5162 format.  But it will in fact accept any string containing some date and/or
5163 time information, and it is really smart about interpreting your input.  You
5164 can, for example, use @kbd{C-y} to paste a (possibly multi-line) string
5165 copied from an email message.  Org-mode will find whatever information is in
5166 there and derive anything you have not specified from the @emph{default date
5167 and time}.  The default is usually the current date and time, but when
5168 modifying an existing timestamp, or when entering the second stamp of a
5169 range, it is taken from the stamp in the buffer.  When filling in
5170 information, Org-mode assumes that most of the time you will want to enter a
5171 date in the future: if you omit the month/year and the given day/month is
5172 @i{before} today, it will assume that you mean a future date@footnote{See the
5173 variable @code{org-read-date-prefer-future}.  You may set that variable to
5174 the symbol @code{time} to even make a time before now shift the date to
5175 tomorrow.}.  If the date has been automatically shifted into the future, the
5176 time prompt will show this with @samp{(=>F).}
5178 For example, let's assume that today is @b{June 13, 2006}.  Here is how
5179 various inputs will be interpreted, the items filled in by Org-mode are
5180 in @b{bold}.
5182 @example
5183 3-2-5         --> 2003-02-05
5184 2/5/3         --> 2003-02-05
5185 14            --> @b{2006}-@b{06}-14
5186 12            --> @b{2006}-@b{07}-12
5187 2/5           --> @b{2007}-02-05
5188 Fri           --> nearest Friday (default date or later)
5189 sep 15        --> @b{2006}-09-15
5190 feb 15        --> @b{2007}-02-15
5191 sep 12 9      --> 2009-09-12
5192 12:45         --> @b{2006}-@b{06}-@b{13} 12:45
5193 22 sept 0:34  --> @b{2006}-09-22 0:34
5194 w4            --> ISO week for of the current year @b{2006}
5195 2012 w4 fri   --> Friday of ISO week 4 in 2012
5196 2012-w04-5    --> Same as above
5197 @end example
5199 Furthermore you can specify a relative date by giving, as the
5200 @emph{first} thing in the input: a plus/minus sign, a number and a
5201 letter ([dwmy]) to indicate change in days, weeks, months, or years.  With a
5202 single plus or minus, the date is always relative to today.  With a
5203 double plus or minus, it is relative to the default date.  If instead of
5204 a single letter, you use the abbreviation of day name, the date will be
5205 the nth such day.  E.g.
5207 @example
5208 +0            --> today
5209 .             --> today
5210 +4d           --> four days from today
5211 +4            --> same as above
5212 +2w           --> two weeks from today
5213 ++5           --> five days from default date
5214 +2tue         --> second Tuesday from now.
5215 @end example
5217 @vindex parse-time-months
5218 @vindex parse-time-weekdays
5219 The function understands English month and weekday abbreviations.  If
5220 you want to use unabbreviated names and/or other languages, configure
5221 the variables @code{parse-time-months} and @code{parse-time-weekdays}.
5223 You can specify a time range by giving start and end times or by giving a
5224 start time and a duration (in HH:MM format). Use '-' or '--' as the separator
5225 in the former case and use '+' as the separator in the latter case. E.g.
5227 @example
5228 11am-1:15pm    --> 11:00-13:15
5229 11am--1:15pm   --> same as above
5230 11am+2:15      --> same as above
5231 @end example
5233 @cindex calendar, for selecting date
5234 @vindex org-popup-calendar-for-date-prompt
5235 Parallel to the minibuffer prompt, a calendar is popped up@footnote{If
5236 you don't need/want the calendar, configure the variable
5237 @code{org-popup-calendar-for-date-prompt}.}.  When you exit the date
5238 prompt, either by clicking on a date in the calendar, or by pressing
5239 @key{RET}, the date selected in the calendar will be combined with the
5240 information entered at the prompt.  You can control the calendar fully
5241 from the minibuffer:
5243 @kindex <
5244 @kindex >
5245 @kindex M-v
5246 @kindex C-v
5247 @kindex mouse-1
5248 @kindex S-@key{right}
5249 @kindex S-@key{left}
5250 @kindex S-@key{down}
5251 @kindex S-@key{up}
5252 @kindex M-S-@key{right}
5253 @kindex M-S-@key{left}
5254 @kindex @key{RET}
5255 @example
5256 @key{RET}           @r{Choose date at cursor in calendar.}
5257 mouse-1        @r{Select date by clicking on it.}
5258 S-@key{right}/@key{left}     @r{One day forward/backward.}
5259 S-@key{down}/@key{up}     @r{One week forward/backward.}
5260 M-S-@key{right}/@key{left}   @r{One month forward/backward.}
5261 > / <          @r{Scroll calendar forward/backward by one month.}
5262 M-v / C-v      @r{Scroll calendar forward/backward by 3 months.}
5263 @end example
5265 @vindex org-read-date-display-live
5266 The actions of the date/time prompt may seem complex, but I assure you they
5267 will grow on you, and you will start getting annoyed by pretty much any other
5268 way of entering a date/time out there.  To help you understand what is going
5269 on, the current interpretation of your input will be displayed live in the
5270 minibuffer@footnote{If you find this distracting, turn the display of with
5271 @code{org-read-date-display-live}.}.
5273 @node Custom time format,  , The date/time prompt, Creating timestamps
5274 @subsection Custom time format
5275 @cindex custom date/time format
5276 @cindex time format, custom
5277 @cindex date format, custom
5279 @vindex org-display-custom-times
5280 @vindex org-time-stamp-custom-formats
5281 Org-mode uses the standard ISO notation for dates and times as it is
5282 defined in ISO 8601.  If you cannot get used to this and require another
5283 representation of date and time to keep you happy, you can get it by
5284 customizing the variables @code{org-display-custom-times} and
5285 @code{org-time-stamp-custom-formats}.
5287 @table @kbd
5288 @kindex C-c C-x C-t
5289 @item C-c C-x C-t
5290 Toggle the display of custom formats for dates and times.
5291 @end table
5293 @noindent
5294 Org-mode needs the default format for scanning, so the custom date/time
5295 format does not @emph{replace} the default format---instead it is put
5296 @emph{over} the default format using text properties.  This has the
5297 following consequences:
5298 @itemize @bullet
5299 @item
5300 You cannot place the cursor onto a timestamp anymore, only before or
5301 after.
5302 @item
5303 The @kbd{S-@key{up}/@key{down}} keys can no longer be used to adjust
5304 each component of a timestamp.  If the cursor is at the beginning of
5305 the stamp, @kbd{S-@key{up}/@key{down}} will change the stamp by one day,
5306 just like @kbd{S-@key{left}/@key{right}}.  At the end of the stamp, the
5307 time will be changed by one minute.
5308 @item
5309 If the timestamp contains a range of clock times or a repeater, these
5310 will not be overlayed, but remain in the buffer as they were.
5311 @item
5312 When you delete a timestamp character-by-character, it will only
5313 disappear from the buffer after @emph{all} (invisible) characters
5314 belonging to the ISO timestamp have been removed.
5315 @item
5316 If the custom timestamp format is longer than the default and you are
5317 using dates in tables, table alignment will be messed up.  If the custom
5318 format is shorter, things do work as expected.
5319 @end itemize
5322 @node Deadlines and scheduling, Clocking work time, Creating timestamps, Dates and Times
5323 @section Deadlines and scheduling
5325 A timestamp may be preceded by special keywords to facilitate planning:
5327 @table @var
5328 @item DEADLINE
5329 @cindex DEADLINE keyword
5331 Meaning: the task (most likely a TODO item, though not necessarily) is supposed
5332 to be finished on that date.
5334 @vindex org-deadline-warning-days
5335 On the deadline date, the task will be listed in the agenda.  In
5336 addition, the agenda for @emph{today} will carry a warning about the
5337 approaching or missed deadline, starting
5338 @code{org-deadline-warning-days} before the due date, and continuing
5339 until the entry is marked DONE.  An example:
5341 @example
5342 *** TODO write article about the Earth for the Guide
5343     The editor in charge is [[bbdb:Ford Prefect]]
5344     DEADLINE: <2004-02-29 Sun>
5345 @end example
5347 You can specify a different lead time for warnings for a specific
5348 deadlines using the following syntax.  Here is an example with a warning
5349 period of 5 days @code{DEADLINE: <2004-02-29 Sun -5d>}.
5351 @item SCHEDULED
5352 @cindex SCHEDULED keyword
5354 Meaning: you are planning to start working on that task on the given
5355 date.
5357 @vindex org-agenda-skip-scheduled-if-done
5358 The headline will be listed under the given date@footnote{It will still
5359 be listed on that date after it has been marked DONE.  If you don't like
5360 this, set the variable @code{org-agenda-skip-scheduled-if-done}.}.  In
5361 addition, a reminder that the scheduled date has passed will be present
5362 in the compilation for @emph{today}, until the entry is marked DONE.
5363 I.e. the task will automatically be forwarded until completed.
5365 @example
5366 *** TODO Call Trillian for a date on New Years Eve.
5367     SCHEDULED: <2004-12-25 Sat>
5368 @end example
5370 @noindent
5371 @b{Important:} Scheduling an item in Org-mode should @i{not} be
5372 understood in the same way that we understand @i{scheduling a meeting}.
5373 Setting a date for a meeting is just a simple appointment, you should
5374 mark this entry with a simple plain timestamp, to get this item shown
5375 on the date where it applies.  This is a frequent misunderstanding by
5376 Org users.  In Org-mode, @i{scheduling} means setting a date when you
5377 want to start working on an action item.
5378 @end table
5380 You may use timestamps with repeaters in scheduling and deadline
5381 entries.  Org-mode will issue early and late warnings based on the
5382 assumption that the timestamp represents the @i{nearest instance} of
5383 the repeater.  However, the use of diary sexp entries like
5385 @code{<%%(diary-float t 42)>}
5387 in scheduling and deadline timestamps is limited.  Org-mode does not
5388 know enough about the internals of each sexp function to issue early and
5389 late warnings.  However, it will show the item on each day where the
5390 sexp entry matches.
5392 @menu
5393 * Inserting deadline/schedule::  Planning items
5394 * Repeated tasks::              Items that show up again and again
5395 @end menu
5397 @node Inserting deadline/schedule, Repeated tasks, Deadlines and scheduling, Deadlines and scheduling
5398 @subsection Inserting deadlines or schedules
5400 The following commands allow you to quickly insert a deadline or to schedule
5401 an item:
5403 @table @kbd
5405 @kindex C-c C-d
5406 @item C-c C-d
5407 Insert @samp{DEADLINE} keyword along with a stamp.  The insertion will happen
5408 in the line directly following the headline.  When called with a prefix arg,
5409 an existing deadline will be removed from the entry.  Depending on the
5410 variable @code{org-log-redeadline}@footnote{with corresponding
5411 @code{#+STARTUP} keywords @code{logredeadline}, @code{lognoteredeadline},
5412 and @code{nologredeadline}}, a note will be taken when changing an existing
5413 deadline.
5414 @c FIXME Any CLOSED timestamp will be removed.????????
5416 @kindex C-c C-s
5417 @item C-c C-s
5418 Insert @samp{SCHEDULED} keyword along with a stamp.  The insertion will
5419 happen in the line directly following the headline.  Any CLOSED timestamp
5420 will be removed.  When called with a prefix argument, remove the scheduling
5421 date from the entry.  Depending on the variable
5422 @code{org-log-reschedule}@footnote{with corresponding @code{#+STARTUP}
5423 keywords @code{logredeadline}, @code{lognoteredeadline}, and
5424 @code{nologredeadline}}, a note will be taken when changing an existing
5425 scheduling time.
5427 @kindex C-c C-x C-k
5428 @kindex k a
5429 @kindex k s
5430 @item C-c C-x C-k
5431 Mark the current entry for agenda action.  After you have marked the entry
5432 like this, you can open the agenda or the calendar to find an appropriate
5433 date.  With the cursor on the selected date, press @kbd{k s} or @kbd{k d} to
5434 schedule the marked item.
5436 @kindex C-c / d
5437 @cindex sparse tree, for deadlines
5438 @item C-c / d
5439 @vindex org-deadline-warning-days
5440 Create a sparse tree with all deadlines that are either past-due, or
5441 which will become due within @code{org-deadline-warning-days}.
5442 With @kbd{C-u} prefix, show all deadlines in the file.  With a numeric
5443 prefix, check that many days.  For example, @kbd{C-1 C-c / d} shows
5444 all deadlines due tomorrow.
5446 @kindex C-c / b
5447 @item C-c / b
5448 Sparse tree for deadlines and scheduled items before a given date.
5450 @kindex C-c / a
5451 @item C-c / a
5452 Sparse tree for deadlines and scheduled items after a given date.
5453 @end table
5455 @node Repeated tasks,  , Inserting deadline/schedule, Deadlines and scheduling
5456 @subsection Repeated tasks
5457 @cindex tasks, repeated
5458 @cindex repeated tasks
5460 Some tasks need to be repeated again and again.  Org-mode helps to
5461 organize such tasks using a so-called repeater in a DEADLINE, SCHEDULED,
5462 or plain timestamp.  In the following example
5463 @example
5464 ** TODO Pay the rent
5465    DEADLINE: <2005-10-01 Sat +1m>
5466 @end example
5467 @noindent
5468 the @code{+1m} is a repeater; the intended interpretation is that the task
5469 has a deadline on <2005-10-01> and repeats itself every (one) month starting
5470 from that time.  If you need both a repeater and a special warning period in
5471 a deadline entry, the repeater should come first and the warning period last:
5472 @code{DEADLINE: <2005-10-01 Sat +1m -3d>}.
5474 @vindex org-todo-repeat-to-state
5475 Deadlines and scheduled items produce entries in the agenda when they are
5476 over-due, so it is important to be able to mark such an entry as completed
5477 once you have done so.  When you mark a DEADLINE or a SCHEDULE with the TODO
5478 keyword DONE, it will no longer produce entries in the agenda.  The problem
5479 with this is, however, that then also the @emph{next} instance of the
5480 repeated entry will not be active.  Org-mode deals with this in the following
5481 way: When you try to mark such an entry DONE (using @kbd{C-c C-t}), it will
5482 shift the base date of the repeating timestamp by the repeater interval, and
5483 immediately set the entry state back to TODO@footnote{In fact, the target
5484 state is taken from, in this sequence, the @code{REPEAT_TO_STATE} property or
5485 the variable @code{org-todo-repeat-to-state}.  If neither of these is
5486 specified, the target state defaults to the first state of the TODO state
5487 sequence.}.  In the example above, setting the state to DONE would actually
5488 switch the date like this:
5490 @example
5491 ** TODO Pay the rent
5492    DEADLINE: <2005-11-01 Tue +1m>
5493 @end example
5495 @vindex org-log-repeat
5496 A timestamp@footnote{You can change this using the option
5497 @code{org-log-repeat}, or the @code{#+STARTUP} options @code{logrepeat},
5498 @code{lognoterepeat}, and @code{nologrepeat}.  With @code{lognoterepeat}, you
5499 will also be prompted for a note.} will be added under the deadline, to keep
5500 a record that you actually acted on the previous instance of this deadline.
5502 As a consequence of shifting the base date, this entry will no longer be
5503 visible in the agenda when checking past dates, but all future instances
5504 will be visible.
5506 With the @samp{+1m} cookie, the date shift will always be exactly one
5507 month.  So if you have not paid the rent for three months, marking this
5508 entry DONE will still keep it as an overdue deadline.  Depending on the
5509 task, this may not be the best way to handle it.  For example, if you
5510 forgot to call you father for 3 weeks, it does not make sense to call
5511 him 3 times in a single day to make up for it.  Finally, there are tasks
5512 like changing batteries which should always repeat a certain time
5513 @i{after} the last time you did it.  For these tasks, Org-mode has
5514 special repeaters markers with @samp{++} and @samp{.+}.  For example:
5516 @example
5517 ** TODO Call Father
5518    DEADLINE: <2008-02-10 Sun ++1w>
5519    Marking this DONE will shift the date by at least one week,
5520    but also by as many weeks as it takes to get this date into
5521    the future.  However, it stays on a Sunday, even if you called
5522    and marked it done on Saturday.
5523 ** TODO Check the batteries in the smoke detectors
5524    DEADLINE: <2005-11-01 Tue .+1m>
5525    Marking this DONE will shift the date to one month after
5526    today.
5527 @end example
5529 You may have both scheduling and deadline information for a specific
5530 task---just make sure that the repeater intervals on both are the same.
5532 An alternative to using a repeater is to create a number of copies of a task
5533 subtree, with dates shifted in each copy.  The command @kbd{C-c C-x c} was
5534 created for this purpose, it is described in @ref{Structure editing}.
5537 @node Clocking work time, Resolving idle time, Deadlines and scheduling, Dates and Times
5538 @section Clocking work time
5540 Org-mode allows you to clock the time you spend on specific tasks in a
5541 project.  When you start working on an item, you can start the clock.
5542 When you stop working on that task, or when you mark the task done, the
5543 clock is stopped and the corresponding time interval is recorded.  It
5544 also computes the total time spent on each subtree of a project.  And it
5545 remembers a history or tasks recently clocked, to that you can jump quickly
5546 between a number of tasks absorbing your time.
5548 To save the clock history across Emacs sessions, use
5549 @lisp
5550 (setq org-clock-persist 'history)
5551 (org-clock-persistence-insinuate)
5552 @end lisp
5553 When you clock into a new task after resuming Emacs, the incomplete
5554 clock@footnote{To resume the clock under the assumption that you have worked
5555 on this task while outside Emacs, use @code{(setq org-clock-persist t)}.}
5556 will be found (@pxref{Resolving idle time}) and you will be prompted about
5557 what to do with it.
5559 @table @kbd
5560 @kindex C-c C-x C-i
5561 @item C-c C-x C-i
5562 @vindex org-clock-into-drawer
5563 Start the clock on the current item (clock-in).  This inserts the CLOCK
5564 keyword together with a timestamp.  If this is not the first clocking of
5565 this item, the multiple CLOCK lines will be wrapped into a
5566 @code{:LOGBOOK:} drawer (see also the variable
5567 @code{org-clock-into-drawer}).  When called with a @kbd{C-u} prefix argument,
5568 select the task from a list of recently clocked tasks.  With two @kbd{C-u
5569 C-u} prefixes, clock into the task at point and mark it as the default task.
5570 The default task will always be available when selecting a clocking task,
5571 with letter @kbd{d}.@*
5572 @cindex property: CLOCK_MODELINE_TOTAL
5573 @cindex property: LAST_REPEAT
5574 @vindex org-clock-modeline-total
5575 While the clock is running, the current clocking time is shown in the mode
5576 line, along with the title of the task.  The clock time shown will be all
5577 time ever clocked for this task and its children.  If the task has an effort
5578 estimate (@pxref{Effort estimates}), the mode line displays the current
5579 clocking time against it@footnote{To add an effort estimate ``on the fly'',
5580 hook a function doing this to @code{org-clock-in-prepare-hook}.}  If the task
5581 is a repeating one (@pxref{Repeated tasks}), only the time since the last
5582 reset of the task @footnote{as recorded by the @code{LAST_REPEAT} property}
5583 will be shown.  More control over what time is shown can be exercised with
5584 the @code{CLOCK_MODELINE_TOTAL} property.  It may have the values
5585 @code{current} to show only the current clocking instance, @code{today} to
5586 show all time clocked on this tasks today (see also the variable
5587 @code{org-extend-today-until}), @code{all} to include all time, or
5588 @code{auto} which is the default@footnote{See also the variable
5589 @code{org-clock-modeline-total}.}.@* Clicking with @kbd{mouse-1} onto the
5590 mode line entry will pop up a menu with clocking options.
5591 @kindex C-c C-x C-o
5592 @item C-c C-x C-o
5593 @vindex org-log-note-clock-out
5594 Stop the clock (clock-out).  This inserts another timestamp at the same
5595 location where the clock was last started.  It also directly computes
5596 the resulting time in inserts it after the time range as @samp{=>
5597 HH:MM}.  See the variable @code{org-log-note-clock-out} for the
5598 possibility to record an additional note together with the clock-out
5599 timestamp@footnote{The corresponding in-buffer setting is:
5600 @code{#+STARTUP: lognoteclock-out}}.
5601 @kindex C-c C-x C-e
5602 @item C-c C-x C-e
5603 Update the effort estimate for the current clock task.
5604 @kindex C-c C-y
5605 @kindex C-c C-c
5606 @item C-c C-y @ @ @r{or}@ @ C-c C-c
5607 Recompute the time interval after changing one of the timestamps.  This
5608 is only necessary if you edit the timestamps directly.  If you change
5609 them with @kbd{S-@key{cursor}} keys, the update is automatic.
5610 @kindex C-c C-t
5611 @item C-c C-t
5612 Changing the TODO state of an item to DONE automatically stops the clock
5613 if it is running in this same item.
5614 @kindex C-c C-x C-x
5615 @item C-c C-x C-x
5616 Cancel the current clock.  This is useful if a clock was started by
5617 mistake, or if you ended up working on something else.
5618 @kindex C-c C-x C-j
5619 @item C-c C-x C-j
5620 Jump to the headline of the currently clocked in task.  With a @kbd{C-u}
5621 prefix arg, select the target task from a list of recently clocked tasks.
5622 @kindex C-c C-x C-d
5623 @item C-c C-x C-d
5624 @vindex org-remove-highlights-with-change
5625 Display time summaries for each subtree in the current buffer.  This
5626 puts overlays at the end of each headline, showing the total time
5627 recorded under that heading, including the time of any subheadings. You
5628 can use visibility cycling to study the tree, but the overlays disappear
5629 when you change the buffer (see variable
5630 @code{org-remove-highlights-with-change}) or press @kbd{C-c C-c}.
5631 @kindex C-c C-x C-r
5632 @item C-c C-x C-r
5633 Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
5634 report as an Org-mode table into the current file.  When the cursor is
5635 at an existing clock table, just update it.  When called with a prefix
5636 argument, jump to the first clock report in the current document and
5637 update it.
5638 @cindex #+BEGIN, clocktable
5639 @example
5640 #+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
5641 #+END: clocktable
5642 @end example
5643 @noindent
5644 If such a block already exists at point, its content is replaced by the
5645 new table.  The @samp{BEGIN} line can specify options:
5646 @example
5647 :maxlevel    @r{Maximum level depth to which times are listed in the table.}
5648 :emphasize   @r{When @code{t}, emphasize level one and level two items.}
5649 :scope       @r{The scope to consider.  This can be any of the following:}
5650              nil        @r{the current buffer or narrowed region}
5651              file       @r{the full current buffer}
5652              subtree    @r{the subtree where the clocktable is located}
5653              tree@var{N}      @r{the surrounding level @var{N} tree, for example @code{tree3}}
5654              tree       @r{the surrounding level 1 tree}
5655              agenda     @r{all agenda files}
5656              ("file"..) @r{scan these files}
5657              file-with-archives    @r{current file and its archives}
5658              agenda-with-archives  @r{all agenda files, including archives}
5659 :block       @r{The time block to consider.  This block is specified either}
5660              @r{absolute, or relative to the current time and may be any of}
5661              @r{these formats:}
5662              2007-12-31    @r{New year eve 2007}
5663              2007-12       @r{December 2007}
5664              2007-W50      @r{ISO-week 50 in 2007}
5665              2007          @r{the year 2007}
5666              today, yesterday, today-@var{N}          @r{a relative day}
5667              thisweek, lastweek, thisweek-@var{N}     @r{a relative week}
5668              thismonth, lastmonth, thismonth-@var{N}  @r{a relative month}
5669              thisyear, lastyear, thisyear-@var{N}     @r{a relative year}
5670              @r{Use @kbd{S-@key{left}/@key{right}} keys to shift the time interval.}
5671 :tstart      @r{A time string specifying when to start considering times.}
5672 :tend        @r{A time string specifying when to stop considering times.}
5673 :step        @r{@code{week} or @code{day}, to split the table into chunks.}
5674              @r{To use this, @code{:block} or @code{:tstart}, @code{:tend} are needed.}
5675 :stepskip0   @r{Don't show steps that have zero time}
5676 :tags        @r{A tags match to select entries that should contribute}
5677 :link        @r{Link the item headlines in the table to their origins.}
5678 :formula     @r{Content of a @code{#+TBLFM} line to be added and evaluated.}
5679              @r{As a special case, @samp{:formula %} adds a column with % time.}
5680              @r{If you do not specify a formula here, any existing formula.}
5681              @r{below the clock table will survive updates and be evaluated.}
5682 :timestamp   @r{A timestamp for the entry, when available.  Look for SCHEDULED,}
5683              @r{DEADLINE, TIMESTAMP and TIMESTAMP_IA, in this order.}
5684 @end example
5685 To get a clock summary of the current level 1 tree, for the current
5686 day, you could write
5687 @example
5688 #+BEGIN: clocktable :maxlevel 2 :block today :scope tree1 :link t
5689 #+END: clocktable
5690 @end example
5691 @noindent
5692 and to use a specific time range you could write@footnote{Note that all
5693 parameters must be specified in a single line---the line is broken here
5694 only to fit it into the manual.}
5695 @example
5696 #+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>"
5697                     :tend "<2006-08-10 Thu 12:00>"
5698 #+END: clocktable
5699 @end example
5700 A summary of the current subtree with % times would be
5701 @example
5702 #+BEGIN: clocktable :scope subtree :link t :formula %
5703 #+END: clocktable
5704 @end example
5705 @kindex C-c C-c
5706 @item C-c C-c
5707 @kindex C-c C-x C-u
5708 @itemx C-c C-x C-u
5709 Update dynamic block at point.  The cursor needs to be in the
5710 @code{#+BEGIN} line of the dynamic block.
5711 @kindex C-u C-c C-x C-u
5712 @item C-u C-c C-x C-u
5713 Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
5714 you have several clock table blocks in a buffer.
5715 @kindex S-@key{left}
5716 @kindex S-@key{right}
5717 @item S-@key{left}
5718 @itemx S-@key{right}
5719 Shift the current @code{:block} interval and update the table.  The cursor
5720 needs to be in the @code{#+BEGIN: clocktable} line for this command.  If
5721 @code{:block} is @code{today}, it will be shifted to @code{today-1} etc.
5722 @end table
5724 The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
5725 the agenda (@pxref{Weekly/daily agenda}) to show which tasks have been
5726 worked on or closed during a day.
5728 @node Resolving idle time, Effort estimates, Clocking work time, Dates and Times
5729 @section Resolving idle time
5730 @cindex resolve idle time
5732 @cindex idle, resolve, dangling
5733 If you clock in on a work item, and then walk away from your
5734 computer---perhaps to take a phone call---you often need to ``resolve'' the
5735 time you were away by either subtracting it from the current clock, or
5736 applying it to another one.
5738 @vindex org-clock-idle-time
5739 By customizing the variable @code{org-clock-idle-time} to some integer, such
5740 as 10 or 15, Emacs can alert you when you get back to your computer after
5741 being idle for that many minutes@footnote{On computers using Mac OS X,
5742 idleness is based on actual user idleness, not just Emacs' idle time.  For
5743 X11, you can install a utility program @file{x11idle.c}, available in the
5744 UTILITIES directory of the Org git distribution, to get the same general
5745 treatment of idleness.  On other systems, idle time refers to Emacs idle time
5746 only.}, and ask what you want to do with the idle time.  There will be a
5747 question waiting for you when you get back, indicating how much idle time has
5748 passed (constantly updated with the current amount), as well as a set of
5749 choices to correct the discrepancy:
5751 @table @kbd
5752 @item k
5753 To keep some or all of the minutes and stay clocked in, press @kbd{k}.  Org
5754 will ask how many of the minutes to keep.  Press @key{RET} to keep them all,
5755 effectively changing nothing, or enter a number to keep that many minutes.
5756 @item K
5757 If you use the shift key and press @kbd{K}, it will keep however many minutes
5758 you request and then immediately clock out of that task.  If you keep all of
5759 the minutes, this is the same as just clocking out of the current task.
5760 @item s
5761 To keep none of the minutes, use @kbd{s} to subtract all the away time from
5762 the clock, and then check back in from the moment you returned.
5763 @item S
5764 To keep none of the minutes and just clock out at the start of the away time,
5765 use the shift key and press @kbd{S}.  Remember that using shift will always
5766 leave you clocked out, no matter which option you choose.
5767 @item C
5768 To cancel the clock altogether, use @kbd{C}.  Note that if instead of
5769 canceling you subtract the away time, and the resulting clock amount is less
5770 than a minute, the clock will still be canceled rather than clutter up the
5771 log with an empty entry.
5772 @end table
5774 What if you subtracted those away minutes from the current clock, and now
5775 want to apply them to a new clock?  Simply clock in to any task immediately
5776 after the subtraction.  Org will notice that you have subtracted time ``on
5777 the books'', so to speak, and will ask if you want to apply those minutes to
5778 the next task you clock in on.
5780 There is one other instance when this clock resolution magic occurs.  Say you
5781 were clocked in and hacking away, and suddenly your cat chased a mouse who
5782 scared a hamster that crashed into your UPS's power button!  You suddenly
5783 lose all your buffers, but thanks to auto-save you still have your recent Org
5784 mode changes, including your last clock in.
5786 If you restart Emacs and clock into any task, Org will notice that you have a
5787 dangling clock which was never clocked out from your last session.  Using
5788 that clock's starting time as the beginning of the unaccounted-for period,
5789 Org will ask how you want to resolve that time.  The logic and behavior is
5790 identical to dealing with away time due to idleness, it's just happening due
5791 to a recovery event rather than a set amount of idle time.
5793 You can also check all the files visited by your Org agenda for dangling
5794 clocks at any time using @kbd{M-x org-resolve-clocks}.
5796 @node Effort estimates, Relative timer, Resolving idle time, Dates and Times
5797 @section Effort estimates
5798 @cindex effort estimates
5800 @cindex property, Effort
5801 @vindex org-effort-property
5802 If you want to plan your work in a very detailed way, or if you need to
5803 produce offers with quotations of the estimated work effort, you may want to
5804 assign effort estimates to entries.  If you are also clocking your work, you
5805 may later want to compare the planned effort with the actual working time, a
5806 great way to improve planning estimates.  Effort estimates are stored in a
5807 special property @samp{Effort}@footnote{You may change the property being
5808 used with the variable @code{org-effort-property}.}.  You can set the effort
5809 for an entry with the following commands:
5811 @table @kbd
5812 @kindex C-c C-x e
5813 @item C-c C-x e
5814 Set the effort estimate for the current entry.  With a numeric prefix
5815 argument, set it to the NTH allowed value (see below).  This command is also
5816 accessible from the agenda with the @kbd{e} key.
5817 @kindex C-c C-x C-e
5818 @item C-c C-x C-e
5819 Modify the effort estimate of the item currently being clocked.
5820 @end table
5822 Clearly the best way to work with effort estimates is through column view
5823 (@pxref{Column view}).  You should start by setting up discrete values for
5824 effort estimates, and a @code{COLUMNS} format that displays these values
5825 together with clock sums (if you want to clock your time).  For a specific
5826 buffer you can use
5828 @example
5829 #+PROPERTY: Effort_ALL 0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00 8:00
5830 #+COLUMNS: %40ITEM(Task) %17Effort(Estimated Effort)@{:@} %CLOCKSUM
5831 @end example
5833 @noindent
5834 @vindex org-global-properties
5835 @vindex org-columns-default-format
5836 or, even better, you can set up these values globally by customizing the
5837 variables @code{org-global-properties} and @code{org-columns-default-format}.
5838 In particular if you want to use this setup also in the agenda, a global
5839 setup may be advised.
5841 The way to assign estimates to individual items is then to switch to column
5842 mode, and to use @kbd{S-@key{right}} and @kbd{S-@key{left}} to change the
5843 value.  The values you enter will immediately be summed up in the hierarchy.
5844 In the column next to it, any clocked time will be displayed.
5846 @vindex org-agenda-columns-add-appointments-to-effort-sum
5847 If you switch to column view in the daily/weekly agenda, the effort column
5848 will summarize the estimated work effort for each day@footnote{Please note
5849 the pitfalls of summing hierarchical data in a flat list (@pxref{Agenda
5850 column view}).}, and you can use this to find space in your schedule.  To get
5851 an overview of the entire part of the day that is committed, you can set the
5852 option @code{org-agenda-columns-add-appointments-to-effort-sum}.  The
5853 appointments on a day that take place over a specified time interval will
5854 then also be added to the load estimate of the day.
5856 Effort estimates can be used in secondary agenda filtering that is triggered
5857 with the @kbd{/} key in the agenda (@pxref{Agenda commands}).  If you have
5858 these estimates defined consistently, two or three key presses will narrow
5859 down the list to stuff that fits into an available time slot.
5861 @node Relative timer,  , Effort estimates, Dates and Times
5862 @section Taking notes with a relative timer
5863 @cindex relative timer
5865 When taking notes during, for example, a meeting or a video viewing, it can
5866 be useful to have access to times relative to a starting time.  Org provides
5867 such a relative timer and make it easy to create timed notes.
5869 @table @kbd
5870 @kindex C-c C-x .
5871 @item C-c C-x .
5872 Insert a relative time into the buffer.  The first time you use this, the
5873 timer will be started.  When called with a prefix argument, the timer is
5874 restarted.
5875 @kindex C-c C-x -
5876 @item C-c C-x -
5877 Insert a description list item with the current relative time.  With a prefix
5878 argument, first reset the timer to 0.
5879 @kindex M-@key{RET}
5880 @item M-@key{RET}
5881 Once the timer list is started, you can also use @kbd{M-@key{RET}} to insert
5882 new timer items.
5883 @kindex C-c C-x ,
5884 @item C-c C-x ,
5885 Pause the timer, or continue it if it is already paused.
5886 @c removed the sentence because it is redundant to the following item
5887 @kindex C-u C-c C-x ,
5888 @item C-u C-c C-x ,
5889 Stop the timer.  After this, you can only start a new timer, not continue the
5890 old one.  This command also removes the timer from the mode line.
5891 @kindex C-c C-x 0
5892 @item C-c C-x 0
5893 Reset the timer without inserting anything into the buffer.  By default, the
5894 timer is reset to 0.  When called with a @kbd{C-u} prefix, reset the timer to
5895 specific starting offset.  The user is prompted for the offset, with a
5896 default taken from a timer string at point, if any, So this can be used to
5897 restart taking notes after a break in the process.  When called with a double
5898 prefix argument @kbd{C-u C-u}, change all timer strings in the active region
5899 by a certain amount.  This can be used to fix timer strings if the timer was
5900 not started at exactly the right moment.
5901 @end table
5903 @node Capture - Refile - Archive, Agenda Views, Dates and Times, Top
5904 @chapter Capture - Refile - Archive
5905 @cindex capture
5907 An important part of any organization system is the ability to quickly
5908 capture new ideas and tasks, and to associate reference material with them.
5909 Org does this using a process called @i{capture}.  It also can store files
5910 related to a task (@i{attachments}) in a special directory.  Once in the
5911 system, tasks and projects need to be moved around.  Moving completed project
5912 trees to an archive file keeps the system compact and fast.
5914 @menu
5915 * Capture::                     Capturing new stuff
5916 * Attachments::                 Add files to tasks
5917 * RSS Feeds::                   Getting input from RSS feeds
5918 * Protocols::                   External (e.g. Browser) access to Emacs and Org
5919 * Refiling notes::              Moving a tree from one place to another
5920 * Archiving::                   What to do with finished projects
5921 @end menu
5923 @node Capture, Attachments, Capture - Refile - Archive, Capture - Refile - Archive
5924 @section Capture
5925 @cindex capture
5927 Org's method for capturing new items is heavily inspired by John Wiegley
5928 excellent remember package.  Up to version 6.36 Org used a special setup
5929 for @file{remember.el}.  @file{org-remember.el} is still part of Org-mode for
5930 backward compatibility with existing setups.  You can find the documentation
5931 for org-remember at @url{http://orgmode.org/org-remember.pdf}.
5933 The new capturing setup described here is preferred and should be used by new
5934 users.  To convert your @code{org-remember-templates}, run the command
5935 @example
5936 @kbd{M-x org-capture-import-remember-templates @key{RET}}
5937 @end example
5938 @noindent and then customize the new variable with @kbd{M-x
5939 customize-variable org-capture-templates}, check the result, and save the
5940 customization.  You can then use both remember and capture until
5941 you are familiar with the new mechanism.
5943 Capture lets you quickly store notes with little interruption of your work
5944 flow.  The basic process of capturing is very similar to remember, but Org
5945 does enhance it with templates and more.
5947 @menu
5948 * Setting up capture::          Where notes will be stored
5949 * Using capture::               Commands to invoke and terminate capture
5950 * Capture templates::           Define the outline of different note types
5951 @end menu
5953 @node Setting up capture, Using capture, Capture, Capture
5954 @subsection Setting up capture
5956 The following customization sets a default target file for notes, and defines
5957 a global key@footnote{Please select your own key, @kbd{C-c c} is only a
5958 suggestion.}  for capturing new material.
5960 @vindex org-default-notes-file
5961 @example
5962 (setq org-default-notes-file (concat org-directory "/notes.org"))
5963 (define-key global-map "\C-cc" 'org-capture)
5964 @end example
5966 @node Using capture, Capture templates, Setting up capture, Capture
5967 @subsection Using capture
5969 @table @kbd
5970 @kindex C-c c
5971 @item C-c c
5972 Call the command @code{org-capture}.  If you have templates defined
5973 @pxref{Capture templates}, it will offer these templates for selection or use
5974 a new Org outline node as the default template.  It will insert the template
5975 into the target file and switch to an indirect buffer narrowed to this new
5976 node.  You may then insert the information you want.
5978 @kindex C-c C-c
5979 @item C-c C-c
5980 Once you have finished entering information into the capture buffer, 
5981 @kbd{C-c C-c} will return you to the window configuration before the capture
5982 process, so that you can resume your work without further distraction.
5984 @kindex C-c C-w
5985 @item C-c C-w
5986 Finalize the capture process by refiling (@pxref{Refiling notes}) the note to
5987 a different place.
5989 @kindex C-c C-k
5990 @item C-c C-k
5991 Abort the capture process and return to the previous state.
5992 @end table
5994 You can also call @code{org-capture} in a special way from the agenda, using
5995 the @kbd{k c} key combination.  With this access, any timestamps inserted by
5996 the selected capture template will default to the cursor date in the agenda,
5997 rather than to the current date.
5999 @node Capture templates,  , Using capture, Capture
6000 @subsection Capture templates
6001 @cindex templates, for Capture
6003 You can use templates for different types of capture items, and
6004 for different target locations.  The easiest way to create such templates is
6005 through the customize interface.
6007 @table @kbd
6008 @kindex C-c c C
6009 @item C-c c C
6010 Customize the variable @code{org-capture-templates}.
6011 @end table
6013 Before we give the formal description of template definitions, let's look at
6014 an example.  Say you would like to use one template to create general TODO
6015 entries, and you want to put these entries under the heading @samp{Tasks} in
6016 your file @file{~/org/gtd.org}.  Also, a date tree in the file
6017 @file{journal.org} should capture journal entries.  A possible configuration
6018 would look like:
6020 @example
6021 (setq org-capture-templates
6022  '(("t" "Todo" entry (file+headline "~/org/gtd.org" "Tasks")
6023         "* TODO %?\n  %i\n  %a")
6024    ("j" "Journal" entry (file+datetree "~/org/journal.org")
6025         "* %?\nEntered on %U\n  %i\n  %a")))
6026 @end example
6028 @noindent If you then press @kbd{C-c c t}, Org will prepare the template
6029 for you like this:
6030 @example
6031 * TODO
6032   [[file:@var{link to where you initiated capture}]]
6033 @end example
6035 @noindent
6036 During expansion of the template, @code{%a} has been replaced by a link to
6037 the location from where you called the capture command.  This can be
6038 extremely useful for deriving tasks from emails, for example.  You fill in
6039 the task definition, press @code{C-c C-c} and Org returns you to the same
6040 place where you started the capture process.
6043 @menu
6044 * Template elements::           What is needed for a complete template entry
6045 * Template expansion::          Filling in information about time and context
6046 @end menu
6048 @node Template elements, Template expansion, Capture templates, Capture templates
6049 @subsubsection Template elements
6051 Now lets look at the elements of a template definition.  Each entry in
6052 @code{org-capture-templates} is a list with the following items: 
6054 @table @var
6055 @item keys
6056 The keys that will select the template, as a string, characters
6057 only, for example @code{"a"} for a template to be selected with a
6058 single key, or @code{"bt"} for selection with two keys.  When using
6059 several keys, keys using the same prefix key must be sequential 
6060 in the list and preceded by a 2-element entry explaining the
6061 prefix key, for example
6062 @example
6063          ("b" "Templates for marking stuff to buy")
6064 @end example
6065 @noindent If you do not define a template for the @kbd{C} key, this key will
6066 be used to open the customize buffer for this complex variable.
6068 @item description
6069 A short string describing the template, which will be shown during
6070 selection.
6072 @item type
6073 The type of entry, a symbol.  Valid values are:
6074 @table @code
6075 @item entry
6076 An Org-mode node, with a headline. Will be filed as the child of the
6077 target entry or as a top-level entry.  The target file should be an Org-mode
6078 file.
6079 @item item
6080 A plain list item, placed in the first plain  list at the target
6081 location.  Again the target file should be an Org file.
6082 @item checkitem
6083 A checkbox item.  This only differs from the plain list item by the
6084 default template.
6085 @item table-line
6086 a new line in the first table at the target location.  Where exactly the
6087 line will be inserted depends on the properties @code{:prepend} and
6088 @code{:table-line-pos} (see below).
6089 @item plain
6090 Text to be inserted as it is.
6091 @end table
6093 @item target
6094 @vindex org-default-notes-file
6095 Specification of where the captured item should be placed.  In Org-mode
6096 files, targets usually define a node.  Entries will become children of this
6097 node, other types will be added to the table or list in the body of this
6098 node.  Most target specifications contain a file name.  If that file name is
6099 the empty string, it defaults to @code{org-default-notes-file}.
6101 Valid values are:
6102 @table @code
6103 @item (file "path/to/file")
6104 Text will be placed at the beginning or end of that file.
6106 @item (id "id of existing org entry")
6107 Filing as child of this entry, or in the body of the entry.
6109 @item (file+headline "path/to/file" "node headline")
6110 Fast configuration if the target heading is unique in the file.
6112 @item (file+olp "path/to/file" "Level 1 heading" "Level 2" ...)
6113 For non-unique headings, the full path is safer.
6115 @item (file+regexp  "path/to/file" "regexp to find location")
6116 Use a regular expression to position the cursor.
6118 @item (file+datetree "path/to/file")
6119 Will create a heading in a date tree.
6121 @item (file+function "path/to/file" function-finding-location)
6122 A function to find the right location in the file.
6124 @item (clock)
6125 File to the entry that is currently being clocked.
6127 @item (function function-finding-location)
6128 Most general way, write your own function to find both
6129 file and location.
6130 @end table
6132 @item template
6133 The template for creating the capture item.  If you leave this empty, an
6134 appropriate default template will be used.  Otherwise this is a string with
6135 escape codes, which will be replaced depending on time and context of the
6136 capture call.  The string with escapes may be loaded from a template file,
6137 using the special syntax @code{(file "path/to/template")}.  See below for
6138 more details.
6140 @item properties
6141 The rest of the entry is a property list of additional options.
6142 Recognized properties are:
6143 @table @code
6144 @item :prepend
6145 Normally new captured information will be appended at
6146 the target location (last child, last table line, last list item...).
6147 Setting this property will change that.
6149 @item :immediate-finish
6150 When set, do not offer to edit the information, just
6151 file it away immediately.  This makes sense if the template only needs
6152 information that can be added automatically.
6154 @item :empty-lines
6155 Set this to the number of lines to insert
6156 before and after the new item.  Default 0, only common other value is 1.
6158 @item :clock-in
6159 Start the clock in this item.
6161 @item :clock-resume
6162 If starting the capture interrupted a clock, restart that clock when finished
6163 with the capture.
6165 @item :unnarrowed
6166 Do not narrow the target buffer, simply show the full buffer.  Default is to
6167 narrow it so that you only see the new material.
6168 @end table
6169 @end table
6171 @node Template expansion,  , Template elements, Capture templates
6172 @subsubsection Template expansion
6174 In the template itself, special @kbd{%}-escapes@footnote{If you need one of
6175 these sequences literally, escape the @kbd{%} with a backslash.}  allow
6176 dynamic insertion of content:
6178 @comment SJE: should these sentences terminate in period?
6179 @smallexample
6180 %^@{@var{prompt}@}  @r{prompt the user for a string and replace this sequence with it.}
6181             @r{You may specify a default value and a completion table with}
6182             @r{%^@{prompt|default|completion2|completion3...@}}
6183             @r{The arrow keys access a prompt-specific history.}
6184 %a          @r{annotation, normally the link created with @code{org-store-link}}
6185 %A          @r{like @code{%a}, but prompt for the description part}
6186 %i          @r{initial content, the region when capture is called while the}
6187             @r{region is active.}
6188             @r{The entire text will be indented like @code{%i} itself.}
6189 %t          @r{timestamp, date only}
6190 %T          @r{timestamp with date and time}
6191 %u, %U      @r{like the above, but inactive timestamps}
6192 %^t         @r{like @code{%t}, but prompt for date.  Similarly @code{%^T}, @code{%^u}, @code{%^U}}
6193             @r{You may define a prompt like @code{%^@{Birthday@}t}}
6194 %n          @r{user name (taken from @code{user-full-name})}
6195 %c          @r{Current kill ring head.}
6196 %x          @r{Content of the X clipboard.}
6197 %^C         @r{Interactive selection of which kill or clip to use.}
6198 %^L         @r{Like @code{%^C}, but insert as link.}
6199 %k          @r{title of the currently clocked task}
6200 %K          @r{link to the currently clocked task}
6201 %^g         @r{prompt for tags, with completion on tags in target file.}
6202 %^G         @r{prompt for tags, with completion all tags in all agenda files.}
6203 %^@{@var{prop}@}p   @r{Prompt the user for a value for property @var{prop}}
6204 %:keyword   @r{specific information for certain link types, see below}
6205 %[@var{file}]     @r{insert the contents of the file given by @var{file}}
6206 %(@var{sexp})     @r{evaluate Elisp @var{sexp} and replace with the result}
6207 @end smallexample
6209 @noindent
6210 For specific link types, the following keywords will be
6211 defined@footnote{If you define your own link types (@pxref{Adding
6212 hyperlink types}), any property you store with
6213 @code{org-store-link-props} can be accessed in capture templates in a
6214 similar way.}:
6216 @vindex org-from-is-user-regexp
6217 @smallexample
6218 Link type          |  Available keywords
6219 -------------------+----------------------------------------------
6220 bbdb               |  %:name %:company
6221 bbdb               |  %::server %:port %:nick
6222 vm, wl, mh, rmail  |  %:type %:subject %:message-id
6223                    |  %:from %:fromname %:fromaddress
6224                    |  %:to   %:toname   %:toaddress
6225                    |  %: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}.}}
6226 gnus               |  %:group, @r{for messages also all email fields}
6227 w3, w3m            |  %:url
6228 info               |  %:file %:node
6229 calendar           |  %:date
6230 @end smallexample
6232 @noindent
6233 To place the cursor after template expansion use:
6235 @smallexample
6236 %?          @r{After completing the template, position cursor here.}
6237 @end smallexample
6240 @node Attachments, RSS Feeds, Capture, Capture - Refile - Archive
6241 @section Attachments
6242 @cindex attachments
6244 @vindex org-attach-directory
6245 It is often useful to associate reference material with an outline node/task.
6246 Small chunks of plain text can simply be stored in the subtree of a project.
6247 Hyperlinks (@pxref{Hyperlinks}) can establish associations with
6248 files that live elsewhere on your computer or in the cloud, like emails or
6249 source code files belonging to a project.  Another method is @i{attachments},
6250 which are files located in a directory belonging to an outline node.  Org
6251 uses directories named by the unique ID of each entry.  These directories are
6252 located in the @file{data} directory which lives in the same directory where
6253 your Org file lives@footnote{If you move entries or Org files from one
6254 directory to another, you may want to configure @code{org-attach-directory}
6255 to contain an absolute path.}.  If you initialize this directory with
6256 @code{git init}, Org will automatically commit changes when it sees them.
6257 The attachment system has been contributed to Org by John Wiegley.
6259 In cases where it seems better to do so, you can also attach a directory of your
6260 choice to an entry.  You can also make children inherit the attachment
6261 directory from a parent, so that an entire subtree uses the same attached
6262 directory.
6264 @noindent The following commands deal with attachments:
6266 @table @kbd
6268 @kindex C-c C-a
6269 @item C-c C-a
6270 The dispatcher for commands related to the attachment system.  After these
6271 keys, a list of commands is displayed and you must press an additional key
6272 to select a command:
6274 @table @kbd
6275 @kindex C-c C-a a
6276 @item a
6277 @vindex org-attach-method
6278 Select a file and move it into the task's attachment directory.  The file
6279 will be copied, moved, or linked, depending on @code{org-attach-method}.
6280 Note that hard links are not supported on all systems.
6282 @kindex C-c C-a c
6283 @kindex C-c C-a m
6284 @kindex C-c C-a l
6285 @item c/m/l
6286 Attach a file using the copy/move/link method.
6287 Note that hard links are not supported on all systems.
6289 @kindex C-c C-a n
6290 @item n
6291 Create a new attachment as an Emacs buffer.
6293 @kindex C-c C-a z
6294 @item z
6295 Synchronize the current task with its attachment directory, in case you added
6296 attachments yourself.
6298 @kindex C-c C-a o
6299 @item o
6300 @vindex org-file-apps
6301 Open current task's attachment.  If there is more than one, prompt for a
6302 file name first.  Opening will follow the rules set by @code{org-file-apps}.
6303 For more details, see the information on following hyperlinks
6304 (@pxref{Handling links}).
6306 @kindex C-c C-a O
6307 @item O
6308 Also open the attachment, but force opening the file in Emacs.
6310 @kindex C-c C-a f
6311 @item f
6312 Open the current task's attachment directory.
6314 @kindex C-c C-a F
6315 @item F
6316 Also open the directory, but force using @command{dired} in Emacs.
6318 @kindex C-c C-a d
6319 @item d
6320 Select and delete a single attachment.
6322 @kindex C-c C-a D
6323 @item D
6324 Delete all of a task's attachments.  A safer way is to open the directory in
6325 @command{dired} and delete from there.
6327 @kindex C-c C-a s
6328 @item C-c C-a s
6329 @cindex property, ATTACH_DIR
6330 Set a specific directory as the entry's attachment directory.  This works by
6331 putting the directory path into the @code{ATTACH_DIR} property.
6333 @kindex C-c C-a i
6334 @item C-c C-a i
6335 @cindex property, ATTACH_DIR_INHERIT
6336 Set the @code{ATTACH_DIR_INHERIT} property, so that children will use the
6337 same directory for attachments as the parent does.
6338 @end table
6339 @end table
6341 @node RSS Feeds, Protocols, Attachments, Capture - Refile - Archive
6342 @section RSS feeds
6343 @cindex RSS feeds
6344 @cindex Atom feeds
6346 Org can add and change entries based on information found in RSS feeds and
6347 Atom feeds.  You could use this to make a task out of each new podcast in a
6348 podcast feed.  Or you could use a phone-based note-creating service on the
6349 web to import tasks into Org.  To access feeds, configure the variable
6350 @code{org-feed-alist}.  The docstring of this variable has detailed
6351 information.  Here is just an example:
6353 @example
6354 (setq org-feed-alist
6355      '(("Slashdot"
6356          "http://rss.slashdot.org/Slashdot/slashdot"
6357          "~/txt/org/feeds.org" "Slashdot Entries")))
6358 @end example
6360 @noindent
6361 will configure that new items from the feed provided by
6362 @code{rss.slashdot.org} will result in new entries in the file
6363 @file{~/org/feeds.org} under the heading @samp{Slashdot Entries}, whenever
6364 the following command is used:
6366 @table @kbd
6367 @kindex C-c C-x g
6368 @item C-c C-x g
6369 Collect items from the feeds configured in @code{org-feed-alist} and act upon
6370 them.
6371 @kindex C-c C-x G
6372 @item C-c C-x G
6373 Prompt for a feed name and go to the inbox configured for this feed.
6374 @end table
6376 Under the same headline, Org will create a drawer @samp{FEEDSTATUS} in which
6377 it will store information about the status of items in the feed, to avoid
6378 adding the same item several times.  You should add @samp{FEEDSTATUS} to the
6379 list of drawers in that file:
6381 @example
6382 #+DRAWERS: LOGBOOK PROPERTIES FEEDSTATUS
6383 @end example
6385 For more information, including how to read atom feeds, see
6386 @file{org-feed.el} and the docstring of @code{org-feed-alist}.
6388 @node Protocols, Refiling notes, RSS Feeds, Capture - Refile - Archive
6389 @section Protocols for external access
6390 @cindex protocols, for external access
6391 @cindex emacsserver
6393 You can set up Org for handling protocol calls from outside applications that
6394 are passed to Emacs through the @file{emacsserver}.  For example, you can
6395 configure bookmarks in your web browser to send a link to the current page to
6396 Org and create a note from it using capture (@pxref{Capture}).  Or you
6397 could create a bookmark that will tell Emacs to open the local source file of
6398 a remote website you are looking at with the browser.  See
6399 @uref{http://orgmode.org/worg/org-contrib/org-protocol.php} for detailed
6400 documentation and setup instructions.
6402 @node Refiling notes, Archiving, Protocols, Capture - Refile - Archive
6403 @section Refiling notes
6404 @cindex refiling notes
6406 When reviewing the captured data, you may want to refile some of the entries
6407 into a different list, for example into a project.  Cutting, finding the
6408 right location, and then pasting the note is cumbersome.  To simplify this
6409 process, you can use the following special command:
6411 @table @kbd
6412 @kindex C-c C-w
6413 @item C-c C-w
6414 @vindex org-reverse-note-order
6415 @vindex org-refile-targets
6416 @vindex org-refile-use-outline-path
6417 @vindex org-outline-path-complete-in-steps
6418 @vindex org-refile-allow-creating-parent-nodes
6419 @vindex org-log-refile
6420 @vindex org-refile-use-cache
6421 Refile the entry or region at point.  This command offers possible locations
6422 for refiling the entry and lets you select one with completion.  The item (or
6423 all items in the region) is filed below the target heading as a subitem.
6424 Depending on @code{org-reverse-note-order}, it will be either the first or
6425 last subitem.@*
6426 By default, all level 1 headlines in the current buffer are considered to be
6427 targets, but you can have more complex definitions across a number of files.
6428 See the variable @code{org-refile-targets} for details.  If you would like to
6429 select a location via a file-path-like completion along the outline path, see
6430 the variables @code{org-refile-use-outline-path} and
6431 @code{org-outline-path-complete-in-steps}.  If you would like to be able to
6432 create new nodes as new parents for refiling on the fly, check the
6433 variable @code{org-refile-allow-creating-parent-nodes}.
6434 When the variable @code{org-log-refile}@footnote{with corresponding
6435 @code{#+STARTUP} keywords @code{logrefile}, @code{lognoterefile},
6436 and @code{nologrefile}} is set, a time stamp or a note will be
6437 recorded when an entry has been refiled.
6438 @kindex C-u C-c C-w
6439 @item C-u C-c C-w
6440 Use the refile interface to jump to a heading.
6441 @kindex C-u C-u C-c C-w
6442 @item C-u C-u C-c C-w
6443 Jump to the location where @code{org-refile} last moved a tree to.
6444 @item C-2 C-c C-w
6445 Refile as the child of the item currently being clocked.
6446 @item C-0 C-c C-w @ @r{or} @ C-u C-u C-u C-c C-w
6447 Clear the target cache.  Caching of refile targets can be turned on by
6448 setting @code{org-refile-use-cache}.  To make the command seen new possible
6449 targets, you have to clear the cache with this command.
6450 @end table
6452 @node Archiving,  , Refiling notes, Capture - Refile - Archive
6453 @section Archiving
6454 @cindex archiving
6456 When a project represented by a (sub)tree is finished, you may want
6457 to move the tree out of the way and to stop it from contributing to the
6458 agenda.  Archiving is important to keep your working files compact and global
6459 searches like the construction of agenda views fast.
6461 @table @kbd
6462 @kindex C-c C-x C-a
6463 @item C-c C-x C-a
6464 @vindex org-archive-default-command
6465 Archive the current entry using the command specified in the variable
6466 @code{org-archive-default-command}.
6467 @end table
6469 @menu
6470 * Moving subtrees::             Moving a tree to an archive file
6471 * Internal archiving::          Switch off a tree but keep it in the file
6472 @end menu
6474 @node Moving subtrees, Internal archiving, Archiving, Archiving
6475 @subsection Moving a tree to the archive file
6476 @cindex external archiving
6478 The most common archiving action is to move a project tree to another file,
6479 the archive file.
6481 @table @kbd
6482 @kindex C-c $
6483 @kindex C-c C-x C-s
6484 @item C-c C-x C-s@ @r{or short} @ C-c $
6485 @vindex org-archive-location
6486 Archive the subtree starting at the cursor position to the location
6487 given by @code{org-archive-location}.
6488 @kindex C-u C-c C-x C-s
6489 @item C-u C-c C-x C-s
6490 Check if any direct children of the current headline could be moved to
6491 the archive.  To do this, each subtree is checked for open TODO entries.
6492 If none are found, the command offers to move it to the archive
6493 location.  If the cursor is @emph{not} on a headline when this command
6494 is invoked, the level 1 trees will be checked.
6495 @end table
6497 @cindex archive locations
6498 The default archive location is a file in the same directory as the
6499 current file, with the name derived by appending @file{_archive} to the
6500 current file name.  For information and examples on how to change this,
6501 see the documentation string of the variable
6502 @code{org-archive-location}.  There is also an in-buffer option for
6503 setting this variable, for example@footnote{For backward compatibility,
6504 the following also works: If there are several such lines in a file,
6505 each specifies the archive location for the text below it.  The first
6506 such line also applies to any text before its definition.  However,
6507 using this method is @emph{strongly} deprecated as it is incompatible
6508 with the outline structure of the document.  The correct method for
6509 setting multiple archive locations in a buffer is using properties.}:
6511 @cindex #+ARCHIVE
6512 @example
6513 #+ARCHIVE: %s_done::
6514 @end example
6516 @cindex property, ARCHIVE
6517 @noindent
6518 If you would like to have a special ARCHIVE location for a single entry
6519 or a (sub)tree, give the entry an @code{:ARCHIVE:} property with the
6520 location as the value (@pxref{Properties and Columns}).
6522 @vindex org-archive-save-context-info
6523 When a subtree is moved, it receives a number of special properties that
6524 record context information like the file from where the entry came, its
6525 outline path the archiving time etc.  Configure the variable
6526 @code{org-archive-save-context-info} to adjust the amount of information
6527 added.
6530 @node Internal archiving,  , Moving subtrees, Archiving
6531 @subsection Internal archiving
6533 If you want to just switch off (for agenda views) certain subtrees without
6534 moving them to a different file, you can use the @code{ARCHIVE tag}.
6536 A headline that is marked with the ARCHIVE tag (@pxref{Tags}) stays at
6537 its location in the outline tree, but behaves in the following way:
6538 @itemize @minus
6539 @item
6540 @vindex org-cycle-open-archived-trees
6541 It does not open when you attempt to do so with a visibility cycling
6542 command (@pxref{Visibility cycling}).  You can force cycling archived
6543 subtrees with @kbd{C-@key{TAB}}, or by setting the option
6544 @code{org-cycle-open-archived-trees}.  Also normal outline commands like
6545 @code{show-all} will open archived subtrees.
6546 @item
6547 @vindex org-sparse-tree-open-archived-trees
6548 During sparse tree construction (@pxref{Sparse trees}), matches in
6549 archived subtrees are not exposed, unless you configure the option
6550 @code{org-sparse-tree-open-archived-trees}.
6551 @item
6552 @vindex org-agenda-skip-archived-trees
6553 During agenda view construction (@pxref{Agenda Views}), the content of
6554 archived trees is ignored unless you configure the option
6555 @code{org-agenda-skip-archived-trees}, in which case these trees will always
6556 be included.  In the agenda you can press @kbd{v a} to get archives
6557 temporarily included.
6558 @item
6559 @vindex org-export-with-archived-trees
6560 Archived trees are not exported (@pxref{Exporting}), only the headline
6561 is.  Configure the details using the variable
6562 @code{org-export-with-archived-trees}.
6563 @item
6564 @vindex org-columns-skip-archived-trees
6565 Archived trees are excluded from column view unless the variable
6566 @code{org-columns-skip-archived-trees} is configured to @code{nil}.
6567 @end itemize
6569 The following commands help manage the ARCHIVE tag:
6571 @table @kbd
6572 @kindex C-c C-x a
6573 @item C-c C-x a
6574 Toggle the ARCHIVE tag for the current headline.  When the tag is set,
6575 the headline changes to a shadowed face, and the subtree below it is
6576 hidden.
6577 @kindex C-u C-c C-x a
6578 @item C-u C-c C-x a
6579 Check if any direct children of the current headline should be archived.
6580 To do this, each subtree is checked for open TODO entries.  If none are
6581 found, the command offers to set the ARCHIVE tag for the child.  If the
6582 cursor is @emph{not} on a headline when this command is invoked, the
6583 level 1 trees will be checked.
6584 @kindex C-@kbd{TAB}
6585 @item C-@kbd{TAB}
6586 Cycle a tree even if it is tagged with ARCHIVE.
6587 @kindex C-c C-x A
6588 @item C-c C-x A
6589 Move the current entry to the @emph{Archive Sibling}.  This is a sibling of
6590 the entry with the heading @samp{Archive} and the tag @samp{ARCHIVE}.  The
6591 entry becomes a child of that sibling and in this way retains a lot of its
6592 original context, including inherited tags and approximate position in the
6593 outline.
6594 @end table
6597 @node Agenda Views, Markup, Capture - Refile - Archive, Top
6598 @chapter Agenda views
6599 @cindex agenda views
6601 Due to the way Org works, TODO items, time-stamped items, and
6602 tagged headlines can be scattered throughout a file or even a number of
6603 files.  To get an overview of open action items, or of events that are
6604 important for a particular date, this information must be collected,
6605 sorted and displayed in an organized way.
6607 Org can select items based on various criteria and display them
6608 in a separate buffer.  Seven different view types are provided:
6610 @itemize @bullet
6611 @item
6612 an @emph{agenda} that is like a calendar and shows information
6613 for specific dates,
6614 @item
6615 a @emph{TODO list} that covers all unfinished
6616 action items,
6617 @item
6618 a @emph{match view}, showings headlines based on the tags, properties, and
6619 TODO state associated with them,
6620 @item
6621 a @emph{timeline view} that shows all events in a single Org file,
6622 in time-sorted view,
6623 @item
6624 a @emph{text search view} that shows all entries from multiple files
6625 that contain specified keywords,
6626 @item
6627 a @emph{stuck projects view} showing projects that currently don't move
6628 along, and
6629 @item
6630 @emph{custom views} that are special searches and combinations of different
6631 views.
6632 @end itemize
6634 @noindent
6635 The extracted information is displayed in a special @emph{agenda
6636 buffer}.  This buffer is read-only, but provides commands to visit the
6637 corresponding locations in the original Org files, and even to
6638 edit these files remotely.
6640 @vindex org-agenda-window-setup
6641 @vindex org-agenda-restore-windows-after-quit
6642 Two variables control how the agenda buffer is displayed and whether the
6643 window configuration is restored when the agenda exits:
6644 @code{org-agenda-window-setup} and
6645 @code{org-agenda-restore-windows-after-quit}.
6647 @menu
6648 * Agenda files::                Files being searched for agenda information
6649 * Agenda dispatcher::           Keyboard access to agenda views
6650 * Built-in agenda views::       What is available out of the box?
6651 * Presentation and sorting::    How agenda items are prepared for display
6652 * Agenda commands::             Remote editing of Org trees
6653 * Custom agenda views::         Defining special searches and views
6654 * Exporting Agenda Views::      Writing a view to a file
6655 * Agenda column view::          Using column view for collected entries
6656 @end menu
6658 @node Agenda files, Agenda dispatcher, Agenda Views, Agenda Views
6659 @section Agenda files
6660 @cindex agenda files
6661 @cindex files for agenda
6663 @vindex org-agenda-files
6664 The information to be shown is normally collected from all @emph{agenda
6665 files}, the files listed in the variable
6666 @code{org-agenda-files}@footnote{If the value of that variable is not a
6667 list, but a single file name, then the list of agenda files will be
6668 maintained in that external file.}. If a directory is part of this list,
6669 all files with the extension @file{.org} in this directory will be part
6670 of the list.
6672 Thus, even if you only work with a single Org file, that file should
6673 be put into the list@footnote{When using the dispatcher, pressing
6674 @kbd{<} before selecting a command will actually limit the command to
6675 the current file, and ignore @code{org-agenda-files} until the next
6676 dispatcher command.}.  You can customize @code{org-agenda-files}, but
6677 the easiest way to maintain it is through the following commands
6679 @cindex files, adding to agenda list
6680 @table @kbd
6681 @kindex C-c [
6682 @item C-c [
6683 Add current file to the list of agenda files.  The file is added to
6684 the front of the list.  If it was already in the list, it is moved to
6685 the front.  With a prefix argument, file is added/moved to the end.
6686 @kindex C-c ]
6687 @item C-c ]
6688 Remove current file from the list of agenda files.
6689 @kindex C-,
6690 @kindex C-'
6691 @item C-,
6692 @itemx C-'
6693 Cycle through agenda file list, visiting one file after the other.
6694 @kindex M-x org-iswitchb
6695 @item M-x org-iswitchb
6696 Command to use an @code{iswitchb}-like interface to switch to and between Org
6697 buffers.
6698 @end table
6700 @noindent
6701 The Org menu contains the current list of files and can be used
6702 to visit any of them.
6704 If you would like to focus the agenda temporarily on a file not in
6705 this list, or on just one file in the list, or even on only a subtree in a
6706 file, then this can be done in different ways.  For a single agenda command,
6707 you may press @kbd{<} once or several times in the dispatcher
6708 (@pxref{Agenda dispatcher}).  To restrict the agenda scope for an
6709 extended period, use the following commands:
6711 @table @kbd
6712 @kindex C-c C-x <
6713 @item C-c C-x <
6714 Permanently restrict the agenda to the current subtree.  When with a
6715 prefix argument, or with the cursor before the first headline in a file,
6716 the agenda scope is set to the entire file.  This restriction remains in
6717 effect until removed with @kbd{C-c C-x >}, or by typing either @kbd{<}
6718 or @kbd{>} in the agenda dispatcher.  If there is a window displaying an
6719 agenda view, the new restriction takes effect immediately.
6720 @kindex C-c C-x >
6721 @item C-c C-x >
6722 Remove the permanent restriction created by @kbd{C-c C-x <}.
6723 @end table
6725 @noindent
6726 When working with @file{speedbar.el}, you can use the following commands in
6727 the Speedbar frame:
6728 @table @kbd
6729 @kindex <
6730 @item < @r{in the speedbar frame}
6731 Permanently restrict the agenda to the item---either an Org file or a subtree
6732 in such a file---at the cursor in the Speedbar frame.
6733 If there is a window displaying an agenda view, the new restriction takes
6734 effect immediately.
6735 @kindex >
6736 @item > @r{in the speedbar frame}
6737 Lift the restriction.
6738 @end table
6740 @node Agenda dispatcher, Built-in agenda views, Agenda files, Agenda Views
6741 @section The agenda dispatcher
6742 @cindex agenda dispatcher
6743 @cindex dispatching agenda commands
6744 The views are created through a dispatcher, which should be bound to a
6745 global key---for example @kbd{C-c a} (@pxref{Installation}).  In the
6746 following we will assume that @kbd{C-c a} is indeed how the dispatcher
6747 is accessed and list keyboard access to commands accordingly.  After
6748 pressing @kbd{C-c a}, an additional letter is required to execute a
6749 command.  The dispatcher offers the following default commands:
6750 @table @kbd
6751 @item a
6752 Create the calendar-like agenda (@pxref{Weekly/daily agenda}).
6753 @item t @r{/} T
6754 Create a list of all TODO items (@pxref{Global TODO list}).
6755 @item m @r{/} M
6756 Create a list of headlines matching a TAGS expression (@pxref{Matching
6757 tags and properties}).
6758 @item L
6759 Create the timeline view for the current buffer (@pxref{Timeline}).
6760 @item s
6761 Create a list of entries selected by a boolean expression of keywords
6762 and/or regular expressions that must or must not occur in the entry.
6763 @item /
6764 @vindex org-agenda-text-search-extra-files
6765 Search for a regular expression in all agenda files and additionally in
6766 the files listed in @code{org-agenda-text-search-extra-files}.  This
6767 uses the Emacs command @code{multi-occur}.  A prefix argument can be
6768 used to specify the number of context lines for each match, default is
6770 @item # @r{/} !
6771 Create a list of stuck projects (@pxref{Stuck projects}).
6772 @item <
6773 Restrict an agenda command to the current buffer@footnote{For backward
6774 compatibility, you can also press @kbd{1} to restrict to the current
6775 buffer.}.  After pressing @kbd{<}, you still need to press the character
6776 selecting the command.
6777 @item < <
6778 If there is an active region, restrict the following agenda command to
6779 the region.  Otherwise, restrict it to the current subtree@footnote{For
6780 backward compatibility, you can also press @kbd{0} to restrict to the
6781 current region/subtree.}.  After pressing @kbd{< <}, you still need to press the
6782 character selecting the command.
6783 @end table
6785 You can also define custom commands that will be accessible through the
6786 dispatcher, just like the default commands.  This includes the
6787 possibility to create extended agenda buffers that contain several
6788 blocks together, for example the weekly agenda, the global TODO list and
6789 a number of special tags matches.  @xref{Custom agenda views}.
6791 @node Built-in agenda views, Presentation and sorting, Agenda dispatcher, Agenda Views
6792 @section The built-in agenda views
6794 In this section we describe the built-in views.
6796 @menu
6797 * Weekly/daily agenda::         The calendar page with current tasks
6798 * Global TODO list::            All unfinished action items
6799 * Matching tags and properties::  Structured information with fine-tuned search
6800 * Timeline::                    Time-sorted view for single file
6801 * Search view::                 Find entries by searching for text
6802 * Stuck projects::              Find projects you need to review
6803 @end menu
6805 @node Weekly/daily agenda, Global TODO list, Built-in agenda views, Built-in agenda views
6806 @subsection The weekly/daily agenda
6807 @cindex agenda
6808 @cindex weekly agenda
6809 @cindex daily agenda
6811 The purpose of the weekly/daily @emph{agenda} is to act like a page of a
6812 paper agenda, showing all the tasks for the current week or day.
6814 @table @kbd
6815 @cindex org-agenda, command
6816 @kindex C-c a a
6817 @item C-c a a
6818 @vindex org-agenda-ndays
6819 Compile an agenda for the current week from a list of Org files.  The agenda
6820 shows the entries for each day.  With a numeric prefix@footnote{For backward
6821 compatibility, the universal prefix @kbd{C-u} causes all TODO entries to be
6822 listed before the agenda.  This feature is deprecated, use the dedicated TODO
6823 list, or a block agenda instead (@pxref{Block agenda}).}  (like @kbd{C-u 2 1
6824 C-c a a}) you may set the number of days to be displayed (see also the
6825 variable @code{org-agenda-ndays})
6826 @end table
6828 Remote editing from the agenda buffer means, for example, that you can
6829 change the dates of deadlines and appointments from the agenda buffer.
6830 The commands available in the Agenda buffer are listed in @ref{Agenda
6831 commands}.
6833 @subsubheading Calendar/Diary integration
6834 @cindex calendar integration
6835 @cindex diary integration
6837 Emacs contains the calendar and diary by Edward M. Reingold.  The
6838 calendar displays a three-month calendar with holidays from different
6839 countries and cultures.  The diary allows you to keep track of
6840 anniversaries, lunar phases, sunrise/set, recurrent appointments
6841 (weekly, monthly) and more.  In this way, it is quite complementary to
6842 Org.  It can be very useful to combine output from Org with
6843 the diary.
6845 In order to include entries from the Emacs diary into Org-mode's
6846 agenda, you only need to customize the variable
6848 @lisp
6849 (setq org-agenda-include-diary t)
6850 @end lisp
6852 @noindent After that, everything will happen automatically.  All diary
6853 entries including holidays, anniversaries, etc., will be included in the
6854 agenda buffer created by Org-mode.  @key{SPC}, @key{TAB}, and
6855 @key{RET} can be used from the agenda buffer to jump to the diary
6856 file in order to edit existing diary entries.  The @kbd{i} command to
6857 insert new entries for the current date works in the agenda buffer, as
6858 well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
6859 Sunrise/Sunset times, show lunar phases and to convert to other
6860 calendars, respectively.  @kbd{c} can be used to switch back and forth
6861 between calendar and agenda.
6863 If you are using the diary only for sexp entries and holidays, it is
6864 faster to not use the above setting, but instead to copy or even move
6865 the entries into an Org file. Org-mode evaluates diary-style sexp
6866 entries, and does it faster because there is no overhead for first
6867 creating the diary display.  Note that the sexp entries must start at
6868 the left margin, no whitespace is allowed before them.  For example,
6869 the following segment of an Org file will be processed and entries
6870 will be made in the agenda:
6872 @example
6873 * Birthdays and similar stuff
6874 #+CATEGORY: Holiday
6875 %%(org-calendar-holiday)   ; special function for holiday names
6876 #+CATEGORY: Ann
6877 %%(diary-anniversary  5 14 1956)@footnote{Note that the order of the arguments (month, day, year) depends on the setting of @code{calendar-date-style}.} Arthur Dent is %d years old
6878 %%(diary-anniversary 10  2 1869) Mahatma Gandhi would be %d years old
6879 @end example
6881 @subsubheading Anniversaries from BBDB
6882 @cindex BBDB, anniversaries
6883 @cindex anniversaries, from BBDB
6885 If you are using the Big Brothers Database to store your contacts, you will
6886 very likely prefer to store anniversaries in BBDB rather than in a
6887 separate Org or diary file.  Org supports this and will show BBDB
6888 anniversaries as part of the agenda.  All you need to do is to add the
6889 following to one your your agenda files:
6891 @example
6892 * Anniversaries
6893   :PROPERTIES:
6894   :CATEGORY: Anniv
6895   :END:
6896 %%(org-bbdb-anniversaries)
6897 @end example
6899 You can then go ahead and define anniversaries for a BBDB record.  Basically,
6900 you need to press @kbd{C-o anniversary @key{RET}} with the cursor in a BBDB
6901 record and then add the date in the format @code{YYYY-MM-DD}, followed by a
6902 space and the class of the anniversary (@samp{birthday} or @samp{wedding}, or
6903 a format string).  If you omit the class, it will default to @samp{birthday}.
6904 Here are a few examples, the header for the file @file{org-bbdb.el} contains
6905 more detailed information.
6907 @example
6908 1973-06-22
6909 1955-08-02 wedding
6910 2008-04-14 %s released version 6.01 of org-mode, %d years ago
6911 @end example
6913 After a change to BBDB, or for the first agenda display during an Emacs
6914 session, the agenda display will suffer a short delay as Org updates its
6915 hash with anniversaries.  However, from then on things will be very fast---much
6916 faster in fact than a long list of @samp{%%(diary-anniversary)} entries
6917 in an Org or Diary file.
6919 @subsubheading Appointment reminders
6920 @cindex @file{appt.el}
6921 @cindex appointment reminders
6923 Org can interact with Emacs appointments notification facility.  To add all
6924 the appointments of your agenda files, use the command
6925 @code{org-agenda-to-appt}.  This command also lets you filter through the
6926 list of your appointments and add only those belonging to a specific category
6927 or matching a regular expression. See the docstring for details.
6929 @node Global TODO list, Matching tags and properties, Weekly/daily agenda, Built-in agenda views
6930 @subsection The global TODO list
6931 @cindex global TODO list
6932 @cindex TODO list, global
6934 The global TODO list contains all unfinished TODO items formatted and
6935 collected into a single place.
6937 @table @kbd
6938 @kindex C-c a t
6939 @item C-c a t
6940 Show the global TODO list.  This collects the TODO items from all agenda
6941 files (@pxref{Agenda Views}) into a single buffer.  By default, this lists
6942 items with a state the is not a DONE state.  The buffer is in
6943 @code{agenda-mode}, so there are commands to examine and manipulate the TODO
6944 entries directly from that buffer (@pxref{Agenda commands}).
6945 @kindex C-c a T
6946 @item C-c a T
6947 @cindex TODO keyword matching
6948 @vindex org-todo-keywords
6949 Like the above, but allows selection of a specific TODO keyword.  You can
6950 also do this by specifying a prefix argument to @kbd{C-c a t}.  You are
6951 prompted for a keyword, and you may also specify several keywords by
6952 separating them with @samp{|} as the boolean OR operator.  With a numeric
6953 prefix, the nth keyword in @code{org-todo-keywords} is selected.
6954 @kindex r
6955 The @kbd{r} key in the agenda buffer regenerates it, and you can give
6956 a prefix argument to this command to change the selected TODO keyword,
6957 for example @kbd{3 r}.  If you often need a search for a specific
6958 keyword, define a custom command for it (@pxref{Agenda dispatcher}).@*
6959 Matching specific TODO keywords can also be done as part of a tags
6960 search (@pxref{Tag searches}).
6961 @end table
6963 Remote editing of TODO items means that you can change the state of a
6964 TODO entry with a single key press.  The commands available in the
6965 TODO list are described in @ref{Agenda commands}.
6967 @cindex sublevels, inclusion into TODO list
6968 Normally the global TODO list simply shows all headlines with TODO
6969 keywords.  This list can become very long.  There are two ways to keep
6970 it more compact:
6971 @itemize @minus
6972 @item
6973 @vindex org-agenda-todo-ignore-scheduled
6974 @vindex org-agenda-todo-ignore-deadlines
6975 @vindex org-agenda-todo-ignore-with-date
6976 Some people view a TODO item that has been @emph{scheduled} for execution or
6977 have a @emph{deadline} (@pxref{Timestamps}) as no longer @emph{open}.
6978 Configure the variables @code{org-agenda-todo-ignore-scheduled},
6979 @code{org-agenda-todo-ignore-deadlines}, and/or
6980 @code{org-agenda-todo-ignore-with-date} to exclude such items from the
6981 global TODO list.
6982 @item
6983 @vindex org-agenda-todo-list-sublevels
6984 TODO items may have sublevels to break up the task into subtasks.  In
6985 such cases it may be enough to list only the highest level TODO headline
6986 and omit the sublevels from the global list.  Configure the variable
6987 @code{org-agenda-todo-list-sublevels} to get this behavior.
6988 @end itemize
6990 @node Matching tags and properties, Timeline, Global TODO list, Built-in agenda views
6991 @subsection Matching tags and properties
6992 @cindex matching, of tags
6993 @cindex matching, of properties
6994 @cindex tags view
6995 @cindex match view
6997 If headlines in the agenda files are marked with @emph{tags} (@pxref{Tags}),
6998 or have properties (@pxref{Properties and Columns}), you can select headlines
6999 based on this metadata and collect them into an agenda buffer.  The match
7000 syntax described here also applies when creating sparse trees with @kbd{C-c /
7003 @table @kbd
7004 @kindex C-c a m
7005 @item C-c a m
7006 Produce a list of all headlines that match a given set of tags.  The
7007 command prompts for a selection criterion, which is a boolean logic
7008 expression with tags, like @samp{+work+urgent-withboss} or
7009 @samp{work|home} (@pxref{Tags}).  If you often need a specific search,
7010 define a custom command for it (@pxref{Agenda dispatcher}).
7011 @kindex C-c a M
7012 @item C-c a M
7013 @vindex org-tags-match-list-sublevels
7014 @vindex org-agenda-tags-todo-honor-ignore-options
7015 Like @kbd{C-c a m}, but only select headlines that are also TODO items in a
7016 not-DONE state and force checking subitems (see variable
7017 @code{org-tags-match-list-sublevels}).  To exclude scheduled/deadline items,
7018 see the variable @code{org-agenda-tags-todo-honor-ignore-options}.  Matching
7019 specific TODO keywords together with a tags match is also possible, see
7020 @ref{Tag searches}.
7021 @end table
7023 The commands available in the tags list are described in @ref{Agenda
7024 commands}.
7026 @subsubheading Match syntax
7028 @cindex Boolean logic, for tag/property searches
7029 A search string can use Boolean operators @samp{&} for AND and @samp{|} for
7030 OR.  @samp{&} binds more strongly than @samp{|}.  Parentheses are currently
7031 not implemented.  Each element in the search is either a tag, a regular
7032 expression matching tags, or an expression like @code{PROPERTY OPERATOR
7033 VALUE} with a comparison operator, accessing a property value.  Each element
7034 may be preceded by @samp{-}, to select against it, and @samp{+} is syntactic
7035 sugar for positive selection.  The AND operator @samp{&} is optional when
7036 @samp{+} or @samp{-} is present.  Here are some examples, using only tags.
7038 @table @samp
7039 @item +work-boss
7040 Select headlines tagged @samp{:work:}, but discard those also tagged
7041 @samp{:boss:}.
7042 @item work|laptop
7043 Selects lines tagged @samp{:work:} or @samp{:laptop:}.
7044 @item work|laptop+night
7045 Like before, but require the @samp{:laptop:} lines to be tagged also
7046 @samp{:night:}.
7047 @end table
7049 @cindex regular expressions, with tags search
7050 Instead of a tag, you may also specify a regular expression enclosed in curly
7051 braces.  For example,
7052 @samp{work+@{^boss.*@}} matches headlines that contain the tag
7053 @samp{:work:} and any tag @i{starting} with @samp{boss}.
7055 @cindex TODO keyword matching, with tags search
7056 @cindex level, require for tags/property match
7057 @cindex category, require for tags/property match
7058 @vindex org-odd-levels-only
7059 You may also test for properties (@pxref{Properties and Columns}) at the same
7060 time as matching tags.  The properties may be real properties, or special
7061 properties that represent other metadata (@pxref{Special properties}).  For
7062 example, the ``property'' @code{TODO} represents the TODO keyword of the
7063 entry.  Or, the ``property'' @code{LEVEL} represents the level of an entry.
7064 So a search @samp{+LEVEL=3+boss-TODO="DONE"} lists all level three headlines
7065 that have the tag @samp{boss} and are @emph{not} marked with the TODO keyword
7066 DONE.  In buffers with @code{org-odd-levels-only} set, @samp{LEVEL} does not
7067 count the number of stars, but @samp{LEVEL=2} will correspond to 3 stars etc.
7069 Here are more examples:
7070 @table @samp
7071 @item work+TODO="WAITING"
7072 Select @samp{:work:}-tagged TODO lines with the specific TODO
7073 keyword @samp{WAITING}.
7074 @item work+TODO="WAITING"|home+TODO="WAITING"
7075 Waiting tasks both at work and at home.
7076 @end table
7078 When matching properties, a number of different operators can be used to test
7079 the value of a property.  Here is a complex example:
7081 @example
7082 +work-boss+PRIORITY="A"+Coffee="unlimited"+Effort<2         \
7083          +With=@{Sarah\|Denny@}+SCHEDULED>="<2008-10-11>"
7084 @end example
7086 @noindent
7087 The type of comparison will depend on how the comparison value is written:
7088 @itemize @minus
7089 @item
7090 If the comparison value is a plain number, a numerical comparison is done,
7091 and the allowed operators are @samp{<}, @samp{=}, @samp{>}, @samp{<=},
7092 @samp{>=}, and @samp{<>}.
7093 @item
7094 If the comparison value is enclosed in double-quotes,
7095 a string comparison is done, and the same operators are allowed.
7096 @item
7097 If the comparison value is enclosed in double-quotes @emph{and} angular
7098 brackets (like @samp{DEADLINE<="<2008-12-24 18:30>"}), both values are
7099 assumed to be date/time specifications in the standard Org way, and the
7100 comparison will be done accordingly.  Special values that will be recognized
7101 are @code{"<now>"} for now (including time), and @code{"<today>"}, and
7102 @code{"<tomorrow>"} for these days at 0:00 hours, i.e. without a time
7103 specification.  Also strings like @code{"<+5d>"} or @code{"<-2m>"} with units
7104 @code{d}, @code{w}, @code{m}, and @code{y} for day, week, month, and year,
7105 respectively, can be used.
7106 @item
7107 If the comparison value is enclosed
7108 in curly braces, a regexp match is performed, with @samp{=} meaning that the
7109 regexp matches the property value, and @samp{<>} meaning that it does not
7110 match.
7111 @end itemize
7113 So the search string in the example finds entries tagged @samp{:work:} but
7114 not @samp{:boss:}, which also have a priority value @samp{A}, a
7115 @samp{:Coffee:} property with the value @samp{unlimited}, an @samp{Effort}
7116 property that is numerically smaller than 2, a @samp{:With:} property that is
7117 matched by the regular expression @samp{Sarah\|Denny}, and that are scheduled
7118 on or after October 11, 2008.
7120 Accessing TODO, LEVEL, and CATEGORY during a search is fast.  Accessing any
7121 other properties will slow down the search.  However, once you have paid the
7122 price by accessing one property, testing additional properties is cheap
7123 again.
7125 You can configure Org-mode to use property inheritance during a search, but
7126 beware that this can slow down searches considerably.  See @ref{Property
7127 inheritance}, for details.
7129 For backward compatibility, and also for typing speed, there is also a
7130 different way to test TODO states in a search.  For this, terminate the
7131 tags/property part of the search string (which may include several terms
7132 connected with @samp{|}) with a @samp{/} and then specify a Boolean
7133 expression just for TODO keywords.  The syntax is then similar to that for
7134 tags, but should be applied with care: for example, a positive selection on
7135 several TODO keywords cannot meaningfully be combined with boolean AND.
7136 However, @emph{negative selection} combined with AND can be meaningful.  To
7137 make sure that only lines are checked that actually have any TODO keyword
7138 (resulting in a speed-up), use @kbd{C-c a M}, or equivalently start the TODO
7139 part after the slash with @samp{!}.  Using @kbd{C-c a M} or @samp{/!} will
7140 not match TODO keywords in a DONE state.  Examples:
7142 @table @samp
7143 @item work/WAITING
7144 Same as @samp{work+TODO="WAITING"}
7145 @item work/!-WAITING-NEXT
7146 Select @samp{:work:}-tagged TODO lines that are neither @samp{WAITING}
7147 nor @samp{NEXT}
7148 @item work/!+WAITING|+NEXT
7149 Select @samp{:work:}-tagged TODO lines that are either @samp{WAITING} or
7150 @samp{NEXT}.
7151 @end table
7153 @node Timeline, Search view, Matching tags and properties, Built-in agenda views
7154 @subsection Timeline for a single file
7155 @cindex timeline, single file
7156 @cindex time-sorted view
7158 The timeline summarizes all time-stamped items from a single Org-mode
7159 file in a @emph{time-sorted view}.  The main purpose of this command is
7160 to give an overview over events in a project.
7162 @table @kbd
7163 @kindex C-c a L
7164 @item C-c a L
7165 Show a time-sorted view of the Org file, with all time-stamped items.
7166 When called with a @kbd{C-u} prefix, all unfinished TODO entries
7167 (scheduled or not) are also listed under the current date.
7168 @end table
7170 @noindent
7171 The commands available in the timeline buffer are listed in
7172 @ref{Agenda commands}.
7174 @node Search view, Stuck projects, Timeline, Built-in agenda views
7175 @subsection Search view
7176 @cindex search view
7177 @cindex text search
7178 @cindex searching, for text
7180 This agenda view is a general text search facility for Org-mode entries.
7181 It is particularly useful to find notes.
7183 @table @kbd
7184 @kindex C-c a s
7185 @item C-c a s
7186 This is a special search that lets you select entries by matching a substring
7187 or specific words using a boolean logic.
7188 @end table
7189 For example, the search string @samp{computer equipment} will find entries
7190 that contain @samp{computer equipment} as a substring.  If the two words are
7191 separated by more space or a line break, the search will still match.
7192 Search view can also search for specific keywords in the entry, using Boolean
7193 logic.  The search string @samp{+computer +wifi -ethernet -@{8\.11[bg]@}}
7194 will search for note entries that contain the keywords @code{computer}
7195 and @code{wifi}, but not the keyword @code{ethernet}, and which are also
7196 not matched by the regular expression @code{8\.11[bg]}, meaning to
7197 exclude both 8.11b and 8.11g.  The first @samp{+} is necessary to turn on
7198 word search, other @samp{+} characters are optional.  For more details, see
7199 the docstring of the command @code{org-search-view}.
7201 @vindex org-agenda-text-search-extra-files
7202 Note that in addition to the agenda files, this command will also search
7203 the files listed in @code{org-agenda-text-search-extra-files}.
7205 @node Stuck projects,  , Search view, Built-in agenda views
7206 @subsection Stuck projects
7208 If you are following a system like David Allen's GTD to organize your
7209 work, one of the ``duties'' you have is a regular review to make sure
7210 that all projects move along.  A @emph{stuck} project is a project that
7211 has no defined next actions, so it will never show up in the TODO lists
7212 Org-mode produces.  During the review, you need to identify such
7213 projects and define next actions for them.
7215 @table @kbd
7216 @kindex C-c a #
7217 @item C-c a #
7218 List projects that are stuck.
7219 @kindex C-c a !
7220 @item C-c a !
7221 @vindex org-stuck-projects
7222 Customize the variable @code{org-stuck-projects} to define what a stuck
7223 project is and how to find it.
7224 @end table
7226 You almost certainly will have to configure this view before it will
7227 work for you.  The built-in default assumes that all your projects are
7228 level-2 headlines, and that a project is not stuck if it has at least
7229 one entry marked with a TODO keyword TODO or NEXT or NEXTACTION.
7231 Let's assume that you, in your own way of using Org-mode, identify
7232 projects with a tag PROJECT, and that you use a TODO keyword MAYBE to
7233 indicate a project that should not be considered yet.  Let's further
7234 assume that the TODO keyword DONE marks finished projects, and that NEXT
7235 and TODO indicate next actions.  The tag @@SHOP indicates shopping and
7236 is a next action even without the NEXT tag.  Finally, if the project
7237 contains the special word IGNORE anywhere, it should not be listed
7238 either.  In this case you would start by identifying eligible projects
7239 with a tags/todo match@footnote{@xref{Tag searches}.}
7240 @samp{+PROJECT/-MAYBE-DONE}, and then check for TODO, NEXT, @@SHOP, and
7241 IGNORE in the subtree to identify projects that are not stuck.  The
7242 correct customization for this is
7244 @lisp
7245 (setq org-stuck-projects
7246       '("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP")
7247                                "\\<IGNORE\\>"))
7248 @end lisp
7250 Note that if a project is identified as non-stuck, the subtree of this entry
7251 will still be searched for stuck projects.
7253 @node Presentation and sorting, Agenda commands, Built-in agenda views, Agenda Views
7254 @section Presentation and sorting
7255 @cindex presentation, of agenda items
7257 @vindex org-agenda-prefix-format
7258 Before displaying items in an agenda view, Org-mode visually prepares
7259 the items and sorts them.  Each item occupies a single line.  The line
7260 starts with a @emph{prefix} that contains the @emph{category}
7261 (@pxref{Categories}) of the item and other important information.  You can
7262 customize the prefix using the option @code{org-agenda-prefix-format}.
7263 The prefix is followed by a cleaned-up version of the outline headline
7264 associated with the item.
7266 @menu
7267 * Categories::                  Not all tasks are equal
7268 * Time-of-day specifications::  How the agenda knows the time
7269 * Sorting of agenda items::     The order of things
7270 @end menu
7272 @node Categories, Time-of-day specifications, Presentation and sorting, Presentation and sorting
7273 @subsection Categories
7275 @cindex category
7276 The category is a broad label assigned to each agenda item.  By default,
7277 the category is simply derived from the file name, but you can also
7278 specify it with a special line in the buffer, like this@footnote{For
7279 backward compatibility, the following also works: if there are several
7280 such lines in a file, each specifies the category for the text below it.
7281 The first category also applies to any text before the first CATEGORY
7282 line.  However, using this method is @emph{strongly} deprecated as it is
7283 incompatible with the outline structure of the document.  The correct
7284 method for setting multiple categories in a buffer is using a
7285 property.}:
7287 @example
7288 #+CATEGORY: Thesis
7289 @end example
7291 @noindent
7292 @cindex property, CATEGORY
7293 If you would like to have a special CATEGORY for a single entry or a
7294 (sub)tree, give the entry a @code{:CATEGORY:} property with the
7295 special category you want to apply as the value.
7297 @noindent
7298 The display in the agenda buffer looks best if the category is not
7299 longer than 10 characters.
7301 @node Time-of-day specifications, Sorting of agenda items, Categories, Presentation and sorting
7302 @subsection Time-of-day specifications
7303 @cindex time-of-day specification
7305 Org-mode checks each agenda item for a time-of-day specification.  The
7306 time can be part of the timestamp that triggered inclusion into the
7307 agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}.  Time
7308 ranges can be specified with two timestamps, like
7310 @w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
7312 In the headline of the entry itself, a time(range) may also appear as
7313 plain text (like @samp{12:45} or a @samp{8:30-1pm}).  If the agenda
7314 integrates the Emacs diary (@pxref{Weekly/daily agenda}), time
7315 specifications in diary entries are recognized as well.
7317 For agenda display, Org-mode extracts the time and displays it in a
7318 standard 24 hour format as part of the prefix.  The example times in
7319 the previous paragraphs would end up in the agenda like this:
7321 @example
7322     8:30-13:00 Arthur Dent lies in front of the bulldozer
7323    12:45...... Ford Prefect arrives and takes Arthur to the pub
7324    19:00...... The Vogon reads his poem
7325    20:30-22:15 Marvin escorts the Hitchhikers to the bridge
7326 @end example
7328 @cindex time grid
7329 If the agenda is in single-day mode, or for the display of today, the
7330 timed entries are embedded in a time grid, like
7332 @example
7333     8:00...... ------------------
7334     8:30-13:00 Arthur Dent lies in front of the bulldozer
7335    10:00...... ------------------
7336    12:00...... ------------------
7337    12:45...... Ford Prefect arrives and takes Arthur to the pub
7338    14:00...... ------------------
7339    16:00...... ------------------
7340    18:00...... ------------------
7341    19:00...... The Vogon reads his poem
7342    20:00...... ------------------
7343    20:30-22:15 Marvin escorts the Hitchhikers to the bridge
7344 @end example
7346 @vindex org-agenda-use-time-grid
7347 @vindex org-agenda-time-grid
7348 The time grid can be turned on and off with the variable
7349 @code{org-agenda-use-time-grid}, and can be configured with
7350 @code{org-agenda-time-grid}.
7352 @node Sorting of agenda items,  , Time-of-day specifications, Presentation and sorting
7353 @subsection Sorting of agenda items
7354 @cindex sorting, of agenda items
7355 @cindex priorities, of agenda items
7356 Before being inserted into a view, the items are sorted.  How this is
7357 done depends on the type of view.
7358 @itemize @bullet
7359 @item
7360 @vindex org-agenda-files
7361 For the daily/weekly agenda, the items for each day are sorted.  The
7362 default order is to first collect all items containing an explicit
7363 time-of-day specification.  These entries will be shown at the beginning
7364 of the list, as a @emph{schedule} for the day.  After that, items remain
7365 grouped in categories, in the sequence given by @code{org-agenda-files}.
7366 Within each category, items are sorted by priority (@pxref{Priorities}),
7367 which is composed of the base priority (2000 for priority @samp{A}, 1000
7368 for @samp{B}, and 0 for @samp{C}), plus additional increments for
7369 overdue scheduled or deadline items.
7370 @item
7371 For the TODO list, items remain in the order of categories, but within
7372 each category, sorting takes place according to priority
7373 (@pxref{Priorities}).  The priority used for sorting derives from the
7374 priority cookie, with additions depending on how close an item is to its due
7375 or scheduled date.
7376 @item
7377 For tags matches, items are not sorted at all, but just appear in the
7378 sequence in which they are found in the agenda files.
7379 @end itemize
7381 @vindex org-agenda-sorting-strategy
7382 Sorting can be customized using the variable
7383 @code{org-agenda-sorting-strategy}, and may also include criteria based on
7384 the estimated effort of an entry (@pxref{Effort estimates}).
7386 @node Agenda commands, Custom agenda views, Presentation and sorting, Agenda Views
7387 @section Commands in the agenda buffer
7388 @cindex commands, in agenda buffer
7390 Entries in the agenda buffer are linked back to the Org file or diary
7391 file where they originate.  You are not allowed to edit the agenda
7392 buffer itself, but commands are provided to show and jump to the
7393 original entry location, and to edit the Org files ``remotely'' from
7394 the agenda buffer.  In this way, all information is stored only once,
7395 removing the risk that your agenda and note files may diverge.
7397 Some commands can be executed with mouse clicks on agenda lines.  For
7398 the other commands, the cursor needs to be in the desired line.
7400 @table @kbd
7401 @tsubheading{Motion}
7402 @cindex motion commands in agenda
7403 @kindex n
7404 @item n
7405 Next line (same as @key{up} and @kbd{C-p}).
7406 @kindex p
7407 @item p
7408 Previous line (same as @key{down} and @kbd{C-n}).
7409 @tsubheading{View/Go to Org file}
7410 @kindex mouse-3
7411 @kindex @key{SPC}
7412 @item mouse-3
7413 @itemx @key{SPC}
7414 Display the original location of the item in another window.
7415 With prefix arg, make sure that the entire entry is made visible in the
7416 outline, not only the heading.
7418 @kindex L
7419 @item L
7420 Display original location and recenter that window.
7422 @kindex mouse-2
7423 @kindex mouse-1
7424 @kindex @key{TAB}
7425 @item mouse-2
7426 @itemx mouse-1
7427 @itemx @key{TAB}
7428 Go to the original location of the item in another window.  Under Emacs
7429 22, @kbd{mouse-1} will also works for this.
7431 @kindex @key{RET}
7432 @itemx @key{RET}
7433 Go to the original location of the item and delete other windows.
7435 @kindex F
7436 @item F
7437 @vindex org-agenda-start-with-follow-mode
7438 Toggle Follow mode.  In Follow mode, as you move the cursor through
7439 the agenda buffer, the other window always shows the corresponding
7440 location in the Org file.  The initial setting for this mode in new
7441 agenda buffers can be set with the variable
7442 @code{org-agenda-start-with-follow-mode}.
7444 @kindex C-c C-x b
7445 @item C-c C-x b
7446 Display the entire subtree of the current item in an indirect buffer.  With a
7447 numeric prefix argument N, go up to level N and then take that tree.  If N is
7448 negative, go up that many levels.  With a @kbd{C-u} prefix, do not remove the
7449 previously used indirect buffer.
7451 @kindex C-c C-o
7452 @item C-c C-o
7453 Follow a link in the entry.  This will offer a selection of any links in the
7454 text belonging to the referenced Org node.  If there is only one link, it
7455 will be followed without a selection prompt.
7457 @tsubheading{Change display}
7458 @cindex display changing, in agenda
7459 @kindex o
7460 @item o
7461 Delete other windows.
7463 @kindex v d
7464 @kindex d
7465 @kindex v w
7466 @kindex w
7467 @kindex v m
7468 @kindex v y
7469 @item v d @ @r{or short} @ d
7470 @itemx v w @ @r{or short} @ w
7471 @itemx v m
7472 @itemx v y
7473 Switch to day/week/month/year view.  When switching to day or week view,
7474 this setting becomes the default for subsequent agenda commands.  Since
7475 month and year views are slow to create, they do not become the default.
7476 A numeric prefix argument may be used to jump directly to a specific day
7477 of the year, ISO week, month, or year, respectively.  For example,
7478 @kbd{32 d} jumps to February 1st, @kbd{9 w} to ISO week number 9.  When
7479 setting day, week, or month view, a year may be encoded in the prefix
7480 argument as well.  For example, @kbd{200712 w} will jump to week 12 in
7481 2007.  If such a year specification has only one or two digits, it will
7482 be mapped to the interval 1938-2037.
7484 @kindex f
7485 @item f
7486 @vindex org-agenda-ndays
7487 Go forward in time to display the following @code{org-agenda-ndays} days.
7488 For example, if the display covers a week, switch to the following week.
7489 With prefix arg, go forward that many times @code{org-agenda-ndays} days.
7491 @kindex b
7492 @item b
7493 Go backward in time to display earlier dates.
7495 @kindex .
7496 @item .
7497 Go to today.
7499 @kindex j
7500 @item j
7501 Prompt for a date and go there.
7503 @kindex J
7504 @item J
7505 Go to the currently clocked in task in the agenda buffer.
7507 @kindex D
7508 @item D
7509 Toggle the inclusion of diary entries.  See @ref{Weekly/daily agenda}.
7511 @kindex v l
7512 @kindex v L
7513 @kindex l
7514 @item v l @ @r{or short} @ l
7515 @vindex org-log-done
7516 @vindex org-agenda-log-mode-items
7517 Toggle Logbook mode.  In Logbook mode, entries that were marked DONE while
7518 logging was on (variable @code{org-log-done}) are shown in the agenda, as are
7519 entries that have been clocked on that day.  You can configure the entry
7520 types that should be included in log mode using the variable
7521 @code{org-agenda-log-mode-items}.  When called with a @kbd{C-u} prefix, show
7522 all possible logbook entries, including state changes.  When called with two
7523 prefix args @kbd{C-u C-u}, show only logging information, nothing else.
7524 @kbd{v L} is equivalent to @kbd{C-u v l}.
7526 @kindex v [
7527 @kindex [
7528 @item v [ @ @r{or short} @ [
7529 Include inactive timestamps into the current view.  Only for weekly/daily
7530 agenda and timeline views.
7532 @kindex v a
7533 @kindex v A
7534 @item v a
7535 @itemx v A
7536 Toggle Archives mode.  In Archives mode, trees that are marked
7537 @code{ARCHIVED} are also scanned when producing the agenda.  When you use the
7538 capital @kbd{A}, even all archive files are included.  To exit archives mode,
7539 press @kbd{v a} again.
7541 @kindex v R
7542 @kindex R
7543 @item v R @ @r{or short} @ R
7544 @vindex org-agenda-start-with-clockreport-mode
7545 Toggle Clockreport mode.  In Clockreport mode, the daily/weekly agenda will
7546 always show a table with the clocked times for the timespan and file scope
7547 covered by the current agenda view.  The initial setting for this mode in new
7548 agenda buffers can be set with the variable
7549 @code{org-agenda-start-with-clockreport-mode}.
7551 @kindex v E
7552 @kindex E
7553 @item v E @ @r{or short} @ E
7554 @vindex org-agenda-start-with-entry-text-mode
7555 @vindex org-agenda-entry-text-maxlines
7556 Toggle entry text mode.  In entry text mode, a number of lines from the Org
7557 outline node referenced by an agenda line will be displayed below the line.
7558 The maximum number of lines is given by the variable
7559 @code{org-agenda-entry-text-maxlines}.  Calling this command with a numeric
7560 prefix argument will temporarily modify that number to the prefix value.
7562 @kindex G
7563 @item G
7564 @vindex org-agenda-use-time-grid
7565 @vindex org-agenda-time-grid
7566 Toggle the time grid on and off.  See also the variables
7567 @code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
7569 @kindex r
7570 @item r
7571 Recreate the agenda buffer, for example to reflect the changes after
7572 modification of the timestamps of items with @kbd{S-@key{left}} and
7573 @kbd{S-@key{right}}.  When the buffer is the global TODO list, a prefix
7574 argument is interpreted to create a selective list for a specific TODO
7575 keyword.
7576 @kindex g
7577 @item g
7578 Same as @kbd{r}.
7580 @kindex s
7581 @kindex C-x C-s
7582 @item s
7583 @itemx C-x C-s
7584 Save all Org buffers in the current Emacs session, and also the locations of
7585 IDs.
7587 @kindex C-c C-x C-c
7588 @item C-c C-x C-c
7589 @vindex org-columns-default-format
7590 Invoke column view (@pxref{Column view}) in the agenda buffer.  The column
7591 view format is taken from the entry at point, or (if there is no entry at
7592 point), from the first entry in the agenda view.  So whatever the format for
7593 that entry would be in the original buffer (taken from a property, from a
7594 @code{#+COLUMNS} line, or from the default variable
7595 @code{org-columns-default-format}), will be used in the agenda.
7597 @kindex C-c C-x >
7598 @item C-c C-x >
7599 Remove the restriction lock on the agenda, if it is currently restricted to a
7600 file or subtree (@pxref{Agenda files}).
7602 @tsubheading{Secondary filtering and query editing}
7603 @cindex filtering, by tag and effort, in agenda
7604 @cindex tag filtering, in agenda
7605 @cindex effort filtering, in agenda
7606 @cindex query editing, in agenda
7608 @kindex /
7609 @item /
7610 @vindex org-agenda-filter-preset
7611 Filter the current agenda view with respect to a tag and/or effort estimates.
7612 The difference between this and a custom agenda command is that filtering is
7613 very fast, so that you can switch quickly between different filters without
7614 having to recreate the agenda@footnote{Custom commands can preset a filter by
7615 binding the variable @code{org-agenda-filter-preset} as an option.  This
7616 filter will then be applied to the view and persist as a basic filter through
7617 refreshes and more secondary filtering.  The filter is a global property of
7618 the entire agenda view - in a block agenda, you should only set this in the
7619 global options section, not in the section of an individual block.}
7621 You will be prompted for a tag selection letter, SPC will mean any tag at
7622 all.  Pressing @key{TAB} at that prompt will offer use completion to select a
7623 tag (including any tags that do not have a selection character).  The command
7624 then hides all entries that do not contain or inherit this tag.  When called
7625 with prefix arg, remove the entries that @emph{do} have the tag.  A second
7626 @kbd{/} at the prompt will turn off the filter and unhide any hidden entries.
7627 If the first key you press is either @kbd{+} or @kbd{-}, the previous filter
7628 will be narrowed by requiring or forbidding the selected additional tag.
7629 Instead of pressing @kbd{+} or @kbd{-} after @kbd{/}, you can also
7630 immediately use the @kbd{\} command.
7632 @vindex org-sort-agenda-noeffort-is-high
7633 In order to filter for effort estimates, you should set-up allowed
7634 efforts globally, for example
7635 @lisp
7636 (setq org-global-properties
7637     '(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))
7638 @end lisp
7639 You can then filter for an effort by first typing an operator, one of
7640 @kbd{<}, @kbd{>}, and @kbd{=}, and then the one-digit index of an effort
7641 estimate in your array of allowed values, where @kbd{0} means the 10th value.
7642 The filter will then restrict to entries with effort smaller-or-equal, equal,
7643 or larger-or-equal than the selected value.  If the digits 0-9 are not used
7644 as fast access keys to tags, you can also simply press the index digit
7645 directly without an operator.  In this case, @kbd{<} will be assumed.  For
7646 application of the operator, entries without a defined effort will be treated
7647 according to the value of @code{org-sort-agenda-noeffort-is-high}.  To filter
7648 for tasks without effort definition, press @kbd{?} as the operator.
7650 Org also supports automatic, context-aware tag filtering.  If the variable
7651 @code{org-agenda-auto-exclude-function} is set to a user-defined function,
7652 that function can decide which tags should be excluded from the agenda
7653 automatically.  Once this is set, the @kbd{/} command then accepts @kbd{RET}
7654 as a sub-option key and runs the auto exclusion logic.  For example, let's
7655 say you use a @code{Net} tag to identify tasks which need network access, an
7656 @code{Errand} tag for errands in town, and a @code{Call} tag for making phone
7657 calls.  You could auto-exclude these tags based on the availability of the
7658 Internet, and outside of business hours, with something like this:
7660 @lisp
7661 @group
7662 (defun org-my-auto-exclude-function (tag)
7663   (and (cond
7664         ((string= tag "Net")
7665          (/= 0 (call-process "/sbin/ping" nil nil nil
7666                              "-c1" "-q" "-t1" "mail.gnu.org")))
7667         ((or (string= tag "Errand") (string= tag "Call"))
7668          (let ((hour (nth 2 (decode-time))))
7669            (or (< hour 8) (> hour 21)))))
7670        (concat "-" tag)))
7672 (setq org-agenda-auto-exclude-function 'org-my-auto-exclude-function)
7673 @end group
7674 @end lisp
7676 @kindex \
7677 @item \
7678 Narrow the current agenda filter by an additional condition.  When called with
7679 prefix arg, remove the entries that @emph{do} have the tag, or that do match
7680 the effort criterion.  You can achieve the same effect by pressing @kbd{+} or
7681 @kbd{-} as the first key after the @kbd{/} command.
7683 @kindex [
7684 @kindex ]
7685 @kindex @{
7686 @kindex @}
7687 @item [ ] @{ @}
7688 @table @i
7689 @item @r{in} search view
7690 add new search words (@kbd{[} and @kbd{]}) or new regular expressions
7691 (@kbd{@{} and @kbd{@}}) to the query string.  The opening bracket/brace will
7692 add a positive search term prefixed by @samp{+}, indicating that this search
7693 term @i{must} occur/match in the entry.  The closing bracket/brace will add a
7694 negative search term which @i{must not} occur/match in the entry for it to be
7695 selected.
7696 @end table
7698 @page
7699 @tsubheading{Remote editing}
7700 @cindex remote editing, from agenda
7702 @item 0-9
7703 Digit argument.
7705 @cindex undoing remote-editing events
7706 @cindex remote editing, undo
7707 @kindex C-_
7708 @item C-_
7709 Undo a change due to a remote editing command.  The change is undone
7710 both in the agenda buffer and in the remote buffer.
7712 @kindex t
7713 @item t
7714 Change the TODO state of the item, both in the agenda and in the
7715 original org file.
7717 @kindex C-S-@key{right}
7718 @kindex C-S-@key{left}
7719 @item C-S-@key{right}@r{/}@key{left}
7720 Switch to the next/previous set of TODO keywords.
7722 @kindex C-k
7723 @item C-k
7724 @vindex org-agenda-confirm-kill
7725 Delete the current agenda item along with the entire subtree belonging
7726 to it in the original Org file.  If the text to be deleted remotely
7727 is longer than one line, the kill needs to be confirmed by the user.  See
7728 variable @code{org-agenda-confirm-kill}.
7730 @kindex C-c C-w
7731 @item C-c C-w
7732 Refile the entry at point.
7734 @kindex C-c C-x C-a
7735 @kindex a
7736 @item C-c C-x C-a @ @r{or short} @ a
7737 @vindex org-archive-default-command
7738 Archive the subtree corresponding to the entry at point using the default
7739 archiving command set in @code{org-archive-default-command}.  When using the
7740 @code{a} key, confirmation will be required.
7742 @kindex C-c C-x a
7743 @item C-c C-x a
7744 Toggle the ARCHIVE tag for the current headline.
7746 @kindex C-c C-x A
7747 @item C-c C-x A
7748 Move the subtree corresponding to the current entry to its @emph{archive
7749 sibling}.
7751 @kindex $
7752 @kindex C-c C-x C-s
7753 @item C-c C-x C-s @ @r{or short} @ $
7754 Archive the subtree corresponding to the current headline.  This means the
7755 entry will be moved to the configured archive location, most likely a
7756 different file.
7758 @kindex T
7759 @item T
7760 @vindex org-agenda-show-inherited-tags
7761 Show all tags associated with the current item.  This is useful if you have
7762 turned off @code{org-agenda-show-inherited-tags}, but still want to see all
7763 tags of a headline occasionally.
7765 @kindex :
7766 @item :
7767 Set tags for the current headline.  If there is an active region in the
7768 agenda, change a tag for all headings in the region.
7770 @kindex ,
7771 @item ,
7772 Set the priority for the current item.  Org-mode prompts for the
7773 priority character. If you reply with @key{SPC}, the priority cookie
7774 is removed from the entry.
7776 @kindex P
7777 @item P
7778 Display weighted priority of current item.
7780 @kindex +
7781 @kindex S-@key{up}
7782 @item +
7783 @itemx S-@key{up}
7784 Increase the priority of the current item.  The priority is changed in
7785 the original buffer, but the agenda is not resorted.  Use the @kbd{r}
7786 key for this.
7788 @kindex -
7789 @kindex S-@key{down}
7790 @item -
7791 @itemx S-@key{down}
7792 Decrease the priority of the current item.
7794 @kindex C-c C-z
7795 @kindex z
7796 @item z @ @r{or also} @ C-c C-z
7797 @vindex org-log-into-drawer
7798 Add a note to the entry.  This note will be recorded, and then files to the
7799 same location where state change notes are put.  Depending on
7800 @code{org-log-into-drawer}, this maybe inside a drawer.
7802 @kindex C-c C-a
7803 @item C-c C-a
7804 Dispatcher for all command related to attachments.
7806 @kindex C-c C-s
7807 @item C-c C-s
7808 Schedule this item, with prefix arg remove the scheduling timestamp
7810 @kindex C-c C-d
7811 @item C-c C-d
7812 Set a deadline for this item, with prefix arg remove the deadline.
7814 @kindex k
7815 @item k
7816 Agenda actions, to set dates for selected items to the cursor date.
7817 This command also works in the calendar!  The command prompts for an
7818 additional key:
7819 @example
7820 m   @r{Mark the entry at point for action.  You can also make entries}
7821     @r{in Org files with @kbd{C-c C-x C-k}.}
7822 d   @r{Set the deadline of the marked entry to the date at point.}
7823 s   @r{Schedule the marked entry at the date at point.}
7824 r   @r{Call @code{org-capture} with the cursor date as default date.}
7825 @end example
7826 @noindent
7827 Press @kbd{r} afterward to refresh the agenda and see the effect of the
7828 command.
7830 @kindex S-@key{right}
7831 @item S-@key{right}
7832 Change the timestamp associated with the current line by one day into the
7833 future.  With a numeric prefix argument, change it by that many days.  For
7834 example, @kbd{3 6 5 S-@key{right}} will change it by a year.  With a
7835 @kbd{C-u} prefix, change the time by one hour.  If you immediately repeat the
7836 command, it will continue to change hours even without the prefix arg.  With
7837 a double @kbd{C-u C-u} prefix, do the same for changing minutes.  The stamp
7838 is changed in the original Org file, but the change is not directly reflected
7839 in the agenda buffer.  Use @kbd{r} or @kbd{g} to update the buffer.
7841 @kindex S-@key{left}
7842 @item S-@key{left}
7843 Change the timestamp associated with the current line by one day
7844 into the past.
7846 @kindex >
7847 @item >
7848 Change the timestamp associated with the current line.  The key @kbd{>} has
7849 been chosen, because it is the same as @kbd{S-.}  on my keyboard.
7851 @kindex I
7852 @item I
7853 Start the clock on the current item.  If a clock is running already, it
7854 is stopped first.
7856 @kindex O
7857 @item O
7858 Stop the previously started clock.
7860 @kindex X
7861 @item X
7862 Cancel the currently running clock.
7864 @kindex J
7865 @item J
7866 Jump to the running clock in another window.
7868 @tsubheading{Bulk remote editing selected entries}
7869 @cindex remote editing, bulk, from agenda
7871 @kindex m
7872 @item m
7873 Mark the entry at point for bulk action.
7875 @kindex u
7876 @item u
7877 Unmark entry for bulk action.
7879 @kindex U
7880 @item U
7881 Unmark all marked entries for bulk action.
7883 @kindex B
7884 @item B
7885 Bulk action: act on all marked entries in the agenda.  This will prompt for
7886 another key to select the action to be applied.  The prefix arg to @kbd{B}
7887 will be passed through to the @kbd{s} and @kbd{d} commands, to bulk-remove
7888 these special timestamps.
7889 @example
7890 r  @r{Prompt for a single refile target and move all entries.  The entries}
7891    @r{will no longer be in the agenda, refresh (@kbd{g}) to bring them back.}
7892 $  @r{Archive all selected entries.}
7893 A  @r{Archive entries by moving them to their respective archive siblings.}
7894 t  @r{Change TODO state.  This prompts for a single TODO keyword and}
7895    @r{changes the state of all selected entries, bypassing blocking and}
7896    @r{suppressing logging notes (but not time stamps).}
7897 +  @r{Add a tag to all selected entries.}
7898 -  @r{Remove a tag from all selected entries.}
7899 s  @r{Schedule all items to a new date.  To shift existing schedule dates}
7900    @r{by a fixed number of days, use something starting with double plus}
7901    @r{at the prompt, for example @samp{++8d} or @samp{++2w}.}
7902 d  @r{Set deadline to a specific date.}
7903 @end example
7906 @tsubheading{Calendar commands}
7907 @cindex calendar commands, from agenda
7908 @kindex c
7909 @item c
7910 Open the Emacs calendar and move to the date at the agenda cursor.
7912 @item c
7913 When in the calendar, compute and show the Org-mode agenda for the
7914 date at the cursor.
7916 @cindex diary entries, creating from agenda
7917 @kindex i
7918 @item i
7919 @vindex org-agenda-diary-file
7920 Insert a new entry into the diary, using the date at the cursor and (for
7921 block entries) the date at the mark.  This will add to the Emacs diary
7922 file@footnote{This file is parsed for the agenda when
7923 @code{org-agenda-include-diary} is set.}, in a way similar to the @kbd{i}
7924 command in the calendar.  The diary file will pop up in another window, where
7925 you can add the entry.
7927 If you configure @code{org-agenda-diary-file} to point to an Org-mode file,
7928 Org will create entries (in org-mode syntax) in that file instead.  Most
7929 entries will be stored in a date-based outline tree that will later make it
7930 easy to archive appointments from previous months/years.  The tree will be
7931 built under an entry with a @code{DATE_TREE} property, or else with years as
7932 top-level entries.  Emacs will prompt you for the entry text - if you specify
7933 it, the entry will be created in @code{org-agenda-diary-file} without further
7934 interaction.  If you directly press @key{RET} at the prompt without typing
7935 text, the target file will be shown in another window for you to finish the
7936 entry there.  See also the @kbd{k r} command.
7938 @kindex M
7939 @item M
7940 Show the phases of the moon for the three months around current date.
7942 @kindex S
7943 @item S
7944 Show sunrise and sunset times.  The geographical location must be set
7945 with calendar variables, see the documentation for the Emacs calendar.
7947 @kindex C
7948 @item C
7949 Convert the date at cursor into many other cultural and historic
7950 calendars.
7952 @kindex H
7953 @item H
7954 Show holidays for three months around the cursor date.
7956 @item M-x org-export-icalendar-combine-agenda-files
7957 Export a single iCalendar file containing entries from all agenda files.
7958 This is a globally available command, and also available in the agenda menu.
7960 @tsubheading{Exporting to a file}
7961 @kindex C-x C-w
7962 @item C-x C-w
7963 @cindex exporting agenda views
7964 @cindex agenda views, exporting
7965 @vindex org-agenda-exporter-settings
7966 Write the agenda view to a file.  Depending on the extension of the selected
7967 file name, the view will be exported as HTML (extension @file{.html} or
7968 @file{.htm}), Postscript (extension @file{.ps}), PDF (extension @file{.pdf}),
7969 and plain text (any other extension).  When called with a @kbd{C-u} prefix
7970 argument, immediately open the newly created file.  Use the variable
7971 @code{org-agenda-exporter-settings} to set options for @file{ps-print} and
7972 for @file{htmlize} to be used during export.
7974 @tsubheading{Quit and Exit}
7975 @kindex q
7976 @item q
7977 Quit agenda, remove the agenda buffer.
7979 @kindex x
7980 @cindex agenda files, removing buffers
7981 @item x
7982 Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
7983 for the compilation of the agenda.  Buffers created by the user to
7984 visit Org files will not be removed.
7985 @end table
7988 @node Custom agenda views, Exporting Agenda Views, Agenda commands, Agenda Views
7989 @section Custom agenda views
7990 @cindex custom agenda views
7991 @cindex agenda views, custom
7993 Custom agenda commands serve two purposes: to store and quickly access
7994 frequently used TODO and tags searches, and to create special composite
7995 agenda buffers.  Custom agenda commands will be accessible through the
7996 dispatcher (@pxref{Agenda dispatcher}), just like the default commands.
7998 @menu
7999 * Storing searches::            Type once, use often
8000 * Block agenda::                All the stuff you need in a single buffer
8001 * Setting Options::             Changing the rules
8002 @end menu
8004 @node Storing searches, Block agenda, Custom agenda views, Custom agenda views
8005 @subsection Storing searches
8007 The first application of custom searches is the definition of keyboard
8008 shortcuts for frequently used searches, either creating an agenda
8009 buffer, or a sparse tree (the latter covering of course only the current
8010 buffer).
8011 @kindex C-c a C
8012 @vindex org-agenda-custom-commands
8013 Custom commands are configured in the variable
8014 @code{org-agenda-custom-commands}.  You can customize this variable, for
8015 example by pressing @kbd{C-c a C}.  You can also directly set it with
8016 Emacs Lisp in @file{.emacs}.  The following example contains all valid
8017 search types:
8019 @lisp
8020 @group
8021 (setq org-agenda-custom-commands
8022       '(("w" todo "WAITING")
8023         ("W" todo-tree "WAITING")
8024         ("u" tags "+boss-urgent")
8025         ("v" tags-todo "+boss-urgent")
8026         ("U" tags-tree "+boss-urgent")
8027         ("f" occur-tree "\\<FIXME\\>")
8028         ("h" . "HOME+Name tags searches") ; description for "h" prefix
8029         ("hl" tags "+home+Lisa")
8030         ("hp" tags "+home+Peter")
8031         ("hk" tags "+home+Kim")))
8032 @end group
8033 @end lisp
8035 @noindent
8036 The initial string in each entry defines the keys you have to press
8037 after the dispatcher command @kbd{C-c a} in order to access the command.
8038 Usually this will be just a single character, but if you have many
8039 similar commands, you can also define two-letter combinations where the
8040 first character is the same in several combinations and serves as a
8041 prefix key@footnote{You can provide a description for a prefix key by
8042 inserting a cons cell with the prefix and the description.}.  The second
8043 parameter is the search type, followed by the string or regular
8044 expression to be used for the matching.  The example above will
8045 therefore define:
8047 @table @kbd
8048 @item C-c a w
8049 as a global search for TODO entries with @samp{WAITING} as the TODO
8050 keyword
8051 @item C-c a W
8052 as the same search, but only in the current buffer and displaying the
8053 results as a sparse tree
8054 @item C-c a u
8055 as a global tags search for headlines marked @samp{:boss:} but not
8056 @samp{:urgent:}
8057 @item C-c a v
8058 as the same search as @kbd{C-c a u}, but limiting the search to
8059 headlines that are also TODO items
8060 @item C-c a U
8061 as the same search as @kbd{C-c a u}, but only in the current buffer and
8062 displaying the result as a sparse tree
8063 @item C-c a f
8064 to create a sparse tree (again: current buffer only) with all entries
8065 containing the word @samp{FIXME}
8066 @item C-c a h
8067 as a prefix command for a HOME tags search where you have to press an
8068 additional key (@kbd{l}, @kbd{p} or @kbd{k}) to select a name (Lisa,
8069 Peter, or Kim) as additional tag to match.
8070 @end table
8072 @node Block agenda, Setting Options, Storing searches, Custom agenda views
8073 @subsection Block agenda
8074 @cindex block agenda
8075 @cindex agenda, with block views
8077 Another possibility is the construction of agenda views that comprise
8078 the results of @emph{several} commands, each of which creates a block in
8079 the agenda buffer.  The available commands include @code{agenda} for the
8080 daily or weekly agenda (as created with @kbd{C-c a a}), @code{alltodo}
8081 for the global TODO list (as constructed with @kbd{C-c a t}), and the
8082 matching commands discussed above: @code{todo}, @code{tags}, and
8083 @code{tags-todo}.  Here are two examples:
8085 @lisp
8086 @group
8087 (setq org-agenda-custom-commands
8088       '(("h" "Agenda and Home-related tasks"
8089          ((agenda "")
8090           (tags-todo "home")
8091           (tags "garden")))
8092         ("o" "Agenda and Office-related tasks"
8093          ((agenda "")
8094           (tags-todo "work")
8095           (tags "office")))))
8096 @end group
8097 @end lisp
8099 @noindent
8100 This will define @kbd{C-c a h} to create a multi-block view for stuff
8101 you need to attend to at home.  The resulting agenda buffer will contain
8102 your agenda for the current week, all TODO items that carry the tag
8103 @samp{home}, and also all lines tagged with @samp{garden}.  Finally the
8104 command @kbd{C-c a o} provides a similar view for office tasks.
8106 @node Setting Options,  , Block agenda, Custom agenda views
8107 @subsection Setting options for custom commands
8108 @cindex options, for custom agenda views
8110 @vindex org-agenda-custom-commands
8111 Org-mode contains a number of variables regulating agenda construction
8112 and display.  The global variables define the behavior for all agenda
8113 commands, including the custom commands.  However, if you want to change
8114 some settings just for a single custom view, you can do so.  Setting
8115 options requires inserting a list of variable names and values at the
8116 right spot in @code{org-agenda-custom-commands}.  For example:
8118 @lisp
8119 @group
8120 (setq org-agenda-custom-commands
8121       '(("w" todo "WAITING"
8122          ((org-agenda-sorting-strategy '(priority-down))
8123           (org-agenda-prefix-format "  Mixed: ")))
8124         ("U" tags-tree "+boss-urgent"
8125          ((org-show-following-heading nil)
8126           (org-show-hierarchy-above nil)))
8127         ("N" search ""
8128          ((org-agenda-files '("~org/notes.org"))
8129           (org-agenda-text-search-extra-files nil)))))
8130 @end group
8131 @end lisp
8133 @noindent
8134 Now the @kbd{C-c a w} command will sort the collected entries only by
8135 priority, and the prefix format is modified to just say @samp{  Mixed: }
8136 instead of giving the category of the entry.  The sparse tags tree of
8137 @kbd{C-c a U} will now turn out ultra-compact, because neither the
8138 headline hierarchy above the match, nor the headline following the match
8139 will be shown.  The command @kbd{C-c a N} will do a text search limited
8140 to only a single file.
8142 @vindex org-agenda-custom-commands
8143 For command sets creating a block agenda,
8144 @code{org-agenda-custom-commands} has two separate spots for setting
8145 options.  You can add options that should be valid for just a single
8146 command in the set, and options that should be valid for all commands in
8147 the set.  The former are just added to the command entry, the latter
8148 must come after the list of command entries.  Going back to the block
8149 agenda example (@pxref{Block agenda}), let's change the sorting strategy
8150 for the @kbd{C-c a h} commands to @code{priority-down}, but let's sort
8151 the results for GARDEN tags query in the opposite order,
8152 @code{priority-up}.  This would look like this:
8154 @lisp
8155 @group
8156 (setq org-agenda-custom-commands
8157       '(("h" "Agenda and Home-related tasks"
8158          ((agenda)
8159           (tags-todo "home")
8160           (tags "garden"
8161                 ((org-agenda-sorting-strategy '(priority-up)))))
8162          ((org-agenda-sorting-strategy '(priority-down))))
8163         ("o" "Agenda and Office-related tasks"
8164          ((agenda)
8165           (tags-todo "work")
8166           (tags "office")))))
8167 @end group
8168 @end lisp
8170 As you see, the values and parentheses setting is a little complex.
8171 When in doubt, use the customize interface to set this variable---it
8172 fully supports its structure.  Just one caveat: when setting options in
8173 this interface, the @emph{values} are just Lisp expressions.  So if the
8174 value is a string, you need to add the double-quotes around the value
8175 yourself.
8178 @node Exporting Agenda Views, Agenda column view, Custom agenda views, Agenda Views
8179 @section Exporting Agenda Views
8180 @cindex agenda views, exporting
8182 If you are away from your computer, it can be very useful to have a printed
8183 version of some agenda views to carry around.  Org-mode can export custom
8184 agenda views as plain text, HTML@footnote{You need to install Hrvoje Niksic's
8185 @file{htmlize.el}.}, Postscript, PDF@footnote{To create PDF output, the
8186 ghostscript @file{ps2pdf} utility must be installed on the system.  Selecting
8187 a PDF file with also create the postscript file.}, and iCalendar files.  If
8188 you want to do this only occasionally, use the command
8190 @table @kbd
8191 @kindex C-x C-w
8192 @item C-x C-w
8193 @cindex exporting agenda views
8194 @cindex agenda views, exporting
8195 @vindex org-agenda-exporter-settings
8196 Write the agenda view to a file.  Depending on the extension of the selected
8197 file name, the view will be exported as HTML (extension @file{.html} or
8198 @file{.htm}), Postscript (extension @file{.ps}), iCalendar (extension
8199 @file{.ics}), or plain text (any other extension).  Use the variable
8200 @code{org-agenda-exporter-settings} to set options for @file{ps-print} and
8201 for @file{htmlize} to be used during export, for example
8203 @vindex org-agenda-add-entry-text-maxlines
8204 @vindex htmlize-output-type
8205 @vindex ps-number-of-columns
8206 @vindex ps-landscape-mode
8207 @lisp
8208 (setq org-agenda-exporter-settings
8209       '((ps-number-of-columns 2)
8210         (ps-landscape-mode t)
8211         (org-agenda-add-entry-text-maxlines 5)
8212         (htmlize-output-type 'css)))
8213 @end lisp
8214 @end table
8216 If you need to export certain agenda views frequently, you can associate
8217 any custom agenda command with a list of output file names
8218 @footnote{If you want to store standard views like the weekly agenda
8219 or the global TODO list as well, you need to define custom commands for
8220 them in order to be able to specify file names.}.  Here is an example
8221 that first defines custom commands for the agenda and the global
8222 TODO list, together with a number of files to which to export them.
8223 Then we define two block agenda commands and specify file names for them
8224 as well.  File names can be relative to the current working directory,
8225 or absolute.
8227 @lisp
8228 @group
8229 (setq org-agenda-custom-commands
8230       '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
8231         ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
8232         ("h" "Agenda and Home-related tasks"
8233          ((agenda "")
8234           (tags-todo "home")
8235           (tags "garden"))
8236          nil
8237          ("~/views/home.html"))
8238         ("o" "Agenda and Office-related tasks"
8239          ((agenda)
8240           (tags-todo "work")
8241           (tags "office"))
8242          nil
8243          ("~/views/office.ps" "~/calendars/office.ics"))))
8244 @end group
8245 @end lisp
8247 The extension of the file name determines the type of export.  If it is
8248 @file{.html}, Org-mode will use the @file{htmlize.el} package to convert
8249 the buffer to HTML and save it to this file name.  If the extension is
8250 @file{.ps}, @code{ps-print-buffer-with-faces} is used to produce
8251 Postscript output.  If the extension is @file{.ics}, iCalendar export is
8252 run export over all files that were used to construct the agenda, and
8253 limit the export to entries listed in the agenda.  Any other
8254 extension produces a plain ASCII file.
8256 The export files are @emph{not} created when you use one of those
8257 commands interactively because this might use too much overhead.
8258 Instead, there is a special command to produce @emph{all} specified
8259 files in one step:
8261 @table @kbd
8262 @kindex C-c a e
8263 @item C-c a e
8264 Export all agenda views that have export file names associated with
8265 them.
8266 @end table
8268 You can use the options section of the custom agenda commands to also
8269 set options for the export commands.  For example:
8271 @lisp
8272 (setq org-agenda-custom-commands
8273       '(("X" agenda ""
8274          ((ps-number-of-columns 2)
8275           (ps-landscape-mode t)
8276           (org-agenda-prefix-format " [ ] ")
8277           (org-agenda-with-colors nil)
8278           (org-agenda-remove-tags t))
8279          ("theagenda.ps"))))
8280 @end lisp
8282 @noindent
8283 This command sets two options for the Postscript exporter, to make it
8284 print in two columns in landscape format---the resulting page can be cut
8285 in two and then used in a paper agenda.  The remaining settings modify
8286 the agenda prefix to omit category and scheduling information, and
8287 instead include a checkbox to check off items.  We also remove the tags
8288 to make the lines compact, and we don't want to use colors for the
8289 black-and-white printer.  Settings specified in
8290 @code{org-agenda-exporter-settings} will also apply, but the settings
8291 in @code{org-agenda-custom-commands} take precedence.
8293 @noindent
8294 From the command line you may also use
8295 @example
8296 emacs -f org-batch-store-agenda-views -kill
8297 @end example
8298 @noindent
8299 or, if you need to modify some parameters@footnote{Quoting depends on the
8300 system you use, please check the FAQ for examples.}
8301 @example
8302 emacs -eval '(org-batch-store-agenda-views                      \
8303               org-agenda-ndays 30                               \
8304               org-agenda-start-day "2007-11-01"                 \
8305               org-agenda-include-diary nil                      \
8306               org-agenda-files (quote ("~/org/project.org")))'  \
8307       -kill
8308 @end example
8309 @noindent
8310 which will create the agenda views restricted to the file
8311 @file{~/org/project.org}, without diary entries and with a 30-day
8312 extent.
8314 You can also extract agenda information in a way that allows further
8315 processing by other programs.  See @ref{Extracting agenda information}, for
8316 more information.
8319 @node Agenda column view,  , Exporting Agenda Views, Agenda Views
8320 @section Using column view in the agenda
8321 @cindex column view, in agenda
8322 @cindex agenda, column view
8324 Column view (@pxref{Column view}) is normally used to view and edit
8325 properties embedded in the hierarchical structure of an Org file.  It can be
8326 quite useful to use column view also from the agenda, where entries are
8327 collected by certain criteria.
8329 @table @kbd
8330 @kindex C-c C-x C-c
8331 @item C-c C-x C-c
8332 Turn on column view in the agenda.
8333 @end table
8335 To understand how to use this properly, it is important to realize that the
8336 entries in the agenda are no longer in their proper outline environment.
8337 This causes the following issues:
8339 @enumerate
8340 @item
8341 @vindex org-columns-default-format
8342 @vindex org-overriding-columns-format
8343 Org needs to make a decision which @code{COLUMNS} format to use.  Since the
8344 entries in the agenda are collected from different files, and different files
8345 may have different @code{COLUMNS} formats, this is a non-trivial problem.
8346 Org first checks if the variable @code{org-overriding-columns-format} is
8347 currently set, and if so, takes the format from there.  Otherwise it takes
8348 the format associated with the first item in the agenda, or, if that item
8349 does not have a specific format (defined in a property, or in its file), it
8350 uses @code{org-columns-default-format}.
8351 @item
8352 @cindex property, special, CLOCKSUM
8353 If any of the columns has a summary type defined (@pxref{Column attributes}),
8354 turning on column view in the agenda will visit all relevant agenda files and
8355 make sure that the computations of this property are up to date.  This is
8356 also true for the special @code{CLOCKSUM} property.  Org will then sum the
8357 values displayed in the agenda.  In the daily/weekly agenda, the sums will
8358 cover a single day, in all other views they cover the entire block.  It is
8359 vital to realize that the agenda may show the same entry @emph{twice} (for
8360 example as scheduled and as a deadline), and it may show two entries from the
8361 same hierarchy (for example a @emph{parent} and its @emph{child}).  In these
8362 cases, the summation in the agenda will lead to incorrect results because
8363 some values will count double.
8364 @item
8365 When the column view in the agenda shows the @code{CLOCKSUM}, that is always
8366 the entire clocked time for this item.  So even in the daily/weekly agenda,
8367 the clocksum listed in column view may originate from times outside the
8368 current view.  This has the advantage that you can compare these values with
8369 a column listing the planned total effort for a task---one of the major
8370 applications for column view in the agenda.  If you want information about
8371 clocked time in the displayed period use clock table mode (press @kbd{R} in
8372 the agenda).
8373 @end enumerate
8376 @node Markup, Exporting, Agenda Views, Top
8377 @chapter Markup for rich export
8379 When exporting Org-mode documents, the exporter tries to reflect the
8380 structure of the document as accurately as possible in the backend.  Since
8381 export targets like HTML, La@TeX{}, or DocBook allow much richer formatting,
8382 Org-mode has rules on how to prepare text for rich export.  This section
8383 summarizes the markup rules used in an Org-mode buffer.
8385 @menu
8386 * Structural markup elements::  The basic structure as seen by the exporter
8387 * Images and tables::           Tables and Images will be included
8388 * Literal examples::            Source code examples with special formatting
8389 * Include files::               Include additional files into a document
8390 * Index entries::               Making an index
8391 * Macro replacement::           Use macros to create complex output
8392 * Embedded LaTeX::              LaTeX can be freely used inside Org documents
8393 @end menu
8395 @node Structural markup elements, Images and tables, Markup, Markup
8396 @section Structural markup elements
8398 @menu
8399 * Document title::              Where the title is taken from
8400 * Headings and sections::       The document structure as seen by the exporter
8401 * Table of contents::           The if and where of the table of contents
8402 * Initial text::                Text before the first heading?
8403 * Lists::                       Lists
8404 * Paragraphs::                  Paragraphs
8405 * Footnote markup::             Footnotes
8406 * Emphasis and monospace::      Bold, italic, etc.
8407 * Horizontal rules::            Make a line
8408 * Comment lines::               What will *not* be exported
8409 @end menu
8411 @node Document title, Headings and sections, Structural markup elements, Structural markup elements
8412 @subheading Document title
8413 @cindex document title, markup rules
8415 @noindent
8416 The title of the exported document is taken from the special line
8418 @cindex #+TITLE
8419 @example
8420 #+TITLE: This is the title of the document
8421 @end example
8423 @noindent
8424 If this line does not exist, the title is derived from the first non-empty,
8425 non-comment line in the buffer.  If no such line exists, or if you have
8426 turned off exporting of the text before the first headline (see below), the
8427 title will be the file name without extension.
8429 @cindex property, EXPORT_TITLE
8430 If you are exporting only a subtree by marking is as the region, the heading
8431 of the subtree will become the title of the document.  If the subtree has a
8432 property @code{EXPORT_TITLE}, that will take precedence.
8434 @node Headings and sections, Table of contents, Document title, Structural markup elements
8435 @subheading Headings and sections
8436 @cindex headings and sections, markup rules
8438 @vindex org-export-headline-levels
8439 The outline structure of the document as described in @ref{Document
8440 Structure}, forms the basis for defining sections of the exported document.
8441 However, since the outline structure is also used for (for example) lists of
8442 tasks, only the first three outline levels will be used as headings.  Deeper
8443 levels will become itemized lists.  You can change the location of this
8444 switch globally by setting the variable @code{org-export-headline-levels}, or on a
8445 per-file basis with a line
8447 @cindex #+OPTIONS
8448 @example
8449 #+OPTIONS: H:4
8450 @end example
8452 @node Table of contents, Initial text, Headings and sections, Structural markup elements
8453 @subheading Table of contents
8454 @cindex table of contents, markup rules
8456 @vindex org-export-with-toc
8457 The table of contents is normally inserted directly before the first headline
8458 of the file.  If you would like to get it to a different location, insert the
8459 string @code{[TABLE-OF-CONTENTS]} on a line by itself at the desired
8460 location.  The depth of the table of contents is by default the same as the
8461 number of headline levels, but you can choose a smaller number, or turn off
8462 the table of contents entirely, by configuring the variable
8463 @code{org-export-with-toc}, or on a per-file basis with a line like
8465 @example
8466 #+OPTIONS: toc:2          (only to two levels in TOC)
8467 #+OPTIONS: toc:nil        (no TOC at all)
8468 @end example
8470 @node Initial text, Lists, Table of contents, Structural markup elements
8471 @subheading Text before the first headline
8472 @cindex text before first headline, markup rules
8473 @cindex #+TEXT
8475 Org-mode normally exports the text before the first headline, and even uses
8476 the first line as the document title.  The text will be fully marked up.  If
8477 you need to include literal HTML, La@TeX{}, or DocBook code, use the special
8478 constructs described below in the sections for the individual exporters.
8480 @vindex org-export-skip-text-before-1st-heading
8481 Some people like to use the space before the first headline for setup and
8482 internal links and therefore would like to control the exported text before
8483 the first headline in a different way.  You can do so by setting the variable
8484 @code{org-export-skip-text-before-1st-heading} to @code{t}.  On a per-file
8485 basis, you can get the same effect with @samp{#+OPTIONS: skip:t}.
8487 @noindent
8488 If you still want to have some text before the first headline, use the
8489 @code{#+TEXT} construct:
8491 @example
8492 #+OPTIONS: skip:t
8493 #+TEXT: This text will go before the *first* headline.
8494 #+TEXT: [TABLE-OF-CONTENTS]
8495 #+TEXT: This goes between the table of contents and the first headline
8496 @end example
8498 @node Lists, Paragraphs, Initial text, Structural markup elements
8499 @subheading Lists
8500 @cindex lists, markup rules
8502 Plain lists as described in @ref{Plain lists}, are translated to the backend's
8503 syntax for such lists.  Most backends support unordered, ordered, and
8504 description lists.
8506 @node Paragraphs, Footnote markup, Lists, Structural markup elements
8507 @subheading Paragraphs, line breaks, and quoting
8508 @cindex paragraphs, markup rules
8510 Paragraphs are separated by at least one empty line.  If you need to enforce
8511 a line break within a paragraph, use @samp{\\} at the end of a line.
8513 To keep the line breaks in a region, but otherwise use normal formatting, you
8514 can use this construct, which can also be used to format poetry.
8516 @cindex #+BEGIN_VERSE
8517 @example
8518 #+BEGIN_VERSE
8519  Great clouds overhead
8520  Tiny black birds rise and fall
8521  Snow covers Emacs
8523      -- AlexSchroeder
8524 #+END_VERSE
8525 @end example
8527 When quoting a passage from another document, it is customary to format this
8528 as a paragraph that is indented on both the left and the right margin.  You
8529 can include quotations in Org-mode documents like this:
8531 @cindex #+BEGIN_QUOTE
8532 @example
8533 #+BEGIN_QUOTE
8534 Everything should be made as simple as possible,
8535 but not any simpler -- Albert Einstein
8536 #+END_QUOTE
8537 @end example
8539 If you would like to center some text, do it like this:
8540 @cindex #+BEGIN_CENTER
8541 @example
8542 #+BEGIN_CENTER
8543 Everything should be made as simple as possible, \\
8544 but not any simpler
8545 #+END_CENTER
8546 @end example
8549 @node Footnote markup, Emphasis and monospace, Paragraphs, Structural markup elements
8550 @subheading Footnote markup
8551 @cindex footnotes, markup rules
8552 @cindex @file{footnote.el}
8554 Footnotes defined in the way described in @ref{Footnotes}, will be exported by
8555 all backends.  Org allows multiple references to the same note, and
8556 different backends support this to varying degrees.
8558 @node Emphasis and monospace, Horizontal rules, Footnote markup, Structural markup elements
8559 @subheading Emphasis and monospace
8561 @cindex underlined text, markup rules
8562 @cindex bold text, markup rules
8563 @cindex italic text, markup rules
8564 @cindex verbatim text, markup rules
8565 @cindex code text, markup rules
8566 @cindex strike-through text, markup rules
8567 You can make words @b{*bold*}, @i{/italic/}, _underlined_, @code{=code=}
8568 and @code{~verbatim~}, and, if you must, @samp{+strike-through+}.  Text
8569 in the code and verbatim string is not processed for Org-mode specific
8570 syntax, it is exported verbatim.
8572 @node Horizontal rules, Comment lines, Emphasis and monospace, Structural markup elements
8573 @subheading  Horizontal rules
8574 @cindex horizontal rules, markup rules
8575 A line consisting of only dashes, and at least 5 of them, will be
8576 exported as a horizontal line (@samp{<hr/>} in HTML).
8578 @node Comment lines,  , Horizontal rules, Structural markup elements
8579 @subheading Comment lines
8580 @cindex comment lines
8581 @cindex exporting, not
8582 @cindex #+BEGIN_COMMENT
8584 Lines starting with @samp{#} in column zero are treated as comments and will
8585 never be exported. If you want an indented line to be treated as a comment,
8586 start it with @samp{#+ }.  Also entire subtrees starting with the word
8587 @samp{COMMENT} will never be exported.  Finally, regions surrounded by
8588 @samp{#+BEGIN_COMMENT} ... @samp{#+END_COMMENT} will not be exported.
8590 @table @kbd
8591 @kindex C-c ;
8592 @item C-c ;
8593 Toggle the COMMENT keyword at the beginning of an entry.
8594 @end table
8597 @node Images and tables, Literal examples, Structural markup elements, Markup
8598 @section Images and Tables
8600 @cindex tables, markup rules
8601 @cindex #+CAPTION
8602 @cindex #+LABEL
8603 Both the native Org-mode tables (@pxref{Tables}) and tables formatted with
8604 the @file{table.el} package will be exported properly.  For Org-mode tables,
8605 the lines before the first horizontal separator line will become table header
8606 lines.  You can use the following lines somewhere before the table to assign
8607 a caption and a label for cross references, and in the text you can refer to
8608 the object with @code{\ref@{tab:basic-data@}}:
8610 @example
8611 #+CAPTION: This is the caption for the next table (or link)
8612 #+LABEL:   tbl:basic-data
8613    | ... | ...|
8614    |-----|----|
8615 @end example
8617 @cindex inlined images, markup rules
8618 Some backends (HTML, La@TeX{}, and DocBook) allow you to directly include
8619 images into the exported document.  Org does this, if a link to an image
8620 files does not have a description part, for example @code{[[./img/a.jpg]]}.
8621 If you wish to define a caption for the image and maybe a label for internal
8622 cross references, make sure that the link is on a line by itself and precede
8623 it with @code{#+CAPTION} and @code{#+LABEL} as follows:
8625 @example
8626 #+CAPTION: This is the caption for the next figure link (or table)
8627 #+LABEL:   fig:SED-HR4049
8628 [[./img/a.jpg]]
8629 @end example
8631 You may also define additional attributes for the figure.  As this is
8632 backend-specific, see the sections about the individual backends for more
8633 information.
8636 @node Literal examples, Include files, Images and tables, Markup
8637 @section Literal examples
8638 @cindex literal examples, markup rules
8639 @cindex code line references, markup rules
8641 You can include literal examples that should not be subjected to
8642 markup.  Such examples will be typeset in monospace, so this is well suited
8643 for source code and similar examples.
8644 @cindex #+BEGIN_EXAMPLE
8646 @example
8647 #+BEGIN_EXAMPLE
8648 Some example from a text file.
8649 #+END_EXAMPLE
8650 @end example
8652 Note that such blocks may be @i{indented} in order to align nicely with
8653 indented text and in particular with plain list structure (@pxref{Plain
8654 lists}).  For simplicity when using small examples, you can also start the
8655 example lines with a colon followed by a space.  There may also be additional
8656 whitespace before the colon:
8658 @example
8659 Here is an example
8660    : Some example from a text file.
8661 @end example
8663 @cindex formatting source code, markup rules
8664 If the example is source code from a programming language, or any other text
8665 that can be marked up by font-lock in Emacs, you can ask for the example to
8666 look like the fontified Emacs buffer@footnote{Currently this works for the
8667 HTML backend, and requires the @file{htmlize.el} package version 1.34 or
8668 later.  It also works for LaTeX with the listings package, if you turn on the
8669 option @code{org-export-latex-listings} and make sure that the listings
8670 package is included by the LaTeX header.}.  This is done with the @samp{src}
8671 block, where you also need to specify the name of the major mode that should
8672 be used to fontify the example:
8673 @cindex #+BEGIN_SRC
8675 @example
8676 #+BEGIN_SRC emacs-lisp
8677   (defun org-xor (a b)
8678      "Exclusive or."
8679      (if a (not b) b))
8680 #+END_SRC
8681 @end example
8683 Both in @code{example} and in @code{src} snippets, you can add a @code{-n}
8684 switch to the end of the @code{BEGIN} line, to get the lines of the example
8685 numbered.  If you use a @code{+n} switch, the numbering from the previous
8686 numbered snippet will be continued in the current one.  In literal examples,
8687 Org will interpret strings like @samp{(ref:name)} as labels, and use them as
8688 targets for special hyperlinks like @code{[[(name)]]} (i.e. the reference name
8689 enclosed in single parenthesis).  In HTML, hovering the mouse over such a
8690 link will remote-highlight the corresponding code line, which is kind of
8691 cool.
8693 You can also add a @code{-r} switch which @i{removes} the labels from the
8694 source code@footnote{Adding @code{-k} to @code{-n -r} will @i{keep} the
8695 labels in the source code while using line numbers for the links, which might
8696 be useful to explain those in an org-mode example code.}.  With the @code{-n}
8697 switch, links to these references will be labeled by the line numbers from
8698 the code listing, otherwise links will use the labels with no parentheses.
8699 Here is an example:
8701 @example
8702 #+BEGIN_SRC emacs-lisp -n -r
8703 (save-excursion                  (ref:sc)
8704    (goto-char (point-min))       (ref:jump)
8705 #+END_SRC
8706 In line [[(sc)]] we remember the current position.  [[(jump)][Line (jump)]]
8707 jumps to point-min.
8708 @end example
8710 @vindex org-coderef-label-format
8711 If the syntax for the label format conflicts with the language syntax, use a
8712 @code{-l} switch to change the format, for example @samp{#+BEGIN_SRC pascal
8713 -n -r -l "((%s))"}.  See also the variable @code{org-coderef-label-format}.
8715 HTML export also allows examples to be published as text areas, @xref{Text
8716 areas in HTML export}.
8718 @table @kbd
8719 @kindex C-c '
8720 @item C-c '
8721 Edit the source code example at point in its native mode.  This works by
8722 switching to a temporary buffer with the source code.  You need to exit by
8723 pressing @kbd{C-c '} again@footnote{Upon exit, lines starting with @samp{*}
8724 or @samp{#} will get a comma prepended, to keep them from being interpreted
8725 by Org as outline nodes or special comments.  These commas will be stripped
8726 for editing with @kbd{C-c '}, and also for export.}, the edited version will
8727 then replace the old version in the Org buffer.  Fixed-width regions
8728 (where each line starts with a colon followed by a space) will be edited
8729 using @code{artist-mode}@footnote{You may select a different-mode with the
8730 variable @code{org-edit-fixed-width-region-mode}.} to allow creating ASCII
8731 drawings easily.  Using this command in an empty line will create a new
8732 fixed-width region.
8733 @kindex C-c l
8734 @item C-c l
8735 Calling @code{org-store-link} while editing a source code example in a
8736 temporary buffer created with @kbd{C-c '} will prompt for a label, make sure
8737 that it is unique in the current buffer, and insert it with the proper
8738 formatting like @samp{(ref:label)} at the end of the current line.  Then the
8739 label is stored as a link @samp{(label)}, for retrieval with @kbd{C-c C-l}.
8740 @end table
8743 @node Include files, Index entries, Literal examples, Markup
8744 @section Include files
8745 @cindex include files, markup rules
8747 During export, you can include the content of another file.  For example, to
8748 include your @file{.emacs} file, you could use:
8749 @cindex #+INCLUDE
8751 @example
8752 #+INCLUDE: "~/.emacs" src emacs-lisp
8753 @end example
8754 @noindent
8755 The optional second and third parameter are the markup (e.g. @samp{quote},
8756 @samp{example}, or @samp{src}), and, if the markup is @samp{src}, the
8757 language for formatting the contents.  The markup is optional, if it is not
8758 given, the text will be assumed to be in Org-mode format and will be
8759 processed normally.  The include line will also allow additional keyword
8760 parameters @code{:prefix1} and @code{:prefix} to specify prefixes for the
8761 first line and for each following line, as well as any options accepted by
8762 the selected markup.  For example, to include a file as an item, use
8764 @example
8765 #+INCLUDE: "~/snippets/xx" :prefix1 "   + " :prefix "     "
8766 @end example
8768 @table @kbd
8769 @kindex C-c '
8770 @item C-c '
8771 Visit the include file at point.
8772 @end table
8774 @node Index entries, Macro replacement, Include files, Markup
8775 @section Index entries
8776 @cindex index entries, for publishing
8778 You can specify entries that will be used for generating an index during
8779 publishing.  This is done by lines starting with @code{#+INDEX}.  An entry
8780 the contains an exclamation mark will create a sub item.  See @ref{Generating
8781 an index} for more information.
8783 @example
8784 * Curriculum Vitae
8785 #+INDEX: CV
8786 #+INDEX: Application!CV
8787 @end example
8792 @node Macro replacement, Embedded LaTeX, Index entries, Markup
8793 @section Macro replacement
8794 @cindex macro replacement, during export
8795 @cindex #+MACRO
8797 You can define text snippets with
8799 @example
8800 #+MACRO: name   replacement text $1, $2 are arguments
8801 @end example
8803 @noindent which can be referenced anywhere in the document (even in
8804 code examples) with @code{@{@{@{name(arg1,arg2)@}@}@}}.  In addition to
8805 defined macros, @code{@{@{@{title@}@}@}}, @code{@{@{@{author@}@}@}}, etc.,
8806 will reference information set by the @code{#+TITLE:}, @code{#+AUTHOR:}, and
8807 similar lines.  Also, @code{@{@{@{date(@var{FORMAT})@}@}@}} and
8808 @code{@{@{@{modification-time(@var{FORMAT})@}@}@}} refer to current date time
8809 and to the modification time of the file being exported, respectively.
8810 @var{FORMAT} should be a format string understood by
8811 @code{format-time-string}.
8813 Macro expansion takes place during export, and some people use it to
8814 construct complex HTML code.
8817 @node Embedded LaTeX,  , Macro replacement, Markup
8818 @section Embedded La@TeX{}
8819 @cindex @TeX{} interpretation
8820 @cindex La@TeX{} interpretation
8822 Plain ASCII is normally sufficient for almost all note taking.  One
8823 exception, however, are scientific notes which need to be able to contain
8824 mathematical symbols and the occasional formula.  La@TeX{}@footnote{La@TeX{}
8825 is a macro system based on Donald E. Knuth's @TeX{} system.  Many of the
8826 features described here as ``La@TeX{}'' are really from @TeX{}, but for
8827 simplicity I am blurring this distinction.}  is widely used to typeset
8828 scientific documents. Org-mode supports embedding La@TeX{} code into its
8829 files, because many academics are used to writing and reading La@TeX{} source
8830 code, and because it can be readily processed to produce pretty output for a
8831 number of export backends.
8833 @menu
8834 * Special symbols::             Greek letters and other symbols
8835 * Subscripts and superscripts::  Simple syntax for raising/lowering text
8836 * LaTeX fragments::             Complex formulas made easy
8837 * Previewing LaTeX fragments::  What will this snippet look like?
8838 * CDLaTeX mode::                Speed up entering of formulas
8839 @end menu
8841 @node Special symbols, Subscripts and superscripts, Embedded LaTeX, Embedded LaTeX
8842 @subsection Special symbols
8843 @cindex math symbols
8844 @cindex special symbols
8845 @cindex @TeX{} macros
8846 @cindex La@TeX{} fragments, markup rules
8847 @cindex HTML entities
8848 @cindex La@TeX{} entities
8850 You can use La@TeX{} macros to insert special symbols like @samp{\alpha} to
8851 indicate the Greek letter, or @samp{\to} to indicate an arrow.  Completion
8852 for these macros is available, just type @samp{\} and maybe a few letters,
8853 and press @kbd{M-@key{TAB}} to see possible completions.  Unlike La@TeX{}
8854 code, Org-mode allows these macros to be present without surrounding math
8855 delimiters, for example:
8857 @example
8858 Angles are written as Greek letters \alpha, \beta and \gamma.
8859 @end example
8861 @vindex org-entities
8862 During export, these symbols will be transformed into the native format of
8863 the exporter backend.  Strings like @code{\alpha} will be exported as
8864 @code{&alpha;} in the HTML output, and as @code{$\alpha$} in the La@TeX{}
8865 output.  Similarly, @code{\nbsp} will become @code{&nbsp;} in HTML and
8866 @code{~} in La@TeX{}.  If you need such a symbol inside a word, terminate it
8867 like this: @samp{\Aacute@{@}stor}.
8869 A large number of entities is provided, with names taken from both HTML and
8870 La@TeX{}, see the variable @code{org-entities} for the complete list.
8871 @samp{\-} is treated as a shy hyphen, and @samp{--}, @samp{---}, and
8872 @samp{...} are all converted into special commands creating hyphens of
8873 different lengths or a compact set of dots.
8875 If you would like to see entities displayed as UTF8 characters, use the
8876 following command@footnote{You can turn this on by default by setting the
8877 variable @code{org-pretty-entities}, or on a per-file base with the
8878 @code{#+STARTUP} option @code{entitiespretty}.}:
8880 @table @kbd
8881 @kindex C-c C-x \
8882 @item C-c C-x \
8883 Toggle display of entities as UTF8 characters.  This does not change the
8884 buffer content which remains plain ASCII, but it overlays the UTF8 character
8885 for display purposes only.
8886 @end table
8888 @node Subscripts and superscripts, LaTeX fragments, Special symbols, Embedded LaTeX
8889 @subsection Subscripts and superscripts
8890 @cindex subscript
8891 @cindex superscript
8893 Just like in La@TeX{}, @samp{^} and @samp{_} are used to indicate super-
8894 and subscripts.  Again, these can be used without embedding them in
8895 math-mode delimiters.  To increase the readability of ASCII text, it is
8896 not necessary (but OK) to surround multi-character sub- and superscripts
8897 with curly braces.  For example
8899 @example
8900 The mass if the sun is M_sun = 1.989 x 10^30 kg.  The radius of
8901 the sun is R_@{sun@} = 6.96 x 10^8 m.
8902 @end example
8904 @vindex org-export-with-sub-superscripts
8905 To avoid interpretation as raised or lowered text, you can quote @samp{^} and
8906 @samp{_} with a backslash: @samp{\^} and @samp{\_}.  If you write a text
8907 where the underscore is often used in a different context, Org's convention
8908 to always interpret these as subscripts can get in your way.  Configure the
8909 variable @code{org-export-with-sub-superscripts} to globally change this
8910 convention, or use, on a per-file basis:
8912 @example
8913 #+OPTIONS: ^:@{@}
8914 @end example
8916 @noindent With this setting, @samp{a_b} will not be interpreted as a
8917 subscript, but @samp{a_@{b@}} will.
8919 @table @kbd
8920 @kindex C-c C-x \
8921 @item C-c C-x \
8922 In addition to showing entities as UTF8 characters, this command will also
8923 format sub- and superscripts in a WYSIWYM way.
8924 @end table
8926 @node LaTeX fragments, Previewing LaTeX fragments, Subscripts and superscripts, Embedded LaTeX
8927 @subsection La@TeX{} fragments
8928 @cindex La@TeX{} fragments
8930 @vindex org-format-latex-header
8931 Going beyond symbols and sub- and superscripts, a full formula language is
8932 needed.  Org-mode can contain La@TeX{} math fragments, and it supports ways
8933 to process these for several export backends.  When exporting to La@TeX{},
8934 the code is obviously left as it is.  When exporting to HTML, Org invokes the
8935 @uref{http://www.mathjax.org, MathJax library} (@pxref{Math formatting in
8936 HTML export}) to process and display the math@footnote{If you plan to use
8937 this regularly or on pages with significant page views, you should install
8938 @file{MathJax} on your own server in order to limit the load of our server.}.
8939 Finally, it can also process the mathematical expressions into
8940 images@footnote{For this to work you need to be on a system with a working
8941 La@TeX{} installation. You also need the @file{dvipng} program, available at
8942 @url{http://sourceforge.net/projects/dvipng/}.  The La@TeX{} header that will
8943 be used when processing a fragment can be configured with the variable
8944 @code{org-format-latex-header}.}  that can be displayed in a browser or in
8945 DocBook documents.
8947 La@TeX{} fragments don't need any special marking at all.  The following
8948 snippets will be identified as La@TeX{} source code:
8949 @itemize @bullet
8950 @item
8951 Environments of any kind@footnote{When @file{MathJax} is used, only the
8952 environment recognized by @file{MathJax} will be processed.  When dvipng is
8953 used to create images, any La@TeX{} environments will be handled.}.  The only
8954 requirement is that the @code{\begin} statement appears on a new line,
8955 preceded by only whitespace.
8956 @item
8957 Text within the usual La@TeX{} math delimiters.  To avoid conflicts with
8958 currency specifications, single @samp{$} characters are only recognized as
8959 math delimiters if the enclosed text contains at most two line breaks, is
8960 directly attached to the @samp{$} characters with no whitespace in between,
8961 and if the closing @samp{$} is followed by whitespace, punctuation or a dash.
8962 For the other delimiters, there is no such restriction, so when in doubt, use
8963 @samp{\(...\)} as inline math delimiters.
8964 @end itemize
8966 @noindent For example:
8968 @example
8969 \begin@{equation@}                          % arbitrary environments,
8970 x=\sqrt@{b@}                                % even tables, figures
8971 \end@{equation@}                            % etc
8973 If $a^2=b$ and \( b=2 \), then the solution must be
8974 either $$ a=+\sqrt@{2@} $$ or \[ a=-\sqrt@{2@} \].
8975 @end example
8977 @noindent
8978 @vindex org-format-latex-options
8979 If you need any of the delimiter ASCII sequences for other purposes, you
8980 can configure the option @code{org-format-latex-options} to deselect the
8981 ones you do not wish to have interpreted by the La@TeX{} converter.
8983 @vindex org-export-with-LaTeX-fragments
8984 LaTeX processing can be configured with the variable
8985 @code{org-export-with-LaTeX-fragments}.  The default setting is @code{t}
8986 which means @file{MathJax} for HTML, and no processing for DocBook, ASCII and
8987 LaTeX backends.  You can also set this variable on a per-file basis using one
8988 of these lines:
8990 @example
8991 #+OPTIONS: LaTeX:t          @r{Do the right thing automatically (MathJax)}
8992 #+OPTIONS: LaTeX:dvipng     @r{Force using dvipng images}
8993 #+OPTIONS: LaTeX:nil        @r{Do not process La@TeX{} fragments at all}
8994 #+OPTIONS: LaTeX:verbatim   @r{Verbatim export, for jsMath or so}
8995 @end example
8997 @node Previewing LaTeX fragments, CDLaTeX mode, LaTeX fragments, Embedded LaTeX
8998 @subsection Previewing LaTeX fragments
8999 @cindex LaTeX fragments, preview
9001 If you have @file{dvipng} installed, La@TeX{} fragments can be processed to
9002 produce preview images of the typeset expressions:
9004 @table @kbd
9005 @kindex C-c C-x C-l
9006 @item C-c C-x C-l
9007 Produce a preview image of the La@TeX{} fragment at point and overlay it
9008 over the source code.  If there is no fragment at point, process all
9009 fragments in the current entry (between two headlines).  When called
9010 with a prefix argument, process the entire subtree.  When called with
9011 two prefix arguments, or when the cursor is before the first headline,
9012 process the entire buffer.
9013 @kindex C-c C-c
9014 @item C-c C-c
9015 Remove the overlay preview images.
9016 @end table
9018 @vindex org-format-latex-options
9019 You can customize the variable @code{org-format-latex-options} to influence
9020 some aspects of the preview. In particular, the @code{:scale} (and for HTML
9021 export, @code{:html-scale}) property can be used to adjust the size of the
9022 preview images.
9024 @node CDLaTeX mode,  , Previewing LaTeX fragments, Embedded LaTeX
9025 @subsection Using CDLa@TeX{} to enter math
9026 @cindex CDLa@TeX{}
9028 CDLa@TeX{} mode is a minor mode that is normally used in combination with a
9029 major La@TeX{} mode like AUC@TeX{} in order to speed-up insertion of
9030 environments and math templates.  Inside Org-mode, you can make use of
9031 some of the features of CDLa@TeX{} mode.  You need to install
9032 @file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
9033 AUC@TeX{}) from @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
9034 Don't use CDLa@TeX{} mode itself under Org-mode, but use the light
9035 version @code{org-cdlatex-mode} that comes as part of Org-mode.  Turn it
9036 on for the current buffer with @code{M-x org-cdlatex-mode}, or for all
9037 Org files with
9039 @lisp
9040 (add-hook 'org-mode-hook 'turn-on-org-cdlatex)
9041 @end lisp
9043 When this mode is enabled, the following features are present (for more
9044 details see the documentation of CDLa@TeX{} mode):
9045 @itemize @bullet
9046 @kindex C-c @{
9047 @item
9048 Environment templates can be inserted with @kbd{C-c @{}.
9049 @item
9050 @kindex @key{TAB}
9051 The @key{TAB} key will do template expansion if the cursor is inside a
9052 La@TeX{} fragment@footnote{Org-mode has a method to test if the cursor is
9053 inside such a fragment, see the documentation of the function
9054 @code{org-inside-LaTeX-fragment-p}.}.  For example, @key{TAB} will
9055 expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
9056 correctly inside the first brace.  Another @key{TAB} will get you into
9057 the second brace.  Even outside fragments, @key{TAB} will expand
9058 environment abbreviations at the beginning of a line.  For example, if
9059 you write @samp{equ} at the beginning of a line and press @key{TAB},
9060 this abbreviation will be expanded to an @code{equation} environment.
9061 To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help}.
9062 @item
9063 @kindex _
9064 @kindex ^
9065 @vindex cdlatex-simplify-sub-super-scripts
9066 Pressing @kbd{_} and @kbd{^} inside a La@TeX{} fragment will insert these
9067 characters together with a pair of braces.  If you use @key{TAB} to move
9068 out of the braces, and if the braces surround only a single character or
9069 macro, they are removed again (depending on the variable
9070 @code{cdlatex-simplify-sub-super-scripts}).
9071 @item
9072 @kindex `
9073 Pressing the backquote @kbd{`} followed by a character inserts math
9074 macros, also outside La@TeX{} fragments.  If you wait more than 1.5 seconds
9075 after the backquote, a help window will pop up.
9076 @item
9077 @kindex '
9078 Pressing the single-quote @kbd{'} followed by another character modifies
9079 the symbol before point with an accent or a font.  If you wait more than
9080 1.5 seconds after the backquote, a help window will pop up.  Character
9081 modification will work only inside La@TeX{} fragments, outside the quote
9082 is normal.
9083 @end itemize
9085 @node Exporting, Publishing, Markup, Top
9086 @chapter Exporting
9087 @cindex exporting
9089 Org-mode documents can be exported into a variety of other formats.  For
9090 printing and sharing of notes, ASCII export produces a readable and simple
9091 version of an Org file.  HTML export allows you to publish a notes file on
9092 the web, while the XOXO format provides a solid base for exchange with a
9093 broad range of other applications. La@TeX{} export lets you use Org-mode and
9094 its structured editing functions to easily create La@TeX{} files.  DocBook
9095 export makes it possible to convert Org files to many other formats using
9096 DocBook tools.  For project management you can create gantt and resource
9097 charts by using TaskJuggler export.  To incorporate entries with associated
9098 times like deadlines or appointments into a desktop calendar program like
9099 iCal, Org-mode can also produce extracts in the iCalendar format.  Currently
9100 Org-mode only supports export, not import of these different formats.
9102 Org supports export of selected regions when @code{transient-mark-mode} is
9103 enabled (default in Emacs 23).
9105 @menu
9106 * Selective export::            Using tags to select and exclude trees
9107 * Export options::              Per-file export settings
9108 * The export dispatcher::       How to access exporter commands
9109 * ASCII/Latin-1/UTF-8 export::  Exporting to flat files with encoding
9110 * HTML export::                 Exporting to HTML
9111 * LaTeX and PDF export::        Exporting to La@TeX{}, and processing to PDF
9112 * DocBook export::              Exporting to DocBook
9113 * TaskJuggler export::          Exporting to TaskJuggler
9114 * Freemind export::             Exporting to Freemind mind maps
9115 * XOXO export::                 Exporting to XOXO
9116 * iCalendar export::            Exporting in iCalendar format
9117 @end menu
9119 @node Selective export, Export options, Exporting, Exporting
9120 @section Selective export
9121 @cindex export, selective by tags
9123 @vindex org-export-select-tags
9124 @vindex org-export-exclude-tags
9125 You may use tags to select the parts of a document that should be exported,
9126 or to exclude parts from export.  This behavior is governed by two variables:
9127 @code{org-export-select-tags} and @code{org-export-exclude-tags}.
9129 Org first checks if any of the @emph{select} tags is present in the buffer.
9130 If yes, all trees that do not carry one of these tags will be excluded.  If a
9131 selected tree is a subtree, the heading hierarchy above it will also be
9132 selected for export, but not the text below those headings.
9134 @noindent
9135 If none of the select tags is found, the whole buffer will be selected for
9136 export.
9138 @noindent
9139 Finally, all subtrees that are marked by any of the @emph{exclude} tags will
9140 be removed from the export buffer.
9142 @node Export options, The export dispatcher, Selective export, Exporting
9143 @section Export options
9144 @cindex options, for export
9146 @cindex completion, of option keywords
9147 The exporter recognizes special lines in the buffer which provide
9148 additional information.  These lines may be put anywhere in the file.
9149 The whole set of lines can be inserted into the buffer with @kbd{C-c
9150 C-e t}.  For individual lines, a good way to make sure the keyword is
9151 correct is to type @samp{#+} and then use @kbd{M-@key{TAB}} completion
9152 (@pxref{Completion}).   For a summary of other in-buffer settings not
9153 specifically related to export, see @ref{In-buffer settings}.
9154 In particular, note that you can place commonly-used (export) options in
9155 a separate file which can be included using @code{#+SETUPFILE}.
9157 @table @kbd
9158 @kindex C-c C-e t
9159 @item C-c C-e t
9160 Insert template with export options, see example below.
9161 @end table
9163 @cindex #+TITLE
9164 @cindex #+AUTHOR
9165 @cindex #+DATE
9166 @cindex #+EMAIL
9167 @cindex #+DESCRIPTION
9168 @cindex #+KEYWORDS
9169 @cindex #+LANGUAGE
9170 @cindex #+TEXT
9171 @cindex #+OPTIONS
9172 @cindex #+BIND
9173 @cindex #+LINK_UP
9174 @cindex #+LINK_HOME
9175 @cindex #+EXPORT_SELECT_TAGS
9176 @cindex #+EXPORT_EXCLUDE_TAGS
9177 @cindex #+XSLT
9178 @cindex #+LATEX_HEADER
9179 @vindex user-full-name
9180 @vindex user-mail-address
9181 @vindex org-export-default-language
9182 @example
9183 #+TITLE:       the title to be shown (default is the buffer name)
9184 #+AUTHOR:      the author (default taken from @code{user-full-name})
9185 #+DATE:        a date, fixed, of a format string for @code{format-time-string}
9186 #+EMAIL:       his/her email address (default from @code{user-mail-address})
9187 #+DESCRIPTION: the page description, e.g. for the XHTML meta tag
9188 #+KEYWORDS:    the page keywords, e.g. for the XHTML meta tag
9189 #+LANGUAGE:    language for HTML, e.g. @samp{en} (@code{org-export-default-language})
9190 #+TEXT:        Some descriptive text to be inserted at the beginning.
9191 #+TEXT:        Several lines may be given.
9192 #+OPTIONS:     H:2 num:t toc:t \n:nil @@:t ::t |:t ^:t f:t TeX:t ...
9193 #+BIND:        lisp-var lisp-val, e.g.: org-export-latex-low-levels itemize
9194                @r{You need to confirm using these, or configure @code{org-export-allow-BIND}}
9195 #+LINK_UP:     the ``up'' link of an exported page
9196 #+LINK_HOME:   the ``home'' link of an exported page
9197 #+LATEX_HEADER: extra line(s) for the LaTeX header, like \usepackage@{xyz@}
9198 #+EXPORT_SELECT_TAGS:   Tags that select a tree for export
9199 #+EXPORT_EXCLUDE_TAGS:  Tags that exclude a tree from export
9200 #+XSLT:        the XSLT stylesheet used by DocBook exporter to generate FO file
9201 @end example
9203 @noindent
9204 The OPTIONS line is a compact@footnote{If you want to configure many options
9205 this way, you can use several OPTIONS lines.} form to specify export settings.  Here
9206 you can:
9207 @cindex headline levels
9208 @cindex section-numbers
9209 @cindex table of contents
9210 @cindex line-break preservation
9211 @cindex quoted HTML tags
9212 @cindex fixed-width sections
9213 @cindex tables
9214 @cindex @TeX{}-like syntax for sub- and superscripts
9215 @cindex footnotes
9216 @cindex special strings
9217 @cindex emphasized text
9218 @cindex @TeX{} macros
9219 @cindex La@TeX{} fragments
9220 @cindex author info, in export
9221 @cindex time info, in export
9222 @example
9223 H:         @r{set the number of headline levels for export}
9224 num:       @r{turn on/off section-numbers}
9225 toc:       @r{turn on/off table of contents, or set level limit (integer)}
9226 \n:        @r{turn on/off line-break-preservation (DOES NOT WORK)}
9227 @@:         @r{turn on/off quoted HTML tags}
9228 ::         @r{turn on/off fixed-width sections}
9229 |:         @r{turn on/off tables}
9230 ^:         @r{turn on/off @TeX{}-like syntax for sub- and superscripts.  If}
9231            @r{you write "^:@{@}", @code{a_@{b@}} will be interpreted, but}
9232            @r{the simple @code{a_b} will be left as it is.}
9233 -:         @r{turn on/off conversion of special strings.}
9234 f:         @r{turn on/off footnotes like this[1].}
9235 todo:      @r{turn on/off inclusion of TODO keywords into exported text}
9236 pri:       @r{turn on/off priority cookies}
9237 tags:      @r{turn on/off inclusion of tags, may also be @code{not-in-toc}}
9238 <:         @r{turn on/off inclusion of any time/date stamps like DEADLINES}
9239 *:         @r{turn on/off emphasized text (bold, italic, underlined)}
9240 TeX:       @r{turn on/off simple @TeX{} macros in plain text}
9241 LaTeX:     @r{configure export of La@TeX{} fragments.  Default @code{auto}}
9242 skip:      @r{turn on/off skipping the text before the first heading}
9243 author:    @r{turn on/off inclusion of author name/email into exported file}
9244 email:     @r{turn on/off inclusion of author email into exported file}
9245 creator:   @r{turn on/off inclusion of creator info into exported file}
9246 timestamp: @r{turn on/off inclusion creation time into exported file}
9247 d:         @r{turn on/off inclusion of drawers}
9248 @end example
9249 @noindent
9250 These options take effect in both the HTML and La@TeX{} export, except
9251 for @code{TeX} and @code{LaTeX}, which are respectively @code{t} and
9252 @code{nil} for the La@TeX{} export.
9254 When exporting only a single subtree by selecting it with @kbd{C-c @@} before
9255 calling an export command, the subtree can overrule some of the file's export
9256 settings with properties @code{EXPORT_FILE_NAME}, @code{EXPORT_TITLE},
9257 @code{EXPORT_TEXT}, @code{EXPORT_AUTHOR}, @code{EXPORT_DATE}, and
9258 @code{EXPORT_OPTIONS}.
9260 @node The export dispatcher, ASCII/Latin-1/UTF-8 export, Export options, Exporting
9261 @section The export dispatcher
9262 @cindex dispatcher, for export commands
9264 All export commands can be reached using the export dispatcher, which is a
9265 prefix key that prompts for an additional key specifying the command.
9266 Normally the entire file is exported, but if there is an active region that
9267 contains one outline tree, the first heading is used as document title and
9268 the subtrees are exported.
9270 @table @kbd
9271 @kindex C-c C-e
9272 @item C-c C-e
9273 @vindex org-export-run-in-background
9274 Dispatcher for export and publishing commands.  Displays a help-window
9275 listing the additional key(s) needed to launch an export or publishing
9276 command.  The prefix arg is passed through to the exporter.  A double prefix
9277 @kbd{C-u C-u} causes most commands to be executed in the background, in a
9278 separate Emacs process@footnote{To make this behavior the default, customize
9279 the variable @code{org-export-run-in-background}.}.
9280 @kindex C-c C-e v
9281 @item C-c C-e v
9282 Like @kbd{C-c C-e}, but only export the text that is currently visible
9283 (i.e. not hidden by outline visibility).
9284 @kindex C-u C-u C-c C-e
9285 @item C-u C-u C-c C-e
9286 @vindex org-export-run-in-background
9287 Call an the exporter, but reverse the setting of
9288 @code{org-export-run-in-background}, i.e. request background processing if
9289 not set, or force processing in the current Emacs process if set.
9290 @end table
9292 @node ASCII/Latin-1/UTF-8 export, HTML export, The export dispatcher, Exporting
9293 @section ASCII/Latin-1/UTF-8 export
9294 @cindex ASCII export
9295 @cindex Latin-1 export
9296 @cindex UTF-8 export
9298 ASCII export produces a simple and very readable version of an Org-mode
9299 file, containing only plain ASCII.  Latin-1 and UTF-8 export augment the file
9300 with special characters and symbols available in these encodings.
9302 @cindex region, active
9303 @cindex active region
9304 @cindex transient-mark-mode
9305 @table @kbd
9306 @kindex C-c C-e a
9307 @item C-c C-e a
9308 @cindex property, EXPORT_FILE_NAME
9309 Export as ASCII file.  For an Org file, @file{myfile.org}, the ASCII file
9310 will be @file{myfile.txt}.  The file will be overwritten without
9311 warning.  If there is an active region@footnote{This requires
9312 @code{transient-mark-mode} be turned on.}, only the region will be
9313 exported. If the selected region is a single tree@footnote{To select the
9314 current subtree, use @kbd{C-c @@}.}, the tree head will
9315 become the document title.  If the tree head entry has or inherits an
9316 @code{EXPORT_FILE_NAME} property, that name will be used for the
9317 export.
9318 @kindex C-c C-e A
9319 @item C-c C-e A
9320 Export to a temporary buffer, do not create a file.
9321 @kindex C-c C-e n
9322 @kindex C-c C-e N
9323 @item C-c C-e n @ @ @r{and} @ @ C-c C-e N
9324 Like the above commands, but use Latin-1 encoding.
9325 @kindex C-c C-e u
9326 @kindex C-c C-e U
9327 @item C-c C-e u @ @ @r{and} @ @ C-c C-e U
9328 Like the above commands, but use UTF-8 encoding.
9329 @kindex C-c C-e v a
9330 @kindex C-c C-e v n
9331 @kindex C-c C-e v u
9332 @item C-c C-e v a @ @ @r{and} @ @ C-c C-e v n @ @ @r{and} @ @ C-c C-e v u
9333 Export only the visible part of the document.
9334 @end table
9336 @cindex headline levels, for exporting
9337 In the exported version, the first 3 outline levels will become
9338 headlines, defining a general document structure.  Additional levels
9339 will be exported as itemized lists.  If you want that transition to occur
9340 at a different level, specify it with a prefix argument.  For example,
9342 @example
9343 @kbd{C-1 C-c C-e a}
9344 @end example
9346 @noindent
9347 creates only top level headlines and does the rest as items.  When
9348 headlines are converted to items, the indentation of the text following
9349 the headline is changed to fit nicely under the item.  This is done with
9350 the assumption that the first body line indicates the base indentation of
9351 the body text.  Any indentation larger than this is adjusted to preserve
9352 the layout relative to the first line.  Should there be lines with less
9353 indentation than the first, these are left alone.
9355 @vindex org-export-ascii-links-to-notes
9356 Links will be exported in a footnote-like style, with the descriptive part in
9357 the text and the link in a note before the next heading.  See the variable
9358 @code{org-export-ascii-links-to-notes} for details and other options.
9360 @node HTML export, LaTeX and PDF export, ASCII/Latin-1/UTF-8 export, Exporting
9361 @section HTML export
9362 @cindex HTML export
9364 Org-mode contains an HTML (XHTML 1.0 strict) exporter with extensive
9365 HTML formatting, in ways similar to John Gruber's @emph{markdown}
9366 language, but with additional support for tables.
9368 @menu
9369 * HTML Export commands::        How to invoke HTML export
9370 * Quoting HTML tags::           Using direct HTML in Org-mode
9371 * Links in HTML export::        How links will be interpreted and formatted
9372 * Tables in HTML export::       How to modify the formatting of tables
9373 * Images in HTML export::       How to insert figures into HTML output
9374 * Math formatting in HTML export::  Beautiful math also on the web
9375 * Text areas in HTML export::   An alternative way to show an example
9376 * CSS support::                 Changing the appearance of the output
9377 * JavaScript support::          Info and Folding in a web browser
9378 @end menu
9380 @node HTML Export commands, Quoting HTML tags, HTML export, HTML export
9381 @subsection HTML export commands
9383 @cindex region, active
9384 @cindex active region
9385 @cindex transient-mark-mode
9386 @table @kbd
9387 @kindex C-c C-e h
9388 @item C-c C-e h
9389 @cindex property, EXPORT_FILE_NAME
9390 Export as HTML file @file{myfile.html}.  For an Org file @file{myfile.org},
9391 the ASCII file will be @file{myfile.html}.  The file will be overwritten
9392 without warning.  If there is an active region@footnote{This requires
9393 @code{transient-mark-mode} be turned on.}, only the region will be
9394 exported. If the selected region is a single tree@footnote{To select the
9395 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
9396 title.  If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
9397 property, that name will be used for the export.
9398 @kindex C-c C-e b
9399 @item C-c C-e b
9400 Export as HTML file and immediately open it with a browser.
9401 @kindex C-c C-e H
9402 @item C-c C-e H
9403 Export to a temporary buffer, do not create a file.
9404 @kindex C-c C-e R
9405 @item C-c C-e R
9406 Export the active region to a temporary buffer.  With a prefix argument, do
9407 not produce the file header and footer, but just the plain HTML section for
9408 the region.  This is good for cut-and-paste operations.
9409 @kindex C-c C-e v h
9410 @kindex C-c C-e v b
9411 @kindex C-c C-e v H
9412 @kindex C-c C-e v R
9413 @item C-c C-e v h
9414 @item C-c C-e v b
9415 @item C-c C-e v H
9416 @item C-c C-e v R
9417 Export only the visible part of the document.
9418 @item M-x org-export-region-as-html
9419 Convert the region to HTML under the assumption that it was Org-mode
9420 syntax before.  This is a global command that can be invoked in any
9421 buffer.
9422 @item M-x org-replace-region-by-HTML
9423 Replace the active region (assumed to be in Org-mode syntax) by HTML
9424 code.
9425 @end table
9427 @cindex headline levels, for exporting
9428 In the exported version, the first 3 outline levels will become headlines,
9429 defining a general document structure.  Additional levels will be exported as
9430 itemized lists.  If you want that transition to occur at a different level,
9431 specify it with a numeric prefix argument.  For example,
9433 @example
9434 @kbd{C-2 C-c C-e b}
9435 @end example
9437 @noindent
9438 creates two levels of headings and does the rest as items.
9440 @node Quoting HTML tags, Links in HTML export, HTML Export commands, HTML export
9441 @subsection Quoting HTML tags
9443 Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
9444 @samp{&gt;} in HTML export.  If you want to include simple HTML tags
9445 which should be interpreted as such, mark them with @samp{@@} as in
9446 @samp{@@<b>bold text@@</b>}.  Note that this really works only for
9447 simple tags.  For more extensive HTML that should be copied verbatim to
9448 the exported file use either
9450 @cindex #+HTML
9451 @cindex #+BEGIN_HTML
9452 @example
9453 #+HTML: Literal HTML code for export
9454 @end example
9456 @noindent or
9457 @cindex #+BEGIN_HTML
9459 @example
9460 #+BEGIN_HTML
9461 All lines between these markers are exported literally
9462 #+END_HTML
9463 @end example
9466 @node Links in HTML export, Tables in HTML export, Quoting HTML tags, HTML export
9467 @subsection Links in HTML export
9469 @cindex links, in HTML export
9470 @cindex internal links, in HTML export
9471 @cindex external links, in HTML export
9472 Internal links (@pxref{Internal links}) will continue to work in HTML.  This
9473 includes automatic links created by radio targets (@pxref{Radio
9474 targets}).  Links to external files will still work if the target file is on
9475 the same @i{relative} path as the published Org file.  Links to other
9476 @file{.org} files will be translated into HTML links under the assumption
9477 that an HTML version also exists of the linked file, at the same relative
9478 path.  @samp{id:} links can then be used to jump to specific entries across
9479 files.  For information related to linking files while publishing them to a
9480 publishing directory see @ref{Publishing links}.
9482 If you want to specify attributes for links, you can do so using a special
9483 @code{#+ATTR_HTML} line to define attributes that will be added to the
9484 @code{<a>} or @code{<img>} tags.  Here is an example that sets @code{title}
9485 and @code{style} attributes for a link:
9487 @cindex #+ATTR_HTML
9488 @example
9489 #+ATTR_HTML: title="The Org-mode homepage" style="color:red;"
9490 [[http://orgmode.org]]
9491 @end example
9493 @node Tables in HTML export, Images in HTML export, Links in HTML export, HTML export
9494 @subsection Tables
9495 @cindex tables, in HTML
9496 @vindex org-export-html-table-tag
9498 Org-mode tables are exported to HTML using the table tag defined in
9499 @code{org-export-html-table-tag}.  The default setting makes tables without
9500 cell borders and frame.  If you would like to change this for individual
9501 tables, place something like the following before the table:
9503 @cindex #+CAPTION
9504 @cindex #+ATTR_HTML
9505 @example
9506 #+CAPTION: This is a table with lines around and between cells
9507 #+ATTR_HTML: border="2" rules="all" frame="all"
9508 @end example
9510 @node Images in HTML export, Math formatting in HTML export, Tables in HTML export, HTML export
9511 @subsection Images in HTML export
9513 @cindex images, inline in HTML
9514 @cindex inlining images in HTML
9515 @vindex org-export-html-inline-images
9516 HTML export can inline images given as links in the Org file, and
9517 it can make an image the clickable part of a link.  By
9518 default@footnote{But see the variable
9519 @code{org-export-html-inline-images}.}, images are inlined if a link does
9520 not have a description.  So @samp{[[file:myimg.jpg]]} will be inlined,
9521 while @samp{[[file:myimg.jpg][the image]]} will just produce a link
9522 @samp{the image} that points to the image.  If the description part
9523 itself is a @code{file:} link or a @code{http:} URL pointing to an
9524 image, this image will be inlined and activated so that clicking on the
9525 image will activate the link.  For example, to include a thumbnail that
9526 will link to a high resolution version of the image, you could use:
9528 @example
9529 [[file:highres.jpg][file:thumb.jpg]]
9530 @end example
9532 If you need to add attributes to an inlined image, use a @code{#+ATTR_HTML}.
9533 In the example below we specify the @code{alt} and @code{title} attributes to
9534 support text viewers and accessibility, and align it to the right.
9536 @cindex #+CAPTION
9537 @cindex #+ATTR_HTML
9538 @example
9539 #+CAPTION: A black cat stalking a spider
9540 #+ATTR_HTML: alt="cat/spider image" title="Action!" align="right"
9541 [[./img/a.jpg]]
9542 @end example
9544 @noindent
9545 and you could use @code{http} addresses just as well.
9547 @node Math formatting in HTML export, Text areas in HTML export, Images in HTML export, HTML export
9548 @subsection Math formatting in HTML export
9549 @cindex MathJax
9550 @cindex dvipng
9552 La@TeX{} math snippets (@pxref{LaTeX fragments}) can be displayed in two
9553 different ways on HTML pages.  The default is to use the
9554 @uref{http://www.mathjax.org, MathJax system} which should work out of the
9555 box with Org mode installation because @code{http://orgmode.org} serves
9556 @file{MathJax} for Org-mode users for small applications and for testing
9557 purposes.  @b{If you plan to use this regularly or on pages with significant
9558 page views, you should install MathJax on your own server in order to limit
9559 the load of our server.}  To configure @file{MathJax}, use the variable
9560 @code{org-export-html-mathjax-options} or insert something like the following
9561 into the buffer:
9563 @example
9564 #+MATHJAX: align:"left" mathml:t path:"/MathJax/MathJax.js"
9565 @end example
9567 @noindent See the docstring of the variable
9568 @code{org-export-html-mathjax-options} for the meaning of the parameters in
9569 this line.
9571 If you prefer, you can also request that La@TeX{} are processed into small
9572 images that will be inserted into the browser page.  Before the availability
9573 of MathJax, this was the default method for Org files.  This method requires
9574 that the @file{dvipng} program is available on your system.  You can still
9575 get this processing with
9577 @example
9578 #+OPTIONS: LaTeX:dvipng
9579 @end example
9581 @node Text areas in HTML export, CSS support, Math formatting in HTML export, HTML export
9582 @subsection Text areas in HTML export
9584 @cindex text areas, in HTML
9585 An alternative way to publish literal code examples in HTML is to use text
9586 areas, where the example can even be edited before pasting it into an
9587 application.  It is triggered by a @code{-t} switch at an @code{example} or
9588 @code{src} block.  Using this switch disables any options for syntax and
9589 label highlighting, and line numbering, which may be present.  You may also
9590 use @code{-h} and @code{-w} switches to specify the height and width of the
9591 text area, which default to the number of lines in the example, and 80,
9592 respectively.  For example
9594 @example
9595 #+BEGIN_EXAMPLE -t -w 40
9596   (defun org-xor (a b)
9597      "Exclusive or."
9598      (if a (not b) b))
9599 #+END_EXAMPLE
9600 @end example
9603 @node CSS support, JavaScript support, Text areas in HTML export, HTML export
9604 @subsection CSS support
9605 @cindex CSS, for HTML export
9606 @cindex HTML export, CSS
9608 @vindex org-export-html-todo-kwd-class-prefix
9609 @vindex org-export-html-tag-class-prefix
9610 You can also give style information for the exported file.  The HTML exporter
9611 assigns the following special CSS classes@footnote{If the classes on TODO
9612 keywords and tags lead to conflicts, use the variables
9613 @code{org-export-html-todo-kwd-class-prefix} and
9614 @code{org-export-html-tag-class-prefix} to make them unique.} to appropriate
9615 parts of the document---your style specifications may change these, in
9616 addition to any of the standard classes like for headlines, tables, etc.
9617 @example
9618 p.author            @r{author information, including email}
9619 p.date              @r{publishing date}
9620 p.creator           @r{creator info, about org-mode version}
9621 .title              @r{document title}
9622 .todo               @r{TODO keywords, all not-done states}
9623 .done               @r{the DONE keywords, all stated the count as done}
9624 .WAITING            @r{each TODO keyword also uses a class named after itself}
9625 .timestamp          @r{timestamp}
9626 .timestamp-kwd      @r{keyword associated with a timestamp, like SCHEDULED}
9627 .timestamp-wrapper  @r{span around keyword plus timestamp}
9628 .tag                @r{tag in a headline}
9629 ._HOME              @r{each tag uses itself as a class, "@@" replaced by "_"}
9630 .target             @r{target for links}
9631 .linenr             @r{the line number in a code example}
9632 .code-highlighted   @r{for highlighting referenced code lines}
9633 div.outline-N       @r{div for outline level N (headline plus text))}
9634 div.outline-text-N  @r{extra div for text at outline level N}
9635 .section-number-N   @r{section number in headlines, different for each level}
9636 div.figure          @r{how to format an inlined image}
9637 pre.src             @r{formatted source code}
9638 pre.example         @r{normal example}
9639 p.verse             @r{verse paragraph}
9640 div.footnotes       @r{footnote section headline}
9641 p.footnote          @r{footnote definition paragraph, containing a footnote}
9642 .footref            @r{a footnote reference number (always a <sup>)}
9643 .footnum            @r{footnote number in footnote definition (always <sup>)}
9644 @end example
9646 @vindex org-export-html-style-default
9647 @vindex org-export-html-style-include-default
9648 @vindex org-export-html-style
9649 @vindex org-export-html-extra
9650 @vindex org-export-html-style-default
9651 Each exported file contains a compact default style that defines these
9652 classes in a basic way@footnote{This style is defined in the constant
9653 @code{org-export-html-style-default}, which you should not modify.  To turn
9654 inclusion of these defaults off, customize
9655 @code{org-export-html-style-include-default}}.  You may overwrite these
9656 settings, or add to them by using the variables @code{org-export-html-style}
9657 (for Org-wide settings) and @code{org-export-html-style-extra} (for more
9658 granular settings, like file-local settings).  To set the latter variable
9659 individually for each file, you can use
9661 @cindex #+STYLE
9662 @example
9663 #+STYLE: <link rel="stylesheet" type="text/css" href="stylesheet.css" />
9664 @end example
9666 @noindent
9667 For longer style definitions, you can use several such lines.  You could also
9668 directly write a @code{<style>} @code{</style>} section in this way, without
9669 referring to an external file.
9671 @c FIXME: More about header and footer styles
9672 @c FIXME: Talk about links and targets.
9674 @node JavaScript support,  , CSS support, HTML export
9675 @subsection JavaScript supported display of web pages
9677 @cindex Rose, Sebastian
9678 Sebastian Rose has written a JavaScript program especially designed to
9679 enhance the web viewing experience of HTML files created with Org.  This
9680 program allows you to view large files in two different ways.  The first one
9681 is an @emph{Info}-like mode where each section is displayed separately and
9682 navigation can be done with the @kbd{n} and @kbd{p} keys (and some other keys
9683 as well, press @kbd{?} for an overview of the available keys).  The second
9684 view type is a @emph{folding} view much like Org provides inside Emacs.  The
9685 script is available at @url{http://orgmode.org/org-info.js} and you can find
9686 the documentation for it at @url{http://orgmode.org/worg/code/org-info-js/}.
9687 We host the script at our site, but if you use it a lot, you might
9688 not want to be dependent on @url{orgmode.org} and prefer to install a local
9689 copy on your own web server.
9691 To use the script, you need to make sure that the @file{org-jsinfo.el} module
9692 gets loaded.  It should be loaded by default, but you can try @kbd{M-x
9693 customize-variable @key{RET} org-modules @key{RET}} to convince yourself that
9694 this is indeed the case.  All it then takes to make use of the program is
9695 adding a single line to the Org file:
9697 @cindex #+INFOJS_OPT
9698 @example
9699 #+INFOJS_OPT: view:info toc:nil
9700 @end example
9702 @noindent
9703 If this line is found, the HTML header will automatically contain the code
9704 needed to invoke the script.  Using the line above, you can set the following
9705 viewing options:
9707 @example
9708 path:    @r{The path to the script.  The default is to grab the script from}
9709          @r{@url{http://orgmode.org/org-info.js}, but you might want to have}
9710          @r{a local copy and use a path like @samp{../scripts/org-info.js}.}
9711 view:    @r{Initial view when website is first shown.  Possible values are:}
9712          info      @r{Info-like interface with one section per page.}
9713          overview  @r{Folding interface, initially showing only top-level.}
9714          content   @r{Folding interface, starting with all headlines visible.}
9715          showall   @r{Folding interface, all headlines and text visible.}
9716 sdepth:  @r{Maximum headline level that will still become an independent}
9717          @r{section for info and folding modes.  The default is taken from}
9718          @r{@code{org-export-headline-levels} (= the @code{H} switch in @code{#+OPTIONS}).}
9719          @r{If this is smaller than in @code{org-export-headline-levels}, each}
9720          @r{info/folding section can still contain child headlines.}
9721 toc:     @r{Should the table of content @emph{initially} be visible?}
9722          @r{Even when @code{nil}, you can always get to the "toc" with @kbd{i}.}
9723 tdepth:  @r{The depth of the table of contents.  The defaults are taken from}
9724          @r{the variables @code{org-export-headline-levels} and @code{org-export-with-toc}.}
9725 ftoc:    @r{Does the css of the page specify a fixed position for the "toc"?}
9726          @r{If yes, the toc will never be displayed as a section.}
9727 ltoc:    @r{Should there be short contents (children) in each section?}
9728          @r{Make this @code{above} if the section should be above initial text.}
9729 mouse:   @r{Headings are highlighted when the mouse is over them.  Should be}
9730          @r{@samp{underline} (default) or a background color like @samp{#cccccc}.}
9731 buttons: @r{Should view-toggle buttons be everywhere?  When @code{nil} (the}
9732          @r{default), only one such button will be present.}
9733 @end example
9734 @noindent
9735 @vindex org-infojs-options
9736 @vindex org-export-html-use-infojs
9737 You can choose default values for these options by customizing the variable
9738 @code{org-infojs-options}.  If you always want to apply the script to your
9739 pages, configure the variable @code{org-export-html-use-infojs}.
9741 @node LaTeX and PDF export, DocBook export, HTML export, Exporting
9742 @section La@TeX{} and PDF export
9743 @cindex La@TeX{} export
9744 @cindex PDF export
9745 @cindex Guerry, Bastien
9747 Org-mode contains a La@TeX{} exporter written by Bastien Guerry.  With
9748 further processing@footnote{The default LaTeX output is designed for
9749 processing with pdftex or latex.  It includes packages that are not
9750 compatible with xetex and possibly luatex.  See the variables
9751 @code{org-export-latex-default-packages-alist} and
9752 @code{org-export-latex-packages-alist}.}, this backend is also used to
9753 produce PDF output.  Since the La@TeX{} output uses @file{hyperref} to
9754 implement links and cross references, the PDF output file will be fully
9755 linked.
9757 @menu
9758 * LaTeX/PDF export commands::   Which key invokes which commands
9759 * Header and sectioning::       Setting up the export file structure
9760 * Quoting LaTeX code::          Incorporating literal La@TeX{} code
9761 * Tables in LaTeX export::      Options for exporting tables to La@TeX{}
9762 * Images in LaTeX export::      How to insert figures into La@TeX{} output
9763 * Beamer class export::         Turning the file into a presentation
9764 @end menu
9766 @node LaTeX/PDF export commands, Header and sectioning, LaTeX and PDF export, LaTeX and PDF export
9767 @subsection La@TeX{} export commands
9769 @cindex region, active
9770 @cindex active region
9771 @cindex transient-mark-mode
9772 @table @kbd
9773 @kindex C-c C-e l
9774 @item C-c C-e l
9775 @cindex property EXPORT_FILE_NAME
9776 Export as La@TeX{} file @file{myfile.tex}.  For an Org file
9777 @file{myfile.org}, the ASCII file will be @file{myfile.tex}.  The file will
9778 be overwritten without warning.  If there is an active region@footnote{This
9779 requires @code{transient-mark-mode} be turned on.}, only the region will be
9780 exported. If the selected region is a single tree@footnote{To select the
9781 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
9782 title.  If the tree head entry has or inherits an @code{EXPORT_FILE_NAME}
9783 property, that name will be used for the export.
9784 @kindex C-c C-e L
9785 @item C-c C-e L
9786 Export to a temporary buffer, do not create a file.
9787 @kindex C-c C-e v l
9788 @kindex C-c C-e v L
9789 @item C-c C-e v l
9790 @item C-c C-e v L
9791 Export only the visible part of the document.
9792 @item M-x org-export-region-as-latex
9793 Convert the region to La@TeX{} under the assumption that it was Org-mode
9794 syntax before.  This is a global command that can be invoked in any
9795 buffer.
9796 @item M-x org-replace-region-by-latex
9797 Replace the active region (assumed to be in Org-mode syntax) by La@TeX{}
9798 code.
9799 @kindex C-c C-e p
9800 @item C-c C-e p
9801 Export as La@TeX{} and then process to PDF.
9802 @kindex C-c C-e d
9803 @item C-c C-e d
9804 Export as La@TeX{} and then process to PDF, then open the resulting PDF file.
9805 @end table
9807 @cindex headline levels, for exporting
9808 @vindex org-latex-low-levels
9809 In the exported version, the first 3 outline levels will become
9810 headlines, defining a general document structure.  Additional levels
9811 will be exported as description lists.  The exporter can ignore them or
9812 convert them to a custom string depending on
9813 @code{org-latex-low-levels}.
9815 If you want that transition to occur at a different level, specify it
9816 with a numeric prefix argument. For example,
9818 @example
9819 @kbd{C-2 C-c C-e l}
9820 @end example
9822 @noindent
9823 creates two levels of headings and does the rest as items.
9825 @node Header and sectioning, Quoting LaTeX code, LaTeX/PDF export commands, LaTeX and PDF export
9826 @subsection Header and sectioning structure
9827 @cindex La@TeX{} class
9828 @cindex La@TeX{} sectioning structure
9829 @cindex La@TeX{} header
9830 @cindex header, for LaTeX files
9831 @cindex sectioning structure, for LaTeX export
9833 By default, the La@TeX{} output uses the class @code{article}.
9835 @vindex org-export-latex-default-class
9836 @vindex org-export-latex-classes
9837 @vindex org-export-latex-default-packages-alist
9838 @vindex org-export-latex-packages-alist
9839 @cindex #+LATEX_HEADER
9840 @cindex #+LATEX_CLASS
9841 @cindex #+LATEX_CLASS_OPTIONS
9842 @cindex property, LATEX_CLASS
9843 @cindex property, LATEX_CLASS_OPTIONS
9844 You can change this globally by setting a different value for
9845 @code{org-export-latex-default-class} or locally by adding an option like
9846 @code{#+LaTeX_CLASS: myclass} in your file, or with a @code{:LaTeX_CLASS:}
9847 property that applies when exporting a region containing only this (sub)tree.
9848 The class must be listed in @code{org-export-latex-classes}.  This variable
9849 defines a header template for each class@footnote{Into which the values of
9850 @code{org-export-latex-default-packages-alist} and
9851 @code{org-export-latex-packages-alist} are spliced.}, and allows you to
9852 define the sectioning structure for each class.  You can also define your own
9853 classes there.  @code{#+LaTeX_CLASS_OPTIONS} or a @code{LaTeX_CLASS_OPTIONS}
9854 property can specify the options for the @code{\documentclass} macro.  You
9855 can also use @code{#+LATEX_HEADER: \usepackage@{xyz@}} to add lines to the
9856 header.  See the docstring of @code{org-export-latex-classes} for more
9857 information.
9859 @node Quoting LaTeX code, Tables in LaTeX export, Header and sectioning, LaTeX and PDF export
9860 @subsection Quoting La@TeX{} code
9862 Embedded La@TeX{} as described in @ref{Embedded LaTeX}, will be correctly
9863 inserted into the La@TeX{} file.  This includes simple macros like
9864 @samp{\ref@{LABEL@}} to create a cross reference to a figure.  Furthermore,
9865 you can add special code that should only be present in La@TeX{} export with
9866 the following constructs:
9868 @cindex #+LaTeX
9869 @cindex #+BEGIN_LaTeX
9870 @example
9871 #+LaTeX: Literal LaTeX code for export
9872 @end example
9874 @noindent or
9875 @cindex #+BEGIN_LaTeX
9877 @example
9878 #+BEGIN_LaTeX
9879 All lines between these markers are exported literally
9880 #+END_LaTeX
9881 @end example
9884 @node Tables in LaTeX export, Images in LaTeX export, Quoting LaTeX code, LaTeX and PDF export
9885 @subsection Tables in La@TeX{} export
9886 @cindex tables, in La@TeX{} export
9888 For La@TeX{} export of a table, you can specify a label and a caption
9889 (@pxref{Images and tables}).  You can also use the @code{ATTR_LaTeX} line to
9890 request a @code{longtable} environment for the table, so that it may span
9891 several pages, or provide the @code{multicolumn} keyword that will make the
9892 table span the page in a multicolumn environment (@code{table*} environment).
9893 Finally, you can set the alignment string:
9895 @cindex #+CAPTION
9896 @cindex #+LABEL
9897 @cindex #+ATTR_LaTeX
9898 @example
9899 #+CAPTION: A long table
9900 #+LABEL: tbl:long
9901 #+ATTR_LaTeX: longtable align=l|lp@{3cm@}r|l
9902 | ..... | ..... |
9903 | ..... | ..... |
9904 @end example
9907 @node Images in LaTeX export, Beamer class export, Tables in LaTeX export, LaTeX and PDF export
9908 @subsection Images in La@TeX{} export
9909 @cindex images, inline in La@TeX{}
9910 @cindex inlining images in La@TeX{}
9912 Images that are linked to without a description part in the link, like
9913 @samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]} will be inserted into the PDF
9914 output file resulting from La@TeX{} processing.  Org will use an
9915 @code{\includegraphics} macro to insert the image.  If you have specified a
9916 caption and/or a label as described in @ref{Images and tables}, the figure
9917 will be wrapped into a @code{figure} environment and thus become a floating
9918 element.  You can use an @code{#+ATTR_LaTeX:} line to specify the various
9919 options that can be used in the optional argument of the
9920 @code{\includegraphics} macro.  To modify the placement option of the
9921 @code{figure} environment, add something like @samp{placement=[h!]} to the
9922 Attributes.
9924 If you would like to let text flow around the image, add the word @samp{wrap}
9925 to the @code{#+ATTR_LaTeX:} line, which will make the figure occupy the left
9926 half of the page.  To fine-tune, the @code{placement} field will be the set
9927 of additional arguments needed by the @code{wrapfigure} environment.  Note
9928 that if you change the size of the image, you need to use compatible settings
9929 for @code{\includegraphics} and @code{wrapfigure}.
9931 @cindex #+CAPTION
9932 @cindex #+LABEL
9933 @cindex #+ATTR_LaTeX
9934 @example
9935 #+CAPTION:    The black-body emission of the disk around HR 4049
9936 #+LABEL:      fig:SED-HR4049
9937 #+ATTR_LaTeX: width=5cm,angle=90
9938 [[./img/sed-hr4049.pdf]]
9940 #+ATTR_LaTeX: width=0.38\textwidth wrap placement=@{r@}@{0.4\textwidth@}
9941 [[./img/hst.png]]
9942 @end example
9944 If you need references to a label created in this way, write
9945 @samp{\ref@{fig:SED-HR4049@}} just like in La@TeX{}.
9947 @node Beamer class export,  , Images in LaTeX export, LaTeX and PDF export
9948 @subsection Beamer class export
9950 The LaTeX class @file{beamer} allows production of high quality presentations
9951 using LaTeX and pdf processing.  Org-mode has special support for turning an
9952 Org-mode file or tree into a @file{beamer} presentation.
9954 When the LaTeX class for the current buffer (as set with @code{#+LaTeX_CLASS:
9955 beamer}) or subtree (set with a @code{LaTeX_CLASS} property) is
9956 @code{beamer}, a special export mode will turn the file or tree into a beamer
9957 presentation.  Any tree with not-too-deep level nesting should in principle be
9958 exportable as a beamer presentation.  By default, the top-level entries (or
9959 the first level below the selected subtree heading) will be turned into
9960 frames, and the outline structure below this level will become itemize lists.
9961 You can also configure the variable @code{org-beamer-frame-level} to a
9962 different level - then the hierarchy above frames will produce the sectioning
9963 structure of the presentation.
9965 A template for useful in-buffer settings or properties can be inserted into
9966 the buffer with @kbd{M-x org-insert-beamer-options-template}.  Among other
9967 things, this will install a column view format which is very handy for
9968 editing special properties used by beamer.
9970 You can influence the structure of the presentation using the following
9971 properties:
9973 @table @code
9974 @item BEAMER_env
9975 The environment that should be used to format this entry.  Valid environments
9976 are defined in the constant @code{org-beamer-environments-default}, and you
9977 can define more in @code{org-beamer-environments-extra}.  If this property is
9978 set, the entry will also get a @code{:B_environment:} tag to make this
9979 visible.  This tag has no semantic meaning, it is only a visual aid.
9980 @item BEAMER_envargs
9981 The beamer-special arguments that should be used for the environment, like
9982 @code{[t]} or @code{[<+->]} of @code{<2-3>}.  If the @code{BEAMER_col}
9983 property is also set, something like @code{C[t]} can be added here as well to
9984 set an options argument for the implied @code{columns} environment.
9985 @code{c[t]} will set an option for the implied @code{column} environment.
9986 @item BEAMER_col
9987 The width of a column that should start with this entry.  If this property is
9988 set, the entry will also get a @code{:BMCOL:} property to make this visible.
9989 Also this tag is only a visual aid.  When this is a plain number, it will be
9990 interpreted as a fraction of @code{\textwidth}.  Otherwise it will be assumed
9991 that you have specified the units, like @samp{3cm}.  The first such property
9992 in a frame will start a @code{columns} environment to surround the columns.
9993 This environment is closed when an entry has a @code{BEAMER_col} property
9994 with value 0 or 1, or automatically at the end of the frame.
9995 @item BEAMER_extra
9996 Additional commands that should be inserted after the environment has been
9997 opened.  For example, when creating a frame, this can be used to specify
9998 transitions.
9999 @end table
10001 Frames will automatically receive a @code{fragile} option if they contain
10002 source code that uses the verbatim environment.  Special @file{beamer}
10003 specific code can be inserted using @code{#+BEAMER:} and
10004 @code{#+BEGIN_beamer...#+end_beamer} constructs, similar to other export
10005 backends, but with the difference that @code{#+LaTeX:} stuff will be included
10006 in the presentation as well.
10008 Outline nodes with @code{BEAMER_env} property value @samp{note} or
10009 @samp{noteNH} will be formatted as beamer notes, i,e, they will be wrapped
10010 into @code{\note@{...@}}.  The former will include the heading as part of the
10011 note text, the latter will ignore the heading of that node.  To simplify note
10012 generation, it is actually enough to mark the note with a @emph{tag} (either
10013 @code{:B_note:} or @code{:B_noteNH:}) instead of creating the
10014 @code{BEAMER_env} property.
10016 You can turn on a special minor mode @code{org-beamer-mode} for editing
10017 support with
10019 @example
10020 #+STARTUP: beamer
10021 @end example
10023 @table @kbd
10024 @kindex C-c C-b
10025 @item C-c C-b
10026 In @code{org-beamer-mode}, this key offers fast selection of a beamer
10027 environment or the @code{BEAMER_col} property.
10028 @end table
10030 Column view provides a great way to set the environment of a node and other
10031 important parameters.  Make sure you are using a COLUMN format that is geared
10032 toward this special purpose.  The command @kbd{M-x
10033 org-insert-beamer-options-template} defines such a format.
10035 Here is a simple example Org document that is intended for beamer export.
10037 @smallexample
10038 #+LaTeX_CLASS: beamer
10039 #+TITLE: Example Presentation
10040 #+AUTHOR: Carsten Dominik
10041 #+LaTeX_CLASS_OPTIONS: [presentation]
10042 #+BEAMER_FRAME_LEVEL: 2
10043 #+BEAMER_HEADER_EXTRA: \usetheme@{Madrid@}\usecolortheme@{default@}
10044 #+COLUMNS: %35ITEM %10BEAMER_env(Env) %10BEAMER_envargs(Args) %4BEAMER_col(Col) %8BEAMER_extra(Ex)
10046 * This is the first structural section
10048 ** Frame 1 \\ with a subtitle
10049 *** Thanks to Eric Fraga                                      :BMCOL:B_block:
10050     :PROPERTIES:
10051     :BEAMER_env: block
10052     :BEAMER_envargs: C[t]
10053     :BEAMER_col: 0.5
10054     :END:
10055     for the first viable beamer setup in Org
10056 *** Thanks to everyone else                                   :BMCOL:B_block:
10057     :PROPERTIES:
10058     :BEAMER_col: 0.5
10059     :BEAMER_env: block
10060     :BEAMER_envargs: <2->
10061     :END:
10062     for contributing to the discussion
10063 **** This will be formatted as a beamer note                  :B_note:
10064 ** Frame 2 \\ where we will not use columns
10065 *** Request                                                   :B_block:
10066     Please test this stuff!
10067     :PROPERTIES:
10068     :BEAMER_env: block
10069     :END:
10070 @end smallexample
10072 For more information, see the documentation on Worg.
10074 @node DocBook export, TaskJuggler export, LaTeX and PDF export, Exporting
10075 @section DocBook export
10076 @cindex DocBook export
10077 @cindex PDF export
10078 @cindex Cui, Baoqiu
10080 Org contains a DocBook exporter written by Baoqiu Cui.  Once an Org file is
10081 exported to DocBook format, it can be further processed to produce other
10082 formats, including PDF, HTML, man pages, etc., using many available DocBook
10083 tools and stylesheets.
10085 Currently DocBook exporter only supports DocBook V5.0.
10087 @menu
10088 * DocBook export commands::     How to invoke DocBook export
10089 * Quoting DocBook code::        Incorporating DocBook code in Org files
10090 * Recursive sections::          Recursive sections in DocBook
10091 * Tables in DocBook export::    Tables are exported as HTML tables
10092 * Images in DocBook export::    How to insert figures into DocBook output
10093 * Special characters::          How to handle special characters
10094 @end menu
10096 @node DocBook export commands, Quoting DocBook code, DocBook export, DocBook export
10097 @subsection DocBook export commands
10099 @cindex region, active
10100 @cindex active region
10101 @cindex transient-mark-mode
10102 @table @kbd
10103 @kindex C-c C-e D
10104 @item C-c C-e D
10105 @cindex property EXPORT_FILE_NAME
10106 Export as DocBook file.  For an Org file, @file{myfile.org}, the DocBook XML
10107 file will be @file{myfile.xml}.  The file will be overwritten without
10108 warning.  If there is an active region@footnote{This requires
10109 @code{transient-mark-mode} to be turned on}, only the region will be
10110 exported.  If the selected region is a single tree@footnote{To select the
10111 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
10112 title.  If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
10113 property, that name will be used for the export.
10114 @kindex C-c C-e V
10115 @item C-c C-e V
10116 Export as DocBook file, process to PDF, then open the resulting PDF file.
10118 @vindex org-export-docbook-xslt-proc-command
10119 @vindex org-export-docbook-xsl-fo-proc-command
10120 Note that, in order to produce PDF output based on exported DocBook file, you
10121 need to have XSLT processor and XSL-FO processor software installed on your
10122 system.  Check variables @code{org-export-docbook-xslt-proc-command} and
10123 @code{org-export-docbook-xsl-fo-proc-command}.
10125 @vindex org-export-docbook-xslt-stylesheet
10126 The stylesheet argument @code{%s} in variable
10127 @code{org-export-docbook-xslt-proc-command} is replaced by the value of
10128 variable @code{org-export-docbook-xslt-stylesheet}, which needs to be set by
10129 the user.  You can also overrule this global setting on a per-file basis by
10130 adding an in-buffer setting @code{#+XSLT:} to the Org file.
10132 @kindex C-c C-e v D
10133 @item C-c C-e v D
10134 Export only the visible part of the document.
10135 @end table
10137 @node Quoting DocBook code, Recursive sections, DocBook export commands, DocBook export
10138 @subsection Quoting DocBook code
10140 You can quote DocBook code in Org files and copy it verbatim into exported
10141 DocBook file with the following constructs:
10143 @cindex #+DOCBOOK
10144 @cindex #+BEGIN_DOCBOOK
10145 @example
10146 #+DOCBOOK: Literal DocBook code for export
10147 @end example
10149 @noindent or
10150 @cindex #+BEGIN_DOCBOOK
10152 @example
10153 #+BEGIN_DOCBOOK
10154 All lines between these markers are exported by DocBook exporter
10155 literally.
10156 #+END_DOCBOOK
10157 @end example
10159 For example, you can use the following lines to include a DocBook warning
10160 admonition.  As to what this warning says, you should pay attention to the
10161 document context when quoting DocBook code in Org files.  You may make
10162 exported DocBook XML files invalid by not quoting DocBook code correctly.
10164 @example
10165 #+BEGIN_DOCBOOK
10166 <warning>
10167   <para>You should know what you are doing when quoting DocBook XML code
10168   in your Org file.  Invalid DocBook XML file may be generated by
10169   DocBook exporter if you are not careful!</para>
10170 </warning>
10171 #+END_DOCBOOK
10172 @end example
10174 @node Recursive sections, Tables in DocBook export, Quoting DocBook code, DocBook export
10175 @subsection Recursive sections
10176 @cindex DocBook recursive sections
10178 DocBook exporter exports Org files as articles using the @code{article}
10179 element in DocBook.  Recursive sections, i.e. @code{section} elements, are
10180 used in exported articles.  Top level headlines in Org files are exported as
10181 top level sections, and lower level headlines are exported as nested
10182 sections.  The entire structure of Org files will be exported completely, no
10183 matter how many nested levels of headlines there are.
10185 Using recursive sections makes it easy to port and reuse exported DocBook
10186 code in other DocBook document types like @code{book} or @code{set}.
10188 @node Tables in DocBook export, Images in DocBook export, Recursive sections, DocBook export
10189 @subsection Tables in DocBook export
10190 @cindex tables, in DocBook export
10192 Tables in Org files are exported as HTML tables, which have been supported since
10193 DocBook V4.3.
10195 If a table does not have a caption, an informal table is generated using the
10196 @code{informaltable} element; otherwise, a formal table will be generated
10197 using the @code{table} element.
10199 @node Images in DocBook export, Special characters, Tables in DocBook export, DocBook export
10200 @subsection Images in DocBook export
10201 @cindex images, inline in DocBook
10202 @cindex inlining images in DocBook
10204 Images that are linked to without a description part in the link, like
10205 @samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]}, will be exported to DocBook
10206 using @code{mediaobject} elements.  Each @code{mediaobject} element contains
10207 an @code{imageobject} that wraps an @code{imagedata} element.  If you have
10208 specified a caption for an image as described in @ref{Images and tables}, a
10209 @code{caption} element will be added in @code{mediaobject}.  If a label is
10210 also specified, it will be exported as an @code{xml:id} attribute of the
10211 @code{mediaobject} element.
10213 @vindex org-export-docbook-default-image-attributes
10214 Image attributes supported by the @code{imagedata} element, like @code{align}
10215 or @code{width}, can be specified in two ways: you can either customize
10216 variable @code{org-export-docbook-default-image-attributes} or use the
10217 @code{#+ATTR_DOCBOOK:} line.  Attributes specified in variable
10218 @code{org-export-docbook-default-image-attributes} are applied to all inline
10219 images in the Org file to be exported (unless they are overridden by image
10220 attributes specified in @code{#+ATTR_DOCBOOK:} lines).
10222 The @code{#+ATTR_DOCBOOK:} line can be used to specify additional image
10223 attributes or override default image attributes for individual images.  If
10224 the same attribute appears in both the @code{#+ATTR_DOCBOOK:} line and
10225 variable @code{org-export-docbook-default-image-attributes}, the former
10226 takes precedence.  Here is an example about how image attributes can be
10227 set:
10229 @cindex #+CAPTION
10230 @cindex #+LABEL
10231 @cindex #+ATTR_DOCBOOK
10232 @example
10233 #+CAPTION:    The logo of Org-mode
10234 #+LABEL:      unicorn-svg
10235 #+ATTR_DOCBOOK: scalefit="1" width="100%" depth="100%"
10236 [[./img/org-mode-unicorn.svg]]
10237 @end example
10239 @vindex org-export-docbook-inline-image-extensions
10240 By default, DocBook exporter recognizes the following image file types:
10241 @file{jpeg}, @file{jpg}, @file{png}, @file{gif}, and @file{svg}.  You can
10242 customize variable @code{org-export-docbook-inline-image-extensions} to add
10243 more types to this list as long as DocBook supports them.
10245 @node Special characters,  , Images in DocBook export, DocBook export
10246 @subsection Special characters in DocBook export
10247 @cindex Special characters in DocBook export
10249 @vindex org-export-docbook-doctype
10250 @vindex org-entities
10251 Special characters that are written in @TeX{}-like syntax, such as @code{\alpha},
10252 @code{\Gamma}, and @code{\Zeta}, are supported by DocBook exporter.  These
10253 characters are rewritten to XML entities, like @code{&alpha;},
10254 @code{&Gamma;}, and @code{&Zeta;}, based on the list saved in variable
10255 @code{org-entities}.  As long as the generated DocBook file includes the
10256 corresponding entities, these special characters are recognized.
10258 You can customize variable @code{org-export-docbook-doctype} to include the
10259 entities you need.  For example, you can set variable
10260 @code{org-export-docbook-doctype} to the following value to recognize all
10261 special characters included in XHTML entities:
10263 @example
10264 "<!DOCTYPE article [
10265 <!ENTITY % xhtml1-symbol PUBLIC
10266 \"-//W3C//ENTITIES Symbol for HTML//EN//XML\"
10267 \"http://www.w3.org/2003/entities/2007/xhtml1-symbol.ent\"
10269 %xhtml1-symbol;
10272 @end example
10274 @node  TaskJuggler export, Freemind export, DocBook export, Exporting
10275 @section TaskJuggler export
10276 @cindex TaskJuggler export
10277 @cindex Project management
10279 @uref{http://www.taskjuggler.org/, TaskJuggler} is a project management tool.
10280 It provides an optimizing scheduler that computes your project time lines and
10281 resource assignments based on the project outline and the constraints that
10282 you have provided.
10284 The TaskJuggler exporter is a bit different from other exporters, such as the
10285 HTML and LaTeX exporters for example, in that it does not export all the
10286 nodes of a document or strictly follow the order of the nodes in the
10287 document.
10289 Instead the TaskJuggler exporter looks for a tree that defines the tasks and
10290 a optionally tree that defines the resources for this project. It then
10291 creates a TaskJuggler file based on these trees and the attributes defined in
10292 all the nodes.
10294 @subsection TaskJuggler export commands
10296 @table @kbd
10297 @kindex C-c C-e j
10298 @item C-c C-e j
10299 Export as TaskJuggler file.
10301 @kindex C-c C-e J
10302 @item C-c C-e J
10303 Export as TaskJuggler file and then open the file with TaskJugglerUI.
10304 @end table
10306 @subsection Tasks
10308 @vindex org-export-taskjuggler-project-tag
10309 Create your tasks as you usually do with Org-mode. Assign efforts to each
10310 task using properties (it's easiest to do this in the column view). You
10311 should end up with something similar to the example by Peter Jones in
10312 @url{http://www.contextualdevelopment.com/static/artifacts/articles/2008/project-planning/project-planning.org}.
10313 Now mark the top node of your tasks with a tag named
10314 @code{:taskjuggler_project:} (or whatever you customized
10315 @code{org-export-taskjuggler-project-tag} to). You are now ready to export
10316 the project plan with @kbd{C-c C-e J} which will export the project plan and
10317 open a gantt chart in TaskJugglerUI.
10319 @subsection Resources
10321 @vindex org-export-taskjuggler-resource-tag
10322 Next you can define resources and assign those to work on specific tasks. You
10323 can group your resources hierarchically. Tag the top node of the resources
10324 with @code{:taskjuggler_resource:} (or whatever you customized
10325 @code{org-export-taskjuggler-resource-tag} to). You can optionally assign an
10326 identifier (named @samp{resource_id}) to the resources (using the standard
10327 Org properties commands, @pxref{Property syntax}) or you can let the exporter
10328 generate identifiers automatically (the exporter picks the first word of the
10329 headline as the identifier as long as it is unique, see the documentation of
10330 @code{org-taskjuggler-get-unique-id}). Using that identifier you can then
10331 allocate resources to tasks. This is again done with the @samp{allocate}
10332 property on the tasks. Do this in column view or when on the task type
10333 @kbd{C-c C-x p allocate @key{RET} <resource_id> @key{RET}}.
10335 Once the allocations are done you can again export to TaskJuggler and check
10336 in the Resource Allocation Graph which person is working on what task at what
10337 time.
10339 @subsection Export of properties
10341 The exporter also takes TODO state information into consideration, i.e. if a
10342 task is marked as done it will have the corresponding attribute in
10343 TaskJuggler (@samp{complete 100}). Also it will export any property on a task
10344 resource or resource node which is known to TaskJuggler, such as
10345 @samp{limits}, @samp{vacation}, @samp{shift}, @samp{booking},
10346 @samp{efficiency}, @samp{journalentry}, @samp{rate} for resources or
10347 @samp{account}, @samp{start}, @samp{note}, @samp{duration}, @samp{end},
10348 @samp{journalentry}, @samp{milestone}, @samp{reference}, @samp{responsible},
10349 @samp{scheduling}, etc for tasks.
10351 @subsection Dependencies
10353 The exporter will handle dependencies that are defined in the tasks either
10354 with the @samp{ORDERED} attribute (@pxref{TODO dependencies}), with the
10355 @samp{BLOCKER} attribute (see org-depend.el) or alternatively with a
10356 @samp{depends} attribute. Both the @samp{BLOCKER} and the @samp{depends}
10357 attribute can be either @samp{previous-sibling} or a reference to an
10358 identifier (named @samp{task_id}) which is defined for another task in the
10359 project. @samp{BLOCKER} and the @samp{depends} attribute can define multiple
10360 dependencies separated by either space or comma. You can also specify
10361 optional attributes on the dependency by simply appending it. The following
10362 examples should illustrate this:
10364 @example
10365 * Preparation
10366   :PROPERTIES:
10367   :task_id:  preparation
10368   :ORDERED:  t
10369   :END:
10370 * Training material
10371   :PROPERTIES:
10372   :task_id:  training_material
10373   :ORDERED:  t
10374   :END:
10375 ** Markup Guidelines
10376    :PROPERTIES:
10377    :Effort:   2.0
10378    :END:
10379 ** Workflow Guidelines
10380    :PROPERTIES:
10381    :Effort:   2.0
10382    :END:
10383 * Presentation
10384   :PROPERTIES:
10385   :Effort:   2.0
10386   :BLOCKER:  training_material @{ gapduration 1d @} preparation
10387   :END:
10388 @end example
10390 @subsection Reports
10392 @vindex org-export-taskjuggler-default-reports
10393 TaskJuggler can produce many kinds of reports (e.g. gantt chart, resource
10394 allocation, etc). The user defines what kind of reports should be generated
10395 for a project in the TaskJuggler file. The exporter will automatically insert
10396 some default reports in the file. These defaults are defined in
10397 @code{org-export-taskjuggler-default-reports}. They can be modified using
10398 customize along with a number of other options. For a more complete list, see
10399 @kbd{M-x customize-group @key{RET} org-export-taskjuggler @key{RET}}.
10401 For more information and examples see the Org-taskjuggler tutorial at
10402 @uref{http://orgmode.org/worg/org-tutorials/org-taskjuggler.php}.
10404 @node Freemind export, XOXO export, TaskJuggler export, Exporting
10405 @section Freemind export
10406 @cindex Freemind export
10407 @cindex mind map
10409 The Freemind exporter was written by Lennart Borgman.
10411 @table @kbd
10412 @kindex C-c C-e m
10413 @item C-c C-e m
10414 Export as Freemind mind map @file{myfile.mm}.
10415 @end table
10417 @node XOXO export, iCalendar export, Freemind export, Exporting
10418 @section XOXO export
10419 @cindex XOXO export
10421 Org-mode contains an exporter that produces XOXO-style output.
10422 Currently, this exporter only handles the general outline structure and
10423 does not interpret any additional Org-mode features.
10425 @table @kbd
10426 @kindex C-c C-e x
10427 @item C-c C-e x
10428 Export as XOXO file @file{myfile.html}.
10429 @kindex C-c C-e v
10430 @item C-c C-e v x
10431 Export only the visible part of the document.
10432 @end table
10434 @node iCalendar export,  , XOXO export, Exporting
10435 @section iCalendar export
10436 @cindex iCalendar export
10438 @vindex org-icalendar-include-todo
10439 @vindex org-icalendar-use-deadline
10440 @vindex org-icalendar-use-scheduled
10441 @vindex org-icalendar-categories
10442 @vindex org-icalendar-alarm-time
10443 Some people use Org-mode for keeping track of projects, but still prefer a
10444 standard calendar application for anniversaries and appointments.  In this
10445 case it can be useful to show deadlines and other time-stamped items in Org
10446 files in the calendar application.  Org-mode can export calendar information
10447 in the standard iCalendar format.  If you also want to have TODO entries
10448 included in the export, configure the variable
10449 @code{org-icalendar-include-todo}.  Plain timestamps are exported as VEVENT,
10450 and TODO items as VTODO.  It will also create events from deadlines that are
10451 in non-TODO items.  Deadlines and scheduling dates in TODO items will be used
10452 to set the start and due dates for the TODO entry@footnote{See the variables
10453 @code{org-icalendar-use-deadline} and @code{org-icalendar-use-scheduled}.}.
10454 As categories, it will use the tags locally defined in the heading, and the
10455 file/tree category@footnote{To add inherited tags or the TODO state,
10456 configure the variable @code{org-icalendar-categories}.}.  See the variable
10457 @code{org-icalendar-alarm-time} for a way to assign alarms to entries with a
10458 time.
10460 @vindex org-icalendar-store-UID
10461 @cindex property, ID
10462 The iCalendar standard requires each entry to have a globally unique
10463 identifier (UID).  Org creates these identifiers during export.  If you set
10464 the variable @code{org-icalendar-store-UID}, the UID will be stored in the
10465 @code{:ID:} property of the entry and re-used next time you report this
10466 entry.  Since a single entry can give rise to multiple iCalendar entries (as
10467 a timestamp, a deadline, a scheduled item, and as a TODO item), Org adds
10468 prefixes to the UID, depending on what triggered the inclusion of the entry.
10469 In this way the UID remains unique, but a synchronization program can still
10470 figure out from which entry all the different instances originate.
10472 @table @kbd
10473 @kindex C-c C-e i
10474 @item C-c C-e i
10475 Create iCalendar entries for the current file and store them in the same
10476 directory, using a file extension @file{.ics}.
10477 @kindex C-c C-e I
10478 @item C-c C-e I
10479 @vindex org-agenda-files
10480 Like @kbd{C-c C-e i}, but do this for all files in
10481 @code{org-agenda-files}.  For each of these files, a separate iCalendar
10482 file will be written.
10483 @kindex C-c C-e c
10484 @item C-c C-e c
10485 @vindex org-combined-agenda-icalendar-file
10486 Create a single large iCalendar file from all files in
10487 @code{org-agenda-files} and write it to the file given by
10488 @code{org-combined-agenda-icalendar-file}.
10489 @end table
10491 @vindex org-use-property-inheritance
10492 @vindex org-icalendar-include-body
10493 @cindex property, SUMMARY
10494 @cindex property, DESCRIPTION
10495 @cindex property, LOCATION
10496 The export will honor SUMMARY, DESCRIPTION and LOCATION@footnote{The LOCATION
10497 property can be inherited from higher in the hierarchy if you configure
10498 @code{org-use-property-inheritance} accordingly.} properties if the selected
10499 entries have them.  If not, the summary will be derived from the headline,
10500 and the description from the body (limited to
10501 @code{org-icalendar-include-body} characters).
10503 How this calendar is best read and updated, depends on the application
10504 you are using.  The FAQ covers this issue.
10506 @node Publishing, Working With Source Code, Exporting, Top
10507 @chapter Publishing
10508 @cindex publishing
10510 Org includes a publishing management system that allows you to configure
10511 automatic HTML conversion of @emph{projects} composed of interlinked org
10512 files.  You can also configure Org to automatically upload your exported HTML
10513 pages and related attachments, such as images and source code files, to a web
10514 server.
10516 You can also use Org to convert files into PDF, or even combine HTML and PDF
10517 conversion so that files are available in both formats on the server.
10519 Publishing has been contributed to Org by David O'Toole.
10521 @menu
10522 * Configuration::               Defining projects
10523 * Uploading files::             How to get files up on the server
10524 * Sample configuration::        Example projects
10525 * Triggering publication::      Publication commands
10526 @end menu
10528 @node Configuration, Uploading files, Publishing, Publishing
10529 @section Configuration
10531 Publishing needs significant configuration to specify files, destination
10532 and many other properties of a project.
10534 @menu
10535 * Project alist::               The central configuration variable
10536 * Sources and destinations::    From here to there
10537 * Selecting files::             What files are part of the project?
10538 * Publishing action::           Setting the function doing the publishing
10539 * Publishing options::          Tweaking HTML export
10540 * Publishing links::            Which links keep working after publishing?
10541 * Sitemap::                     Generating a list of all pages
10542 * Generating an index::         An index that reaches across pages
10543 @end menu
10545 @node Project alist, Sources and destinations, Configuration, Configuration
10546 @subsection The variable @code{org-publish-project-alist}
10547 @cindex org-publish-project-alist
10548 @cindex projects, for publishing
10550 @vindex org-publish-project-alist
10551 Publishing is configured almost entirely through setting the value of one
10552 variable, called @code{org-publish-project-alist}.  Each element of the list
10553 configures one project, and may be in one of the two following forms:
10555 @lisp
10556    ("project-name" :property value :property value ...)
10557 @r{or}
10558    ("project-name" :components ("project-name" "project-name" ...))
10560 @end lisp
10562 In both cases, projects are configured by specifying property values.  A
10563 project defines the set of files that will be published, as well as the
10564 publishing configuration to use when publishing those files.  When a project
10565 takes the second form listed above, the individual members of the
10566 @code{:components} property are taken to be sub-projects, which group
10567 together files requiring different publishing options.  When you publish such
10568 a ``meta-project'', all the components will also be published, in the
10569 sequence given.
10571 @node Sources and destinations, Selecting files, Project alist, Configuration
10572 @subsection Sources and destinations for files
10573 @cindex directories, for publishing
10575 Most properties are optional, but some should always be set.  In
10576 particular, Org needs to know where to look for source files,
10577 and where to put published files.
10579 @multitable @columnfractions 0.3 0.7
10580 @item @code{:base-directory}
10581 @tab Directory containing publishing source files
10582 @item @code{:publishing-directory}
10583 @tab Directory where output files will be published.  You can directly
10584 publish to a webserver using a file name syntax appropriate for
10585 the Emacs @file{tramp} package.  Or you can publish to a local directory and
10586 use external tools to upload your website (@pxref{Uploading files}).
10587 @item @code{:preparation-function}
10588 @tab Function or list of functions to be called before starting the
10589 publishing process, for example, to run @code{make} for updating files to be
10590 published.  The project property list is scoped into this call as the
10591 variable @code{project-plist}.
10592 @item @code{:completion-function}
10593 @tab Function or list of functions called after finishing the publishing
10594 process, for example, to change permissions of the resulting files.  The
10595 project property list is scoped into this call as the variable
10596 @code{project-plist}.
10597 @end multitable
10598 @noindent
10600 @node Selecting files, Publishing action, Sources and destinations, Configuration
10601 @subsection Selecting files
10602 @cindex files, selecting for publishing
10604 By default, all files with extension @file{.org} in the base directory
10605 are considered part of the project.  This can be modified by setting the
10606 properties
10607 @multitable @columnfractions 0.25 0.75
10608 @item @code{:base-extension}
10609 @tab Extension (without the dot!) of source files.  This actually is a
10610 regular expression.  Set this to the symbol @code{any} if you want to get all
10611 files in @code{:base-directory}, even without extension.
10613 @item @code{:exclude}
10614 @tab Regular expression to match file names that should not be
10615 published, even though they have been selected on the basis of their
10616 extension.
10618 @item @code{:include}
10619 @tab List of files to be included regardless of @code{:base-extension}
10620 and @code{:exclude}.
10621 @end multitable
10623 @node Publishing action, Publishing options, Selecting files, Configuration
10624 @subsection Publishing action
10625 @cindex action, for publishing
10627 Publishing means that a file is copied to the destination directory and
10628 possibly transformed in the process.  The default transformation is to export
10629 Org files as HTML files, and this is done by the function
10630 @code{org-publish-org-to-html} which calls the HTML exporter (@pxref{HTML
10631 export}).  But you also can publish your content as PDF files using
10632 @code{org-publish-org-to-pdf}.  If you want to publish the Org file itself,
10633 but with @i{archived}, @i{commented}, and @i{tag-excluded} trees removed, use
10634 @code{org-publish-org-to-org} and set the parameters @code{:plain-source}
10635 and/or @code{:htmlized-source}.  This will produce @file{file.org} and
10636 @file{file.org.html} in the publishing
10637 directory@footnote{@file{file-source.org} and @file{file-source.org.html} if
10638 source and publishing directories are equal.  Note that with this kind of
10639 setup, you need to add @code{:exclude "-source\\.org"} to the project
10640 definition in @code{org-publish-project-alist} to avoid that the published
10641 source files will be considered as new org files the next time the project is
10642 published.}.  Other files like images only
10643 need to be copied to the publishing destination, for this you may use
10644 @code{org-publish-attachment}.  For non-Org files, you always need to
10645 specify the publishing function:
10647 @multitable @columnfractions 0.3 0.7
10648 @item @code{:publishing-function}
10649 @tab Function executing the publication of a file.  This may also be a
10650 list of functions, which will all be called in turn.
10651 @item @code{:plain-source}
10652 @tab Non-nil means, publish plain source.
10653 @item @code{:htmlized-source}
10654 @tab Non-nil means, publish htmlized source.
10655 @end multitable
10657 The function must accept three arguments: a property list containing at least
10658 a @code{:publishing-directory} property, the name of the file to be
10659 published, and the path to the publishing directory of the output file.  It
10660 should take the specified file, make the necessary transformation (if any)
10661 and place the result into the destination folder.
10663 @node Publishing options, Publishing links, Publishing action, Configuration
10664 @subsection Options for the HTML/La@TeX{} exporters
10665 @cindex options, for publishing
10667 The property list can be used to set many export options for the HTML
10668 and La@TeX{} exporters.  In most cases, these properties correspond to user
10669 variables in Org.  The table below lists these properties along
10670 with the variable they belong to.  See the documentation string for the
10671 respective variable for details.
10673 @vindex org-export-html-link-up
10674 @vindex org-export-html-link-home
10675 @vindex org-export-default-language
10676 @vindex org-display-custom-times
10677 @vindex org-export-headline-levels
10678 @vindex org-export-with-section-numbers
10679 @vindex org-export-section-number-format
10680 @vindex org-export-with-toc
10681 @vindex org-export-preserve-breaks
10682 @vindex org-export-with-archived-trees
10683 @vindex org-export-with-emphasize
10684 @vindex org-export-with-sub-superscripts
10685 @vindex org-export-with-special-strings
10686 @vindex org-export-with-footnotes
10687 @vindex org-export-with-drawers
10688 @vindex org-export-with-tags
10689 @vindex org-export-with-todo-keywords
10690 @vindex org-export-with-priority
10691 @vindex org-export-with-TeX-macros
10692 @vindex org-export-with-LaTeX-fragments
10693 @vindex org-export-skip-text-before-1st-heading
10694 @vindex org-export-with-fixed-width
10695 @vindex org-export-with-timestamps
10696 @vindex org-export-author-info
10697 @vindex org-export-email
10698 @vindex org-export-creator-info
10699 @vindex org-export-with-tables
10700 @vindex org-export-highlight-first-table-line
10701 @vindex org-export-html-style-include-default
10702 @vindex org-export-html-style
10703 @vindex org-export-html-style-extra
10704 @vindex org-export-html-link-org-files-as-html
10705 @vindex org-export-html-inline-images
10706 @vindex org-export-html-extension
10707 @vindex org-export-html-table-tag
10708 @vindex org-export-html-expand
10709 @vindex org-export-html-with-timestamp
10710 @vindex org-export-publishing-directory
10711 @vindex org-export-html-preamble
10712 @vindex org-export-html-postamble
10713 @vindex org-export-html-auto-preamble
10714 @vindex org-export-html-auto-postamble
10715 @vindex user-full-name
10716 @vindex user-mail-address
10717 @vindex org-export-select-tags
10718 @vindex org-export-exclude-tags
10720 @multitable @columnfractions 0.32 0.68
10721 @item @code{:link-up}               @tab @code{org-export-html-link-up}
10722 @item @code{:link-home}             @tab @code{org-export-html-link-home}
10723 @item @code{:language}              @tab @code{org-export-default-language}
10724 @item @code{:customtime}            @tab @code{org-display-custom-times}
10725 @item @code{:headline-levels}       @tab @code{org-export-headline-levels}
10726 @item @code{:section-numbers}       @tab @code{org-export-with-section-numbers}
10727 @item @code{:section-number-format} @tab @code{org-export-section-number-format}
10728 @item @code{:table-of-contents}     @tab @code{org-export-with-toc}
10729 @item @code{:preserve-breaks}       @tab @code{org-export-preserve-breaks}
10730 @item @code{:archived-trees}        @tab @code{org-export-with-archived-trees}
10731 @item @code{:emphasize}             @tab @code{org-export-with-emphasize}
10732 @item @code{:sub-superscript}       @tab @code{org-export-with-sub-superscripts}
10733 @item @code{:special-strings}       @tab @code{org-export-with-special-strings}
10734 @item @code{:footnotes}             @tab @code{org-export-with-footnotes}
10735 @item @code{:drawers}               @tab @code{org-export-with-drawers}
10736 @item @code{:tags}                  @tab @code{org-export-with-tags}
10737 @item @code{:todo-keywords}         @tab @code{org-export-with-todo-keywords}
10738 @item @code{:priority}              @tab @code{org-export-with-priority}
10739 @item @code{:TeX-macros}            @tab @code{org-export-with-TeX-macros}
10740 @item @code{:LaTeX-fragments}       @tab @code{org-export-with-LaTeX-fragments}
10741 @item @code{:latex-listings}        @tab @code{org-export-latex-listings}
10742 @item @code{:skip-before-1st-heading} @tab @code{org-export-skip-text-before-1st-heading}
10743 @item @code{:fixed-width}           @tab @code{org-export-with-fixed-width}
10744 @item @code{:timestamps}            @tab @code{org-export-with-timestamps}
10745 @item @code{:author-info}           @tab @code{org-export-author-info}
10746 @item @code{:email-info}            @tab @code{org-export-email-info}
10747 @item @code{:creator-info}          @tab @code{org-export-creator-info}
10748 @item @code{:tables}                @tab @code{org-export-with-tables}
10749 @item @code{:table-auto-headline}   @tab @code{org-export-highlight-first-table-line}
10750 @item @code{:style-include-default} @tab @code{org-export-html-style-include-default}
10751 @item @code{:style}                 @tab @code{org-export-html-style}
10752 @item @code{:style-extra}           @tab @code{org-export-html-style-extra}
10753 @item @code{:convert-org-links}     @tab @code{org-export-html-link-org-files-as-html}
10754 @item @code{:inline-images}         @tab @code{org-export-html-inline-images}
10755 @item @code{:html-extension}        @tab @code{org-export-html-extension}
10756 @item @code{:xml-declaration}       @tab @code{org-export-html-xml-declaration}
10757 @item @code{:html-table-tag}        @tab @code{org-export-html-table-tag}
10758 @item @code{:expand-quoted-html}    @tab @code{org-export-html-expand}
10759 @item @code{:timestamp}             @tab @code{org-export-html-with-timestamp}
10760 @item @code{:publishing-directory}  @tab @code{org-export-publishing-directory}
10761 @item @code{:preamble}              @tab @code{org-export-html-preamble}
10762 @item @code{:postamble}             @tab @code{org-export-html-postamble}
10763 @item @code{:auto-preamble}         @tab @code{org-export-html-auto-preamble}
10764 @item @code{:auto-postamble}        @tab @code{org-export-html-auto-postamble}
10765 @item @code{:author}                @tab @code{user-full-name}
10766 @item @code{:email}                 @tab @code{user-mail-address} : @code{addr;addr;..}
10767 @item @code{:select-tags}           @tab @code{org-export-select-tags}
10768 @item @code{:exclude-tags}          @tab @code{org-export-exclude-tags}
10769 @item @code{:latex-image-options}   @tab @code{org-export-latex-image-default-option}
10770 @end multitable
10772 Most of the @code{org-export-with-*} variables have the same effect in
10773 both HTML and La@TeX{} exporters, except for @code{:TeX-macros} and
10774 @code{:LaTeX-fragments}, respectively @code{nil} and @code{t} in the
10775 La@TeX{} export.
10777 @vindex org-publish-project-alist
10778 When a property is given a value in @code{org-publish-project-alist},
10779 its setting overrides the value of the corresponding user variable (if
10780 any) during publishing.  Options set within a file (@pxref{Export
10781 options}), however, override everything.
10783 @node Publishing links, Sitemap, Publishing options, Configuration
10784 @subsection Links between published files
10785 @cindex links, publishing
10787 To create a link from one Org file to another, you would use
10788 something like @samp{[[file:foo.org][The foo]]} or simply
10789 @samp{file:foo.org.} (@pxref{Hyperlinks}).  When published, this link
10790 becomes a link to @file{foo.html}.  In this way, you can interlink the
10791 pages of your "org web" project and the links will work as expected when
10792 you publish them to HTML.  If you also publish the Org source file and want
10793 to link to that, use an @code{http:} link instead of a @code{file:} link,
10794 because @code{file:} links are converted to link to the corresponding
10795 @file{html} file.
10797 You may also link to related files, such as images. Provided you are careful
10798 with relative file names, and provided you have also configured Org to upload
10799 the related files, these links will work too. See @ref{Complex example}, for
10800 an example of this usage.
10802 Sometimes an Org file to be published may contain links that are
10803 only valid in your production environment, but not in the publishing
10804 location.  In this case, use the property
10806 @multitable @columnfractions 0.4 0.6
10807 @item @code{:link-validation-function}
10808 @tab Function to validate links
10809 @end multitable
10811 @noindent
10812 to define a function for checking link validity.  This function must
10813 accept two arguments, the file name and a directory relative to which
10814 the file name is interpreted in the production environment.  If this
10815 function returns @code{nil}, then the HTML generator will only insert a
10816 description into the HTML file, but no link.  One option for this
10817 function is @code{org-publish-validate-link} which checks if the given
10818 file is part of any project in @code{org-publish-project-alist}.
10820 @node Sitemap, Generating an index, Publishing links, Configuration
10821 @subsection Generating a sitemap
10822 @cindex sitemap, of published pages
10824 The following properties may be used to control publishing of
10825 a map of files for a given project.
10827 @multitable @columnfractions 0.35 0.65
10828 @item @code{:auto-sitemap}
10829 @tab When non-nil, publish a sitemap during @code{org-publish-current-project}
10830 or @code{org-publish-all}.
10832 @item @code{:sitemap-filename}
10833 @tab Filename for output of sitemap. Defaults to @file{sitemap.org} (which
10834 becomes @file{sitemap.html}).
10836 @item @code{:sitemap-title}
10837 @tab Title of sitemap page. Defaults to name of file.
10839 @item @code{:sitemap-function}
10840 @tab Plug-in function to use for generation of the sitemap.
10841 Defaults to @code{org-publish-org-sitemap}, which generates a plain list
10842 of links to all files in the project.
10844 @item @code{:sitemap-sort-folders}
10845 @tab Where folders should appear in the sitemap.  Set this to @code{first}
10846 (default) or @code{last} to display folders first or last,
10847 respectively.  Any other value will mix files and folders.
10849 @item @code{:sitemap-alphabetically}
10850 @tab The site map is normally sorted alphabetically.  Set this explicitly to
10851 @code{nil} to turn off sorting.
10853 @item @code{:sitemap-ignore-case}
10854 @tab Should sorting be case-sensitive?  Default @code{nil}.
10856 @end multitable
10858 @node Generating an index,  , Sitemap, Configuration
10859 @subsection Generating an index
10860 @cindex index, in a publishing project
10862 Org-mode can generate an index across the files of a publishing project.
10864 @multitable @columnfractions 0.25 0.75
10865 @item @code{:makeindex}
10866 @tab When non-nil, generate in index in the file @file{theindex.org} and
10867 publish it as @file{theindex.html}.
10868 @end multitable
10870 The file will be create when first publishing a project with the
10871 @code{:makeindex} set.  The file only contains a statement @code{#+include:
10872 "theindex.inc"}.  You can then built around this include statement by adding
10873 a title, style information etc.
10875 @node Uploading files, Sample configuration, Configuration, Publishing
10876 @section Uploading files
10877 @cindex rsync
10878 @cindex unison
10880 For those people already utilizing third party sync tools such as
10881 @command{rsync} or @command{unison}, it might be preferable not to use the built in
10882 @i{remote} publishing facilities of Org-mode which rely heavily on
10883 Tramp.  Tramp, while very useful and powerful, tends not to be
10884 so efficient for multiple file transfer and has been known to cause problems
10885 under heavy usage.
10887 Specialized synchronization utilities offer several advantages.  In addition
10888 to timestamp comparison, they also do content and permissions/attribute
10889 checks.  For this reason you might prefer to publish your web to a local
10890 directory (possibly even @i{in place} with your Org files) and then use
10891 @file{unison} or @file{rsync} to do the synchronization with the remote host.
10893 Since Unison (for example) can be configured as to which files to transfer to
10894 a certain remote destination, it can greatly simplify the project publishing
10895 definition.  Simply keep all files in the correct location, process your Org
10896 files with @code{org-publish} and let the synchronization tool do the rest.
10897 You do not need, in this scenario, to include attachments such as @file{jpg},
10898 @file{css} or @file{gif} files in the project definition since the 3rd party
10899 tool syncs them.
10901 Publishing to a local directory is also much faster than to a remote one, so
10902 that you can afford more easily to republish entire projects.  If you set
10903 @code{org-publish-use-timestamps-flag} to @code{nil}, you gain the main
10904 benefit of re-including any changed external files such as source example
10905 files you might include with @code{#+INCLUDE}.  The timestamp mechanism in
10906 Org is not smart enough to detect if included files have been modified.
10908 @node Sample configuration, Triggering publication, Uploading files, Publishing
10909 @section Sample configuration
10911 Below we provide two example configurations.  The first one is a simple
10912 project publishing only a set of Org files.  The second example is
10913 more complex, with a multi-component project.
10915 @menu
10916 * Simple example::              One-component publishing
10917 * Complex example::             A multi-component publishing example
10918 @end menu
10920 @node Simple example, Complex example, Sample configuration, Sample configuration
10921 @subsection Example: simple publishing configuration
10923 This example publishes a set of Org files to the @file{public_html}
10924 directory on the local machine.
10926 @lisp
10927 (setq org-publish-project-alist
10928       '(("org"
10929          :base-directory "~/org/"
10930          :publishing-directory "~/public_html"
10931          :section-numbers nil
10932          :table-of-contents nil
10933          :style "<link rel=\"stylesheet\"
10934                 href=\"../other/mystyle.css\"
10935                 type=\"text/css\"/>")))
10936 @end lisp
10938 @node Complex example,  , Simple example, Sample configuration
10939 @subsection Example: complex publishing configuration
10941 This more complicated example publishes an entire website, including
10942 Org files converted to HTML, image files, Emacs Lisp source code, and
10943 style sheets. The publishing directory is remote and private files are
10944 excluded.
10946 To ensure that links are preserved, care should be taken to replicate
10947 your directory structure on the web server, and to use relative file
10948 paths. For example, if your Org files are kept in @file{~/org} and your
10949 publishable images in @file{~/images}, you would link to an image with
10951 @example
10952 file:../images/myimage.png
10953 @end example
10955 On the web server, the relative path to the image should be the
10956 same. You can accomplish this by setting up an "images" folder in the
10957 right place on the web server, and publishing images to it.
10959 @lisp
10960 (setq org-publish-project-alist
10961       '(("orgfiles"
10962           :base-directory "~/org/"
10963           :base-extension "org"
10964           :publishing-directory "/ssh:user@@host:~/html/notebook/"
10965           :publishing-function org-publish-org-to-html
10966           :exclude "PrivatePage.org"   ;; regexp
10967           :headline-levels 3
10968           :section-numbers nil
10969           :table-of-contents nil
10970           :style "<link rel=\"stylesheet\"
10971                   href=\"../other/mystyle.css\" type=\"text/css\"/>"
10972           :auto-preamble t
10973           :auto-postamble nil)
10975          ("images"
10976           :base-directory "~/images/"
10977           :base-extension "jpg\\|gif\\|png"
10978           :publishing-directory "/ssh:user@@host:~/html/images/"
10979           :publishing-function org-publish-attachment)
10981          ("other"
10982           :base-directory "~/other/"
10983           :base-extension "css\\|el"
10984           :publishing-directory "/ssh:user@@host:~/html/other/"
10985           :publishing-function org-publish-attachment)
10986          ("website" :components ("orgfiles" "images" "other"))))
10987 @end lisp
10989 @node Triggering publication,  , Sample configuration, Publishing
10990 @section Triggering publication
10992 Once properly configured, Org can publish with the following commands:
10994 @table @kbd
10995 @kindex C-c C-e C
10996 @item C-c C-e C
10997 Prompt for a specific project and publish all files that belong to it.
10998 @kindex C-c C-e P
10999 @item C-c C-e P
11000 Publish the project containing the current file.
11001 @kindex C-c C-e F
11002 @item C-c C-e F
11003 Publish only the current file.
11004 @kindex C-c C-e E
11005 @item C-c C-e E
11006 Publish every project.
11007 @end table
11009 @vindex org-publish-use-timestamps-flag
11010 Org uses timestamps to track when a file has changed. The above functions
11011 normally only publish changed files. You can override this and force
11012 publishing of all files by giving a prefix argument to any of the commands
11013 above, or by customizing the variable @code{org-publish-use-timestamps-flag}.
11014 This may be necessary in particular if files include other files via
11015 @code{#+SETUPFILE:} or @code{#+INCLUDE:}.
11017 @comment  node-name,  next,  previous,  up
11018 @comment Working With Source Code, Miscellaneous, Publishing, Top
11020 @node Working With Source Code, Miscellaneous, Publishing, Top
11021 @chapter Working with source code
11022 @cindex Schulte, Eric
11023 @cindex Davison, Dan
11024 @cindex source code, working with
11026 Source code can be included in Org-mode documents using a @samp{src} block,
11027 e.g.
11029 @example
11030 #+BEGIN_SRC emacs-lisp
11031   (defun org-xor (a b)
11032      "Exclusive or."
11033      (if a (not b) b))
11034 #+END_SRC
11035 @end example
11037 Org-mode provides a number of features for working with live source code,
11038 including editing of code blocks in their native major-mode, evaluation of
11039 code blocks, tangling of code blocks, and exporting code blocks and their
11040 results in several formats.  This functionality was contributed by Eric
11041 Schulte and Dan Davison, and was originally named Org-babel.
11043 The following sections describe Org-mode's code block handling facilities.
11045 @menu
11046 * Structure of code blocks::    Code block syntax described
11047 * Editing source code::         Language major-mode editing
11048 * Exporting code blocks::       Export contents and/or results
11049 * Extracting source code::      Create pure source code files
11050 * Evaluating code blocks::      Place results of evaluation in the Org-mode buffer
11051 * Library of Babel::            Use and contribute to a library of useful code blocks
11052 * Languages::                   List of supported code block languages
11053 * Header arguments::            Configure code block functionality
11054 * Results of evaluation::       How evaluation results are handled
11055 * Noweb reference syntax::      Literate programming in Org-mode
11056 * Key bindings and useful functions::  Work quickly with code blocks
11057 * Batch execution::             Call functions from the command line
11058 @end menu
11060 @comment  node-name,  next,  previous,  up
11061 @comment  Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
11063 @node Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
11064 @section Structure of code blocks
11065 @cindex code block, structure
11066 @cindex source code, block structure
11068 The structure of code blocks is as follows:
11070 @example
11071 #+srcname: <name>
11072 #+begin_src <language> <switches> <header arguments>
11073   <body>
11074 #+end_src
11075 @end example
11077 @table @code
11078 @item <name>
11079 This name is associated with the code block.  This is similar to the
11080 @samp{#+tblname} lines that can be used to name tables in Org-mode files.
11081 Referencing the name of a code block makes it possible to evaluate the
11082 block from other places in the file, other files, or from Org-mode table
11083 formulas (see @ref{The spreadsheet}).
11084 @item <language>
11085 The language of the code in the block.
11086 @item <switches>
11087 Switches controlling exportation of the code block (see switches discussion in
11088 @ref{Literal examples})
11089 @item <header arguments>
11090 Optional header arguments control many aspects of evaluation, export and
11091 tangling of code blocks. See the @ref{Header arguments}
11092 section. Header arguments can also be set on a per-buffer or per-subtree
11093 basis using properties.
11094 @item <body>
11095 The source code.
11096 @end table
11098 @comment  node-name,  next,  previous,  up
11099 @comment  Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
11101 @node Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
11102 @section Editing source code
11103 @cindex code block, editing
11104 @cindex source code, editing
11106 @kindex C-c '
11107 Use @kbd{C-c '} to edit the current code block. This brings up
11108 a language major-mode edit buffer containing the body of the code
11109 block. Saving this buffer will write the new contents back to the Org
11110 buffer. Use @kbd{C-c '} again to exit.
11112 The @code{org-src-mode} minor mode will be active in the edit buffer. The
11113 following variables can be used to configure the behavior of the edit
11114 buffer. See also the customization group @code{org-edit-structure} for
11115 further configuration options.
11117 @table @code
11118 @item org-src-lang-modes
11119 If an Emacs major-mode named @code{<lang>-mode} exists, where
11120 @code{<lang>} is the language named in the header line of the code block,
11121 then the edit buffer will be placed in that major-mode. This variable
11122 can be used to map arbitrary language names to existing major modes.
11123 @item org-src-window-setup
11124 Controls the way Emacs windows are rearranged when the edit buffer is created.
11125 @item org-src-preserve-indentation
11126 This variable is especially useful for tangling languages such as
11127 python, in which whitespace indentation in the output is critical.
11128 @item org-src-ask-before-returning-to-edit-buffer
11129 By default, Org will ask before returning to an open edit buffer. Set
11130 this variable to nil to switch without asking.
11131 @end table
11133 @comment  node-name,  next,  previous,  up
11134 @comment  Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
11136 @node Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
11137 @section Exporting code blocks
11138 @cindex code block, exporting
11139 @cindex source code, exporting
11141 It is possible to export the @emph{contents} of code blocks, the
11142 @emph{results} of code block evaluation, @emph{neither}, or @emph{both}.  For
11143 most languages, the default exports the contents of code blocks. However, for
11144 some languages (e.g. @code{ditaa}) the default exports the results of code
11145 block evaluation.  For information on exporting code block bodies, see
11146 @ref{Literal examples}.
11148 The @code{:exports} header argument can be used to specify export
11149 behavior:
11151 @subsubheading Header arguments:
11152 @table @code
11153 @item :exports code
11154 The default in most languages. The body of the code block is exported, as
11155 described in @ref{Literal examples}.
11156 @item :exports results
11157 The code block will be evaluated and the results will be placed in the
11158 Org-mode buffer for export, either updating previous results of the code
11159 block located anywhere in the buffer or, if no previous results exist,
11160 placing the results immediately after the code block.  The body of the code
11161 block will not be exported.
11162 @item :exports both
11163 Both the code block and its results will be exported.
11164 @item :exports none
11165 Neither the code block nor its results will be exported.
11166 @end table
11168 It is possible to inhibit the evaluation of code blocks during export.
11169 Setting the the @code{org-export-babel-evaluate} variable to @code{nil} will
11170 ensure that no code blocks are evaluated as part of the export process.  This
11171 can be useful in situations where potentially untrusted Org-mode files are
11172 exported in an automated fashion, for example when Org-mode is used as the
11173 markup language for a wiki.
11175 @comment  node-name,  next,  previous,  up
11176 @comment  Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
11177 @node Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
11178 @section Extracting source code
11179 @cindex source code, extracting
11180 @cindex code block, extracting source code
11182 Creating pure source code files by extracting code from source blocks is
11183 referred to as ``tangling''---a term adopted from the literate programming
11184 community.  During ``tangling'' of code blocks their bodies are expanded
11185 using @code{org-babel-expand-src-block} which can expand both variable and
11186 ``noweb'' style references  (see @ref{Noweb reference syntax}).
11188 @subsubheading Header arguments
11189 @table @code
11190 @item :tangle no
11191 The default.  The code block is not included in the tangled output.
11192 @item :tangle yes
11193 Include the code block in the tangled output. The output file name is the
11194 name of the org file with the extension @samp{.org} replaced by the extension
11195 for the block language.
11196 @item :tangle filename
11197 Include the code block in the tangled output to file @samp{filename}.
11198 @end table
11200 @kindex  C-c C-v t
11201 @subsubheading Functions
11202 @table @code
11203 @item org-babel-tangle @kbd{C-c C-v t}
11204 Tangle the current file.
11205 @item org-babel-tangle-file
11206 Choose a file to tangle.
11207 @end table
11209 @subsubheading Hooks
11210 @table @code
11211 @item org-babel-post-tangle-hook
11212 This hook is run from within code files tangled by @code{org-babel-tangle}.
11213 Example applications could include post-processing, compilation or evaluation
11214 of tangled code files.
11215 @end table
11217 @node Evaluating code blocks, Library of Babel, Extracting source code, Working With Source Code
11218 @section Evaluating code blocks
11219 @cindex code block, evaluating
11220 @cindex source code, evaluating
11222 Code blocks can be evaluated@footnote{Whenever code is evaluated there is a
11223 potential for that code to do harm.  Org-mode provides a number of safeguards
11224 to ensure that it only evaluates code with explicit confirmation from the
11225 user.  For information on these safeguards (and on how to disable them) see
11226 @ref{Code evaluation security}.} and the results placed in the Org-mode
11227 buffer.  By default, evaluation is only turned on for @code{emacs-lisp} code
11228 blocks, however support exists for evaluating blocks in many languages.  See
11229 @ref{Languages} for a list of supported languages.  See @ref{Structure of
11230 code blocks} for information on the syntax used to define a code block.
11232 @kindex C-c C-c
11233 There are a number of ways to evaluate code blocks.  The simplest is to press
11234 @kbd{C-c C-c} or @kbd{C-c C-v e} with the point on a code block@footnote{The
11235 @code{org-babel-no-eval-on-ctrl-c-ctrl-c} variable can be used to remove code
11236 evaluation from the @kbd{C-c C-c} key binding.}.  This will call the
11237 @code{org-babel-execute-src-block} function to evaluate the block and insert
11238 its results into the Org-mode buffer.
11240 It is also possible to evaluate named code blocks from anywhere in an
11241 Org-mode buffer or an Org-mode table.  @code{#+call} (or synonymously
11242 @code{#+function} or @code{#+lob}) lines can be used to remotely execute code
11243 blocks located in the current Org-mode buffer or in the ``Library of Babel''
11244 (see @ref{Library of Babel}).  These lines use the following syntax.
11246 @example
11247 #+call: <name>(<arguments>) <header arguments>
11248 #+function: <name>(<arguments>) <header arguments>
11249 #+lob: <name>(<arguments>) <header arguments>
11250 @end example
11252 @table @code
11253 @item <name>
11254 The name of the code block to be evaluated.
11255 @item <arguments>
11256 Arguments specified in this section will be passed to the code block.
11257 @item <header arguments>
11258 Header arguments can be placed after the function invocation.  See
11259 @ref{Header arguments} for more information on header arguments.
11260 @end table
11263 @node Library of Babel, Languages, Evaluating code blocks, Working With Source Code
11264 @section Library of Babel
11265 @cindex babel, library of
11266 @cindex source code, library
11267 @cindex code block, library
11269 The ``Library of Babel'' is a library of code blocks
11270 that can be called from any Org-mode file.  The library is housed in an
11271 Org-mode file located in the @samp{contrib} directory of Org-mode.
11272 Org-mode users can deposit functions they believe to be generally
11273 useful in the library.
11275 Code blocks defined in the ``Library of Babel'' can be called remotely as if
11276 they were in the current Org-mode buffer (see @ref{Evaluating code blocks}
11277 for information on the syntax of remote code block evaluation).
11279 @kindex C-c C-v l
11280 Code blocks located in any Org-mode file can be loaded into the ``Library of
11281 Babel'' with the @code{org-babel-lob-ingest} function, bound to @kbd{C-c C-v
11284 @node Languages, Header arguments, Library of Babel, Working With Source Code
11285 @section Languages
11286 @cindex babel, languages
11287 @cindex source code, languages
11288 @cindex code block, languages
11290 Code blocks in the following languages are supported.
11292 @multitable @columnfractions 0.28 0.3 0.22 0.2
11293 @item @b{Language} @tab @b{Identifier} @tab @b{Language} @tab @b{Identifier}
11294 @item Asymptote @tab asymptote @tab C @tab C
11295 @item C++ @tab C++ @tab Clojure @tab clojure
11296 @item css @tab css @tab ditaa @tab ditaa
11297 @item Graphviz @tab dot @tab Emacs Lisp @tab emacs-lisp
11298 @item gnuplot @tab gnuplot @tab Haskell @tab haskell
11299 @item LaTeX @tab latex @tab Matlab @tab matlab
11300 @item Mscgen @tab mscgen @tab Objective Caml @tab ocaml
11301 @item Octave @tab octave @tab OZ @tab oz
11302 @item Perl @tab perl @tab Python @tab python
11303 @item R @tab R @tab Ruby @tab ruby
11304 @item Sass @tab sass @tab GNU Screen @tab screen
11305 @item shell @tab sh @tab SQL @tab sql
11306 @item Sqlite @tab sqlite
11307 @end multitable
11309 Language-specific documentation is available for some languages.  If
11310 available, it can be found at
11311 @uref{http://orgmode.org/worg/org-contrib/babel/languages}.
11313 The @code{org-babel-load-languages} controls which languages are enabled for
11314 evaluation (by default only @code{emacs-lisp} is enabled).  This variable can
11315 be set using the customization interface or by adding code like the following
11316 to your emacs configuration.
11318 @quotation
11319 The following disables @code{emacs-lisp} evaluation and enables evaluation of
11320 @code{R} code blocks.
11321 @end quotation
11323 @lisp
11324 (org-babel-do-load-languages
11325  'org-babel-load-languages
11326  '((emacs-lisp . nil)
11327    (R . t)))
11328 @end lisp
11330 It is also possible to enable support for a language by loading the related
11331 elisp file with @code{require}.
11333 @quotation
11334 The following adds support for evaluating @code{clojure} code blocks.
11335 @end quotation
11337 @lisp
11338 (require 'ob-clojure)
11339 @end lisp
11341 @node Header arguments, Results of evaluation, Languages, Working With Source Code
11342 @section Header arguments
11343 @cindex code block, header arguments
11344 @cindex source code, block header arguments
11346 Code block functionality can be configured with header arguments.  This
11347 section provides an overview of the use of header arguments, and then
11348 describes each header argument in detail.
11350 @menu
11351 * Using header arguments::      Different ways to set header arguments
11352 * Specific header arguments::   List of header arguments
11353 @end menu
11355 @node Using header arguments, Specific header arguments, Header arguments, Header arguments
11356 @subsection Using header arguments
11358 The values of header arguments can be set in five different ways, each more
11359 specific (and having higher priority) than the last.
11360 @menu
11361 * System-wide header arguments::  Set global default values
11362 * Language-specific header arguments::  Set default values by language
11363 * Buffer-wide header arguments::  Set default values for a specific buffer
11364 * Header arguments in Org-mode properties::  Set default values for a buffer or heading
11365 * Code block specific header arguments::  The most common way to set values
11366 @end menu
11369 @node System-wide header arguments, Language-specific header arguments, Using header arguments, Using header arguments
11370 @subsubheading System-wide header arguments
11371 @vindex org-babel-default-header-args
11372 System-wide values of header arguments can be specified by customizing the
11373 @code{org-babel-default-header-args} variable:
11375 @example
11376 :session    => "none"
11377 :results    => "replace"
11378 :exports    => "code"
11379 :cache      => "no"
11380 :noweb      => "no"
11381 @end example
11383 @c @example
11384 @c   org-babel-default-header-args is a variable defined in `org-babel.el'.
11385 @c   Its value is
11386 @c   ((:session . "none")
11387 @c    (:results . "replace")
11388 @c    (:exports . "code")
11389 @c    (:cache . "no")
11390 @c    (:noweb . "no"))
11393 @c   Documentation:
11394 @c   Default arguments to use when evaluating a code block.
11395 @c @end example
11397 For example, the following example could be used to set the default value of
11398 @code{:noweb} header arguments to @code{yes}.  This would have the effect of
11399 expanding @code{:noweb} references by default when evaluating source code
11400 blocks.
11402 @lisp
11403 (setq org-babel-default-header-args
11404 (cons '(:noweb . "yes")
11405 (assq-delete-all :noweb org-babel-default-header-args)))
11406 @end lisp
11408 @node Language-specific header arguments, Buffer-wide header arguments, System-wide header arguments, Using header arguments
11409 @subsubheading Language-specific header arguments
11410 Each language can define its own set of default header arguments.  See the
11411 language-specific documentation available online at
11412 @uref{http://orgmode.org/worg/org-contrib/babel}.
11414 @node Buffer-wide header arguments, Header arguments in Org-mode properties, Language-specific header arguments, Using header arguments
11415 @subsubheading Buffer-wide header arguments
11416 Buffer-wide header arguments may be specified through the use of a special
11417 line placed anywhere in an Org-mode file.  The line consists of the
11418 @code{#+BABEL:} keyword followed by a series of header arguments which may be
11419 specified using the standard header argument syntax.
11421 For example the following would set @code{session} to @code{*R*}, and
11422 @code{results} to @code{silent} for every code block in the buffer, ensuring
11423 that all execution took place in the same session, and no results would be
11424 inserted into the buffer.
11426 @example
11427 #+BABEL: :session *R* :results silent
11428 @end example
11430 @node Header arguments in Org-mode properties, Code block specific header arguments, Buffer-wide header arguments, Using header arguments
11431 @subsubheading Header arguments in Org-mode properties
11433 Header arguments are also read from Org-mode properties (see @ref{Property
11434 syntax}), which can be set on a buffer-wide or per-heading basis. An example
11435 of setting a header argument for all code blocks in a buffer is
11437 @example
11438 #+property: tangle yes
11439 @end example
11441 When properties are used to set default header arguments, they are looked up
11442 with inheritance, so the value of the @code{:cache} header argument will default
11443 to @code{yes} in all code blocks in the subtree rooted at the following
11444 heading:
11446 @example
11447 * outline header
11448 :PROPERTIES:
11449 :cache:    yes
11450 :END:
11451 @end example
11453 @kindex C-c C-x p
11454 @vindex org-babel-default-header-args
11455 Properties defined in this way override the properties set in
11456 @code{org-babel-default-header-args}.  It is convenient to use the
11457 @code{org-set-property} function bound to @kbd{C-c C-x p} to set properties
11458 in Org-mode documents.
11460 @node Code block specific header arguments,  , Header arguments in Org-mode properties, Using header arguments
11461 @subsubheading Code block specific header arguments
11463 The most common way to assign values to header arguments is at the
11464 code block level.  This can be done by listing a sequence of header
11465 arguments and their values as part of the @code{#+begin_src} line.
11466 Properties set in this way override both the values of
11467 @code{org-babel-default-header-args} and header arguments specified as
11468 properties.  In the following example, the @code{:results} header argument
11469 is set to @code{silent}, meaning the results of execution will not be
11470 inserted in the buffer, and the @code{:exports} header argument is set to
11471 @code{code}, meaning only the body of the code block will be
11472 preserved on export to HTML or LaTeX.
11474 @example
11475 #+source: factorial
11476 #+begin_src haskell :results silent :exports code :var n=0
11477 fac 0 = 1
11478 fac n = n * fac (n-1)
11479 #+end_src
11480 @end example
11482 Similarly, it is possible to set header arguments for inline code blocks:
11484 @example
11485 src_haskell[:exports both]@{fac 5@}
11486 @end example
11488 Header arguments for ``Library of Babel'' or function call lines can be set as shown below:
11490 @example
11491 #+call: factorial(n=5) :exports results
11492 @end example
11494 @node Specific header arguments,  , Using header arguments, Header arguments
11495 @subsection Specific header arguments
11496 The following header arguments are defined:
11498 @menu
11499 * var::                         Pass arguments to code blocks
11500 * results::                     Specify the type of results and how they will
11501                                 be collected and handled
11502 * file::                        Specify a path for file output
11503 * dir::                         Specify the default (possibly remote)
11504                                 directory for code block execution
11505 * exports::                     Export code and/or results
11506 * tangle::                      Toggle tangling and specify file name
11507 * comments::                    Toggle insertion of comments in tangled
11508                                 code files
11509 * no-expand::                   Turn off variable assignment and noweb
11510                                 expansion during tangling
11511 * session::                     Preserve the state of code evaluation
11512 * noweb::                       Toggle expansion of noweb references
11513 * cache::                       Avoid re-evaluating unchanged code blocks
11514 * hlines::                      Handle horizontal lines in tables
11515 * colnames::                    Handle column names in tables
11516 * rownames::                    Handle row names in tables
11517 * shebang::                     Make tangled files executable
11518 * eval::                        Limit evaluation of specific code blocks
11519 @end menu
11521 @node var, results, Specific header arguments, Specific header arguments
11522 @subsubsection @code{:var}
11523 The @code{:var} header argument is used to pass arguments to code blocks.
11524 The specifics of how arguments are included in a code block vary by language;
11525 these are addressed in the language-specific documentation. However, the
11526 syntax used to specify arguments is the same across all languages.  The
11527 values passed to arguments can be literal values, values from org-mode tables
11528 and literal example blocks, or the results of other code blocks.
11530 These values can be indexed in a manner similar to arrays---see the
11531 ``indexable variable values'' heading below.
11533 The following syntax is used to pass arguments to code blocks using the
11534 @code{:var} header argument.
11536 @example
11537 :var name=assign
11538 @end example
11540 where @code{assign} can take one of the following forms
11542 @itemize @bullet
11543 @item literal value
11544 either a string @code{"string"} or a number @code{9}.
11545 @item reference
11546 a table name:
11548 @example
11549 #+tblname: example-table
11550 | 1 |
11551 | 2 |
11552 | 3 |
11553 | 4 |
11555 #+source: table-length
11556 #+begin_src emacs-lisp :var table=example-table
11557 (length table)
11558 #+end_src
11560 #+results: table-length
11561 : 4
11562 @end example
11564 a code block name, as assigned by @code{#+srcname:}, followed by
11565 parentheses:
11567 @example
11568 #+begin_src emacs-lisp :var length=table-length()
11569 (* 2 length)
11570 #+end_src
11572 #+results:
11573 : 8
11574 @end example
11576 In addition, an argument can be passed to the code block referenced
11577 by @code{:var}.  The argument is passed within the parentheses following the
11578 code block name:
11580 @example
11581 #+source: double
11582 #+begin_src emacs-lisp :var input=8
11583 (* 2 input)
11584 #+end_src
11586 #+results: double
11587 : 16
11589 #+source: squared
11590 #+begin_src emacs-lisp :var input=double(input=1)
11591 (* input input)
11592 #+end_src
11594 #+results: squared
11595 : 4
11596 @end example
11597 @end itemize
11599 @subsubheading Alternate argument syntax
11600 It is also possible to specify arguments in a potentially more natural way
11601 using the @code{#+source:} line of a code block.  As in the following
11602 example arguments can be packed inside of parenthesis, separated by commas,
11603 following the source name.
11605 @example
11606 #+source: double(input=0, x=2)
11607 #+begin_src emacs-lisp
11608 (* 2 (+ input x))
11609 #+end_src
11610 @end example
11612 @subsubheading Indexable variable values
11613 It is possible to reference portions of variable values by ``indexing'' into
11614 the variables.  Indexes are 0 based with negative values counting back from
11615 the end.  If an index is separated by @code{,}s then each subsequent section
11616 will index into the next deepest nesting or dimension of the value.  The
11617 following example assigns the last cell of the first row the table
11618 @code{example-table} to the variable @code{data}:
11620 @example
11621 #+results: example-table
11622 | 1 | a |
11623 | 2 | b |
11624 | 3 | c |
11625 | 4 | d |
11627 #+begin_src emacs-lisp :var data=example-table[0,-1]
11628   data
11629 #+end_src
11631 #+results:
11632 : a
11633 @end example
11635 Ranges of variable values can be referenced using two integers separated by a
11636 @code{:}, in which case the entire inclusive range is referenced.  For
11637 example the following assigns the middle three rows of @code{example-table}
11638 to @code{data}.
11640 @example
11641 #+results: example-table
11642 | 1 | a |
11643 | 2 | b |
11644 | 3 | c |
11645 | 4 | d |
11646 | 5 | 3 |
11648 #+begin_src emacs-lisp :var data=example-table[1:3]
11649   data
11650 #+end_src
11652 #+results:
11653 | 2 | b |
11654 | 3 | c |
11655 | 4 | d |
11656 @end example
11658 Additionally, an empty index, or the single character @code{*}, are both
11659 interpreted to mean the entire range and as such are equivalent to
11660 @code{0:-1}, as shown in the following example in which the entire first
11661 column is referenced.
11663 @example
11664 #+results: example-table
11665 | 1 | a |
11666 | 2 | b |
11667 | 3 | c |
11668 | 4 | d |
11670 #+begin_src emacs-lisp :var data=example-table[,0]
11671   data
11672 #+end_src
11674 #+results:
11675 | 1 | 2 | 3 | 4 |
11676 @end example
11678 It is possible to index into the results of code blocks as well as tables.
11679 Any number of dimensions can be indexed.  Dimensions are separated from one
11680 another by commas, as shown in the following example.
11682 @example
11683 #+source: 3D
11684 #+begin_src emacs-lisp
11685   '(((1  2  3)  (4  5  6)  (7  8  9))
11686     ((10 11 12) (13 14 15) (16 17 18))
11687     ((19 20 21) (22 23 24) (25 26 27)))
11688 #+end_src
11690 #+begin_src emacs-lisp :var data=3D[1,,1]
11691   data
11692 #+end_src
11694 #+results:
11695 | 11 | 14 | 17 |
11696 @end example
11698 @node results, file, var, Specific header arguments
11699 @subsubsection @code{:results}
11701 There are three classes of @code{:results} header argument.  Only one option of
11702 each type may be supplied per code block.
11704 @itemize @bullet
11705 @item
11706 @b{collection} header arguments specify how the results should be collected
11707 from the code block
11708 @item
11709 @b{type} header arguments specify what type of result the code block will
11710 return---which has implications for how they will be inserted into the
11711 Org-mode buffer
11712 @item
11713 @b{handling} header arguments specify how the results of evaluating the code
11714 block should be handled.
11715 @end itemize
11717 @subsubheading Collection
11718 The following options are mutually exclusive, and specify how the results
11719 should be collected from the code block.
11721 @itemize @bullet
11722 @item @code{value}
11723 This is the default.  The result is the value of the last statement in the
11724 code block.  This header argument places the evaluation in functional
11725 mode.  Note that in some languages, e.g., python, use of this result type
11726 requires that a @code{return} statement be included in the body of the source
11727 code block. E.g., @code{:results value}.
11728 @item @code{output}
11729 The result is the collection of everything printed to STDOUT during the
11730 execution of the code block.  This header argument places the
11731 evaluation in scripting mode.  E.g., @code{:results output}.
11732 @end itemize
11734 @subsubheading Type
11736 The following options are mutually exclusive and specify what type of results
11737 the code block will return.  By default, results are inserted as either a
11738 table or scalar depending on their value.
11740 @itemize @bullet
11741 @item @code{table}, @code{vector}
11742 The results should be interpreted as an Org-mode table.  If a single value is
11743 returned, it will be converted into a table with one row and one column.
11744 E.g., @code{:results value table}.
11745 @item @code{scalar}, @code{verbatim}
11746 The results should be interpreted literally---they will not be
11747 converted into a table.  The results will be inserted into the Org-mode
11748 buffer as quoted text.  E.g., @code{:results value verbatim}.
11749 @item @code{file}
11750 The results will be interpreted as the path to a file, and will be inserted
11751 into the Org-mode buffer as a file link.  E.g., @code{:results value file}.
11752 @item @code{raw}, @code{org}
11753 The results are interpreted as raw Org-mode code and are inserted directly
11754 into the buffer.  If the results look like a table they will be aligned as
11755 such by Org-mode.  E.g., @code{:results value raw}.
11756 @item @code{html}
11757 Results are assumed to be HTML and will be enclosed in a @code{begin_html}
11758 block.  E.g., @code{:results value html}.
11759 @item @code{latex}
11760 Results assumed to be LaTeX and are enclosed in a @code{begin_latex} block.
11761 E.g., @code{:results value latex}.
11762 @item @code{code}
11763 Result are assumed to be parseable code and are enclosed in a code block.
11764 E.g., @code{:results value code}.
11765 @item @code{pp}
11766 The result is converted to pretty-printed code and is enclosed in a code
11767 block.  This option currently supports Emacs Lisp, python, and ruby.  E.g.,
11768 @code{:results value pp}.
11769 @end itemize
11771 @subsubheading Handling
11772 The following results options indicate what happens with the
11773 results once they are collected.
11775 @itemize @bullet
11776 @item @code{silent}
11777 The results will be echoed in the minibuffer but will not be inserted into
11778 the Org-mode buffer.  E.g., @code{:results output silent}.
11779 @item @code{replace}
11780 The default value.  Any existing results will be removed, and the new results
11781 will be inserted into the Org-mode buffer in their place.  E.g.,
11782 @code{:results output replace}.
11783 @item @code{append}
11784 If there are pre-existing results of the code block then the new results will
11785 be appended to the existing results.  Otherwise the new results will be
11786 inserted as with @code{replace}.
11787 @item @code{prepend}
11788 If there are pre-existing results of the code block then the new results will
11789 be prepended to the existing results.  Otherwise the new results will be
11790 inserted as with @code{replace}.
11791 @end itemize
11793 @node file, dir, results, Specific header arguments
11794 @subsubsection @code{:file}
11796 The header argument @code{:file} is used to specify a path for file output.
11797 An Org-mode style @code{file:} link is inserted into the buffer as the result
11798 (see @ref{Link format}). Common examples are graphical output from R,
11799 gnuplot, ditaa and LaTeX code blocks.
11801 Note that for some languages, including R, gnuplot, LaTeX and ditaa,
11802 graphical output is sent to the specified file without the file being
11803 referenced explicitly in the code block. See the documentation for the
11804 individual languages for details. In contrast, general purpose languages such
11805 as python and ruby require that the code explicitly create output
11806 corresponding to the path indicated by @code{:file}.
11809 @node dir, exports, file, Specific header arguments
11810 @subsubsection @code{:dir} and remote execution
11812 While the @code{:file} header argument can be used to specify the path to the
11813 output file, @code{:dir} specifies the default directory during code block
11814 execution. If it is absent, then the directory associated with the current
11815 buffer is used. In other words, supplying @code{:dir path} temporarily has
11816 the same effect as changing the current directory with @kbd{M-x cd path}, and
11817 then not supplying @code{:dir}. Under the surface, @code{:dir} simply sets
11818 the value of the Emacs variable @code{default-directory}.
11820 When using @code{:dir}, you should supply a relative path for file output
11821 (e.g. @code{:file myfile.jpg} or @code{:file results/myfile.jpg}) in which
11822 case that path will be interpreted relative to the default directory.
11824 In other words, if you want your plot to go into a folder called Work in your
11825 home directory, you could use
11827 @example
11828 #+begin_src R :file myplot.png :dir ~/Work
11829 matplot(matrix(rnorm(100), 10), type="l")
11830 #+end_src
11831 @end example
11833 @subsubheading Remote execution
11834 A directory on a remote machine can be specified using tramp file syntax, in
11835 which case the code will be evaluated on the remote machine. An example is
11837 @example
11838 #+begin_src R :file plot.png :dir /dand@@yakuba.princeton.edu:
11839 plot(1:10, main=system("hostname", intern=TRUE))
11840 #+end_src
11841 @end example
11843 Text results will be returned to the local Org-mode buffer as usual, and file
11844 output will be created on the remote machine with relative paths interpreted
11845 relative to the remote directory. An Org-mode link to the remote file will be
11846 created.
11848 So, in the above example a plot will be created on the remote machine,
11849 and a link of the following form will be inserted in the org buffer:
11851 @example
11852 [[file:/scp:dand@@yakuba.princeton.edu:/home/dand/plot.png][plot.png]]
11853 @end example
11855 Most of this functionality follows immediately from the fact that @code{:dir}
11856 sets the value of the Emacs variable @code{default-directory}, thanks to
11857 tramp. Those using XEmacs, or GNU Emacs prior to version 23 may need to
11858 install tramp separately in order for the these features to work correctly.
11860 @subsubheading Further points
11862 @itemize @bullet
11863 @item
11864 If @code{:dir} is used in conjunction with @code{:session}, although it will
11865 determine the starting directory for a new session as expected, no attempt is
11866 currently made to alter the directory associated with an existing session.
11867 @item
11868 @code{:dir} should typically not be used to create files during export with
11869 @code{:exports results} or @code{:exports both}. The reason is that, in order
11870 to retain portability of exported material between machines, during export
11871 links inserted into the buffer will *not* be expanded against @code{default
11872 directory}. Therefore, if @code{default-directory} is altered using
11873 @code{:dir}, it is probable that the file will be created in a location to
11874 which the link does not point.
11875 @end itemize
11877 @node exports, tangle, dir, Specific header arguments
11878 @subsubsection @code{:exports}
11880 The @code{:exports} header argument specifies what should be included in HTML
11881 or LaTeX exports of the Org-mode file.
11883 @itemize @bullet
11884 @item @code{code}
11885 The default.  The body of code is included into the exported file.  E.g.,
11886 @code{:exports code}.
11887 @item @code{results}
11888 The result of evaluating the code is included in the exported file. E.g.,
11889 @code{:exports results}.
11890 @item @code{both}
11891 Both the code and results are included in the exported file. E.g.,
11892 @code{:exports both}.
11893 @item @code{none}
11894 Nothing is included in the exported file.  E.g., @code{:exports none}.
11895 @end itemize
11897 @node tangle, comments, exports, Specific header arguments
11898 @subsubsection @code{:tangle}
11900 The @code{:tangle} header argument specifies whether or not the code
11901 block should be included in tangled extraction of source code files.
11903 @itemize @bullet
11904 @item @code{yes}
11905 The code block is exported to a source code file named after the
11906 basename (name w/o extension) of the Org-mode file.  E.g., @code{:tangle
11907 yes}.
11908 @item @code{no}
11909 The default.  The code block is not exported to a source code file.
11910 E.g., @code{:tangle no}.
11911 @item other
11912 Any other string passed to the @code{:tangle} header argument is interpreted
11913 as a file basename to which the block will be exported.  E.g., @code{:tangle
11914 basename}.
11915 @end itemize
11917 @node comments, no-expand, tangle, Specific header arguments
11918 @subsubsection @code{:comments}
11919 By default code blocks are tangled to source-code files without any insertion
11920 of comments beyond those which may already exist in the body of the code
11921 block.  The @code{:comments} header argument can be set to ``yes''
11922 e.g. @code{:comments yes} to enable the insertion of comments around code
11923 blocks during tangling.  The inserted comments contain pointers back to the
11924 original Org file from which the comment was tangled.
11926 @node no-expand, session, comments, Specific header arguments
11927 @subsubsection @code{:no-expand}
11929 By default, code blocks are expanded with @code{org-babel-expand-src-block}
11930 during tangling.  This has the effect of assigning values to variables
11931 specified with @code{:var} (see @ref{var}), and of replacing ``noweb''
11932 references (see @ref{Noweb reference syntax}) with their targets.  The
11933 @code{:no-expand} header argument can be used to turn off this behavior.
11935 @node session, noweb, no-expand, Specific header arguments
11936 @subsubsection @code{:session}
11938 The @code{:session} header argument starts a session for an interpreted
11939 language where state is preserved.
11941 By default, a session is not started.
11943 A string passed to the @code{:session} header argument will give the session
11944 a name.  This makes it possible to run concurrent sessions for each
11945 interpreted language.
11947 @node noweb, cache, session, Specific header arguments
11948 @subsubsection @code{:noweb}
11950 The @code{:noweb} header argument controls expansion of ``noweb'' style (see
11951 @ref{Noweb reference syntax}) references in a code block.  This header
11952 argument can have one of two values: @code{yes} or @code{no}.
11954 @itemize @bullet
11955 @item @code{no}
11956 The default.  No ``noweb'' syntax specific action is taken on evaluating
11957 code blocks, However, noweb references will still be expanded during
11958 tangling.
11959 @item @code{yes}
11960 All ``noweb'' syntax references in the body of the code block will be
11961 expanded before the block is evaluated.
11962 @end itemize
11964 @subsubheading Noweb prefix lines
11965 Noweb insertions are now placed behind the line prefix of the
11966 @code{<<reference>>}.
11967 This behavior is illustrated in the following example.  Because the
11968 @code{<<example>>} noweb reference appears behind the SQL comment syntax,
11969 each line of the expanded noweb reference will be commented.
11971 This code block:
11973 @example
11974 -- <<example>>
11975 @end example
11978 expands to:
11980 @example
11981 -- this is the
11982 -- multi-line body of example
11983 @end example
11985 Note that noweb replacement text that does not contain any newlines will not
11986 be affected by this change, so it is still possible to use inline noweb
11987 references.
11989 @node cache, hlines, noweb, Specific header arguments
11990 @subsubsection @code{:cache}
11992 The @code{:cache} header argument controls the use of in-buffer caching of
11993 the results of evaluating code blocks.  It can be used to avoid re-evaluating
11994 unchanged code blocks.  This header argument can have one of two
11995 values: @code{yes} or @code{no}.
11997 @itemize @bullet
11998 @item @code{no}
11999 The default.  No caching takes place, and the code block will be evaluated
12000 every time it is called.
12001 @item @code{yes}
12002 Every time the code block is run a sha1 hash of the code and arguments
12003 passed to the block will be generated.  This hash is packed into the
12004 @code{#+results:} line and will be checked on subsequent
12005 executions of the code block.  If the code block has not
12006 changed since the last time it was evaluated, it will not be re-evaluated.
12007 @end itemize
12009 @node hlines, colnames, cache, Specific header arguments
12010 @subsubsection @code{:hlines}
12012 Tables are frequently represented with one or more horizontal lines, or
12013 hlines.  The @code{:hlines} argument to a code block accepts the
12014 values @code{yes} or @code{no}, with a default value of @code{no}.
12016 @itemize @bullet
12017 @item @code{no}
12018 Strips horizontal lines from the input table.  In most languages this is the
12019 desired effect because an @code{hline} symbol is interpreted as an unbound
12020 variable and raises an error.  Setting @code{:hlines no} or relying on the
12021 default value yields the following results.
12023 @example
12024 #+tblname: many-cols
12025 | a | b | c |
12026 |---+---+---|
12027 | d | e | f |
12028 |---+---+---|
12029 | g | h | i |
12031 #+source: echo-table
12032 #+begin_src python :var tab=many-cols
12033   return tab
12034 #+end_src
12036 #+results: echo-table
12037 | a | b | c |
12038 | d | e | f |
12039 | g | h | i |
12040 @end example
12042 @item @code{yes}
12043 Leaves hlines in the table. Setting @code{:hlines yes} has this effect.
12045 @example
12046 #+tblname: many-cols
12047 | a | b | c |
12048 |---+---+---|
12049 | d | e | f |
12050 |---+---+---|
12051 | g | h | i |
12053 #+source: echo-table
12054 #+begin_src python :var tab=many-cols :hlines yes
12055   return tab
12056 #+end_src
12058 #+results: echo-table
12059 | a | b | c |
12060 |---+---+---|
12061 | d | e | f |
12062 |---+---+---|
12063 | g | h | i |
12064 @end example
12065 @end itemize
12067 @node colnames, rownames, hlines, Specific header arguments
12068 @subsubsection @code{:colnames}
12070 The @code{:colnames} header argument accepts the values @code{yes},
12071 @code{no}, or @code{nil} for unassigned.  The default value is @code{nil}.
12073 @itemize @bullet
12074 @item @code{nil}
12075 If an input table looks like it has column names
12076 (because its second row is an hline), then the column
12077 names will be removed from the table before
12078 processing, then reapplied to the results.
12080 @example
12081 #+tblname: less-cols
12082 | a |
12083 |---|
12084 | b |
12085 | c |
12087 #+srcname: echo-table-again
12088 #+begin_src python :var tab=less-cols
12089   return [[val + '*' for val in row] for row in tab]
12090 #+end_src
12092 #+results: echo-table-again
12093 | a  |
12094 |----|
12095 | b* |
12096 | c* |
12097 @end example
12099 @item @code{no}
12100 No column name pre-processing takes place
12102 @item @code{yes}
12103 Column names are removed and reapplied as with @code{nil} even if the table
12104 does not ``look like'' it has column names (i.e. the second row is not an
12105 hline)
12106 @end itemize
12108 @node rownames, shebang, colnames, Specific header arguments
12109 @subsubsection @code{:rownames}
12111 The @code{:rownames} header argument can take on the values @code{yes}
12112 or @code{no}, with a default value of @code{no}.
12114 @itemize @bullet
12115 @item @code{no}
12116 No row name pre-processing will take place.
12118 @item @code{yes}
12119 The first column of the table is removed from the table before processing,
12120 and is then reapplied to the results.
12122 @example
12123 #+tblname: with-rownames
12124 | one | 1 | 2 | 3 | 4 |  5 |
12125 | two | 6 | 7 | 8 | 9 | 10 |
12127 #+srcname: echo-table-once-again
12128 #+begin_src python :var tab=with-rownames :rownames yes
12129   return [[val + 10 for val in row] for row in tab]
12130 #+end_src
12132 #+results: echo-table-once-again
12133 | one | 11 | 12 | 13 | 14 | 15 |
12134 | two | 16 | 17 | 18 | 19 | 20 |
12135 @end example
12136 @end itemize
12138 @node shebang, eval, rownames, Specific header arguments
12139 @subsubsection @code{:shebang}
12141 Setting the @code{:shebang} header argument to a string value
12142 (e.g. @code{:shebang "#!/bin/bash"}) causes the string to be inserted as the
12143 first line of any tangled file holding the code block, and the file
12144 permissions of the tangled file are set to make it executable.
12146 @node eval,  , shebang, Specific header arguments
12147 @subsubsection @code{:eval}
12148 The @code{:eval} header argument can be used to limit the evaluation of
12149 specific code blocks.  @code{:eval} accepts two arguments ``never'' and
12150 ``query''.  @code{:eval never} will ensure that a code block is never
12151 evaluated, this can be useful for protecting against the evaluation of
12152 dangerous code blocks.  @code{:eval query} will require a query for every
12153 execution of a code block regardless of the value of the
12154 @code{org-confirm-babel-evaluate} variable.
12156 @node Results of evaluation, Noweb reference syntax, Header arguments, Working With Source Code
12157 @section Results of evaluation
12158 @cindex code block, results of evaluation
12159 @cindex source code, results of evaluation
12161 The way in which results are handled depends on whether a session is invoked,
12162 as well as on whether @code{:results value} or @code{:results output} is
12163 used. The following table shows the possibilities:
12165 @multitable @columnfractions 0.26 0.33 0.41
12166 @item @tab @b{Non-session} @tab @b{Session}
12167 @item @code{:results value} @tab value of last expression @tab value of last expression
12168 @item @code{:results output} @tab contents of STDOUT @tab concatenation of interpreter output
12169 @end multitable
12171 Note: With @code{:results value}, the result in both @code{:session} and
12172 non-session is returned to Org-mode as a table (a one- or two-dimensional
12173 vector of strings or numbers) when appropriate.
12175 @subsection Non-session
12176 @subsubsection @code{:results value}
12177 This is the default. Internally, the value is obtained by wrapping the code
12178 in a function definition in the external language, and evaluating that
12179 function. Therefore, code should be written as if it were the body of such a
12180 function. In particular, note that python does not automatically return a
12181 value from a function unless a @code{return} statement is present, and so a
12182 @samp{return} statement will usually be required in python.
12184 This is the only one of the four evaluation contexts in which the code is
12185 automatically wrapped in a function definition.
12187 @subsubsection @code{:results output}
12188 The code is passed to the interpreter as an external process, and the
12189 contents of the standard output stream are returned as text. (In certain
12190 languages this also contains the error output stream; this is an area for
12191 future work.)
12193 @subsection @code{:session}
12194 @subsubsection @code{:results value}
12195 The code is passed to the interpreter running as an interactive Emacs
12196 inferior process. The result returned is the result of the last evaluation
12197 performed by the interpreter. (This is obtained in a language-specific
12198 manner: the value of the variable @code{_} in python and ruby, and the value
12199 of @code{.Last.value} in R).
12201 @subsubsection @code{:results output}
12202 The code is passed to the interpreter running as an interactive Emacs
12203 inferior process. The result returned is the concatenation of the sequence of
12204 (text) output from the interactive interpreter. Notice that this is not
12205 necessarily the same as what would be sent to @code{STDOUT} if the same code
12206 were passed to a non-interactive interpreter running as an external
12207 process. For example, compare the following two blocks:
12209 @example
12210 #+begin_src python :results output
12211  print "hello"
12213  print "bye"
12214 #+end_src
12216 #+resname:
12217 : hello
12218 : bye
12219 @end example
12221 In non-session mode, the '2' is not printed and does not appear.
12222 @example
12223 #+begin_src python :results output :session
12224  print "hello"
12226  print "bye"
12227 #+end_src
12229 #+resname:
12230 : hello
12231 : 2
12232 : bye
12233 @end example
12235 But in @code{:session} mode, the interactive interpreter receives input '2'
12236 and prints out its value, '2'. (Indeed, the other print statements are
12237 unnecessary here).
12239 @node Noweb reference syntax, Key bindings and useful functions, Results of evaluation, Working With Source Code
12240 @section Noweb reference syntax
12241 @cindex code block, noweb reference
12242 @cindex syntax, noweb
12243 @cindex source code, noweb reference
12245 The ``noweb'' (see @uref{http://www.cs.tufts.edu/~nr/noweb/}) Literate
12246 Programming system allows named blocks of code to be referenced by using the
12247 familiar Noweb syntax:
12249 @example
12250 <<code-block-name>>
12251 @end example
12253 When a code block is tangled or evaluated, whether or not ``noweb''
12254 references are expanded depends upon the value of the @code{:noweb} header
12255 argument.  If @code{:noweb yes}, then a Noweb reference is expanded before
12256 evaluation.  If @code{:noweb no}, the default, then the reference is not
12257 expanded before evaluation.
12259 Note: the default value, @code{:noweb no}, was chosen to ensure that
12260 correct code is not broken in a language, such as Ruby, where
12261 @code{<<arg>>} is a syntactically valid construct.  If @code{<<arg>>} is not
12262 syntactically valid in languages that you use, then please consider setting
12263 the default value.
12265 @node Key bindings and useful functions, Batch execution, Noweb reference syntax, Working With Source Code
12266 @section Key bindings and useful functions
12267 @cindex code block, key bindings
12269 Many common Org-mode key sequences are re-bound depending on
12270 the context.
12272 Within a code block, the following key bindings
12273 are active:
12275 @multitable @columnfractions 0.25 0.75
12276 @kindex C-c C-c
12277 @item @kbd{C-c C-c} @tab org-babel-execute-src-block
12278 @kindex C-c C-o
12279 @item @kbd{C-c C-o} @tab org-babel-open-src-block-result
12280 @kindex C-up
12281 @item @kbd{C-@key{up}}    @tab org-babel-load-in-session
12282 @kindex M-down
12283 @item @kbd{M-@key{down}}  @tab org-babel-pop-to-session
12284 @end multitable
12286 In an Org-mode buffer, the following key bindings are active:
12288 @multitable @columnfractions 0.45 0.55
12289 @kindex C-c C-v a
12290 @kindex C-c C-v C-a
12291 @item @kbd{C-c C-v a} @ @ @r{or} @ @ @kbd{C-c C-v C-a} @tab org-babel-sha1-hash
12292 @kindex C-c C-v b
12293 @kindex C-c C-v C-b
12294 @item @kbd{C-c C-v b} @ @ @r{or} @ @ @kbd{C-c C-v C-b} @tab org-babel-execute-buffer
12295 @kindex C-c C-v f
12296 @kindex C-c C-v C-f
12297 @item @kbd{C-c C-v f} @ @ @r{or} @ @ @kbd{C-c C-v C-f} @tab org-babel-tangle-file
12298 @kindex C-c C-v g
12299 @item @kbd{C-c C-v g} @tab org-babel-goto-named-source-block
12300 @kindex C-c C-v h
12301 @item @kbd{C-c C-v h} @tab org-babel-describe-bindings
12302 @kindex C-c C-v l
12303 @kindex C-c C-v C-l
12304 @item @kbd{C-c C-v l} @ @ @r{or} @ @ @kbd{C-c C-v C-l} @tab org-babel-lob-ingest
12305 @kindex C-c C-v p
12306 @kindex C-c C-v C-p
12307 @item @kbd{C-c C-v p} @ @ @r{or} @ @ @kbd{C-c C-v C-p} @tab org-babel-expand-src-block
12308 @kindex C-c C-v s
12309 @kindex C-c C-v C-s
12310 @item @kbd{C-c C-v s} @ @ @r{or} @ @ @kbd{C-c C-v C-s} @tab org-babel-execute-subtree
12311 @kindex C-c C-v t
12312 @kindex C-c C-v C-t
12313 @item @kbd{C-c C-v t} @ @ @r{or} @ @ @kbd{C-c C-v C-t} @tab org-babel-tangle
12314 @kindex C-c C-v z
12315 @kindex C-c C-v C-z
12316 @item @kbd{C-c C-v z} @ @ @r{or} @ @ @kbd{C-c C-v C-z} @tab org-babel-switch-to-session
12317 @end multitable
12319 @c When possible these keybindings were extended to work when the control key is
12320 @c kept pressed, resulting in the following additional keybindings.
12322 @c @multitable @columnfractions 0.25 0.75
12323 @c @item @kbd{C-c C-v C-a} @tab org-babel-sha1-hash
12324 @c @item @kbd{C-c C-v C-b} @tab org-babel-execute-buffer
12325 @c @item @kbd{C-c C-v C-f} @tab org-babel-tangle-file
12326 @c @item @kbd{C-c C-v C-l} @tab org-babel-lob-ingest
12327 @c @item @kbd{C-c C-v C-p} @tab org-babel-expand-src-block
12328 @c @item @kbd{C-c C-v C-s} @tab org-babel-execute-subtree
12329 @c @item @kbd{C-c C-v C-t} @tab org-babel-tangle
12330 @c @item @kbd{C-c C-v C-z} @tab org-babel-switch-to-session
12331 @c @end multitable
12333 @node Batch execution,  , Key bindings and useful functions, Working With Source Code
12334 @section Batch execution
12335 @cindex code block, batch execution
12336 @cindex source code, batch execution
12338 It is possible to call functions from the command line.  This shell
12339 script calls @code{org-babel-tangle} on every one of its arguments.
12341 Be sure to adjust the paths to fit your system.
12343 @example
12344 #!/bin/sh
12345 # -*- mode: shell-script -*-
12347 # tangle a file with org-mode
12349 DIR=`pwd`
12350 FILES=""
12352 # wrap each argument in the code required to call tangle on it
12353 for i in $@@; do
12354 FILES="$FILES \"$i\""
12355 done
12357 emacsclient \
12358 --eval "(progn
12359 (add-to-list 'load-path (expand-file-name \"~/src/org/lisp/\"))
12360 (add-to-list 'load-path (expand-file-name \"~/src/org/contrib/lisp/\"))
12361 (require 'org)(require 'org-exp)(require 'ob)(require 'ob-tangle)
12362 (mapc (lambda (file)
12363        (find-file (expand-file-name file \"$DIR\"))
12364        (org-babel-tangle)
12365        (kill-buffer)) '($FILES)))"
12366 @end example
12368 @node Miscellaneous, Hacking, Working With Source Code, Top
12369 @chapter Miscellaneous
12371 @menu
12372 * Completion::                  M-TAB knows what you need
12373 * Easy Templates::              Quick insertion of structural elements
12374 * Speed keys::                  Electric commands at the beginning of a headline
12375 * Code evaluation security::    Org mode files evaluate inline code
12376 * Customization::               Adapting Org to your taste
12377 * In-buffer settings::          Overview of the #+KEYWORDS
12378 * The very busy C-c C-c key::   When in doubt, press C-c C-c
12379 * Clean view::                  Getting rid of leading stars in the outline
12380 * TTY keys::                    Using Org on a tty
12381 * Interaction::                 Other Emacs packages
12382 @end menu
12385 @node Completion, Easy Templates, Miscellaneous, Miscellaneous
12386 @section Completion
12387 @cindex completion, of @TeX{} symbols
12388 @cindex completion, of TODO keywords
12389 @cindex completion, of dictionary words
12390 @cindex completion, of option keywords
12391 @cindex completion, of tags
12392 @cindex completion, of property keys
12393 @cindex completion, of link abbreviations
12394 @cindex @TeX{} symbol completion
12395 @cindex TODO keywords completion
12396 @cindex dictionary word completion
12397 @cindex option keyword completion
12398 @cindex tag completion
12399 @cindex link abbreviations, completion of
12401 Emacs would not be Emacs without completion, and Org-mode uses it whenever it
12402 makes sense.  If you prefer an @i{iswitchb}- or @i{ido}-like interface for
12403 some of the completion prompts, you can specify your preference by setting at
12404 most one of the variables @code{org-completion-use-iswitchb}
12405 @code{org-completion-use-ido}.
12407 Org supports in-buffer completion.  This type of completion does
12408 not make use of the minibuffer.  You simply type a few letters into
12409 the buffer and use the key to complete text right there.
12411 @table @kbd
12412 @kindex M-@key{TAB}
12413 @item M-@key{TAB}
12414 Complete word at point
12415 @itemize @bullet
12416 @item
12417 At the beginning of a headline, complete TODO keywords.
12418 @item
12419 After @samp{\}, complete @TeX{} symbols supported by the exporter.
12420 @item
12421 After @samp{*}, complete headlines in the current buffer so that they
12422 can be used in search links like @samp{[[*find this headline]]}.
12423 @item
12424 After @samp{:} in a headline, complete tags.  The list of tags is taken
12425 from the variable @code{org-tag-alist} (possibly set through the
12426 @samp{#+TAGS} in-buffer option, @pxref{Setting tags}), or it is created
12427 dynamically from all tags used in the current buffer.
12428 @item
12429 After @samp{:} and not in a headline, complete property keys.  The list
12430 of keys is constructed dynamically from all keys used in the current
12431 buffer.
12432 @item
12433 After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
12434 @item
12435 After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
12436 @samp{OPTIONS} which set file-specific options for Org-mode.  When the
12437 option keyword is already complete, pressing @kbd{M-@key{TAB}} again
12438 will insert example settings for this keyword.
12439 @item
12440 In the line after @samp{#+STARTUP: }, complete startup keywords,
12441 i.e. valid keys for this line.
12442 @item
12443 Elsewhere, complete dictionary words using Ispell.
12444 @end itemize
12445 @end table
12447 @node Easy Templates, Speed keys, Completion, Miscellaneous
12448 @section Easy Templates
12449 @cindex template insertion
12450 @cindex insertion, of templates
12452 Org-mode supports insertion of empty structural elements (like
12453 @code{#+BEGIN_SRC} and @code{#+END_SRC} pairs) with just a few key
12454 strokes.  This is achieved through a native template expansion mechanism.
12455 Note that Emacs has several other template mechanisms which could be used in
12456 a similar way, for example @file{yasnippet}.
12458 To insert a structural element, type a @samp{<}, followed by a template
12459 selector and @kbd{@key{TAB}}.  Completion takes effect only when the above
12460 keystrokes are typed on a line by itself.
12462 The following template selectors are currently supported.
12464 @multitable @columnfractions 0.1 0.9
12465 @item @kbd{s} @tab @code{#+begin_src     ... #+end_src}
12466 @item @kbd{e} @tab @code{#+begin_example ... #+end_example}
12467 @item @kbd{q} @tab @code{#+begin_quote   ... #+end_quote}
12468 @item @kbd{v} @tab @code{#+begin_verse   ... #+end_verse}
12469 @item @kbd{c} @tab @code{#+begin_center  ... #+end_center}
12470 @item @kbd{l} @tab @code{#+begin_latex   ... #+end_latex}
12471 @item @kbd{L} @tab @code{#+latex:}
12472 @item @kbd{h} @tab @code{#+begin_html    ... #+end_html}
12473 @item @kbd{H} @tab @code{#+html:}
12474 @item @kbd{a} @tab @code{#+begin_ascii   ... #+end_ascii}
12475 @item @kbd{A} @tab @code{#+ascii:}
12476 @item @kbd{i} @tab @code{#+include:} line
12477 @end multitable
12479 For example, on an empty line, typing "<e" and then pressing TAB, will expand
12480 into a complete EXAMPLE template.
12482 You can install additional templates by customizing the variable
12483 @code{org-structure-template-alist}. Refer docstring of the variable for
12484 additional details.
12486 @node Speed keys, Code evaluation security, Easy Templates, Miscellaneous
12487 @section Speed keys
12488 @cindex speed keys
12489 @vindex org-use-speed-commands
12490 @vindex org-speed-commands-user
12492 Single keys can be made to execute commands when the cursor is at the
12493 beginning of a headline, i.e. before the first star.  Configure the variable
12494 @code{org-use-speed-commands} to activate this feature.  There is a
12495 pre-defined list of commands, and you can add more such commands using the
12496 variable @code{org-speed-commands-user}.  Speed keys do not only speed up
12497 navigation and other commands, but they also provide an alternative way to
12498 execute commands bound to keys that are not or not easily available on a tty,
12499 or on a small mobile device with a limited keyboard.
12501 To see which commands are available, activate the feature and press @kbd{?}
12502 with the cursor at the beginning of a headline.
12504 @node Code evaluation security, Customization, Speed keys, Miscellaneous
12505 @section Code evaluation and security issues
12507 Org provides tools to work with the code snippets, including evaluating them.
12509 Running code on your machine always comes with a security risk.  Badly
12510 written or malicious code can be executed on purpose or by accident.  Org has
12511 default settings which will only evaluate such code if you give explicit
12512 permission to do so, and as a casual user of these features you should leave
12513 these precautions intact.
12515 For people who regularly work with such code, the confirmation prompts can
12516 become annoying, and you might want to turn them off.  This can be done, but
12517 you must be aware of the risks that are involved.
12519 Code evaluation can happen under the following circumstances:
12521 @table @i
12522 @item Source code blocks
12523 Source code blocks can be evaluated during export, or when pressing @kbd{C-c
12524 C-c} in the block.  The most important thing to realize here is that Org mode
12525 files which contain code snippets are, in a certain sense, like executable
12526 files.  So you should accept them and load them into Emacs only from trusted
12527 sources - just like you would do with a program you install on your computer.
12529 Make sure you know what you are doing before customizing the variables
12530 which take off the default security brakes.
12532 @defopt org-confirm-babel-evaluate
12533 When set to t user is queried before code block evaluation
12534 @end defopt
12536 @item Following @code{shell} and @code{elisp} links
12537 Org has two link types that can directly evaluate code (@pxref{External
12538 links}).  These links can be problematic because the code to be evaluated is
12539 not visible.
12541 @defopt org-confirm-shell-link-function
12542 Function to queries user about shell link execution.
12543 @end defopt
12544 @defopt org-confirm-elisp-link-function
12545 Functions to query user for Emacs Lisp link execution.
12546 @end defopt
12548 @item Formulas in tables
12549 Formulas in tables (@pxref{The spreadsheet}) are code that is evaluated
12550 either by the @i{calc} interpreter, or by the @i{Emacs Lisp} interpreter.
12551 @end table
12553 @node Customization, In-buffer settings, Code evaluation security, Miscellaneous
12554 @section Customization
12555 @cindex customization
12556 @cindex options, for customization
12557 @cindex variables, for customization
12559 There are more than 180 variables that can be used to customize
12560 Org.  For the sake of compactness of the manual, I am not
12561 describing the variables here.  A structured overview of customization
12562 variables is available with @kbd{M-x org-customize}.  Or select
12563 @code{Browse Org Group} from the @code{Org->Customization} menu.  Many
12564 settings can also be activated on a per-file basis, by putting special
12565 lines into the buffer (@pxref{In-buffer settings}).
12567 @node In-buffer settings, The very busy C-c C-c key, Customization, Miscellaneous
12568 @section Summary of in-buffer settings
12569 @cindex in-buffer settings
12570 @cindex special keywords
12572 Org-mode uses special lines in the buffer to define settings on a
12573 per-file basis.  These lines start with a @samp{#+} followed by a
12574 keyword, a colon, and then individual words defining a setting.  Several
12575 setting words can be in the same line, but you can also have multiple
12576 lines for the keyword.  While these settings are described throughout
12577 the manual, here is a summary.  After changing any of those lines in the
12578 buffer, press @kbd{C-c C-c} with the cursor still in the line to
12579 activate the changes immediately.  Otherwise they become effective only
12580 when the file is visited again in a new Emacs session.
12582 @vindex org-archive-location
12583 @table @kbd
12584 @item #+ARCHIVE: %s_done::
12585 This line sets the archive location for the agenda file.  It applies for
12586 all subsequent lines until the next @samp{#+ARCHIVE} line, or the end
12587 of the file.  The first such line also applies to any entries before it.
12588 The corresponding variable is @code{org-archive-location}.
12589 @item #+CATEGORY:
12590 This line sets the category for the agenda file.  The category applies
12591 for all subsequent lines until the next @samp{#+CATEGORY} line, or the
12592 end of the file.  The first such line also applies to any entries before it.
12593 @item #+COLUMNS: %25ITEM .....
12594 @cindex property, COLUMNS
12595 Set the default format for columns view.  This format applies when
12596 columns view is invoked in locations where no @code{COLUMNS} property
12597 applies.
12598 @item #+CONSTANTS: name1=value1 ...
12599 @vindex org-table-formula-constants
12600 @vindex org-table-formula
12601 Set file-local values for constants to be used in table formulas.  This
12602 line set the local variable @code{org-table-formula-constants-local}.
12603 The global version of this variable is
12604 @code{org-table-formula-constants}.
12605 @item #+FILETAGS: :tag1:tag2:tag3:
12606 Set tags that can be inherited by any entry in the file, including the
12607 top-level entries.
12608 @item #+DRAWERS: NAME1 .....
12609 @vindex org-drawers
12610 Set the file-local set of drawers.  The corresponding global variable is
12611 @code{org-drawers}.
12612 @item #+LINK:  linkword replace
12613 @vindex org-link-abbrev-alist
12614 These lines (several are allowed) specify link abbreviations.
12615 @xref{Link abbreviations}.  The corresponding variable is
12616 @code{org-link-abbrev-alist}.
12617 @item #+PRIORITIES: highest lowest default
12618 @vindex org-highest-priority
12619 @vindex org-lowest-priority
12620 @vindex org-default-priority
12621 This line sets the limits and the default for the priorities.  All three
12622 must be either letters A-Z or numbers 0-9.  The highest priority must
12623 have a lower ASCII number that the lowest priority.
12624 @item #+PROPERTY: Property_Name Value
12625 This line sets a default inheritance value for entries in the current
12626 buffer, most useful for specifying the allowed values of a property.
12627 @cindex #+SETUPFILE
12628 @item #+SETUPFILE: file
12629 This line defines a file that holds more in-buffer setup.  Normally this is
12630 entirely ignored.  Only when the buffer is parsed for option-setting lines
12631 (i.e. when starting Org-mode for a file, when pressing @kbd{C-c C-c} in a
12632 settings line, or when exporting), then the contents of this file are parsed
12633 as if they had been included in the buffer.  In particular, the file can be
12634 any other Org-mode file with internal setup.  You can visit the file the
12635 cursor is in the line with @kbd{C-c '}.
12636 @item #+STARTUP:
12637 @cindex #+STARTUP:
12638 This line sets options to be used at startup of Org-mode, when an
12639 Org file is being visited.
12641 The first set of options deals with the initial visibility of the outline
12642 tree.  The corresponding variable for global default settings is
12643 @code{org-startup-folded}, with a default value @code{t}, which means
12644 @code{overview}.
12645 @vindex org-startup-folded
12646 @cindex @code{overview}, STARTUP keyword
12647 @cindex @code{content}, STARTUP keyword
12648 @cindex @code{showall}, STARTUP keyword
12649 @cindex @code{showeverything}, STARTUP keyword
12650 @example
12651 overview         @r{top-level headlines only}
12652 content          @r{all headlines}
12653 showall          @r{no folding of any entries}
12654 showeverything   @r{show even drawer contents}
12655 @end example
12657 @vindex org-startup-indented
12658 @cindex @code{indent}, STARTUP keyword
12659 @cindex @code{noindent}, STARTUP keyword
12660 Dynamic virtual indentation is controlled by the variable
12661 @code{org-startup-indented}@footnote{Emacs 23 and Org-mode 6.29 are required}
12662 @example
12663 indent     @r{start with @code{org-indent-mode} turned on}
12664 noindent   @r{start with @code{org-indent-mode} turned off}
12665 @end example
12667 @vindex org-startup-align-all-tables
12668 Then there are options for aligning tables upon visiting a file.  This
12669 is useful in files containing narrowed table columns.  The corresponding
12670 variable is @code{org-startup-align-all-tables}, with a default value
12671 @code{nil}.
12672 @cindex @code{align}, STARTUP keyword
12673 @cindex @code{noalign}, STARTUP keyword
12674 @example
12675 align      @r{align all tables}
12676 noalign    @r{don't align tables on startup}
12677 @end example
12678 @vindex org-log-done
12679 @vindex org-log-note-clock-out
12680 @vindex org-log-repeat
12681 Logging the closing and reopening of TODO items and clock intervals can be
12682 configured using these options (see variables @code{org-log-done},
12683 @code{org-log-note-clock-out} and @code{org-log-repeat})
12684 @cindex @code{logdone}, STARTUP keyword
12685 @cindex @code{lognotedone}, STARTUP keyword
12686 @cindex @code{nologdone}, STARTUP keyword
12687 @cindex @code{lognoteclock-out}, STARTUP keyword
12688 @cindex @code{nolognoteclock-out}, STARTUP keyword
12689 @cindex @code{logrepeat}, STARTUP keyword
12690 @cindex @code{lognoterepeat}, STARTUP keyword
12691 @cindex @code{nologrepeat}, STARTUP keyword
12692 @cindex @code{logreschedule}, STARTUP keyword
12693 @cindex @code{lognotereschedule}, STARTUP keyword
12694 @cindex @code{nologreschedule}, STARTUP keyword
12695 @cindex @code{logredeadline}, STARTUP keyword
12696 @cindex @code{lognoteredeadline}, STARTUP keyword
12697 @cindex @code{nologredeadline}, STARTUP keyword
12698 @cindex @code{logrefile}, STARTUP keyword
12699 @cindex @code{lognoterefile}, STARTUP keyword
12700 @cindex @code{nologrefile}, STARTUP keyword
12701 @example
12702 logdone            @r{record a timestamp when an item is marked DONE}
12703 lognotedone        @r{record timestamp and a note when DONE}
12704 nologdone          @r{don't record when items are marked DONE}
12705 logrepeat          @r{record a time when reinstating a repeating item}
12706 lognoterepeat      @r{record a note when reinstating a repeating item}
12707 nologrepeat        @r{do not record when reinstating repeating item}
12708 lognoteclock-out   @r{record a note when clocking out}
12709 nolognoteclock-out @r{don't record a note when clocking out}
12710 logreschedule      @r{record a timestamp when scheduling time changes}
12711 lognotereschedule  @r{record a note when scheduling time changes}
12712 nologreschedule    @r{do not record when a scheduling date changes}
12713 logredeadline      @r{record a timestamp when deadline changes}
12714 lognoteredeadline  @r{record a note when deadline changes}
12715 nologredeadline    @r{do not record when a deadline date changes}
12716 logrefile          @r{record a timestamp when refiling}
12717 lognoterefile      @r{record a note when refiling}
12718 nologrefile        @r{do not record when refiling}
12719 @end example
12720 @vindex org-hide-leading-stars
12721 @vindex org-odd-levels-only
12722 Here are the options for hiding leading stars in outline headings, and for
12723 indenting outlines.  The corresponding variables are
12724 @code{org-hide-leading-stars} and @code{org-odd-levels-only}, both with a
12725 default setting @code{nil} (meaning @code{showstars} and @code{oddeven}).
12726 @cindex @code{hidestars}, STARTUP keyword
12727 @cindex @code{showstars}, STARTUP keyword
12728 @cindex @code{odd}, STARTUP keyword
12729 @cindex @code{even}, STARTUP keyword
12730 @example
12731 hidestars  @r{make all but one of the stars starting a headline invisible.}
12732 showstars  @r{show all stars starting a headline}
12733 indent     @r{virtual indentation according to outline level}
12734 noindent   @r{no virtual indentation according to outline level}
12735 odd        @r{allow only odd outline levels (1,3,...)}
12736 oddeven    @r{allow all outline levels}
12737 @end example
12738 @vindex org-put-time-stamp-overlays
12739 @vindex org-time-stamp-overlay-formats
12740 To turn on custom format overlays over timestamps (variables
12741 @code{org-put-time-stamp-overlays} and
12742 @code{org-time-stamp-overlay-formats}), use
12743 @cindex @code{customtime}, STARTUP keyword
12744 @example
12745 customtime @r{overlay custom time format}
12746 @end example
12747 @vindex constants-unit-system
12748 The following options influence the table spreadsheet (variable
12749 @code{constants-unit-system}).
12750 @cindex @code{constcgs}, STARTUP keyword
12751 @cindex @code{constSI}, STARTUP keyword
12752 @example
12753 constcgs   @r{@file{constants.el} should use the c-g-s unit system}
12754 constSI    @r{@file{constants.el} should use the SI unit system}
12755 @end example
12756 @vindex org-footnote-define-inline
12757 @vindex org-footnote-auto-label
12758 @vindex org-footnote-auto-adjust
12759 To influence footnote settings, use the following keywords.  The
12760 corresponding variables are @code{org-footnote-define-inline},
12761 @code{org-footnote-auto-label}, and @code{org-footnote-auto-adjust}.
12762 @cindex @code{fninline}, STARTUP keyword
12763 @cindex @code{nofninline}, STARTUP keyword
12764 @cindex @code{fnlocal}, STARTUP keyword
12765 @cindex @code{fnprompt}, STARTUP keyword
12766 @cindex @code{fnauto}, STARTUP keyword
12767 @cindex @code{fnconfirm}, STARTUP keyword
12768 @cindex @code{fnplain}, STARTUP keyword
12769 @cindex @code{fnadjust}, STARTUP keyword
12770 @cindex @code{nofnadjust}, STARTUP keyword
12771 @example
12772 fninline    @r{define footnotes inline}
12773 fnnoinline  @r{define footnotes in separate section}
12774 fnlocal     @r{define footnotes near first reference, but not inline}
12775 fnprompt    @r{prompt for footnote labels}
12776 fnauto      @r{create [fn:1]-like labels automatically (default)}
12777 fnconfirm   @r{offer automatic label for editing or confirmation}
12778 fnplain     @r{create [1]-like labels automatically}
12779 fnadjust    @r{automatically renumber and sort footnotes}
12780 nofnadjust  @r{do not renumber and sort automatically}
12781 @end example
12782 @cindex org-hide-block-startup
12783 To hide blocks on startup, use these keywords. The corresponding variable is
12784 @code{org-hide-block-startup}.
12785 @cindex @code{hideblocks}, STARTUP keyword
12786 @cindex @code{nohideblocks}, STARTUP keyword
12787 @example
12788 hideblocks   @r{Hide all begin/end blocks on startup}
12789 nohideblocks @r{Do not hide blocks on startup}
12790 @end example
12791 @cindex org-pretty-entities
12792 The the display of entities as UTF8 characters is governed by the variable
12793 @code{org-pretty-entities} and the keywords
12794 @cindex @code{entitiespretty}, STARTUP keyword
12795 @cindex @code{entitiesplain}, STARTUP keyword
12796 @example
12797 entitiespretty  @r{Show entities as UTF8 characters where possible}
12798 entitiesplain   @r{Leave entities plain}
12799 @end example
12800 @item #+TAGS:  TAG1(c1) TAG2(c2)
12801 @vindex org-tag-alist
12802 These lines (several such lines are allowed) specify the valid tags in
12803 this file, and (potentially) the corresponding @emph{fast tag selection}
12804 keys.  The corresponding variable is @code{org-tag-alist}.
12805 @item #+TBLFM:
12806 This line contains the formulas for the table directly above the line.
12807 @item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+DATE:,
12808 @itemx #+OPTIONS:, #+BIND:, #+XSLT:,
12809 @itemx #+DESCRIPTION:, #+KEYWORDS:,
12810 @itemx #+LATEX_HEADER:, #+STYLE:, #+LINK_UP:, #+LINK_HOME:,
12811 @itemx #+EXPORT_SELECT_TAGS:, #+EXPORT_EXCLUDE_TAGS:
12812 These lines provide settings for exporting files.  For more details see
12813 @ref{Export options}.
12814 @item #+TODO:    #+SEQ_TODO:   #+TYP_TODO:
12815 @vindex org-todo-keywords
12816 These lines set the TODO keywords and their interpretation in the
12817 current file.  The corresponding variable is @code{org-todo-keywords}.
12818 @end table
12820 @node The very busy C-c C-c key, Clean view, In-buffer settings, Miscellaneous
12821 @section The very busy C-c C-c key
12822 @kindex C-c C-c
12823 @cindex C-c C-c, overview
12825 The key @kbd{C-c C-c} has many purposes in Org, which are all
12826 mentioned scattered throughout this manual.  One specific function of
12827 this key is to add @emph{tags} to a headline (@pxref{Tags}).  In many
12828 other circumstances it means something like @emph{``Hey Org, look
12829 here and update according to what you see here''}.  Here is a summary of
12830 what this means in different contexts.
12832 @itemize @minus
12833 @item
12834 If there are highlights in the buffer from the creation of a sparse
12835 tree, or from clock display, remove these highlights.
12836 @item
12837 If the cursor is in one of the special @code{#+KEYWORD} lines, this
12838 triggers scanning the buffer for these lines and updating the
12839 information.
12840 @item
12841 If the cursor is inside a table, realign the table.  This command
12842 works even if the automatic table editor has been turned off.
12843 @item
12844 If the cursor is on a @code{#+TBLFM} line, re-apply the formulas to
12845 the entire table.
12846 @item
12847 If the current buffer is a capture buffer, close the note and file it.
12848 With a prefix argument, file it, without further interaction, to the
12849 default location.
12850 @item
12851 If the cursor is on a @code{<<<target>>>}, update radio targets and
12852 corresponding links in this buffer.
12853 @item
12854 If the cursor is in a property line or at the start or end of a property
12855 drawer, offer property commands.
12856 @item
12857 If the cursor is at a footnote reference, go to the corresponding
12858 definition, and vice versa.
12859 @item
12860 If the cursor is on a statistics cookie, update it.
12861 @item
12862 If the cursor is in a plain list item with a checkbox, toggle the status
12863 of the checkbox.
12864 @item
12865 If the cursor is on a numbered item in a plain list, renumber the
12866 ordered list.
12867 @item
12868 If the cursor is on the @code{#+BEGIN} line of a dynamic block, the
12869 block is updated.
12870 @end itemize
12872 @node Clean view, TTY keys, The very busy C-c C-c key, Miscellaneous
12873 @section A cleaner outline view
12874 @cindex hiding leading stars
12875 @cindex dynamic indentation
12876 @cindex odd-levels-only outlines
12877 @cindex clean outline view
12879 Some people find it noisy and distracting that the Org headlines start with a
12880 potentially large number of stars, and that text below the headlines is not
12881 indented.  While this is no problem when writing a @emph{book-like} document
12882 where the outline headings are really section headings, in a more
12883 @emph{list-oriented} outline, indented structure is a lot cleaner:
12885 @example
12886 @group
12887 * Top level headline             |    * Top level headline
12888 ** Second level                  |      * Second level
12889 *** 3rd level                    |        * 3rd level
12890 some text                        |          some text
12891 *** 3rd level                    |        * 3rd level
12892 more text                        |          more text
12893 * Another top level headline     |    * Another top level headline
12894 @end group
12895 @end example
12897 @noindent
12899 If you are using at least Emacs 23.2@footnote{Emacs 23.1 can actually crash
12900 with @code{org-indent-mode}} and version 6.29 of Org, this kind of view can
12901 be achieved dynamically at display time using @code{org-indent-mode}.  In
12902 this minor mode, all lines are prefixed for display with the necessary amount
12903 of space@footnote{@code{org-indent-mode} also sets the @code{wrap-prefix}
12904 property, such that @code{visual-line-mode} (or purely setting
12905 @code{word-wrap}) wraps long lines (including headlines) correctly indented.
12906 }.  Also headlines are prefixed with additional stars, so that the amount of
12907 indentation shifts by two@footnote{See the variable
12908 @code{org-indent-indentation-per-level}.}  spaces per level.  All headline
12909 stars but the last one are made invisible using the @code{org-hide}
12910 face@footnote{Turning on @code{org-indent-mode} sets
12911 @code{org-hide-leading-stars} to @code{t} and @code{org-adapt-indentation} to
12912 @code{nil}.} - see below under @samp{2.} for more information on how this
12913 works.  You can turn on @code{org-indent-mode} for all files by customizing
12914 the variable @code{org-startup-indented}, or you can turn it on for
12915 individual files using
12917 @example
12918 #+STARTUP: indent
12919 @end example
12921 If you want a similar effect in earlier version of Emacs and/or Org, or if
12922 you want the indentation to be hard space characters so that the plain text
12923 file looks as similar as possible to the Emacs display, Org supports you in
12924 the following way:
12926 @enumerate
12927 @item
12928 @emph{Indentation of text below headlines}@*
12929 You may indent text below each headline to make the left boundary line up
12930 with the headline, like
12932 @example
12933 *** 3rd level
12934     more text, now indented
12935 @end example
12937 @vindex org-adapt-indentation
12938 Org supports this with paragraph filling, line wrapping, and structure
12939 editing@footnote{See also the variable @code{org-adapt-indentation}.},
12940 preserving or adapting the indentation as appropriate.
12942 @item
12943 @vindex org-hide-leading-stars
12944 @emph{Hiding leading stars}@* You can modify the display in such a way that
12945 all leading stars become invisible.  To do this in a global way, configure
12946 the variable @code{org-hide-leading-stars} or change this on a per-file basis
12947 with
12949 @example
12950 #+STARTUP: hidestars
12951 #+STARTUP: showstars
12952 @end example
12954 With hidden stars, the tree becomes:
12956 @example
12957 @group
12958 * Top level headline
12959  * Second level
12960   * 3rd level
12961   ...
12962 @end group
12963 @end example
12965 @noindent
12966 @vindex org-hide @r{(face)}
12967 The leading stars are not truly replaced by whitespace, they are only
12968 fontified with the face @code{org-hide} that uses the background color as
12969 font color.  If you are not using either white or black background, you may
12970 have to customize this face to get the wanted effect.  Another possibility is
12971 to set this font such that the extra stars are @i{almost} invisible, for
12972 example using the color @code{grey90} on a white background.
12974 @item
12975 @vindex org-odd-levels-only
12976 Things become cleaner still if you skip all the even levels and use only odd
12977 levels 1, 3, 5..., effectively adding two stars to go from one outline level
12978 to the next@footnote{When you need to specify a level for a property search
12979 or refile targets, @samp{LEVEL=2} will correspond to 3 stars, etc@.}.  In this
12980 way we get the outline view shown at the beginning of this section.  In order
12981 to make the structure editing and export commands handle this convention
12982 correctly, configure the variable @code{org-odd-levels-only}, or set this on
12983 a per-file basis with one of the following lines:
12985 @example
12986 #+STARTUP: odd
12987 #+STARTUP: oddeven
12988 @end example
12990 You can convert an Org file from single-star-per-level to the
12991 double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
12992 RET} in that file.  The reverse operation is @kbd{M-x
12993 org-convert-to-oddeven-levels}.
12994 @end enumerate
12996 @node TTY keys, Interaction, Clean view, Miscellaneous
12997 @section Using Org on a tty
12998 @cindex tty key bindings
13000 Because Org contains a large number of commands, by default many of
13001 Org's core commands are bound to keys that are generally not
13002 accessible on a tty, such as the cursor keys (@key{left}, @key{right},
13003 @key{up}, @key{down}), @key{TAB} and @key{RET}, in particular when used
13004 together with modifiers like @key{Meta} and/or @key{Shift}.  To access
13005 these commands on a tty when special keys are unavailable, the following
13006 alternative bindings can be used.  The tty bindings below will likely be
13007 more cumbersome; you may find for some of the bindings below that a
13008 customized workaround suits you better.  For example, changing a timestamp
13009 is really only fun with @kbd{S-@key{cursor}} keys, whereas on a
13010 tty you would rather use @kbd{C-c .} to re-insert the timestamp.
13012 @multitable @columnfractions 0.15 0.2 0.1 0.2
13013 @item @b{Default} @tab @b{Alternative 1} @tab @b{Speed key} @tab @b{Alternative 2}
13014 @item @kbd{S-@key{TAB}}     @tab @kbd{C-u @key{TAB}}       @tab @kbd{C} @tab
13015 @item @kbd{M-@key{left}}    @tab @kbd{C-c C-x l}           @tab @kbd{l} @tab @kbd{@key{Esc} @key{left}}
13016 @item @kbd{M-S-@key{left}}  @tab @kbd{C-c C-x L}           @tab @kbd{L} @tab
13017 @item @kbd{M-@key{right}}   @tab @kbd{C-c C-x r}           @tab @kbd{r} @tab @kbd{@key{Esc} @key{right}}
13018 @item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R}           @tab @kbd{R} @tab
13019 @item @kbd{M-@key{up}}      @tab @kbd{C-c C-x u}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{up}}
13020 @item @kbd{M-S-@key{up}}    @tab @kbd{C-c C-x U}           @tab @kbd{U} @tab
13021 @item @kbd{M-@key{down}}    @tab @kbd{C-c C-x d}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{down}}
13022 @item @kbd{M-S-@key{down}}  @tab @kbd{C-c C-x D}           @tab @kbd{D} @tab
13023 @item @kbd{S-@key{RET}}     @tab @kbd{C-c C-x c}           @tab @kbd{ } @tab
13024 @item @kbd{M-@key{RET}}     @tab @kbd{C-c C-x m}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{RET}}
13025 @item @kbd{M-S-@key{RET}}   @tab @kbd{C-c C-x M}           @tab @kbd{ } @tab
13026 @item @kbd{S-@key{left}}    @tab @kbd{C-c @key{left}}      @tab @kbd{ } @tab
13027 @item @kbd{S-@key{right}}   @tab @kbd{C-c @key{right}}     @tab @kbd{ } @tab
13028 @item @kbd{S-@key{up}}      @tab @kbd{C-c @key{up}}        @tab @kbd{ } @tab
13029 @item @kbd{S-@key{down}}    @tab @kbd{C-c @key{down}}      @tab @kbd{ } @tab
13030 @item @kbd{C-S-@key{left}}  @tab @kbd{C-c C-x @key{left}}  @tab @kbd{ } @tab
13031 @item @kbd{C-S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab @kbd{ } @tab
13032 @end multitable
13035 @node Interaction,  , TTY keys, Miscellaneous
13036 @section Interaction with other packages
13037 @cindex packages, interaction with other
13038 Org lives in the world of GNU Emacs and interacts in various ways
13039 with other code out there.
13041 @menu
13042 * Cooperation::                 Packages Org cooperates with
13043 * Conflicts::                   Packages that lead to conflicts
13044 @end menu
13046 @node Cooperation, Conflicts, Interaction, Interaction
13047 @subsection Packages that Org cooperates with
13049 @table @asis
13050 @cindex @file{calc.el}
13051 @cindex Gillespie, Dave
13052 @item @file{calc.el} by Dave Gillespie
13053 Org uses the Calc package for implementing spreadsheet
13054 functionality in its tables (@pxref{The spreadsheet}).  Org
13055 checks for the availability of Calc by looking for the function
13056 @code{calc-eval} which will have been autoloaded during setup if Calc has
13057 been installed properly.  As of Emacs 22, Calc is part of the Emacs
13058 distribution.  Another possibility for interaction between the two
13059 packages is using Calc for embedded calculations. @xref{Embedded Mode,
13060 , Embedded Mode, Calc, GNU Emacs Calc Manual}.
13061 @item @file{constants.el} by Carsten Dominik
13062 @cindex @file{constants.el}
13063 @cindex Dominik, Carsten
13064 @vindex org-table-formula-constants
13065 In a table formula (@pxref{The spreadsheet}), it is possible to use
13066 names for natural constants or units.  Instead of defining your own
13067 constants in the variable @code{org-table-formula-constants}, install
13068 the @file{constants} package which defines a large number of constants
13069 and units, and lets you use unit prefixes like @samp{M} for
13070 @samp{Mega}, etc@.  You will need version 2.0 of this package, available
13071 at @url{http://www.astro.uva.nl/~dominik/Tools}. Org checks for
13072 the function @code{constants-get}, which has to be autoloaded in your
13073 setup.  See the installation instructions in the file
13074 @file{constants.el}.
13075 @item @file{cdlatex.el} by Carsten Dominik
13076 @cindex @file{cdlatex.el}
13077 @cindex Dominik, Carsten
13078 Org-mode can make use of the CDLa@TeX{} package to efficiently enter
13079 La@TeX{} fragments into Org files.  See @ref{CDLaTeX mode}.
13080 @item @file{imenu.el} by Ake Stenhoff and Lars Lindberg
13081 @cindex @file{imenu.el}
13082 Imenu allows menu access to an index of items in a file.  Org-mode
13083 supports Imenu---all you need to do to get the index is the following:
13084 @lisp
13085 (add-hook 'org-mode-hook
13086           (lambda () (imenu-add-to-menubar "Imenu")))
13087 @end lisp
13088 @vindex org-imenu-depth
13089 By default the index is two levels deep---you can modify the depth using
13090 the option @code{org-imenu-depth}.
13091 @item @file{remember.el} by John Wiegley
13092 @cindex @file{remember.el}
13093 @cindex Wiegley, John
13094 Org used to use this package for capture, but no longer does.
13095 @item @file{speedbar.el} by Eric M. Ludlam
13096 @cindex @file{speedbar.el}
13097 @cindex Ludlam, Eric M.
13098 Speedbar is a package that creates a special frame displaying files and
13099 index items in files.  Org-mode supports Speedbar and allows you to
13100 drill into Org files directly from the Speedbar.  It also allows you to
13101 restrict the scope of agenda commands to a file or a subtree by using
13102 the command @kbd{<} in the Speedbar frame.
13103 @cindex @file{table.el}
13104 @item @file{table.el} by Takaaki Ota
13105 @kindex C-c C-c
13106 @cindex table editor, @file{table.el}
13107 @cindex @file{table.el}
13108 @cindex Ota, Takaaki
13110 Complex ASCII tables with automatic line wrapping, column- and row-spanning,
13111 and alignment can be created using the Emacs table package by Takaaki Ota
13112 (@uref{http://sourceforge.net/projects/table}, and also part of Emacs 22).
13113 Org-mode will recognize these tables and export them properly.  Because of
13114 interference with other Org-mode functionality, you unfortunately cannot edit
13115 these tables directly in the buffer.  Instead, you need to use the command
13116 @kbd{C-c '} to edit them, similar to source code snippets.
13118 @table @kbd
13119 @kindex C-c '
13120 @item C-c '
13121 Edit a @file{table.el} table.  Works when the cursor is in a table.el table.
13123 @kindex C-c ~
13124 @item C-c ~
13125 Insert a @file{table.el} table.  If there is already a table at point, this
13126 command converts it between the @file{table.el} format and the Org-mode
13127 format.  See the documentation string of the command
13128 @code{org-convert-table} for the restrictions under which this is
13129 possible.
13130 @end table
13131 @file{table.el} is part of Emacs since Emacs 22.
13132 @item @file{footnote.el} by Steven L. Baur
13133 @cindex @file{footnote.el}
13134 @cindex Baur, Steven L.
13135 Org-mode recognizes numerical footnotes as provided by this package.
13136 However, Org-mode also has its own footnote support (@pxref{Footnotes}),
13137 which makes using @file{footnote.el} unnecessary.
13138 @end table
13140 @node Conflicts,  , Cooperation, Interaction
13141 @subsection Packages that lead to conflicts with Org-mode
13143 @table @asis
13145 @cindex @code{shift-selection-mode}
13146 @vindex org-support-shift-select
13147 In Emacs 23, @code{shift-selection-mode} is on by default, meaning that
13148 cursor motions combined with the shift key should start or enlarge regions.
13149 This conflicts with the use of @kbd{S-@key{cursor}} commands in Org to change
13150 timestamps, TODO keywords, priorities, and item bullet types if the cursor is
13151 at such a location.  By default, @kbd{S-@key{cursor}} commands outside
13152 special contexts don't do anything, but you can customize the variable
13153 @code{org-support-shift-select}.  Org-mode then tries to accommodate shift
13154 selection by (i) using it outside of the special contexts where special
13155 commands apply, and by (ii) extending an existing active region even if the
13156 cursor moves across a special context.
13158 @item @file{CUA.el} by Kim. F. Storm
13159 @cindex @file{CUA.el}
13160 @cindex Storm, Kim. F.
13161 @vindex org-replace-disputed-keys
13162 Key bindings in Org conflict with the @kbd{S-<cursor>} keys used by CUA mode
13163 (as well as @code{pc-select-mode} and @code{s-region-mode}) to select and extend the
13164 region.  In fact, Emacs 23 has this built-in in the form of
13165 @code{shift-selection-mode}, see previous paragraph.  If you are using Emacs
13166 23, you probably don't want to use another package for this purpose.  However,
13167 if you prefer to leave these keys to a different package while working in
13168 Org-mode, configure the variable @code{org-replace-disputed-keys}.  When set,
13169 Org will move the following key bindings in Org files, and in the agenda
13170 buffer (but not during date selection).
13172 @example
13173 S-UP      ->  M-p             S-DOWN     ->  M-n
13174 S-LEFT    ->  M--             S-RIGHT    ->  M-+
13175 C-S-LEFT  ->  M-S--           C-S-RIGHT  ->  M-S-+
13176 @end example
13178 @vindex org-disputed-keys
13179 Yes, these are unfortunately more difficult to remember.  If you want
13180 to have other replacement keys, look at the variable
13181 @code{org-disputed-keys}.
13183 @item @file{yasnippet.el}
13184 @cindex @file{yasnippet.el}
13185 The way Org-mode binds the TAB key (binding to @code{[tab]} instead of
13186 @code{"\t"}) overrules yasnippets' access to this key.  The following code
13187 fixed this problem:
13189 @lisp
13190 (add-hook 'org-mode-hook
13191           (lambda ()
13192             (org-set-local 'yas/trigger-key [tab])
13193             (define-key yas/keymap [tab] 'yas/next-field-group)))
13194 @end lisp
13196 @item @file{windmove.el} by Hovav Shacham
13197 @cindex @file{windmove.el}
13198 This package also uses the @kbd{S-<cursor>} keys, so everything written
13199 in the paragraph above about CUA mode also applies here.  If you want make
13200 the windmove function active in locations where Org-mode does not have
13201 special functionality on @kbd{S-@key{cursor}}, add this to your
13202 configuration:
13204 @lisp
13205 ;; Make windmove work in org-mode:
13206 (add-hook 'org-shiftup-final-hook 'windmove-up)
13207 (add-hook 'org-shiftleft-final-hook 'windmove-left)
13208 (add-hook 'org-shiftdown-final-hook 'windmove-down)
13209 (add-hook 'org-shiftright-final-hook 'windmove-right)
13210 @end lisp
13212 @item @file{viper.el} by Michael Kifer
13213 @cindex @file{viper.el}
13214 @kindex C-c /
13215 Viper uses @kbd{C-c /} and therefore makes this key not access the
13216 corresponding Org-mode command @code{org-sparse-tree}.  You need to find
13217 another key for this command, or override the key in
13218 @code{viper-vi-global-user-map} with
13220 @lisp
13221 (define-key viper-vi-global-user-map "C-c /" 'org-sparse-tree)
13222 @end lisp
13224 @end table
13227 @node Hacking, MobileOrg, Miscellaneous, Top
13228 @appendix Hacking
13229 @cindex hacking
13231 This appendix covers some aspects where users can extend the functionality of
13232 Org.
13234 @menu
13235 * Hooks::                       Who to reach into Org's internals
13236 * Add-on packages::             Available extensions
13237 * Adding hyperlink types::      New custom link types
13238 * Context-sensitive commands::  How to add functionality to such commands
13239 * Tables in arbitrary syntax::  Orgtbl for La@TeX{} and other programs
13240 * Dynamic blocks::              Automatically filled blocks
13241 * Special agenda views::        Customized views
13242 * Extracting agenda information::  Postprocessing of agenda information
13243 * Using the property API::      Writing programs that use entry properties
13244 * Using the mapping API::       Mapping over all or selected entries
13245 @end menu
13247 @node Hooks, Add-on packages, Hacking, Hacking
13248 @section Hooks
13249 @cindex hooks
13251 Org has a large number of hook variables that can be used to add
13252 functionality.  This appendix about hacking is going to illustrate the
13253 use of some of them.  A complete list of all hooks with documentation is
13254 maintained by the Worg project and can be found at
13255 @uref{http://orgmode.org/worg/org-configs/org-hooks.php}.
13257 @node Add-on packages, Adding hyperlink types, Hooks, Hacking
13258 @section Add-on packages
13259 @cindex add-on packages
13261 A large number of add-on packages have been written by various authors.
13262 These packages are not part of Emacs, but they are distributed as contributed
13263 packages with the separate release available at the Org-mode home page at
13264 @uref{http://orgmode.org}.  The list of contributed packages, along with
13265 documentation about each package, is maintained by the Worg project at
13266 @uref{http://orgmode.org/worg/org-contrib/}.
13270 @node Adding hyperlink types, Context-sensitive commands, Add-on packages, Hacking
13271 @section Adding hyperlink types
13272 @cindex hyperlinks, adding new types
13274 Org has a large number of hyperlink types built-in
13275 (@pxref{Hyperlinks}).  If you would like to add new link types, Org
13276 provides an interface for doing so.  Let's look at an example file,
13277 @file{org-man.el}, that will add support for creating links like
13278 @samp{[[man:printf][The printf manpage]]} to show Unix manual pages inside
13279 Emacs:
13281 @lisp
13282 ;;; org-man.el - Support for links to manpages in Org
13284 (require 'org)
13286 (org-add-link-type "man" 'org-man-open)
13287 (add-hook 'org-store-link-functions 'org-man-store-link)
13289 (defcustom org-man-command 'man
13290   "The Emacs command to be used to display a man page."
13291   :group 'org-link
13292   :type '(choice (const man) (const woman)))
13294 (defun org-man-open (path)
13295   "Visit the manpage on PATH.
13296 PATH should be a topic that can be thrown at the man command."
13297   (funcall org-man-command path))
13299 (defun org-man-store-link ()
13300   "Store a link to a manpage."
13301   (when (memq major-mode '(Man-mode woman-mode))
13302     ;; This is a man page, we do make this link
13303     (let* ((page (org-man-get-page-name))
13304            (link (concat "man:" page))
13305            (description (format "Manpage for %s" page)))
13306       (org-store-link-props
13307        :type "man"
13308        :link link
13309        :description description))))
13311 (defun org-man-get-page-name ()
13312   "Extract the page name from the buffer name."
13313   ;; This works for both `Man-mode' and `woman-mode'.
13314   (if (string-match " \\(\\S-+\\)\\*" (buffer-name))
13315       (match-string 1 (buffer-name))
13316     (error "Cannot create link to this man page")))
13318 (provide 'org-man)
13320 ;;; org-man.el ends here
13321 @end lisp
13323 @noindent
13324 You would activate this new link type in @file{.emacs} with
13326 @lisp
13327 (require 'org-man)
13328 @end lisp
13330 @noindent
13331 Let's go through the file and see what it does.
13332 @enumerate
13333 @item
13334 It does @code{(require 'org)} to make sure that @file{org.el} has been
13335 loaded.
13336 @item
13337 The next line calls @code{org-add-link-type} to define a new link type
13338 with prefix @samp{man}.  The call also contains the name of a function
13339 that will be called to follow such a link.
13340 @item
13341 @vindex org-store-link-functions
13342 The next line adds a function to @code{org-store-link-functions}, in
13343 order to allow the command @kbd{C-c l} to record a useful link in a
13344 buffer displaying a man page.
13345 @end enumerate
13347 The rest of the file defines the necessary variables and functions.
13348 First there is a customization variable that determines which Emacs
13349 command should be used to display man pages.  There are two options,
13350 @code{man} and @code{woman}.  Then the function to follow a link is
13351 defined.  It gets the link path as an argument---in this case the link
13352 path is just a topic for the manual command.  The function calls the
13353 value of @code{org-man-command} to display the man page.
13355 Finally the function @code{org-man-store-link} is defined.  When you try
13356 to store a link with @kbd{C-c l}, this function will be called to
13357 try to make a link.  The function must first decide if it is supposed to
13358 create the link for this buffer type; we do this by checking the value
13359 of the variable @code{major-mode}.  If not, the function must exit and
13360 return the value @code{nil}.  If yes, the link is created by getting the
13361 manual topic from the buffer name and prefixing it with the string
13362 @samp{man:}.  Then it must call the command @code{org-store-link-props}
13363 and set the @code{:type} and @code{:link} properties.  Optionally you
13364 can also set the @code{:description} property to provide a default for
13365 the link description when the link is later inserted into an Org
13366 buffer with @kbd{C-c C-l}.
13368 When is makes sense for your new link type, you may also define a function
13369 @code{org-PREFIX-complete-link} that implements special (e.g. completion)
13370 support for inserting such a link with @kbd{C-c C-l}.  Such a function should
13371 not accept any arguments, and return the full link with prefix.
13373 @node Context-sensitive commands, Tables in arbitrary syntax, Adding hyperlink types, Hacking
13374 @section Context-sensitive commands
13375 @cindex context-sensitive commands, hooks
13376 @cindex add-ons, context-sensitive commands
13377 @vindex org-ctrl-c-ctrl-c-hook
13379 Org has several commands that act differently depending on context.  The most
13380 important example it the @kbd{C-c C-c} (@pxref{The very busy C-c C-c key}).
13381 Also the @kbd{M-cursor} and @kbd{M-S-cursor} keys have this property.
13383 Add-ons can tap into this functionality by providing a function that detects
13384 special context for that add-on and executes functionality appropriate for
13385 the context.  Here is an example from Dan Davison's @file{org-R.el} which
13386 allows you to evaluate commands based on the @file{R} programming language
13387 @footnote{@file{org-R.el} has been replaced by the org-mode functionality
13388 described in @ref{Working With Source Code} and is now obsolete.}.  For this
13389 package, special contexts are lines that start with @code{#+R:} or
13390 @code{#+RR:}.
13392 @lisp
13393 (defun org-R-apply-maybe ()
13394   "Detect if this is context for org-R and execute R commands."
13395   (if (save-excursion
13396         (beginning-of-line 1)
13397         (looking-at "#\\+RR?:"))
13398       (progn (call-interactively 'org-R-apply)
13399              t) ;; to signal that we took action
13400     nil)) ;; to signal that we did not
13402 (add-hook 'org-ctrl-c-ctrl-c-hook 'org-R-apply-maybe)
13403 @end lisp
13405 The function first checks if the cursor is in such a line.  If that is the
13406 case, @code{org-R-apply} is called and the function returns @code{t} to
13407 signal that action was taken, and @kbd{C-c C-c} will stop looking for other
13408 contexts.  If the function finds it should do nothing locally, it returns @code{nil} so that other, similar functions can have a try.
13411 @node Tables in arbitrary syntax, Dynamic blocks, Context-sensitive commands, Hacking
13412 @section Tables and lists in arbitrary syntax
13413 @cindex tables, in other modes
13414 @cindex lists, in other modes
13415 @cindex Orgtbl mode
13417 Since Orgtbl mode can be used as a minor mode in arbitrary buffers, a
13418 frequent feature request has been to make it work with native tables in
13419 specific languages, for example La@TeX{}.  However, this is extremely
13420 hard to do in a general way, would lead to a customization nightmare,
13421 and would take away much of the simplicity of the Orgtbl-mode table
13422 editor.
13424 This appendix describes a different approach.  We keep the Orgtbl mode
13425 table in its native format (the @i{source table}), and use a custom
13426 function to @i{translate} the table to the correct syntax, and to
13427 @i{install} it in the right location (the @i{target table}).  This puts
13428 the burden of writing conversion functions on the user, but it allows
13429 for a very flexible system.
13431 Bastien added the ability to do the same with lists, in Orgstruct mode.  You
13432 can use Org's facilities to edit and structure lists by turning
13433 @code{orgstruct-mode} on, then locally exporting such lists in another format
13434 (HTML, La@TeX{} or Texinfo.)
13437 @menu
13438 * Radio tables::                Sending and receiving radio tables
13439 * A LaTeX example::             Step by step, almost a tutorial
13440 * Translator functions::        Copy and modify
13441 * Radio lists::                 Doing the same for lists
13442 @end menu
13444 @node Radio tables, A LaTeX example, Tables in arbitrary syntax, Tables in arbitrary syntax
13445 @subsection Radio tables
13446 @cindex radio tables
13448 To define the location of the target table, you first need to create two
13449 lines that are comments in the current mode, but contain magic words for
13450 Orgtbl mode to find.  Orgtbl mode will insert the translated table
13451 between these lines, replacing whatever was there before.  For example:
13453 @example
13454 /* BEGIN RECEIVE ORGTBL table_name */
13455 /* END RECEIVE ORGTBL table_name */
13456 @end example
13458 @noindent
13459 Just above the source table, we put a special line that tells
13460 Orgtbl mode how to translate this table and where to install it.  For
13461 example:
13462 @cindex #+ORGTBL
13463 @example
13464 #+ORGTBL: SEND table_name translation_function arguments....
13465 @end example
13467 @noindent
13468 @code{table_name} is the reference name for the table that is also used
13469 in the receiver lines. @code{translation_function} is the Lisp function
13470 that does the translation.  Furthermore, the line can contain a list of
13471 arguments (alternating key and value) at the end.  The arguments will be
13472 passed as a property list to the translation function for
13473 interpretation.  A few standard parameters are already recognized and
13474 acted upon before the translation function is called:
13476 @table @code
13477 @item :skip N
13478 Skip the first N lines of the table.  Hlines do count as separate lines for
13479 this parameter!
13481 @item :skipcols (n1 n2 ...)
13482 List of columns that should be skipped.  If the table has a column with
13483 calculation marks, that column is automatically discarded as well.
13484 Please note that the translator function sees the table @emph{after} the
13485 removal of these columns, the function never knows that there have been
13486 additional columns.
13487 @end table
13489 @noindent
13490 The one problem remaining is how to keep the source table in the buffer
13491 without disturbing the normal workings of the file, for example during
13492 compilation of a C file or processing of a La@TeX{} file.  There are a
13493 number of different solutions:
13495 @itemize @bullet
13496 @item
13497 The table could be placed in a block comment if that is supported by the
13498 language.  For example, in C mode you could wrap the table between
13499 @samp{/*} and @samp{*/} lines.
13500 @item
13501 Sometimes it is possible to put the table after some kind of @i{END}
13502 statement, for example @samp{\bye} in @TeX{} and @samp{\end@{document@}}
13503 in La@TeX{}.
13504 @item
13505 You can just comment the table line-by-line whenever you want to process
13506 the file, and uncomment it whenever you need to edit the table.  This
13507 only sounds tedious---the command @kbd{M-x orgtbl-toggle-comment}
13508 makes this comment-toggling very easy, in particular if you bind it to a
13509 key.
13510 @end itemize
13512 @node A LaTeX example, Translator functions, Radio tables, Tables in arbitrary syntax
13513 @subsection A La@TeX{} example of radio tables
13514 @cindex La@TeX{}, and Orgtbl mode
13516 The best way to wrap the source table in La@TeX{} is to use the
13517 @code{comment} environment provided by @file{comment.sty}.  It has to be
13518 activated by placing @code{\usepackage@{comment@}} into the document
13519 header.  Orgtbl mode can insert a radio table skeleton@footnote{By
13520 default this works only for La@TeX{}, HTML, and Texinfo.  Configure the
13521 variable @code{orgtbl-radio-tables} to install templates for other
13522 modes.}  with the command @kbd{M-x orgtbl-insert-radio-table}.  You will
13523 be prompted for a table name, let's say we use @samp{salesfigures}.  You
13524 will then get the following template:
13526 @cindex #+ORGTBL, SEND
13527 @example
13528 % BEGIN RECEIVE ORGTBL salesfigures
13529 % END RECEIVE ORGTBL salesfigures
13530 \begin@{comment@}
13531 #+ORGTBL: SEND salesfigures orgtbl-to-latex
13532 | | |
13533 \end@{comment@}
13534 @end example
13536 @noindent
13537 @vindex La@TeX{}-verbatim-environments
13538 The @code{#+ORGTBL: SEND} line tells Orgtbl mode to use the function
13539 @code{orgtbl-to-latex} to convert the table into La@TeX{} and to put it
13540 into the receiver location with name @code{salesfigures}.  You may now
13541 fill in the table, feel free to use the spreadsheet features@footnote{If
13542 the @samp{#+TBLFM} line contains an odd number of dollar characters,
13543 this may cause problems with font-lock in La@TeX{} mode.  As shown in the
13544 example you can fix this by adding an extra line inside the
13545 @code{comment} environment that is used to balance the dollar
13546 expressions.  If you are using AUC@TeX{} with the font-latex library, a
13547 much better solution is to add the @code{comment} environment to the
13548 variable @code{LaTeX-verbatim-environments}.}:
13550 @example
13551 % BEGIN RECEIVE ORGTBL salesfigures
13552 % END RECEIVE ORGTBL salesfigures
13553 \begin@{comment@}
13554 #+ORGTBL: SEND salesfigures orgtbl-to-latex
13555 | Month | Days | Nr sold | per day |
13556 |-------+------+---------+---------|
13557 | Jan   |   23 |      55 |     2.4 |
13558 | Feb   |   21 |      16 |     0.8 |
13559 | March |   22 |     278 |    12.6 |
13560 #+TBLFM: $4=$3/$2;%.1f
13561 % $ (optional extra dollar to keep font-lock happy, see footnote)
13562 \end@{comment@}
13563 @end example
13565 @noindent
13566 When you are done, press @kbd{C-c C-c} in the table to get the converted
13567 table inserted between the two marker lines.
13569 Now let's assume you want to make the table header by hand, because you
13570 want to control how columns are aligned, etc@.  In this case we make sure
13571 that the table translator skips the first 2 lines of the source
13572 table, and tell the command to work as a @i{splice}, i.e. to not produce
13573 header and footer commands of the target table:
13575 @example
13576 \begin@{tabular@}@{lrrr@}
13577 Month & \multicolumn@{1@}@{c@}@{Days@} & Nr.\ sold & per day\\
13578 % BEGIN RECEIVE ORGTBL salesfigures
13579 % END RECEIVE ORGTBL salesfigures
13580 \end@{tabular@}
13582 \begin@{comment@}
13583 #+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2
13584 | Month | Days | Nr sold | per day |
13585 |-------+------+---------+---------|
13586 | Jan   |   23 |      55 |     2.4 |
13587 | Feb   |   21 |      16 |     0.8 |
13588 | March |   22 |     278 |    12.6 |
13589 #+TBLFM: $4=$3/$2;%.1f
13590 \end@{comment@}
13591 @end example
13593 The La@TeX{} translator function @code{orgtbl-to-latex} is already part of
13594 Orgtbl mode.  It uses a @code{tabular} environment to typeset the table
13595 and marks horizontal lines with @code{\hline}.  Furthermore, it
13596 interprets the following parameters (see also @pxref{Translator functions}):
13598 @table @code
13599 @item :splice nil/t
13600 When set to t, return only table body lines, don't wrap them into a
13601 tabular environment.  Default is nil.
13603 @item :fmt fmt
13604 A format to be used to wrap each field, it should contain @code{%s} for the
13605 original field value.  For example, to wrap each field value in dollars,
13606 you could use @code{:fmt "$%s$"}.  This may also be a property list with
13607 column numbers and formats. for example @code{:fmt (2 "$%s$" 4 "%s\\%%")}.
13608 A function of one argument can be used in place of the strings; the
13609 function must return a formatted string.
13611 @item :efmt efmt
13612 Use this format to print numbers with exponentials.  The format should
13613 have @code{%s} twice for inserting mantissa and exponent, for example
13614 @code{"%s\\times10^@{%s@}"}.  The default is @code{"%s\\,(%s)"}.  This
13615 may also be a property list with column numbers and formats, for example
13616 @code{:efmt (2 "$%s\\times10^@{%s@}$" 4 "$%s\\cdot10^@{%s@}$")}.  After
13617 @code{efmt} has been applied to a value, @code{fmt} will also be
13618 applied.  Similar to @code{fmt}, functions of two arguments can be
13619 supplied instead of strings.
13620 @end table
13622 @node Translator functions, Radio lists, A LaTeX example, Tables in arbitrary syntax
13623 @subsection Translator functions
13624 @cindex HTML, and Orgtbl mode
13625 @cindex translator function
13627 Orgtbl mode has several translator functions built-in: @code{orgtbl-to-csv}
13628 (comma-separated values), @code{orgtbl-to-tsv} (TAB-separated values)
13629 @code{orgtbl-to-latex}, @code{orgtbl-to-html}, and @code{orgtbl-to-texinfo}.
13630 Except for @code{orgtbl-to-html}@footnote{The HTML translator uses the same
13631 code that produces tables during HTML export.}, these all use a generic
13632 translator, @code{orgtbl-to-generic}.  For example, @code{orgtbl-to-latex}
13633 itself is a very short function that computes the column definitions for the
13634 @code{tabular} environment, defines a few field and line separators and then
13635 hands processing over to the generic translator.  Here is the entire code:
13637 @lisp
13638 @group
13639 (defun orgtbl-to-latex (table params)
13640   "Convert the Orgtbl mode TABLE to LaTeX."
13641   (let* ((alignment (mapconcat (lambda (x) (if x "r" "l"))
13642                                org-table-last-alignment ""))
13643          (params2
13644           (list
13645            :tstart (concat "\\begin@{tabular@}@{" alignment "@}")
13646            :tend "\\end@{tabular@}"
13647            :lstart "" :lend " \\\\" :sep " & "
13648            :efmt "%s\\,(%s)" :hline "\\hline")))
13649     (orgtbl-to-generic table (org-combine-plists params2 params))))
13650 @end group
13651 @end lisp
13653 As you can see, the properties passed into the function (variable
13654 @var{PARAMS}) are combined with the ones newly defined in the function
13655 (variable @var{PARAMS2}).  The ones passed into the function (i.e. the
13656 ones set by the @samp{ORGTBL SEND} line) take precedence.  So if you
13657 would like to use the La@TeX{} translator, but wanted the line endings to
13658 be @samp{\\[2mm]} instead of the default @samp{\\}, you could just
13659 overrule the default with
13661 @example
13662 #+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]"
13663 @end example
13665 For a new language, you can either write your own converter function in
13666 analogy with the La@TeX{} translator, or you can use the generic function
13667 directly.  For example, if you have a language where a table is started
13668 with @samp{!BTBL!}, ended with @samp{!ETBL!}, and where table lines are
13669 started with @samp{!BL!}, ended with @samp{!EL!}, and where the field
13670 separator is a TAB, you could call the generic translator like this (on
13671 a single line!):
13673 @example
13674 #+ORGTBL: SEND test orgtbl-to-generic :tstart "!BTBL!" :tend "!ETBL!"
13675                               :lstart "!BL! " :lend " !EL!" :sep "\t"
13676 @end example
13678 @noindent
13679 Please check the documentation string of the function
13680 @code{orgtbl-to-generic} for a full list of parameters understood by
13681 that function, and remember that you can pass each of them into
13682 @code{orgtbl-to-latex}, @code{orgtbl-to-texinfo}, and any other function
13683 using the generic function.
13685 Of course you can also write a completely new function doing complicated
13686 things the generic translator cannot do.  A translator function takes
13687 two arguments.  The first argument is the table, a list of lines, each
13688 line either the symbol @code{hline} or a list of fields.  The second
13689 argument is the property list containing all parameters specified in the
13690 @samp{#+ORGTBL: SEND} line.  The function must return a single string
13691 containing the formatted table.  If you write a generally useful
13692 translator, please post it on @email{emacs-orgmode@@gnu.org} so that
13693 others can benefit from your work.
13695 @node Radio lists,  , Translator functions, Tables in arbitrary syntax
13696 @subsection Radio lists
13697 @cindex radio lists
13698 @cindex org-list-insert-radio-list
13700 Sending and receiving radio lists works exactly the same way than sending and
13701 receiving radio tables (@pxref{Radio tables}).  As for radio tables, you can
13702 insert radio lists templates in HTML, La@TeX{} and Texinfo modes by calling
13703 @code{org-list-insert-radio-list}.
13705 Here are the differences with radio tables:
13707 @itemize @minus
13708 @item
13709 Orgstruct mode must be active.
13710 @item
13711 Use the @code{ORGLST} keyword instead of @code{ORGTBL}.
13712 @item
13713 The available translation functions for radio lists don't take
13714 parameters.
13715 @item
13716 @kbd{C-c C-c} will work when pressed on the first item of the list.
13717 @end itemize
13719 Here is a La@TeX{} example.  Let's say that you have this in your
13720 La@TeX{} file:
13722 @cindex #+ORGLST
13723 @example
13724 % BEGIN RECEIVE ORGLST to-buy
13725 % END RECEIVE ORGLST to-buy
13726 \begin@{comment@}
13727 #+ORGLST: SEND to-buy org-list-to-latex
13728 - a new house
13729 - a new computer
13730   + a new keyboard
13731   + a new mouse
13732 - a new life
13733 \end@{comment@}
13734 @end example
13736 Pressing `C-c C-c' on @code{a new house} and will insert the converted
13737 La@TeX{} list between the two marker lines.
13739 @node Dynamic blocks, Special agenda views, Tables in arbitrary syntax, Hacking
13740 @section Dynamic blocks
13741 @cindex dynamic blocks
13743 Org documents can contain @emph{dynamic blocks}.  These are
13744 specially marked regions that are updated by some user-written function.
13745 A good example for such a block is the clock table inserted by the
13746 command @kbd{C-c C-x C-r} (@pxref{Clocking work time}).
13748 Dynamic block are enclosed by a BEGIN-END structure that assigns a name
13749 to the block and can also specify parameters for the function producing
13750 the content of the block.
13752 #+BEGIN:dynamic block
13753 @example
13754 #+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
13756 #+END:
13757 @end example
13759 Dynamic blocks are updated with the following commands
13761 @table @kbd
13762 @kindex C-c C-x C-u
13763 @item C-c C-x C-u
13764 Update dynamic block at point.
13765 @kindex C-u C-c C-x C-u
13766 @item C-u C-c C-x C-u
13767 Update all dynamic blocks in the current file.
13768 @end table
13770 Updating a dynamic block means to remove all the text between BEGIN and
13771 END, parse the BEGIN line for parameters and then call the specific
13772 writer function for this block to insert the new content.  If you want
13773 to use the original content in the writer function, you can use the
13774 extra parameter @code{:content}.
13776 For a block with name @code{myblock}, the writer function is
13777 @code{org-dblock-write:myblock} with as only parameter a property list
13778 with the parameters given in the begin line.  Here is a trivial example
13779 of a block that keeps track of when the block update function was last
13780 run:
13782 @example
13783 #+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M"
13785 #+END:
13786 @end example
13788 @noindent
13789 The corresponding block writer function could look like this:
13791 @lisp
13792 (defun org-dblock-write:block-update-time (params)
13793    (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
13794      (insert "Last block update at: "
13795              (format-time-string fmt (current-time)))))
13796 @end lisp
13798 If you want to make sure that all dynamic blocks are always up-to-date,
13799 you could add the function @code{org-update-all-dblocks} to a hook, for
13800 example @code{before-save-hook}.  @code{org-update-all-dblocks} is
13801 written in a way such that it does nothing in buffers that are not in
13802 @code{org-mode}.
13804 @node Special agenda views, Extracting agenda information, Dynamic blocks, Hacking
13805 @section Special agenda views
13806 @cindex agenda views, user-defined
13808 Org provides a special hook that can be used to narrow down the
13809 selection made by any of the agenda views.  You may specify a function
13810 that is used at each match to verify if the match should indeed be part
13811 of the agenda view, and if not, how much should be skipped.
13813 Let's say you want to produce a list of projects that contain a WAITING
13814 tag anywhere in the project tree.  Let's further assume that you have
13815 marked all tree headings that define a project with the TODO keyword
13816 PROJECT.  In this case you would run a TODO search for the keyword
13817 PROJECT, but skip the match unless there is a WAITING tag anywhere in
13818 the subtree belonging to the project line.
13820 To achieve this, you must write a function that searches the subtree for
13821 the tag.  If the tag is found, the function must return @code{nil} to
13822 indicate that this match should not be skipped.  If there is no such
13823 tag, return the location of the end of the subtree, to indicate that
13824 search should continue from there.
13826 @lisp
13827 (defun my-skip-unless-waiting ()
13828   "Skip trees that are not waiting"
13829   (let ((subtree-end (save-excursion (org-end-of-subtree t))))
13830     (if (re-search-forward ":waiting:" subtree-end t)
13831         nil          ; tag found, do not skip
13832       subtree-end))) ; tag not found, continue after end of subtree
13833 @end lisp
13835 Now you may use this function in an agenda custom command, for example
13836 like this:
13838 @lisp
13839 (org-add-agenda-custom-command
13840  '("b" todo "PROJECT"
13841    ((org-agenda-skip-function 'my-skip-unless-waiting)
13842     (org-agenda-overriding-header "Projects waiting for something: "))))
13843 @end lisp
13845 @vindex org-agenda-overriding-header
13846 Note that this also binds @code{org-agenda-overriding-header} to get a
13847 meaningful header in the agenda view.
13849 @vindex org-odd-levels-only
13850 @vindex org-agenda-skip-function
13851 A general way to create custom searches is to base them on a search for
13852 entries with a certain level limit.  If you want to study all entries with
13853 your custom search function, simply do a search for
13854 @samp{LEVEL>0}@footnote{Note that, when using @code{org-odd-levels-only}, a
13855 level number corresponds to order in the hierarchy, not to the number of
13856 stars.}, and then use @code{org-agenda-skip-function} to select the entries
13857 you really want to have.
13859 You may also put a Lisp form into @code{org-agenda-skip-function}.  In
13860 particular, you may use the functions @code{org-agenda-skip-entry-if}
13861 and @code{org-agenda-skip-subtree-if} in this form, for example:
13863 @table @code
13864 @item '(org-agenda-skip-entry-if 'scheduled)
13865 Skip current entry if it has been scheduled.
13866 @item '(org-agenda-skip-entry-if 'notscheduled)
13867 Skip current entry if it has not been scheduled.
13868 @item '(org-agenda-skip-entry-if 'deadline)
13869 Skip current entry if it has a deadline.
13870 @item '(org-agenda-skip-entry-if 'scheduled 'deadline)
13871 Skip current entry if it has a deadline, or if it is scheduled.
13872 @item '(org-agenda-skip-entry-if 'todo '("TODO" "WAITING"))
13873 Skip current entry if the TODO keyword is TODO or WAITING.
13874 @item '(org-agenda-skip-entry-if 'todo 'done)
13875 Skip current entry if the TODO keyword marks a DONE state.
13876 @item '(org-agenda-skip-entry-if 'timestamp)
13877 Skip current entry if it has any timestamp, may also be deadline or scheduled.
13878 @item '(org-agenda-skip-entry 'regexp "regular expression")
13879 Skip current entry if the regular expression matches in the entry.
13880 @item '(org-agenda-skip-entry 'notregexp "regular expression")
13881 Skip current entry unless the regular expression matches.
13882 @item '(org-agenda-skip-subtree-if 'regexp "regular expression")
13883 Same as above, but check and skip the entire subtree.
13884 @end table
13886 Therefore we could also have written the search for WAITING projects
13887 like this, even without defining a special function:
13889 @lisp
13890 (org-add-agenda-custom-command
13891  '("b" todo "PROJECT"
13892    ((org-agenda-skip-function '(org-agenda-skip-subtree-if
13893                                 'regexp ":waiting:"))
13894     (org-agenda-overriding-header "Projects waiting for something: "))))
13895 @end lisp
13897 @node Extracting agenda information, Using the property API, Special agenda views, Hacking
13898 @section Extracting agenda information
13899 @cindex agenda, pipe
13900 @cindex Scripts, for agenda processing
13902 @vindex org-agenda-custom-commands
13903 Org provides commands to access agenda information for the command
13904 line in Emacs batch mode.  This extracted information can be sent
13905 directly to a printer, or it can be read by a program that does further
13906 processing of the data.  The first of these commands is the function
13907 @code{org-batch-agenda}, that produces an agenda view and sends it as
13908 ASCII text to STDOUT.  The command takes a single string as parameter.
13909 If the string has length 1, it is used as a key to one of the commands
13910 you have configured in @code{org-agenda-custom-commands}, basically any
13911 key you can use after @kbd{C-c a}.  For example, to directly print the
13912 current TODO list, you could use
13914 @example
13915 emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
13916 @end example
13918 If the parameter is a string with 2 or more characters, it is used as a
13919 tags/TODO match string.  For example, to print your local shopping list
13920 (all items with the tag @samp{shop}, but excluding the tag
13921 @samp{NewYork}), you could use
13923 @example
13924 emacs -batch -l ~/.emacs                                      \
13925       -eval '(org-batch-agenda "+shop-NewYork")' | lpr
13926 @end example
13928 @noindent
13929 You may also modify parameters on the fly like this:
13931 @example
13932 emacs -batch -l ~/.emacs                                      \
13933    -eval '(org-batch-agenda "a"                               \
13934             org-agenda-ndays 30                               \
13935             org-agenda-include-diary nil                      \
13936             org-agenda-files (quote ("~/org/project.org")))'  \
13937    | lpr
13938 @end example
13940 @noindent
13941 which will produce a 30-day agenda, fully restricted to the Org file
13942 @file{~/org/projects.org}, not even including the diary.
13944 If you want to process the agenda data in more sophisticated ways, you
13945 can use the command @code{org-batch-agenda-csv} to get a comma-separated
13946 list of values for each agenda item.  Each line in the output will
13947 contain a number of fields separated by commas.  The fields in a line
13948 are:
13950 @example
13951 category     @r{The category of the item}
13952 head         @r{The headline, without TODO keyword, TAGS and PRIORITY}
13953 type         @r{The type of the agenda entry, can be}
13954                 todo               @r{selected in TODO match}
13955                 tagsmatch          @r{selected in tags match}
13956                 diary              @r{imported from diary}
13957                 deadline           @r{a deadline}
13958                 scheduled          @r{scheduled}
13959                 timestamp          @r{appointment, selected by timestamp}
13960                 closed             @r{entry was closed on date}
13961                 upcoming-deadline  @r{warning about nearing deadline}
13962                 past-scheduled     @r{forwarded scheduled item}
13963                 block              @r{entry has date block including date}
13964 todo         @r{The TODO keyword, if any}
13965 tags         @r{All tags including inherited ones, separated by colons}
13966 date         @r{The relevant date, like 2007-2-14}
13967 time         @r{The time, like 15:00-16:50}
13968 extra        @r{String with extra planning info}
13969 priority-l   @r{The priority letter if any was given}
13970 priority-n   @r{The computed numerical priority}
13971 @end example
13973 @noindent
13974 Time and date will only be given if a timestamp (or deadline/scheduled)
13975 led to the selection of the item.
13977 A CSV list like this is very easy to use in a post-processing script.
13978 For example, here is a Perl program that gets the TODO list from
13979 Emacs/Org and prints all the items, preceded by a checkbox:
13981 @example
13982 #!/usr/bin/perl
13984 # define the Emacs command to run
13985 $cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'";
13987 # run it and capture the output
13988 $agenda = qx@{$cmd 2>/dev/null@};
13990 # loop over all lines
13991 foreach $line (split(/\n/,$agenda)) @{
13992   # get the individual values
13993   ($category,$head,$type,$todo,$tags,$date,$time,$extra,
13994    $priority_l,$priority_n) = split(/,/,$line);
13995   # process and print
13996   print "[ ] $head\n";
13998 @end example
14000 @node Using the property API, Using the mapping API, Extracting agenda information, Hacking
14001 @section Using the property API
14002 @cindex API, for properties
14003 @cindex properties, API
14005 Here is a description of the functions that can be used to work with
14006 properties.
14008 @defun org-entry-properties &optional pom which
14009 Get all properties of the entry at point-or-marker POM.@*
14010 This includes the TODO keyword, the tags, time strings for deadline,
14011 scheduled, and clocking, and any additional properties defined in the
14012 entry.  The return value is an alist, keys may occur multiple times
14013 if the property key was used several times.@*
14014 POM may also be nil, in which case the current entry is used.
14015 If WHICH is nil or `all', get all properties.  If WHICH is
14016 `special' or `standard', only get that subclass.
14017 @end defun
14018 @vindex org-use-property-inheritance
14019 @defun org-entry-get pom property &optional inherit
14020 Get value of PROPERTY for entry at point-or-marker POM.  By default,
14021 this only looks at properties defined locally in the entry.  If INHERIT
14022 is non-nil and the entry does not have the property, then also check
14023 higher levels of the hierarchy.  If INHERIT is the symbol
14024 @code{selective}, use inheritance if and only if the setting of
14025 @code{org-use-property-inheritance} selects PROPERTY for inheritance.
14026 @end defun
14028 @defun org-entry-delete pom property
14029 Delete the property PROPERTY from entry at point-or-marker POM.
14030 @end defun
14032 @defun org-entry-put pom property value
14033 Set PROPERTY to VALUE for entry at point-or-marker POM.
14034 @end defun
14036 @defun org-buffer-property-keys &optional include-specials
14037 Get all property keys in the current buffer.
14038 @end defun
14040 @defun org-insert-property-drawer
14041 Insert a property drawer at point.
14042 @end defun
14044 @defun org-entry-put-multivalued-property pom property &rest values
14045 Set PROPERTY at point-or-marker POM to VALUES.  VALUES should be a list of
14046 strings.  They will be concatenated, with spaces as separators.
14047 @end defun
14049 @defun org-entry-get-multivalued-property pom property
14050 Treat the value of the property PROPERTY as a whitespace-separated list of
14051 values and return the values as a list of strings.
14052 @end defun
14054 @defun org-entry-add-to-multivalued-property pom property value
14055 Treat the value of the property PROPERTY as a whitespace-separated list of
14056 values and make sure that VALUE is in this list.
14057 @end defun
14059 @defun org-entry-remove-from-multivalued-property pom property value
14060 Treat the value of the property PROPERTY as a whitespace-separated list of
14061 values and make sure that VALUE is @emph{not} in this list.
14062 @end defun
14064 @defun org-entry-member-in-multivalued-property pom property value
14065 Treat the value of the property PROPERTY as a whitespace-separated list of
14066 values and check if VALUE is in this list.
14067 @end defun
14069 @defopt org-property-allowed-value-functions
14070 Hook for functions supplying allowed values for specific.
14071 The functions must take a single argument, the name of the property, and
14072 return a flat list of allowed values.  If @samp{:ETC} is one of
14073 the values, use the values as completion help, but allow also other values
14074 to be entered.  The functions must return @code{nil} if they are not
14075 responsible for this property.
14076 @end defopt
14078 @node Using the mapping API,  , Using the property API, Hacking
14079 @section Using the mapping API
14080 @cindex API, for mapping
14081 @cindex mapping entries, API
14083 Org has sophisticated mapping capabilities to find all entries satisfying
14084 certain criteria.  Internally, this functionality is used to produce agenda
14085 views, but there is also an API that can be used to execute arbitrary
14086 functions for each or selected entries.  The main entry point for this API
14089 @defun org-map-entries func &optional match scope &rest skip
14090 Call FUNC at each headline selected by MATCH in SCOPE.
14092 FUNC is a function or a Lisp form.  The function will be called without
14093 arguments, with the cursor positioned at the beginning of the headline.
14094 The return values of all calls to the function will be collected and
14095 returned as a list.
14097 The call to FUNC will be wrapped into a save-excursion form, so FUNC
14098 does not need to preserve point.  After evaluation, the cursor will be
14099 moved to the end of the line (presumably of the headline of the
14100 processed entry) and search continues from there.  Under some
14101 circumstances, this may not produce the wanted results.  For example,
14102 if you have removed (e.g. archived) the current (sub)tree it could
14103 mean that the next entry will be skipped entirely.  In such cases, you
14104 can specify the position from where search should continue by making
14105 FUNC set the variable `org-map-continue-from' to the desired buffer
14106 position.
14108 MATCH is a tags/property/todo match as it is used in the agenda match view.
14109 Only headlines that are matched by this query will be considered during
14110 the iteration.  When MATCH is nil or t, all headlines will be
14111 visited by the iteration.
14113 SCOPE determines the scope of this command.  It can be any of:
14115 @example
14116 nil     @r{the current buffer, respecting the restriction if any}
14117 tree    @r{the subtree started with the entry at point}
14118 file    @r{the current buffer, without restriction}
14119 file-with-archives
14120         @r{the current buffer, and any archives associated with it}
14121 agenda  @r{all agenda files}
14122 agenda-with-archives
14123         @r{all agenda files with any archive files associated with them}
14124 (file1 file2 ...)
14125         @r{if this is a list, all files in the list will be scanned}
14126 @end example
14127 @noindent
14128 The remaining args are treated as settings for the skipping facilities of
14129 the scanner.  The following items can be given here:
14131 @vindex org-agenda-skip-function
14132 @example
14133 archive   @r{skip trees with the archive tag}
14134 comment   @r{skip trees with the COMMENT keyword}
14135 function or Lisp form
14136           @r{will be used as value for @code{org-agenda-skip-function},}
14137           @r{so whenever the function returns t, FUNC}
14138           @r{will not be called for that entry and search will}
14139           @r{continue from the point where the function leaves it}
14140 @end example
14141 @end defun
14143 The function given to that mapping routine can really do anything you like.
14144 It can use the property API (@pxref{Using the property API}) to gather more
14145 information about the entry, or in order to change metadata in the entry.
14146 Here are a couple of functions that might be handy:
14148 @defun org-todo &optional arg
14149 Change the TODO state of the entry, see the docstring of the functions for
14150 the many possible values for the argument ARG.
14151 @end defun
14153 @defun org-priority &optional action
14154 Change the priority of the entry, see the docstring of this function for the
14155 possible values for ACTION.
14156 @end defun
14158 @defun org-toggle-tag tag &optional onoff
14159 Toggle the tag TAG in the current entry.  Setting ONOFF to either @code{on}
14160 or @code{off} will not toggle tag, but ensure that it is either on or off.
14161 @end defun
14163 @defun org-promote
14164 Promote the current entry.
14165 @end defun
14167 @defun org-demote
14168 Demote the current entry.
14169 @end defun
14171 Here is a simple example that will turn all entries in the current file with
14172 a tag @code{TOMORROW} into TODO entries with the keyword @code{UPCOMING}.
14173 Entries in comment trees and in archive trees will be ignored.
14175 @lisp
14176 (org-map-entries
14177    '(org-todo "UPCOMING")
14178    "+TOMORROW" 'file 'archive 'comment)
14179 @end lisp
14181 The following example counts the number of entries with TODO keyword
14182 @code{WAITING}, in all agenda files.
14184 @lisp
14185 (length (org-map-entries t "/+WAITING" 'agenda))
14186 @end lisp
14188 @node MobileOrg, History and Acknowledgments, Hacking, Top
14189 @appendix MobileOrg
14190 @cindex iPhone
14191 @cindex MobileOrg
14193 @uref{http://mobileorg.ncogni.to/, MobileOrg} is an application for the
14194 @i{iPhone/iPod Touch} series of devices, developed by Richard Moreland.
14195 @i{MobileOrg} offers offline viewing and capture support for an Org-mode
14196 system rooted on a ``real'' computer.  It does also allow you to record
14197 changes to existing entries.  Android users should check out
14198 @uref{http://wiki.github.com/matburt/mobileorg-android/, MobileOrg Android}
14199 by Matt Jones.
14201 This appendix describes the support Org has for creating agenda views in a
14202 format that can be displayed by @i{MobileOrg}, and for integrating notes
14203 captured and changes made by @i{MobileOrg} into the main system.
14205 For changing tags and TODO states in MobileOrg, you should have set up the
14206 customization variables @code{org-todo-keywords} and @code{org-tags-alist} to
14207 cover all important tags and TODO keywords, even if individual files use only
14208 part of these.  MobileOrg will also offer you states and tags set up with
14209 in-buffer settings, but it will understand the logistics of TODO state
14210 @i{sets} (@pxref{Per-file keywords}) and @i{mutually exclusive} tags
14211 (@pxref{Setting tags}) only for those set in these variables.
14213 @menu
14214 * Setting up the staging area::  Where to interact with the mobile device
14215 * Pushing to MobileOrg::        Uploading Org files and agendas
14216 * Pulling from MobileOrg::      Integrating captured and flagged items
14217 @end menu
14219 @node Setting up the staging area, Pushing to MobileOrg, MobileOrg, MobileOrg
14220 @section Setting up the staging area
14222 MobileOrg needs to interact with Emacs through directory on a
14223 server@footnote{If you are using a public server, you might prefer to encrypt
14224 the files on the server.  This can be done with Org-mode 6.35 and, hopefully,
14225 with MobileOrg 1.4 (please check before trying to use this).  On the Emacs
14226 side, configure the variables @code{org-mobile-use-encryption} and
14227 @code{org-mobile-encryption-password}.}.  The easiest way to create that
14228 directory is to use a free @uref{http://dropbox.com,Dropbox.com}
14229 account@footnote{If you cannot use Dropbox, or if your version of MobileOrg
14230 does not support it, you can use a webdav server.  For more information,
14231 check out the the documentation of MobileOrg and also this
14232 @uref{http://orgmode.org/worg/org-faq.php#mobileorg_webdav, FAQ entry}.}.
14233 When MobileOrg first connects to your Dropbox, it will create a directory
14234 @i{MobileOrg} inside the Dropbox.  After the directory has been created, tell
14235 Emacs about it:
14237 @lisp
14238 (setq org-mobile-directory "~/Dropbox/MobileOrg")
14239 @end lisp
14241 Org-mode has commands to put files for @i{MobileOrg} into that directory,
14242 and to read captured notes from there.
14244 @node Pushing to MobileOrg, Pulling from MobileOrg, Setting up the staging area, MobileOrg
14245 @section Pushing to MobileOrg
14247 This operation copies all files currently listed in @code{org-mobile-files}
14248 to the directory @code{org-mobile-directory}.  By default this list contains
14249 all agenda files (as listed in @code{org-agenda-files}), but additional files
14250 can be included by customizing @code{org-mobiles-files}.  File names will be
14251 staged with path relative to @code{org-directory}, so all files should be
14252 inside this directory.  The push operation also creates a special Org file
14253 @file{agendas.org} with all custom agenda view defined by the
14254 user@footnote{While creating the agendas, Org-mode will force (see the
14255 variable @code{org-mobile-force-id-on-agenda-items}) ID properties on all
14256 referenced entries, so that these entries can be uniquely
14257 identified if @i{MobileOrg} flags them for further action.}.  Finally, Org
14258 writes the file @file{index.org}, containing links to all other files.
14259 @i{MobileOrg} first reads this file from the server, and then downloads all
14260 agendas and Org files listed in it.  To speed up the download, MobileOrg will
14261 only read files whose checksums@footnote{stored automatically in the file
14262 @file{checksums.dat}} have changed.
14264 @node Pulling from MobileOrg,  , Pushing to MobileOrg, MobileOrg
14265 @section Pulling from MobileOrg
14267 When @i{MobileOrg} synchronizes with the server, it not only pulls the Org
14268 files for viewing.  It also appends captured entries and pointers to flagged
14269 and changed entries to the file @file{mobileorg.org} on the server.  Org has
14270 a @emph{pull} operation that integrates this information into an inbox file
14271 and operates on the pointers to flagged entries.  Here is how it works:
14273 @enumerate
14274 @item
14275 Org moves all entries found in
14276 @file{mobileorg.org}@footnote{@file{mobileorg.org} will be empty after this
14277 operation.} and appends them to the file pointed to by the variable
14278 @code{org-mobile-inbox-for-pull}.  Each captured entry and each editing event
14279 will be a top-level entry in the inbox file.
14280 @item
14281 After moving the entries, Org will attempt to implement the changes made in
14282 @i{MobileOrg}.  Some changes are applied directly and without user
14283 interaction.  Examples are all changes to tags, TODO state, headline and body
14284 text that can be cleanly applied.  Entries that have been flagged for further
14285 action will receive a tag @code{:FLAGGED:}, so that they can be easily found
14286 again.  When there is a problem finding an entry or applying the change, the
14287 pointer entry will remain in the inbox and will be marked with an error
14288 message.  You need to later resolve these issues by hand.
14289 @item
14290 Org will then generate an agenda view with all flagged entries.  The user
14291 should then go through these entries and do whatever actions are necessary.
14292 If a note has been stored while flagging an entry in @i{MobileOrg}, that note
14293 will be displayed in the echo area when the cursor is on the corresponding
14294 agenda line.
14295 @table @kbd
14296 @kindex ?
14297 @item ?
14298 Pressing @kbd{?} in that special agenda will display the full flagging note in
14299 another window and also push it onto the kill ring.  So you could use @kbd{?
14300 z C-y C-c C-c} to store that flagging note as a normal note in the entry.
14301 Pressing @kbd{?} twice in succession will offer to remove the
14302 @code{:FLAGGED:} tag along with the recorded flagging note (which is stored
14303 in a property).  In this way you indicate, that the intended processing for
14304 this flagged entry is finished.
14305 @end table
14306 @end enumerate
14308 @kindex C-c a ?
14309 If you are not able to process all flagged entries directly, you can always
14310 return to this agenda view using @kbd{C-c a ?}.  Note, however, that there is
14311 a subtle difference.  The view created automatically by @kbd{M-x
14312 org-mobile-pull @key{RET}} is guaranteed to search all files that have been
14313 addressed by the last pull.  This might include a file that is not currently
14314 in your list of agenda files.  If you later use @kbd{C-c a ?} to regenerate
14315 the view, only the current agenda files will be searched.
14317 @node History and Acknowledgments, Main Index, MobileOrg, Top
14318 @appendix History and acknowledgments
14319 @cindex acknowledgments
14320 @cindex history
14321 @cindex thanks
14323 Org was born in 2003, out of frustration over the user interface of the Emacs
14324 Outline mode.  I was trying to organize my notes and projects, and using
14325 Emacs seemed to be the natural way to go.  However, having to remember eleven
14326 different commands with two or three keys per command, only to hide and show
14327 parts of the outline tree, that seemed entirely unacceptable to me.  Also,
14328 when using outlines to take notes, I constantly wanted to restructure the
14329 tree, organizing it parallel to my thoughts and plans.  @emph{Visibility
14330 cycling} and @emph{structure editing} were originally implemented in the
14331 package @file{outline-magic.el}, but quickly moved to the more general
14332 @file{org.el}.  As this environment became comfortable for project planning,
14333 the next step was adding @emph{TODO entries}, basic @emph{timestamps}, and
14334 @emph{table support}.  These areas highlighted the two main goals that Org
14335 still has today: to be a new, outline-based, plain text mode with innovative
14336 and intuitive editing features, and to incorporate project planning
14337 functionality directly into a notes file.
14339 Since the first release, literally thousands of emails to me or to
14340 @email{emacs-orgmode@@gnu.org} have provided a constant stream of bug
14341 reports, feedback, new ideas, and sometimes patches and add-on code.
14342 Many thanks to everyone who has helped to improve this package.  I am
14343 trying to keep here a list of the people who had significant influence
14344 in shaping one or more aspects of Org.  The list may not be
14345 complete, if I have forgotten someone, please accept my apologies and
14346 let me know.
14348 Before I get to this list, a few special mentions are in order:
14350 @table @i
14351 @item Bastien Guerry
14352 Bastien has written a large number of extensions to Org (most of them
14353 integrated into the core by now), including the LaTeX exporter and the plain
14354 list parser.  His support during the early days, when he basically acted as
14355 co-maintainer, was central to the success of this project.  Bastien also
14356 invented Worg, helped establishing the Web presence of Org, and sponsors
14357 hosting costs for the orgmode.org website.
14358 @item Eric Schulte and Dan Davison
14359 Eric and Dan are jointly responsible for the Org-babel system, which turns
14360 Org into a multi-language environment for evaluating code and doing literate
14361 programming and reproducible research.
14362 @item John Wiegley
14363 John has also contributed a number of great ideas and patches
14364 directly to Org, including the attachment system (@file{org-attach.el}),
14365 integration with Apple Mail (@file{org-mac-message.el}), hierarchical
14366 dependencies of TODO items, habit tracking (@file{org-habits.el}), and
14367 encryption (@file{org-crypt.el}).  Also, the capture system is really an
14368 extended copy of his great @file{remember.el}.
14369 @item Sebastian Rose
14370 Without Sebastian, the HTML/XHTML publishing of Org would be the pitiful work
14371 of an ignorant amateur.  Sebastian has pushed this part of Org onto a much
14372 higher level.  He also wrote @file{org-info.js}, a Java script for displaying
14373 webpages derived from Org using an Info-like or a folding interface with
14374 single-key navigation.
14375 @end table
14377 @noindent OK, now to the full list of contributions!  Again, please let me
14378 know what I am missing here!
14380 @itemize @bullet
14382 @item
14383 @i{Russel Adams} came up with the idea for drawers.
14384 @item
14385 @i{Thomas Baumann} wrote @file{org-bbdb.el} and @file{org-mhe.el}.
14386 @item
14387 @i{Christophe Bataillon} created the great unicorn logo that we use on the
14388 Org-mode website.
14389 @item
14390 @i{Alex Bochannek} provided a patch for rounding timestamps.
14391 @item
14392 @i{Jan Böcker} wrote @file{org-docview.el}.
14393 @item
14394 @i{Brad Bozarth} showed how to pull RSS feed data into Org-mode files.
14395 @item
14396 @i{Tom Breton} wrote @file{org-choose.el}.
14397 @item
14398 @i{Charles Cave}'s suggestion sparked the implementation of templates
14399 for Remember, which are now templates for capture.
14400 @item
14401 @i{Pavel Chalmoviansky} influenced the agenda treatment of items with
14402 specified time.
14403 @item
14404 @i{Gregory Chernov} patched support for Lisp forms into table
14405 calculations and improved XEmacs compatibility, in particular by porting
14406 @file{nouline.el} to XEmacs.
14407 @item
14408 @i{Sacha Chua} suggested copying some linking code from Planner.
14409 @item
14410 @i{Baoqiu Cui} contributed the DocBook exporter.
14411 @item
14412 @i{Eddward DeVilla} proposed and tested checkbox statistics.  He also
14413 came up with the idea of properties, and that there should be an API for
14414 them.
14415 @item
14416 @i{Nick Dokos} tracked down several nasty bugs.
14417 @item
14418 @i{Kees Dullemond} used to edit projects lists directly in HTML and so
14419 inspired some of the early development, including HTML export.  He also
14420 asked for a way to narrow wide table columns.
14421 @item
14422 @i{Thomas S. Dye} contributed documentation on Worg and helped integrating
14423 the Org-Babel documentation into the manual.
14424 @item
14425 @i{Christian Egli} converted the documentation into Texinfo format,
14426 patched CSS formatting into the HTML exporter, and inspired the agenda.
14427 @item
14428 @i{David Emery} provided a patch for custom CSS support in exported
14429 HTML agendas.
14430 @item
14431 @i{Nic Ferrier} contributed mailcap and XOXO support.
14432 @item
14433 @i{Miguel A. Figueroa-Villanueva} implemented hierarchical checkboxes.
14434 @item
14435 @i{John Foerch} figured out how to make incremental search show context
14436 around a match in a hidden outline tree.
14437 @item
14438 @i{Raimar Finken} wrote @file{org-git-line.el}.
14439 @item
14440 @i{Mikael Fornius} works as a mailing list moderator.
14441 @item
14442 @i{Austin Frank} works as a mailing list moderator.
14443 @item
14444 @i{Niels Giesen} had the idea to automatically archive DONE trees.
14445 @item
14446 @i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
14447 @item
14448 @i{Bernt Hansen} has driven much of the support for auto-repeating tasks,
14449 task state change logging, and the clocktable.  His clear explanations have
14450 been critical when we started to adopt the Git version control system.
14451 @item
14452 @i{Manuel Hermenegildo} has contributed various ideas, small fixes and
14453 patches.
14454 @item
14455 @i{Phil Jackson} wrote @file{org-irc.el}.
14456 @item
14457 @i{Scott Jaderholm} proposed footnotes, control over whitespace between
14458 folded entries, and column view for properties.
14459 @item
14460 @i{Matt Jones} wrote @i{MobileOrg Android}.
14461 @item
14462 @i{Tokuya Kameshima} wrote @file{org-wl.el} and @file{org-mew.el}.
14463 @item
14464 @i{Shidai Liu} ("Leo") asked for embedded La@TeX{} and tested it.  He also
14465 provided frequent feedback and some patches.
14466 @item
14467 @i{Matt Lundin} has proposed last-row references for table formulas and named
14468 invisible anchors.  He has also worked a lot on the FAQ.
14469 @item
14470 @i{David Maus} wrote @file{org-atom.el}, maintains the issues file for Org,
14471 and is a prolific contributor on the mailing list with competent replies,
14472 small fixes and patches.
14473 @item
14474 @i{Jason F. McBrayer} suggested agenda export to CSV format.
14475 @item
14476 @i{Max Mikhanosha} came up with the idea of refiling.
14477 @item
14478 @i{Dmitri Minaev} sent a patch to set priority limits on a per-file
14479 basis.
14480 @item
14481 @i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
14482 happy.
14483 @item
14484 @i{Richard Moreland} wrote @i{MobileOrg} for the iPhone.
14485 @item
14486 @i{Rick Moynihan} proposed allowing multiple TODO sequences in a file
14487 and being able to quickly restrict the agenda to a subtree.
14488 @item
14489 @i{Todd Neal} provided patches for links to Info files and Elisp forms.
14490 @item
14491 @i{Greg Newman} refreshed the unicorn logo into its current form.
14492 @item
14493 @i{Tim O'Callaghan} suggested in-file links, search options for general
14494 file links, and TAGS.
14495 @item
14496 @i{Osamu Okano} wrote @file{orgcard2ref.pl}, a perl program to create a text
14497 version of the reference card.
14498 @item
14499 @i{Takeshi Okano} translated the manual and David O'Toole's tutorial
14500 into Japanese.
14501 @item
14502 @i{Oliver Oppitz} suggested multi-state TODO items.
14503 @item
14504 @i{Scott Otterson} sparked the introduction of descriptive text for
14505 links, among other things.
14506 @item
14507 @i{Pete Phillips} helped during the development of the TAGS feature, and
14508 provided frequent feedback.
14509 @item
14510 @i{Martin Pohlack} provided the code snippet to bundle character insertion
14511 into bundles of 20 for undo.
14512 @item
14513 @i{T.V. Raman} reported bugs and suggested improvements.
14514 @item
14515 @i{Matthias Rempe} (Oelde) provided ideas, Windows support, and quality
14516 control.
14517 @item
14518 @i{Paul Rivier} provided the basic implementation of named footnotes.  He
14519 also acted as mailing list moderator for some time.
14520 @item
14521 @i{Kevin Rogers} contributed code to access VM files on remote hosts.
14522 @item
14523 @i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a
14524 conflict with @file{allout.el}.
14525 @item
14526 @i{Jason Riedy} generalized the send-receive mechanism for Orgtbl tables with
14527 extensive patches.
14528 @item
14529 @i{Philip Rooke} created the Org reference card, provided lots
14530 of feedback, developed and applied standards to the Org documentation.
14531 @item
14532 @i{Christian Schlauer} proposed angular brackets around links, among
14533 other things.
14534 @item
14535 @i{Paul Sexton} wrote @file{org-ctags.el}.
14536 @item
14537 Linking to VM/BBDB/Gnus was first inspired by @i{Tom Shannon}'s
14538 @file{organizer-mode.el}.
14539 @item
14540 @i{Ilya Shlyakhter} proposed the Archive Sibling, line numbering in literal
14541 examples, and remote highlighting for referenced code lines.
14542 @item
14543 @i{Stathis Sideris} wrote the @file{ditaa.jar} ASCII to PNG converter that is
14544 now packaged into Org's @file{contrib} directory.
14545 @item
14546 @i{Daniel Sinder} came up with the idea of internal archiving by locking
14547 subtrees.
14548 @item
14549 @i{Dale Smith} proposed link abbreviations.
14550 @item
14551 @i{James TD Smith} has contributed a large number of patches for useful
14552 tweaks and features.
14553 @item
14554 @i{Adam Spiers} asked for global linking commands, inspired the link
14555 extension system, added support for mairix, and proposed the mapping API.
14556 @item
14557 @i{Ulf Stegemann} created the table to translate special symbols to HTML,
14558 LaTeX, UTF-8, Latin-1 and ASCII.
14559 @item
14560 @i{Andy Stewart} contributed code to @file{org-w3m.el}, to copy HTML content
14561 with links transformation to Org syntax.
14562 @item
14563 @i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
14564 chapter about publishing.
14565 @item
14566 @i{Stefan Vollmar} organized a video-recorded talk at the
14567 Max-Planck-Institute for Neurology.  He also inspired the creation of a
14568 concept index for HTML export.
14569 @item
14570 @i{J@"urgen Vollmer} contributed code generating the table of contents
14571 in HTML output.
14572 @item
14573 @i{Samuel Wales} has provided important feedback and bug reports.
14574 @item
14575 @i{Chris Wallace} provided a patch implementing the @samp{QUOTE}
14576 keyword.
14577 @item
14578 @i{David Wainberg} suggested archiving, and improvements to the linking
14579 system.
14580 @item
14581 @i{Carsten Wimmer} suggested some changes and helped fix a bug in
14582 linking to Gnus.
14583 @item
14584 @i{Roland Winkler} requested additional key bindings to make Org
14585 work on a tty.
14586 @item
14587 @i{Piotr Zielinski} wrote @file{org-mouse.el}, proposed agenda blocks
14588 and contributed various ideas and code snippets.
14589 @end itemize
14592 @node Main Index, Key Index, History and Acknowledgments, Top
14593 @unnumbered Concept index
14595 @printindex cp
14597 @node Key Index, Variable Index, Main Index, Top
14598 @unnumbered Key index
14600 @printindex ky
14602 @node Variable Index,  , Key Index, Top
14603 @unnumbered Variable index
14605 This is not a complete index of variables and faces, only the ones that are
14606 mentioned in the manual.  For a more complete list, use @kbd{M-x
14607 org-customize @key{RET}} and then click yourself through the tree.
14609 @printindex vr
14611 @bye
14613 @ignore
14614         arch-tag: 7893d1Fe-cc57-4d13-b5e5-f494a1CBC7ac
14615 @end ignore
14617 @c Local variables:
14618 @c fill-column: 77
14619 @c End:
14622 @c  LocalWords:  webdavhost pre