Merge branch 'master' of git+ssh://repo.or.cz/srv/git/org-mode
[org-mode.git] / doc / org.texi
blob527ce719a68f746fabdaf15d514c109de3f6009a
1 \input texinfo
2 @c %**start of header
3 @setfilename ../../info/org
4 @settitle The Org Manual
6 @set VERSION 6.35trans
7 @set DATE April 2010
9 @c Version and Contact Info
10 @set MAINTAINERSITE @uref{http://orgmode.org,maintainers webpage}
11 @set AUTHOR Carsten Dominik
12 @set MAINTAINER Carsten Dominik
13 @set MAINTAINEREMAIL @email{carsten at orgmode dot org}
14 @set MAINTAINERCONTACT @uref{mailto:carsten at orgmode dot org,contact the maintainer}
15 @c %**end of header
16 @finalout
18 @c Macro definitions
19 @iftex
20 @c @hyphenation{time-stamp time-stamps time-stamp-ing time-stamp-ed}
21 @end iftex
22 @macro Ie {}
23 I.e.,
24 @end macro
25 @macro ie {}
26 i.e.,
27 @end macro
28 @macro Eg {}
29 E.g.,
30 @end macro
31 @macro eg {}
32 e.g.,
33 @end macro
35 @c Subheadings inside a table.
36 @macro tsubheading{text}
37 @ifinfo
38 @subsubheading \text\
39 @end ifinfo
40 @ifnotinfo
41 @item @b{\text\}
42 @end ifnotinfo
43 @end macro
45 @copying
46 This manual is for Org version @value{VERSION}.
48 Copyright @copyright{} 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation
50 @quotation
51 Permission is granted to copy, distribute and/or modify this document
52 under the terms of the GNU Free Documentation License, Version 1.3 or
53 any later version published by the Free Software Foundation; with no
54 Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
55 and with the Back-Cover Texts as in (a) below.  A copy of the license
56 is included in the section entitled ``GNU Free Documentation License.''
58 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
59 modify this GNU manual.  Buying copies from the FSF supports it in
60 developing GNU and promoting software freedom.''
62 This document is part of a collection distributed under the GNU Free
63 Documentation License.  If you want to distribute this document
64 separately from the collection, you can do so by adding a copy of the
65 license to the document, as described in section 6 of the license.
66 @end quotation
67 @end copying
69 @dircategory Emacs
70 @direntry
71 * Org Mode: (org).      Outline-based notes management and organizer
72 @end direntry
74 @titlepage
75 @title The Org Manual
77 @subtitle Release @value{VERSION}
78 @author by Carsten Dominik
80 @c The following two commands start the copyright page.
81 @page
82 @vskip 0pt plus 1filll
83 @insertcopying
84 @end titlepage
86 @c Output the table of contents at the beginning.
87 @contents
89 @ifnottex
90 @node Top, Introduction, (dir), (dir)
91 @top Org Mode Manual
93 @insertcopying
94 @end ifnottex
96 @menu
97 * Introduction::                Getting started
98 * Document Structure::          A tree works like your brain
99 * Tables::                      Pure magic for quick formatting
100 * Hyperlinks::                  Notes in context
101 * TODO Items::                  Every tree branch can be a TODO item
102 * Tags::                        Tagging headlines and matching sets of tags
103 * Properties and Columns::      Storing information about an entry
104 * Dates and Times::             Making items useful for planning
105 * Capture - Refile - Archive::  The ins and outs for projects
106 * Agenda Views::                Collecting information into views
107 * Markup::                      Prepare text for rich export
108 * Exporting::                   Sharing and publishing of notes
109 * Publishing::                  Create a web site of linked Org files
110 * Miscellaneous::               All the rest which did not fit elsewhere
111 * Hacking::                     How to hack your way around
112 * MobileOrg::                   Viewing and capture on a mobile device
113 * History and Acknowledgments::  How Org came into being
114 * Main Index::                  An index of Org's concepts and features
115 * Key Index::                   Key bindings and where they are described
116 * Variable Index::              Variables mentioned in the manual
118 @detailmenu
119  --- The Detailed Node Listing ---
121 Introduction
123 * Summary::                     Brief summary of what Org does
124 * Installation::                How to install a downloaded version of Org
125 * Activation::                  How to activate Org for certain buffers
126 * Feedback::                    Bug reports, ideas, patches etc.
127 * Conventions::                 Type-setting conventions in the manual
129 Document Structure
131 * Outlines::                    Org is based on Outline mode
132 * Headlines::                   How to typeset Org tree headlines
133 * Visibility cycling::          Show and hide, much simplified
134 * Motion::                      Jumping to other headlines
135 * Structure editing::           Changing sequence and level of headlines
136 * Sparse trees::                Matches embedded in context
137 * Plain lists::                 Additional structure within an entry
138 * Drawers::                     Tucking stuff away
139 * Blocks::                      Folding blocks
140 * Footnotes::                   How footnotes are defined in Org's syntax
141 * Orgstruct mode::              Structure editing outside Org
143 Tables
145 * Built-in table editor::       Simple tables
146 * Column width and alignment::  Overrule the automatic settings
147 * Column groups::               Grouping to trigger vertical lines
148 * Orgtbl mode::                 The table editor as minor mode
149 * The spreadsheet::             The table editor has spreadsheet capabilities
150 * Org-Plot::                    Plotting from org tables
152 The spreadsheet
154 * References::                  How to refer to another field or range
155 * Formula syntax for Calc::     Using Calc to compute stuff
156 * Formula syntax for Lisp::     Writing formulas in Emacs Lisp
157 * Field formulas::              Formulas valid for a single field
158 * Column formulas::             Formulas valid for an entire column
159 * Editing and debugging formulas::  Fixing formulas
160 * Updating the table::          Recomputing all dependent fields
161 * Advanced features::           Field names, parameters and automatic recalc
163 Hyperlinks
165 * Link format::                 How links in Org are formatted
166 * Internal links::              Links to other places in the current file
167 * External links::              URL-like links to the world
168 * Handling links::              Creating, inserting and following
169 * Using links outside Org::     Linking from my C source code?
170 * Link abbreviations::          Shortcuts for writing complex links
171 * Search options::              Linking to a specific location
172 * Custom searches::             When the default search is not enough
174 Internal links
176 * Radio targets::               Make targets trigger links in plain text
178 TODO Items
180 * TODO basics::                 Marking and displaying TODO entries
181 * TODO extensions::             Workflow and assignments
182 * Progress logging::            Dates and notes for progress
183 * Priorities::                  Some things are more important than others
184 * Breaking down tasks::         Splitting a task into manageable pieces
185 * Checkboxes::                  Tick-off lists
187 Extended use of TODO keywords
189 * Workflow states::             From TODO to DONE in steps
190 * TODO types::                  I do this, Fred does the rest
191 * Multiple sets in one file::   Mixing it all, and still finding your way
192 * Fast access to TODO states::  Single letter selection of a state
193 * Per-file keywords::           Different files, different requirements
194 * Faces for TODO keywords::     Highlighting states
195 * TODO dependencies::           When one task needs to wait for others
197 Progress logging
199 * Closing items::               When was this entry marked DONE?
200 * Tracking TODO state changes::  When did the status change?
201 * Tracking your habits::        How consistent have you been?
203 Tags
205 * Tag inheritance::             Tags use the tree structure of the outline
206 * Setting tags::                How to assign tags to a headline
207 * Tag searches::                Searching for combinations of tags
209 Properties and Columns
211 * Property syntax::             How properties are spelled out
212 * Special properties::          Access to other Org mode features
213 * Property searches::           Matching property values
214 * Property inheritance::        Passing values down the tree
215 * Column view::                 Tabular viewing and editing
216 * Property API::                Properties for Lisp programmers
218 Column view
220 * Defining columns::            The COLUMNS format property
221 * Using column view::           How to create and use column view
222 * Capturing column view::       A dynamic block for column view
224 Defining columns
226 * Scope of column definitions::  Where defined, where valid?
227 * Column attributes::           Appearance and content of a column
229 Dates and Times
231 * Timestamps::                  Assigning a time to a tree entry
232 * Creating timestamps::         Commands which insert timestamps
233 * Deadlines and scheduling::    Planning your work
234 * Clocking work time::          Tracking how long you spend on a task
235 * Resolving idle time::         Resolving time if you've been idle
236 * Effort estimates::            Planning work effort in advance
237 * Relative timer::              Notes with a running timer
239 Creating timestamps
241 * The date/time prompt::        How Org mode helps you entering date and time
242 * Custom time format::          Making dates look different
244 Deadlines and scheduling
246 * Inserting deadline/schedule::  Planning items
247 * Repeated tasks::              Items that show up again and again
249 Capture - Refile - Archive
251 * Remember::                    Capture new tasks/ideas with little interruption
252 * Attachments::                 Add files to tasks.
253 * RSS Feeds::                   Getting input from RSS feeds
254 * Protocols::                   External (e.g. Browser) access to Emacs and Org
255 * Refiling notes::              Moving a tree from one place to another
256 * Archiving::                   What to do with finished projects
258 Remember
260 * Setting up Remember for Org::  Some code for .emacs to get things going
261 * Remember templates::          Define the outline of different note types
262 * Storing notes::               Directly get the note to where it belongs
264 Archiving
266 * Moving subtrees::             Moving a tree to an archive file
267 * Internal archiving::          Switch off a tree but keep i in the file
269 Agenda Views
271 * Agenda files::                Files being searched for agenda information
272 * Agenda dispatcher::           Keyboard access to agenda views
273 * Built-in agenda views::       What is available out of the box?
274 * Presentation and sorting::    How agenda items are prepared for display
275 * Agenda commands::             Remote editing of Org trees
276 * Custom agenda views::         Defining special searches and views
277 * Exporting Agenda Views::      Writing a view to a file
278 * Agenda column view::          Using column view for collected entries
280 The built-in agenda views
282 * Weekly/daily agenda::         The calendar page with current tasks
283 * Global TODO list::            All unfinished action items
284 * Matching tags and properties::  Structured information with fine-tuned search
285 * Timeline::                    Time-sorted view for single file
286 * Search view::                 Find entries by searching for text
287 * Stuck projects::              Find projects you need to review
289 Presentation and sorting
291 * Categories::                  Not all tasks are equal
292 * Time-of-day specifications::  How the agenda knows the time
293 * Sorting of agenda items::     The order of things
295 Custom agenda views
297 * Storing searches::            Type once, use often
298 * Block agenda::                All the stuff you need in a single buffer
299 * Setting Options::             Changing the rules
301 Markup for rich export
303 * Structural markup elements::  The basic structure as seen by the exporter
304 * Images and tables::           Tables and Images will be included
305 * Literal examples::            Source code examples with special formatting
306 * Include files::               Include additional files into a document
307 * Index entries::               
308 * Macro replacement::           Use macros to create complex output
309 * Embedded LaTeX::              LaTeX can be freely used inside Org documents
311 Structural markup elements
313 * Document title::              Where the title is taken from
314 * Headings and sections::       The document structure as seen by the exporter
315 * Table of contents::           The if and where of the table of contents
316 * Initial text::                Text before the first heading?
317 * Lists::                       Lists
318 * Paragraphs::                  Paragraphs
319 * Footnote markup::             Footnotes
320 * Emphasis and monospace::      Bold, italic, etc.
321 * Horizontal rules::            Make a line
322 * Comment lines::               What will *not* be exported
324 Embedded La@TeX{}
326 * Special symbols::             Greek letters and other symbols
327 * Subscripts and superscripts::  Simple syntax for raising/lowering text
328 * LaTeX fragments::             Complex formulas made easy
329 * Previewing LaTeX fragments::  What will this snippet look like?
330 * CDLaTeX mode::                Speed up entering of formulas
332 Exporting
334 * Selective export::            Using tags to select and exclude trees
335 * Export options::              Per-file export settings
336 * The export dispatcher::       How to access exporter commands
337 * ASCII/Latin-1/UTF-8 export::  Exporting to flat files with encoding
338 * HTML export::                 Exporting to HTML
339 * LaTeX and PDF export::        Exporting to La@TeX{}, and processing to PDF
340 * DocBook export::              Exporting to DocBook
341 * Freemind export::             Exporting to Freemind mind maps
342 * XOXO export::                 Exporting to XOXO
343 * iCalendar export::            Exporting in iCalendar format
345 HTML export
347 * HTML Export commands::        How to invoke HTML export
348 * Quoting HTML tags::           Using direct HTML in Org mode
349 * Links in HTML export::        How links will be interpreted and formatted
350 * Tables in HTML export::       How to modify the formatting of tables
351 * Images in HTML export::       How to insert figures into HTML output
352 * Text areas in HTML export::   An alternative way to show an example
353 * CSS support::                 Changing the appearance of the output
354 * Javascript support::          Info and Folding in a web browser
356 La@TeX{} and PDF export
358 * LaTeX/PDF export commands::   Which key invokes which commands
359 * Header and sectioning::       Setting up the export file structure
360 * Quoting LaTeX code::          Incorporating literal La@TeX{} code
361 * Tables in LaTeX export::      Options for exporting tables to La@TeX{}
362 * Images in LaTeX export::      How to insert figures into La@TeX{} output
363 * Beamer class export::         Turning the file into a presentation
365 DocBook export
367 * DocBook export commands::     How to invoke DocBook export
368 * Quoting DocBook code::        Incorporating DocBook code in Org files
369 * Recursive sections::          Recursive sections in DocBook
370 * Tables in DocBook export::    Tables are exported as HTML tables
371 * Images in DocBook export::    How to insert figures into DocBook output
372 * Special characters::          How to handle special characters
374 Publishing
376 * Configuration::               Defining projects
377 * Uploading files::             How to get files up on the server
378 * Sample configuration::        Example projects
379 * Triggering publication::      Publication commands
381 Configuration
383 * Project alist::               The central configuration variable
384 * Sources and destinations::    From here to there
385 * Selecting files::             What files are part of the project?
386 * Publishing action::           Setting the function doing the publishing
387 * Publishing options::          Tweaking HTML export
388 * Publishing links::            Which links keep working after publishing?
389 * Sitemap::                     Generating a list of all pages
390 * Generating an index::         An index that reaches across pages
392 Sample configuration
394 * Simple example::              One-component publishing
395 * Complex example::             A multi-component publishing example
397 Miscellaneous
399 * Completion::                  M-TAB knows what you need
400 * Speed keys::                  Electic commands at the beginning of a headline
401 * Customization::               Adapting Org to your taste
402 * In-buffer settings::          Overview of the #+KEYWORDS
403 * The very busy C-c C-c key::   When in doubt, press C-c C-c
404 * Clean view::                  Getting rid of leading stars in the outline
405 * TTY keys::                    Using Org on a tty
406 * Interaction::                 Other Emacs packages
408 Interaction with other packages
410 * Cooperation::                 Packages Org cooperates with
411 * Conflicts::                   Packages that lead to conflicts
413 Hacking
415 * Hooks::                       Who to reach into Org's internals
416 * Add-on packages::             Available extensions
417 * Adding hyperlink types::      New custom link types
418 * Context-sensitive commands::  How to add functionality to such commands
419 * Tables in arbitrary syntax::  Orgtbl for La@TeX{} and other programs
420 * Dynamic blocks::              Automatically filled blocks
421 * Special agenda views::        Customized views
422 * Extracting agenda information::  Postprocessing of agenda information
423 * Using the property API::      Writing programs that use entry properties
424 * Using the mapping API::       Mapping over all or selected entries
426 Tables and lists in arbitrary syntax
428 * Radio tables::                Sending and receiving radio tables
429 * A LaTeX example::             Step by step, almost a tutorial
430 * Translator functions::        Copy and modify
431 * Radio lists::                 Doing the same for lists
433 MobileOrg
435 * Setting up the staging area::  Where to interact with the mobile device
436 * Pushing to MobileOrg::        Uploading Org files and agendas
437 * Pulling from MobileOrg::      Integrating captured and flagged items
439 @end detailmenu
440 @end menu
442 @node Introduction, Document Structure, Top, Top
443 @chapter Introduction
444 @cindex introduction
446 @menu
447 * Summary::                     Brief summary of what Org does
448 * Installation::                How to install a downloaded version of Org
449 * Activation::                  How to activate Org for certain buffers
450 * Feedback::                    Bug reports, ideas, patches etc.
451 * Conventions::                 Type-setting conventions in the manual
452 @end menu
454 @node Summary, Installation, Introduction, Introduction
455 @section Summary
456 @cindex summary
458 Org is a mode for keeping notes, maintaining TODO lists, and doing
459 project planning with a fast and effective plain-text system.
461 Org develops organizational tasks around NOTES files that contain
462 lists or information about projects as plain text.  Org is
463 implemented on top of Outline mode, which makes it possible to keep the
464 content of large files well structured.  Visibility cycling and
465 structure editing help to work with the tree.  Tables are easily created
466 with a built-in table editor.  Org supports TODO items, deadlines,
467 timestamps, and scheduling.  It dynamically compiles entries into an
468 agenda that utilizes and smoothly integrates much of the Emacs calendar
469 and diary.  Plain text URL-like links connect to websites, emails,
470 Usenet messages, BBDB entries, and any files related to the projects.
471 For printing and sharing of notes, an Org file can be exported as a
472 structured ASCII file, as HTML, or (TODO and agenda items only) as an
473 iCalendar file.  It can also serve as a publishing tool for a set of
474 linked web pages.
476 An important design aspect that distinguishes Org from, for example,
477 Planner/Muse is that it encourages you to store every piece of information
478 only once.  In Planner, you have project pages, day pages and possibly
479 other files, duplicating some information such as tasks.  In Org,
480 you only have notes files.  In your notes you mark entries as tasks, and
481 label them with tags and timestamps.  All necessary lists, like a
482 schedule for the day, the agenda for a meeting, tasks lists selected by
483 tags, etc., are created dynamically when you need them.
485 Org keeps simple things simple.  When first fired up, it should
486 feel like a straightforward, easy to use outliner.  Complexity is not
487 imposed, but a large amount of functionality is available when you need
488 it.  Org is a toolbox and can be used in different ways, for
489 example as:
491 @example
492 @r{@bullet{} an outline extension with visibility cycling and structure editing}
493 @r{@bullet{} an ASCII system and table editor for taking structured notes}
494 @r{@bullet{} an ASCII table editor with spreadsheet-like capabilities}
495 @r{@bullet{} a TODO list editor}
496 @r{@bullet{} a full agenda and planner with deadlines and work scheduling}
497 @pindex GTD, Getting Things Done
498 @r{@bullet{} an environment to implement David Allen's GTD system}
499 @r{@bullet{} a basic database application}
500 @r{@bullet{} a simple hypertext system, with HTML and La@TeX{} export}
501 @r{@bullet{} a publishing tool to create a set of interlinked webpages}
502 @end example
504 Org's automatic, context-sensitive table editor with spreadsheet
505 capabilities can be integrated into any major mode by activating the
506 minor Orgtbl mode.  Using a translation step, it can be used to maintain
507 tables in arbitrary file types, for example in La@TeX{}.  The structure
508 editing and list creation capabilities can be used outside Org with
509 the minor Orgstruct mode.
511 @cindex FAQ
512 There is a website for Org which provides links to the newest
513 version of Org, as well as additional information, frequently asked
514 questions (FAQ), links to tutorials, etc@.  This page is located at
515 @uref{http://orgmode.org}.
517 @page
520 @node Installation, Activation, Summary, Introduction
521 @section Installation
522 @cindex installation
523 @cindex XEmacs
525 @b{Important:} @i{If you are using a version of Org that is part of the Emacs
526 distribution or an XEmacs package, please skip this section and go directly
527 to @ref{Activation}.}
529 If you have downloaded Org from the Web, either as a distribution @file{.zip}
530 or @file{.tar} file, or as a Git archive, you must take the following steps
531 to install it: go into the unpacked Org distribution directory and edit the
532 top section of the file @file{Makefile}.  You must set the name of the Emacs
533 binary (likely either @file{emacs} or @file{xemacs}), and the paths to the
534 directories where local Lisp and Info files are kept.  If you don't have
535 access to the system-wide directories, you can simply run Org directly from
536 the distribution directory by adding the @file{lisp} subdirectory to the
537 Emacs load path.  To do this, add the following line to @file{.emacs}:
539 @example
540 (setq load-path (cons "~/path/to/orgdir/lisp" load-path))
541 @end example
543 @noindent
544 If you plan to use code from the @file{contrib} subdirectory, do a similar
545 step for this directory:
547 @example
548 (setq load-path (cons "~/path/to/orgdir/contrib/lisp" load-path))
549 @end example
551 @sp 2
552 @cartouche
553 XEmacs users now need to install the file @file{noutline.el} from
554 the @file{xemacs} sub-directory of the Org distribution.  Use the
555 command:
557 @example
558      make install-noutline
559 @end example
560 @end cartouche
561 @sp 2
563 @noindent Now byte-compile the Lisp files with the shell command:
565 @example
566 make
567 @end example
569 @noindent If you are running Org from the distribution directory, this is
570 all.  If you want to install Org into the system directories, use (as
571 administrator)
573 @example
574 make install
575 @end example
577 Installing Info files is system dependent, because of differences in the
578 @file{install-info} program.  In Debian it copies the info files into the
579 correct directory and modifies the info directory file.  In many other
580 systems, the files need to be copied to the correct directory separately, and
581 @file{install-info} then only modifies the directory file.  Check your system
582 documentation to find out which of the following commands you need:
584 @example
585 make install-info
586 make install-info-debian
587 @end example
589 Then add the following line to @file{.emacs}.  It is needed so that
590 Emacs can autoload functions that are located in files not immediately loaded
591 when Org-mode starts.
592 @lisp
593 (require 'org-install)
594 @end lisp
596 Do not forget to activate Org as described in the following section.
597 @page
599 @node Activation, Feedback, Installation, Introduction
600 @section Activation
601 @cindex activation
602 @cindex autoload
603 @cindex global key bindings
604 @cindex key bindings, global
606 @iftex
607 @b{Important:} @i{If you use copy-and-paste to copy Lisp code from the
608 PDF documentation as viewed by some PDF viewers to your @file{.emacs} file, the
609 single-quote character comes out incorrectly and the code will not work.
610 You need to fix the single-quotes by hand, or copy from Info
611 documentation.}
612 @end iftex
614 Add the following lines to your @file{.emacs} file.  The last three lines
615 define @emph{global} keys for the commands @command{org-store-link},
616 @command{org-agenda}, and @command{org-iswitchb}---please choose suitable
617 keys yourself.
619 @lisp
620 ;; The following lines are always needed.  Choose your own keys.
621 (add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
622 (global-set-key "\C-cl" 'org-store-link)
623 (global-set-key "\C-ca" 'org-agenda)
624 (global-set-key "\C-cb" 'org-iswitchb)
625 @end lisp
627 Furthermore, you must activate @code{font-lock-mode} in Org
628 buffers, because significant functionality depends on font-locking being
629 active.  You can do this with either one of the following two lines
630 (XEmacs users must use the second option):
631 @lisp
632 (global-font-lock-mode 1)                     ; for all buffers
633 (add-hook 'org-mode-hook 'turn-on-font-lock)  ; Org buffers only
634 @end lisp
636 @cindex Org mode, turning on
637 With this setup, all files with extension @samp{.org} will be put
638 into Org mode.  As an alternative, make the first line of a file look
639 like this:
641 @example
642 MY PROJECTS    -*- mode: org; -*-
643 @end example
645 @vindex org-insert-mode-line-in-empty-file
646 @noindent which will select Org mode for this buffer no matter what
647 the file's name is.  See also the variable
648 @code{org-insert-mode-line-in-empty-file}.
650 Many commands in Org work on the region if the region is @i{active}.  To make
651 use of this, you need to have @code{transient-mark-mode}
652 (@code{zmacs-regions} in XEmacs) turned on.  In Emacs 23 this is the default,
653 in Emacs 22 you need to do this yourself with
654 @lisp
655 (transient-mark-mode 1)
656 @end lisp
657 @noindent If you do not like @code{transient-mark-mode}, you can create an
658 active region by using the mouse to select a region, or pressing
659 @kbd{C-@key{SPC}} twice before moving the cursor.
661 @node Feedback, Conventions, Activation, Introduction
662 @section Feedback
663 @cindex feedback
664 @cindex bug reports
665 @cindex maintainer
666 @cindex author
668 If you find problems with Org, or if you have questions, remarks, or ideas
669 about it, please mail to the Org mailing list @email{emacs-orgmode@@gnu.org}.
670 If you are not a member of the mailing list, your mail will be passed to the
671 list after a moderator has approved it.
673 For bug reports, please provide as much information as possible, including
674 the version information of Emacs (@kbd{M-x emacs-version @key{RET}}) and Org
675 (@kbd{M-x org-version @key{RET}}), as well as the Org related setup in
676 @file{.emacs}.  The easiest way to do this is to use the command
677 @example
678 @kbd{M-x org-submit-bug-report}
679 @end example
680 @noindent which will put all this information into an Emacs mail buffer so
681 that you only need to add your description.  If you re not sending the Email
682 from within Emacs, please copy and paste the content into your Email program.
684 If an error occurs, a backtrace can be very useful (see below on how to
685 create one).  Often a small example file helps, along with clear information
686 about:
688 @enumerate
689 @item What exactly did you do?
690 @item What did you expect to happen?
691 @item What happened instead?
692 @end enumerate
693 @noindent Thank you for helping to improve this mode.
695 @subsubheading How to create a useful backtrace
697 @cindex backtrace of an error
698 If working with Org produces an error with a message you don't
699 understand, you may have hit a bug.  The best way to report this is by
700 providing, in addition to what was mentioned above, a @emph{backtrace}.
701 This is information from the built-in debugger about where and how the
702 error occurred.  Here is how to produce a useful backtrace:
704 @enumerate
705 @item
706 Reload uncompiled versions of all Org-mode Lisp files.  The backtrace
707 contains much more information if it is produced with uncompiled code.
708 To do this, use
709 @example
710 C-u M-x org-reload RET
711 @end example
712 @noindent
713 or select @code{Org -> Refresh/Reload -> Reload Org uncompiled} from the
714 menu.
715 @item
716 Go to the @code{Options} menu and select @code{Enter Debugger on Error}
717 (XEmacs has this option in the @code{Troubleshooting} sub-menu).
718 @item
719 Do whatever you have to do to hit the error.  Don't forget to
720 document the steps you take.
721 @item
722 When you hit the error, a @file{*Backtrace*} buffer will appear on the
723 screen.  Save this buffer to a file (for example using @kbd{C-x C-w}) and
724 attach it to your bug report.
725 @end enumerate
727 @node Conventions,  , Feedback, Introduction
728 @section Typesetting conventions used in this manual
730 Org uses three types of keywords: TODO keywords, tags, and property
731 names.  In this manual we use the following conventions:
733 @table @code
734 @item TODO
735 @itemx WAITING
736 TODO keywords are written with all capitals, even if they are
737 user-defined.
738 @item boss
739 @itemx ARCHIVE
740 User-defined tags are written in lowercase; built-in tags with special
741 meaning are written with all capitals.
742 @item Release
743 @itemx PRIORITY
744 User-defined properties are capitalized; built-in properties with
745 special meaning are written with all capitals.
746 @end table
748 @node Document Structure, Tables, Introduction, Top
749 @chapter Document Structure
750 @cindex document structure
751 @cindex structure of document
753 Org is based on Outline mode and provides flexible commands to
754 edit the structure of the document.
756 @menu
757 * Outlines::                    Org is based on Outline mode
758 * Headlines::                   How to typeset Org tree headlines
759 * Visibility cycling::          Show and hide, much simplified
760 * Motion::                      Jumping to other headlines
761 * Structure editing::           Changing sequence and level of headlines
762 * Sparse trees::                Matches embedded in context
763 * Plain lists::                 Additional structure within an entry
764 * Drawers::                     Tucking stuff away
765 * Blocks::                      Folding blocks
766 * Footnotes::                   How footnotes are defined in Org's syntax
767 * Orgstruct mode::              Structure editing outside Org
768 @end menu
770 @node Outlines, Headlines, Document Structure, Document Structure
771 @section Outlines
772 @cindex outlines
773 @cindex Outline mode
775 Org is implemented on top of Outline mode.  Outlines allow a
776 document to be organized in a hierarchical structure, which (at least
777 for me) is the best representation of notes and thoughts.  An overview
778 of this structure is achieved by folding (hiding) large parts of the
779 document to show only the general document structure and the parts
780 currently being worked on.  Org greatly simplifies the use of
781 outlines by compressing the entire show/hide functionality into a single
782 command, @command{org-cycle}, which is bound to the @key{TAB} key.
784 @node Headlines, Visibility cycling, Outlines, Document Structure
785 @section Headlines
786 @cindex headlines
787 @cindex outline tree
788 @vindex org-special-ctrl-a/e
790 Headlines define the structure of an outline tree.  The headlines in
791 Org start with one or more stars, on the left margin@footnote{See
792 the variable @code{org-special-ctrl-a/e} to configure special behavior
793 of @kbd{C-a} and @kbd{C-e} in headlines.}.  For example:
795 @example
796 * Top level headline
797 ** Second level
798 *** 3rd level
799     some text
800 *** 3rd level
801     more text
803 * Another top level headline
804 @end example
806 @noindent Some people find the many stars too noisy and would prefer an
807 outline that has whitespace followed by a single star as headline
808 starters.  @ref{Clean view}, describes a setup to realize this.
810 @vindex org-cycle-separator-lines
811 An empty line after the end of a subtree is considered part of it and
812 will be hidden when the subtree is folded.  However, if you leave at
813 least two empty lines, one empty line will remain visible after folding
814 the subtree, in order to structure the collapsed view.  See the
815 variable @code{org-cycle-separator-lines} to modify this behavior.
817 @node Visibility cycling, Motion, Headlines, Document Structure
818 @section Visibility cycling
819 @cindex cycling, visibility
820 @cindex visibility cycling
821 @cindex trees, visibility
822 @cindex show hidden text
823 @cindex hide text
825 Outlines make it possible to hide parts of the text in the buffer.
826 Org uses just two commands, bound to @key{TAB} and
827 @kbd{S-@key{TAB}} to change the visibility in the buffer.
829 @cindex subtree visibility states
830 @cindex subtree cycling
831 @cindex folded, subtree visibility state
832 @cindex children, subtree visibility state
833 @cindex subtree, subtree visibility state
834 @table @kbd
835 @kindex @key{TAB}
836 @item @key{TAB}
837 @emph{Subtree cycling}: Rotate current subtree among the states
839 @example
840 ,-> FOLDED -> CHILDREN -> SUBTREE --.
841 '-----------------------------------'
842 @end example
844 @vindex org-cycle-emulate-tab
845 @vindex org-cycle-global-at-bob
846 The cursor must be on a headline for this to work@footnote{see, however,
847 the option @code{org-cycle-emulate-tab}.}.  When the cursor is at the
848 beginning of the buffer and the first line is not a headline, then
849 @key{TAB} actually runs global cycling (see below)@footnote{see the
850 option @code{org-cycle-global-at-bob}.}.  Also when called with a prefix
851 argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
853 @cindex global visibility states
854 @cindex global cycling
855 @cindex overview, global visibility state
856 @cindex contents, global visibility state
857 @cindex show all, global visibility state
858 @kindex S-@key{TAB}
859 @item S-@key{TAB}
860 @itemx C-u @key{TAB}
861 @emph{Global cycling}: Rotate the entire buffer among the states
863 @example
864 ,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
865 '--------------------------------------'
866 @end example
868 When @kbd{S-@key{TAB}} is called with a numeric prefix argument N, the
869 CONTENTS view up to headlines of level N will be shown.  Note that inside
870 tables, @kbd{S-@key{TAB}} jumps to the previous field.
872 @cindex show all, command
873 @kindex C-u C-u C-u @key{TAB}
874 @item C-u C-u C-u @key{TAB}
875 Show all, including drawers.
876 @kindex C-c C-r
877 @item C-c C-r
878 Reveal context around point, showing the current entry, the following heading
879 and the hierarchy above.  Useful for working near a location that has been
880 exposed by a sparse tree command (@pxref{Sparse trees}) or an agenda command
881 (@pxref{Agenda commands}).  With a prefix argument show, on each
882 level, all sibling headings.  With double prefix arg, also show the entire
883 subtree of the parent.
884 @kindex C-c C-x b
885 @item C-c C-x b
886 Show the current subtree in an indirect buffer@footnote{The indirect
887 buffer
888 @ifinfo
889 (@pxref{Indirect Buffers,,,emacs,GNU Emacs Manual})
890 @end ifinfo
891 @ifnotinfo
892 (see the Emacs manual for more information about indirect buffers)
893 @end ifnotinfo
894 will contain the entire buffer, but will be narrowed to the current
895 tree.  Editing the indirect buffer will also change the original buffer,
896 but without affecting visibility in that buffer.}.  With a numeric
897 prefix argument N, go up to level N and then take that tree.  If N is
898 negative then go up that many levels.  With a @kbd{C-u} prefix, do not remove
899 the previously used indirect buffer.
900 @end table
902 @vindex org-startup-folded
903 @cindex @code{overview}, STARTUP keyword
904 @cindex @code{content}, STARTUP keyword
905 @cindex @code{showall}, STARTUP keyword
906 @cindex @code{showeverything}, STARTUP keyword
908 When Emacs first visits an Org file, the global state is set to
909 OVERVIEW, i.e. only the top level headlines are visible.  This can be
910 configured through the variable @code{org-startup-folded}, or on a
911 per-file basis by adding one of the following lines anywhere in the
912 buffer:
914 @example
915 #+STARTUP: overview
916 #+STARTUP: content
917 #+STARTUP: showall
918 #+STARTUP: showeverything
919 @end example
921 @cindex property, VISIBILITY
922 @noindent
923 Furthermore, any entries with a @samp{VISIBILITY} property (@pxref{Properties
924 and Columns}) will get their visibility adapted accordingly.  Allowed values
925 for this property are @code{folded}, @code{children}, @code{content}, and
926 @code{all}.
927 @table @kbd
928 @kindex C-u C-u @key{TAB}
929 @item C-u C-u @key{TAB}
930 Switch back to the startup visibility of the buffer, i.e. whatever is
931 requested by startup options and @samp{VISIBILITY} properties in individual
932 entries.
933 @end table
935 @node Motion, Structure editing, Visibility cycling, Document Structure
936 @section Motion
937 @cindex motion, between headlines
938 @cindex jumping, to headlines
939 @cindex headline navigation
940 The following commands jump to other headlines in the buffer.
942 @table @kbd
943 @kindex C-c C-n
944 @item C-c C-n
945 Next heading.
946 @kindex C-c C-p
947 @item C-c C-p
948 Previous heading.
949 @kindex C-c C-f
950 @item C-c C-f
951 Next heading same level.
952 @kindex C-c C-b
953 @item C-c C-b
954 Previous heading same level.
955 @kindex C-c C-u
956 @item C-c C-u
957 Backward to higher level heading.
958 @kindex C-c C-j
959 @item C-c C-j
960 Jump to a different place without changing the current outline
961 visibility.  Shows the document structure in a temporary buffer, where
962 you can use the following keys to find your destination:
963 @vindex org-goto-auto-isearch
964 @example
965 @key{TAB}         @r{Cycle visibility.}
966 @key{down} / @key{up}   @r{Next/previous visible headline.}
967 @key{RET}         @r{Select this location.}
968 @kbd{/}           @r{Do a Sparse-tree search}
969 @r{The following keys work if you turn off @code{org-goto-auto-isearch}}
970 n / p        @r{Next/previous visible headline.}
971 f / b        @r{Next/previous headline same level.}
972 u            @r{One level up.}
973 0-9          @r{Digit argument.}
974 q            @r{Quit}
975 @end example
976 @vindex org-goto-interface
977 @noindent
978 See also the variable @code{org-goto-interface}.
979 @end table
981 @node Structure editing, Sparse trees, Motion, Document Structure
982 @section Structure editing
983 @cindex structure editing
984 @cindex headline, promotion and demotion
985 @cindex promotion, of subtrees
986 @cindex demotion, of subtrees
987 @cindex subtree, cut and paste
988 @cindex pasting, of subtrees
989 @cindex cutting, of subtrees
990 @cindex copying, of subtrees
991 @cindex sorting, of subtrees
992 @cindex subtrees, cut and paste
994 @table @kbd
995 @kindex M-@key{RET}
996 @item M-@key{RET}
997 @vindex org-M-RET-may-split-line
998 Insert new heading with same level as current.  If the cursor is in a
999 plain list item, a new item is created (@pxref{Plain lists}).  To force
1000 creation of a new headline, use a prefix argument, or first press @key{RET}
1001 to get to the beginning of the next line.  When this command is used in
1002 the middle of a line, the line is split and the rest of the line becomes
1003 the new headline@footnote{If you do not want the line to be split,
1004 customize the variable @code{org-M-RET-may-split-line}.}.  If the
1005 command is used at the beginning of a headline, the new headline is
1006 created before the current line.  If at the beginning of any other line,
1007 the content of that line is made the new heading.  If the command is
1008 used at the end of a folded subtree (i.e. behind the ellipses at the end
1009 of a headline), then a headline like the current one will be inserted
1010 after the end of the subtree.
1011 @kindex C-@key{RET}
1012 @item C-@key{RET}
1013 Just like @kbd{M-@key{RET}}, except when adding a new heading below the
1014 current heading, the new heading is placed after the body instead of before
1015 it.  This command works from anywhere in the entry.
1016 @kindex M-S-@key{RET}
1017 @item M-S-@key{RET}
1018 @vindex org-treat-insert-todo-heading-as-state-change
1019 Insert new TODO entry with same level as current heading.  See also the
1020 variable @code{org-treat-insert-todo-heading-as-state-change}.
1021 @kindex C-S-@key{RET}
1022 @item C-S-@key{RET}
1023 Insert new TODO entry with same level as current heading.  Like
1024 @kbd{C-@key{RET}}, the new headline will be inserted after the current
1025 subtree.
1026 @kindex @key{TAB}
1027 @item @key{TAB} @r{in new, empty entry}
1028 In a new entry with no text yet, the first @key{TAB} demotes the entry to
1029 become a child of the previous one.  The next @key{TAB} makes it a parent,
1030 and so on, all the way to top level.  Yet another @key{TAB}, and you are back
1031 to the initial level.
1032 @kindex M-@key{left}
1033 @item M-@key{left}
1034 Promote current heading by one level.
1035 @kindex M-@key{right}
1036 @item M-@key{right}
1037 Demote current heading by one level.
1038 @kindex M-S-@key{left}
1039 @item M-S-@key{left}
1040 Promote the current subtree by one level.
1041 @kindex M-S-@key{right}
1042 @item M-S-@key{right}
1043 Demote the current subtree by one level.
1044 @kindex M-S-@key{up}
1045 @item M-S-@key{up}
1046 Move subtree up (swap with previous subtree of same
1047 level).
1048 @kindex M-S-@key{down}
1049 @item M-S-@key{down}
1050 Move subtree down (swap with next subtree of same level).
1051 @kindex C-c C-x C-w
1052 @item C-c C-x C-w
1053 Kill subtree, i.e. remove it from buffer but save in kill ring.
1054 With a numeric prefix argument N, kill N sequential subtrees.
1055 @kindex C-c C-x M-w
1056 @item C-c C-x M-w
1057 Copy subtree to kill ring.  With a numeric prefix argument N, copy the N
1058 sequential subtrees.
1059 @kindex C-c C-x C-y
1060 @item C-c C-x C-y
1061 Yank subtree from kill ring.  This does modify the level of the subtree to
1062 make sure the tree fits in nicely at the yank position.  The yank level can
1063 also be specified with a numeric prefix argument, or by yanking after a
1064 headline marker like @samp{****}.
1065 @kindex C-y
1066 @item C-y
1067 @vindex org-yank-adjusted-subtrees
1068 @vindex org-yank-folded-subtrees
1069 Depending on the variables @code{org-yank-adjusted-subtrees} and
1070 @code{org-yank-folded-subtrees}, Org's internal @code{yank} command will
1071 paste subtrees folded and in a clever way, using the same command as @kbd{C-c
1072 C-x C-y}.  With the default settings, no level adjustment will take place,
1073 but the yanked tree will be folded unless doing so would swallow text
1074 previously visible.  Any prefix argument to this command will force a normal
1075 @code{yank} to be executed, with the prefix passed along.  A good way to
1076 force a normal yank is @kbd{C-u C-y}.  If you use @code{yank-pop} after a
1077 yank, it will yank previous kill items plainly, without adjustment and
1078 folding.
1079 @kindex C-c C-x c
1080 @item C-c C-x c
1081 Clone a subtree by making a number of sibling copies of it.  You will be
1082 prompted for the number of copies to make, and you can also specify if any
1083 timestamps in the entry should be shifted.  This can be useful, for example,
1084 to create a number of tasks related to a series of lectures to prepare.  For
1085 more details, see the docstring of the command
1086 @code{org-clone-subtree-with-time-shift}.
1087 @kindex C-c C-w
1088 @item C-c C-w
1089 Refile entry or region to a different location.  @xref{Refiling notes}.
1090 @kindex C-c ^
1091 @item C-c ^
1092 Sort same-level entries.  When there is an active region, all entries in the
1093 region will be sorted.  Otherwise the children of the current headline are
1094 sorted.  The command prompts for the sorting method, which can be
1095 alphabetically, numerically, by time (first timestamp with active preferred,
1096 creation time, scheduled time, deadline time), by priority, by TODO keyword
1097 (in the sequence the keywords have been defined in the setup) or by the value
1098 of a property.  Reverse sorting is possible as well.  You can also supply
1099 your own function to extract the sorting key.  With a @kbd{C-u} prefix,
1100 sorting will be case-sensitive.  With two @kbd{C-u C-u} prefixes, duplicate
1101 entries will also be removed.
1102 @kindex C-x n s
1103 @item C-x n s
1104 Narrow buffer to current subtree.
1105 @kindex C-x n w
1106 @item C-x n w
1107 Widen buffer to remove narrowing.
1108 @kindex C-c *
1109 @item C-c *
1110 Turn a normal line or plain list item into a headline (so that it becomes a
1111 subheading at its location).  Also turn a headline into a normal line by
1112 removing the stars.  If there is an active region, turn all lines in the
1113 region into headlines.  If the first line in the region was an item, turn
1114 only the item lines into headlines.  Finally, if the first line is a
1115 headline, remove the stars from all headlines in the region.
1116 @end table
1118 @cindex region, active
1119 @cindex active region
1120 @cindex transient mark mode
1121 When there is an active region (Transient Mark mode), promotion and
1122 demotion work on all headlines in the region.  To select a region of
1123 headlines, it is best to place both point and mark at the beginning of a
1124 line, mark at the beginning of the first headline, and point at the line
1125 just after the last headline to change.  Note that when the cursor is
1126 inside a table (@pxref{Tables}), the Meta-Cursor keys have different
1127 functionality.
1130 @node Sparse trees, Plain lists, Structure editing, Document Structure
1131 @section Sparse trees
1132 @cindex sparse trees
1133 @cindex trees, sparse
1134 @cindex folding, sparse trees
1135 @cindex occur, command
1137 @vindex org-show-hierarchy-above
1138 @vindex org-show-following-heading
1139 @vindex org-show-siblings
1140 @vindex org-show-entry-below
1141 An important feature of Org mode is the ability to construct @emph{sparse
1142 trees} for selected information in an outline tree, so that the entire
1143 document is folded as much as possible, but the selected information is made
1144 visible along with the headline structure above it@footnote{See also the
1145 variables @code{org-show-hierarchy-above}, @code{org-show-following-heading},
1146 @code{org-show-siblings}, and @code{org-show-entry-below} for detailed
1147 control on how much context is shown around each match.}.  Just try it out
1148 and you will see immediately how it works.
1150 Org mode contains several commands creating such trees, all these
1151 commands can be accessed through a dispatcher:
1153 @table @kbd
1154 @kindex C-c /
1155 @item C-c /
1156 This prompts for an extra key to select a sparse-tree creating command.
1157 @kindex C-c / r
1158 @item C-c / r
1159 @vindex org-remove-highlights-with-change
1160 Occur.  Prompts for a regexp and shows a sparse tree with all matches.  If
1161 the match is in a headline, the headline is made visible.  If the match is in
1162 the body of an entry, headline and body are made visible.  In order to
1163 provide minimal context, also the full hierarchy of headlines above the match
1164 is shown, as well as the headline following the match.  Each match is also
1165 highlighted; the highlights disappear when the buffer is changed by an
1166 editing command@footnote{This depends on the option
1167 @code{org-remove-highlights-with-change}}, or by pressing @kbd{C-c C-c}.
1168 When called with a @kbd{C-u} prefix argument, previous highlights are kept,
1169 so several calls to this command can be stacked.
1170 @end table
1172 @noindent
1173 @vindex org-agenda-custom-commands
1174 For frequently used sparse trees of specific search strings, you can
1175 use the variable @code{org-agenda-custom-commands} to define fast
1176 keyboard access to specific sparse trees.  These commands will then be
1177 accessible through the agenda dispatcher (@pxref{Agenda dispatcher}).
1178 For example:
1180 @lisp
1181 (setq org-agenda-custom-commands
1182       '(("f" occur-tree "FIXME")))
1183 @end lisp
1185 @noindent will define the key @kbd{C-c a f} as a shortcut for creating
1186 a sparse tree matching the string @samp{FIXME}.
1188 The other sparse tree commands select headings based on TODO keywords,
1189 tags, or properties and will be discussed later in this manual.
1191 @kindex C-c C-e v
1192 @cindex printing sparse trees
1193 @cindex visible text, printing
1194 To print a sparse tree, you can use the Emacs command
1195 @code{ps-print-buffer-with-faces} which does not print invisible parts
1196 of the document @footnote{This does not work under XEmacs, because
1197 XEmacs uses selective display for outlining, not text properties.}.
1198 Or you can use the command @kbd{C-c C-e v} to export only the visible
1199 part of the document and print the resulting file.
1201 @node Plain lists, Drawers, Sparse trees, Document Structure
1202 @section Plain lists
1203 @cindex plain lists
1204 @cindex lists, plain
1205 @cindex lists, ordered
1206 @cindex ordered lists
1208 Within an entry of the outline tree, hand-formatted lists can provide
1209 additional structure.  They also provide a way to create lists of
1210 checkboxes (@pxref{Checkboxes}).  Org supports editing such lists,
1211 and the HTML exporter (@pxref{Exporting}) parses and formats them.
1213 Org knows ordered lists, unordered lists, and description lists.
1214 @itemize @bullet
1215 @item
1216 @emph{Unordered} list items start with @samp{-}, @samp{+}, or
1217 @samp{*}@footnote{When using @samp{*} as a bullet, lines must be indented or
1218 they will be seen as top-level headlines.  Also, when you are hiding leading
1219 stars to get a clean outline view, plain list items starting with a star are
1220 visually indistinguishable from true headlines.  In short: even though
1221 @samp{*} is supported, it may be better to not use it for plain list items.}
1222 as bullets.
1223 @item
1224 @emph{Ordered} list items start with a numeral followed by either a period or
1225 a right parenthesis, such as @samp{1.} or @samp{1)}.
1226 @item
1227 @emph{Description} list items are unordered list items, and contain the
1228 separator @samp{ :: } to separate the description @emph{term} from the
1229 description.
1230 @end itemize
1232 @vindex org-empty-line-terminates-plain-lists
1233 Items belonging to the same list must have the same indentation on the first
1234 line.  In particular, if an ordered list reaches number @samp{10.}, then the
1235 2--digit numbers must be written left-aligned with the other numbers in the
1236 list.  Indentation also determines the end of a list item.  It ends before
1237 the next line that is indented like the bullet/number, or less.  Empty lines
1238 are part of the previous item, so you can have several paragraphs in one
1239 item.  If you would like an empty line to terminate all currently open plain
1240 lists, configure the variable @code{org-empty-line-terminates-plain-lists}.
1241 Here is an example:
1243 @example
1244 @group
1245 ** Lord of the Rings
1246    My favorite scenes are (in this order)
1247    1. The attack of the Rohirrim
1248    2. Eowyn's fight with the witch king
1249       + this was already my favorite scene in the book
1250       + I really like Miranda Otto.
1251    3. Peter Jackson being shot by Legolas
1252        - on DVD only
1253       He makes a really funny face when it happens.
1254    But in the end, no individual scenes matter but the film as a whole.
1255    Important actors in this film are:
1256    - @b{Elijah Wood} :: He plays Frodo
1257    - @b{Sean Austin} :: He plays Sam, Frodo's friend.  I still remember
1258      him very well from his role as Mikey Walsh in @i{The Goonies}.
1259 @end group
1260 @end example
1262 Org supports these lists by tuning filling and wrapping commands to deal with
1263 them correctly@footnote{Org only changes the filling settings for Emacs.  For
1264 XEmacs, you should use Kyle E. Jones' @file{filladapt.el}.  To turn this on,
1265 put into @file{.emacs}: @code{(require 'filladapt)}}, and by exporting them
1266 properly (@pxref{Exporting}).  Since indentation is what governs the
1267 structure of these lists, many structural constructs like @code{#+BEGIN_...}
1268 blocks can be indented to signal that they should be part of a list item.
1270 The following commands act on items when the cursor is in the first line
1271 of an item (the line with the bullet or number).
1273 @table @kbd
1274 @kindex @key{TAB}
1275 @item @key{TAB}
1276 @vindex org-cycle-include-plain-lists
1277 Items can be folded just like headline levels.  Normally this works only if
1278 the cursor is on a plain list item.  For more details, see the variable
1279 @code{org-cycle-include-plain-lists}. to @code{integrate}, plain list items
1280 will be treated like low-level.  The level of an item is then given by the
1281 indentation of the bullet/number.  Items are always subordinate to real
1282 headlines, however; the hierarchies remain completely separated.
1284 If @code{org-cycle-include-plain-lists} has not been set, @key{TAB}
1285 fixes the indentation of the current line in a heuristic way.
1286 @kindex M-@key{RET}
1287 @item M-@key{RET}
1288 @vindex org-M-RET-may-split-line
1289 Insert new item at current level.  With a prefix argument, force a new
1290 heading (@pxref{Structure editing}).  If this command is used in the middle
1291 of a line, the line is @emph{split} and the rest of the line becomes the new
1292 item@footnote{If you do not want the line to be split, customize the variable
1293 @code{org-M-RET-may-split-line}.}.  If this command is executed in the
1294 @emph{whitespace before a bullet or number}, the new item is created
1295 @emph{before} the current item.  If the command is executed in the white
1296 space before the text that is part of an item but does not contain the
1297 bullet, a bullet is added to the current line.
1298 @kindex M-S-@key{RET}
1299 @item M-S-@key{RET}
1300 Insert a new item with a checkbox (@pxref{Checkboxes}).
1301 @kindex @key{TAB}
1302 @item @key{TAB} @r{in new, empty item}
1303 In a new item with no text yet, the first @key{TAB} demotes the item to
1304 become a child of the previous one.  The next @key{TAB} makes it a parent,
1305 and so on, all the way to the left margin.  Yet another @key{TAB}, and you
1306 are back to the initial level.
1307 @kindex S-@key{up}
1308 @kindex S-@key{down}
1309 @item S-@key{up}
1310 @itemx S-@key{down}
1311 @cindex shift-selection-mode
1312 @vindex org-support-shift-select
1313 Jump to the previous/next item in the current list, but only if
1314 @code{org-support-shift-select} is off.  If not, you can still use paragraph
1315 jumping commands like @kbd{C-@key{up}} and @kbd{C-@key{down}} to quite
1316 similar effect.
1317 @kindex M-S-@key{up}
1318 @kindex M-S-@key{down}
1319 @item M-S-@key{up}
1320 @itemx M-S-@key{down}
1321 Move the item including subitems up/down (swap with previous/next item
1322 of same indentation).  If the list is ordered, renumbering is
1323 automatic.
1324 @kindex M-@key{left}
1325 @kindex M-@key{right}
1326 @item M-@key{left}
1327 @itemx M-@key{right}
1328 Decrease/increase the indentation of an item, leaving children alone.
1329 @kindex M-S-@key{left}
1330 @kindex M-S-@key{right}
1331 @item M-S-@key{left}
1332 @itemx M-S-@key{right}
1333 Decrease/increase the indentation of the item, including subitems.
1334 Initially, the item tree is selected based on current indentation.
1335 When these commands are executed several times in direct succession,
1336 the initially selected region is used, even if the new indentation
1337 would imply a different hierarchy.  To use the new hierarchy, break
1338 the command chain with a cursor motion or so.
1339 @kindex C-c C-c
1340 @item C-c C-c
1341 If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the
1342 state of the checkbox.  If not, this command makes sure that all the
1343 items on this list level use the same bullet.  Furthermore, if this is
1344 an ordered list, make sure the numbering is OK.
1345 @kindex C-c -
1346 @item C-c -
1347 Cycle the entire list level through the different itemize/enumerate bullets
1348 (@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}).  With a numeric prefix
1349 argument N, select the Nth bullet from this list.  If there is an active
1350 region when calling this, all lines will be converted to list items.  If the
1351 first line already was a list item, any item markers will be removed from the
1352 list.  Finally, even without an active region, a normal line will be
1353 converted into a list item.
1354 @kindex C-c *
1355 @item C-c *
1356 Turn a plain list item into a headline (so that it becomes a subheading at
1357 its location). @xref{Structure editing}, for a detailed explanation.
1358 @kindex S-@key{left}
1359 @kindex S-@key{right}
1360 @item S-@key{left}/@key{right}
1361 @vindex org-support-shift-select
1362 This command also cycles bullet styles when the cursor in on the bullet or
1363 anywhere in an item line, details depending on
1364 @code{org-support-shift-select}.
1365 @kindex C-c ^
1366 @item C-c ^
1367 Sort the plain list.  You will be prompted for the sorting method:
1368 numerically, alphabetically, by time, or by custom function.
1369 @end table
1371 @node Drawers, Blocks, Plain lists, Document Structure
1372 @section Drawers
1373 @cindex drawers
1374 @cindex #+DRAWERS
1375 @cindex visibility cycling, drawers
1377 @vindex org-drawers
1378 Sometimes you want to keep information associated with an entry, but you
1379 normally don't want to see it.  For this, Org mode has @emph{drawers}.
1380 Drawers need to be configured with the variable
1381 @code{org-drawers}@footnote{You can define drawers on a per-file basis
1382 with a line like @code{#+DRAWERS: HIDDEN PROPERTIES STATE}}.  Drawers
1383 look like this:
1385 @example
1386 ** This is a headline
1387    Still outside the drawer
1388    :DRAWERNAME:
1389       This is inside the drawer.
1390    :END:
1391    After the drawer.
1392 @end example
1394 Visibility cycling (@pxref{Visibility cycling}) on the headline will hide and
1395 show the entry, but keep the drawer collapsed to a single line.  In order to
1396 look inside the drawer, you need to move the cursor to the drawer line and
1397 press @key{TAB} there.  Org mode uses the @code{PROPERTIES} drawer for
1398 storing properties (@pxref{Properties and Columns}), and you can also arrange
1399 for state change notes (@pxref{Tracking TODO state changes}) and clock times
1400 (@pxref{Clocking work time}) to be stored in a drawer @code{LOGBOOK}.  If you
1401 want to store a quick note in the LOGBOOK drawer, in a similar way as this is
1402 done by state changes, use
1404 @table @kbd
1405 @kindex C-c C-z
1406 @item C-c C-z
1407 Add a time-stamped note to the LOGBOOK drawer.
1408 @end table
1410 @node Blocks, Footnotes, Drawers, Document Structure
1411 @section Blocks
1413 @vindex org-hide-block-startup
1414 @cindex blocks, folding
1415 Org-mode uses begin...end blocks for various purposes from including source
1416 code examples (@pxref{Literal examples}) to capturing time logging
1417 information (@pxref{Clocking work time}).  These blocks can be folded and
1418 unfolded by pressing TAB in the begin line.  You can also get all blocks
1419 folded at startup by configuring the variable @code{org-hide-block-startup}
1420 or on a per-file basis by using
1422 @cindex @code{hideblocks}, STARTUP keyword
1423 @cindex @code{nohideblocks}, STARTUP keyword
1424 @example
1425 #+STARTUP: hideblocks
1426 #+STARTUP: nohideblocks
1427 @end example
1429 @node Footnotes, Orgstruct mode, Blocks, Document Structure
1430 @section Footnotes
1431 @cindex footnotes
1433 Org mode supports the creation of footnotes.  In contrast to the
1434 @file{footnote.el} package, Org mode's footnotes are designed for work on a
1435 larger document, not only for one-off documents like emails.  The basic
1436 syntax is similar to the one used by @file{footnote.el}, i.e. a footnote is
1437 defined in a paragraph that is started by a footnote marker in square
1438 brackets in column 0, no indentation allowed.  If you need a paragraph break
1439 inside a footnote, use the La@TeX{} idiom @samp{\par}.  The footnote reference
1440 is simply the marker in square brackets, inside text.  For example:
1442 @example
1443 The Org homepage[fn:1] now looks a lot better than it used to.
1445 [fn:1] The link is: http://orgmode.org
1446 @end example
1448 Org mode extends the number-based syntax to @emph{named} footnotes and
1449 optional inline definition.  Using plain numbers as markers (as
1450 @file{footnote.el} does) is supported for backward compatibility, but not
1451 encouraged because of possible conflicts with La@TeX{} snippets (@pxref{Embedded
1452 LaTeX}).  Here are the valid references:
1454 @table @code
1455 @item [1]
1456 A plain numeric footnote marker.  Compatible with @file{footnote.el}, but not
1457 recommended because somthing like @samp{[1]} could easily be part of a code
1458 snippet.
1459 @item [fn:name]
1460 A named footnote reference, where @code{name} is a unique label word, or, for
1461 simplicity of automatic creation, a number.
1462 @item [fn:: This is the inline definition of this footnote]
1463 A La@TeX{}-like anonymous footnote where the definition is given directly at the
1464 reference point.
1465 @item [fn:name: a definition]
1466 An inline definition of a footnote, which also specifies a name for the note.
1467 Since Org allows multiple references to the same note, you can then use
1468 @code{[fn:name]} to create additional references.
1469 @end table
1471 @vindex org-footnote-auto-label
1472 Footnote labels can be created automatically, or you can create names yourself.
1473 This is handled by the variable @code{org-footnote-auto-label} and its
1474 corresponding @code{#+STARTUP} keywords, see the docstring of that variable
1475 for details.
1477 @noindent The following command handles footnotes:
1479 @table @kbd
1480 @kindex C-c C-x f
1481 @item C-c C-x f
1482 The footnote action command.
1484 When the cursor is on a footnote reference, jump to the definition.  When it
1485 is at a definition, jump to the (first) reference.
1487 @vindex org-footnote-define-inline
1488 @vindex org-footnote-section
1489 @vindex org-footnote-auto-adjust
1490 Otherwise, create a new footnote.  Depending on the variable
1491 @code{org-footnote-define-inline}@footnote{The corresponding in-buffer
1492 setting is: @code{#+STARTUP: fninline} or @code{#+STARTUP: nofninline}}, the
1493 definition will be placed right into the text as part of the reference, or
1494 separately into the location determined by the variable
1495 @code{org-footnote-section}.
1497 When this command is called with a prefix argument, a menu of additional
1498 options is offered:
1499 @example
1500 s   @r{Sort the footnote definitions by reference sequence.  During editing,}
1501     @r{Org makes no effort to sort footnote definitions into a particular}
1502     @r{sequence.  If you want them sorted, use this command, which will}
1503     @r{also move entries according to @code{org-footnote-section}.  Automatic}
1504     @r{sorting after each insertion/deletion can be configured using the}
1505     @r{variable @code{org-footnote-auto-adjust}.}
1506 r   @r{Renumber the simple @code{fn:N} footnotes.  Automatic renumbering}
1507     @r{after each insertion/deletion can be configured using the variable}
1508     @r{@code{org-footnote-auto-adjust}.}
1509 S   @r{Short for first @code{r}, then @code{s} action.}
1510 n   @r{Normalize the footnotes by collecting all definitions (including}
1511     @r{inline definitions) into a special section, and then numbering them}
1512     @r{in sequence.  The references will then also be numbers.  This is}
1513     @r{meant to be the final step before finishing a document (e.g. sending}
1514     @r{off an email).  The exporters do this automatically, and so could}
1515     @r{something like @code{message-send-hook}.}
1516 d   @r{Delete the footnote at point, and all definitions of and references}
1517     @r{to it.}
1518 @end example
1519 Depending on the variable @code{org-footnote-auto-adjust}@footnote{the
1520 corresponding in-buffer options are @code{fnadjust} and @code{nofnadjust}.},
1521 renumbering and sorting footnotes can be automatic after each insertion or
1522 deletion.
1524 @kindex C-c C-c
1525 @item C-c C-c
1526 If the cursor is on a footnote reference, jump to the definition.  If it is a
1527 the definition, jump back to the reference.  When called at a footnote
1528 location with a prefix argument, offer the same menu as @kbd{C-c C-x f}.
1529 @kindex C-c C-o
1530 @kindex mouse-1
1531 @kindex mouse-2
1532 @item C-c C-o  @r{or} mouse-1/2
1533 Footnote labels are also links to the corresponding definition/reference, and
1534 you can use the usual commands to follow these links.
1535 @end table
1537 @node Orgstruct mode,  , Footnotes, Document Structure
1538 @section The Orgstruct minor mode
1539 @cindex Orgstruct mode
1540 @cindex minor mode for structure editing
1542 If you like the intuitive way the Org mode structure editing and list
1543 formatting works, you might want to use these commands in other modes like
1544 Text mode or Mail mode as well.  The minor mode @code{orgstruct-mode} makes
1545 this possible.   Toggle the mode with @kbd{M-x orgstruct-mode}, or
1546 turn it on by default, for example in Mail mode, with one of:
1548 @lisp
1549 (add-hook 'mail-mode-hook 'turn-on-orgstruct)
1550 (add-hook 'mail-mode-hook 'turn-on-orgstruct++)
1551 @end lisp
1553 When this mode is active and the cursor is on a line that looks to Org like a
1554 headline or the first line of a list item, most structure editing commands
1555 will work, even if the same keys normally have different functionality in the
1556 major mode you are using.  If the cursor is not in one of those special
1557 lines, Orgstruct mode lurks silently in the shadow.  When you use
1558 @code{orgstruct++-mode}, Org will also export indentation and autofill
1559 settings into that mode, and detect item context after the first line of an
1560 item.
1562 @node Tables, Hyperlinks, Document Structure, Top
1563 @chapter Tables
1564 @cindex tables
1565 @cindex editing tables
1567 Org comes with a fast and intuitive table editor.  Spreadsheet-like
1568 calculations are supported in connection with the Emacs @file{calc}
1569 package
1570 @ifinfo
1571 (@pxref{Top,Calc,,Calc,Gnu Emacs Calculator Manual}).
1572 @end ifinfo
1573 @ifnotinfo
1574 (see the Emacs Calculator manual for more information about the Emacs
1575 calculator).
1576 @end ifnotinfo
1578 @menu
1579 * Built-in table editor::       Simple tables
1580 * Column width and alignment::  Overrule the automatic settings
1581 * Column groups::               Grouping to trigger vertical lines
1582 * Orgtbl mode::                 The table editor as minor mode
1583 * The spreadsheet::             The table editor has spreadsheet capabilities
1584 * Org-Plot::                    Plotting from org tables
1585 @end menu
1587 @node Built-in table editor, Column width and alignment, Tables, Tables
1588 @section The built-in table editor
1589 @cindex table editor, built-in
1591 Org makes it easy to format tables in plain ASCII.  Any line with
1592 @samp{|} as the first non-whitespace character is considered part of a
1593 table.  @samp{|} is also the column separator.  A table might look like
1594 this:
1596 @example
1597 | Name  | Phone | Age |
1598 |-------+-------+-----|
1599 | Peter |  1234 |  17 |
1600 | Anna  |  4321 |  25 |
1601 @end example
1603 A table is re-aligned automatically each time you press @key{TAB} or
1604 @key{RET} or @kbd{C-c C-c} inside the table.  @key{TAB} also moves to
1605 the next field (@key{RET} to the next row) and creates new table rows
1606 at the end of the table or before horizontal lines.  The indentation
1607 of the table is set by the first line.  Any line starting with
1608 @samp{|-} is considered as a horizontal separator line and will be
1609 expanded on the next re-align to span the whole table width.  So, to
1610 create the above table, you would only type
1612 @example
1613 |Name|Phone|Age|
1615 @end example
1617 @noindent and then press @key{TAB} to align the table and start filling in
1618 fields.  Even faster would be to type @code{|Name|Phone|Age} followed by
1619 @kbd{C-c @key{RET}}.
1621 @vindex org-enable-table-editor
1622 @vindex org-table-auto-blank-field
1623 When typing text into a field, Org treats @key{DEL},
1624 @key{Backspace}, and all character keys in a special way, so that
1625 inserting and deleting avoids shifting other fields.  Also, when
1626 typing @emph{immediately after the cursor was moved into a new field
1627 with @kbd{@key{TAB}}, @kbd{S-@key{TAB}} or @kbd{@key{RET}}}, the
1628 field is automatically made blank.  If this behavior is too
1629 unpredictable for you, configure the variables
1630 @code{org-enable-table-editor} and @code{org-table-auto-blank-field}.
1632 @table @kbd
1633 @tsubheading{Creation and conversion}
1634 @kindex C-c |
1635 @item C-c |
1636 Convert the active region to table. If every line contains at least one
1637 TAB character, the function assumes that the material is tab separated.
1638 If every line contains a comma, comma-separated values (CSV) are assumed.
1639 If not, lines are split at whitespace into fields.  You can use a prefix
1640 argument to force a specific separator: @kbd{C-u} forces CSV, @kbd{C-u
1641 C-u} forces TAB, and a numeric argument N indicates that at least N
1642 consecutive spaces, or alternatively a TAB will be the separator.
1644 If there is no active region, this command creates an empty Org
1645 table.  But it's easier just to start typing, like
1646 @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
1648 @tsubheading{Re-aligning and field motion}
1649 @kindex C-c C-c
1650 @item C-c C-c
1651 Re-align the table without moving the cursor.
1653 @kindex @key{TAB}
1654 @item @key{TAB}
1655 Re-align the table, move to the next field.  Creates a new row if
1656 necessary.
1658 @kindex S-@key{TAB}
1659 @item S-@key{TAB}
1660 Re-align, move to previous field.
1662 @kindex @key{RET}
1663 @item @key{RET}
1664 Re-align the table and move down to next row.  Creates a new row if
1665 necessary.  At the beginning or end of a line, @key{RET} still does
1666 NEWLINE, so it can be used to split a table.
1668 @kindex M-a
1669 @item M-a
1670 Move to beginning of the current table field, or on to the previous field.
1671 @kindex M-e
1672 @item M-e
1673 Move to end of the current table field, or on to the next field.
1675 @tsubheading{Column and row editing}
1676 @kindex M-@key{left}
1677 @kindex M-@key{right}
1678 @item M-@key{left}
1679 @itemx M-@key{right}
1680 Move the current column left/right.
1682 @kindex M-S-@key{left}
1683 @item M-S-@key{left}
1684 Kill the current column.
1686 @kindex M-S-@key{right}
1687 @item M-S-@key{right}
1688 Insert a new column to the left of the cursor position.
1690 @kindex M-@key{up}
1691 @kindex M-@key{down}
1692 @item M-@key{up}
1693 @itemx M-@key{down}
1694 Move the current row up/down.
1696 @kindex M-S-@key{up}
1697 @item M-S-@key{up}
1698 Kill the current row or horizontal line.
1700 @kindex M-S-@key{down}
1701 @item M-S-@key{down}
1702 Insert a new row above the current row.  With a prefix argument, the line is
1703 created below the current one.
1705 @kindex C-c -
1706 @item C-c -
1707 Insert a horizontal line below current row.  With a prefix argument, the line
1708 is created above the current line.
1710 @kindex C-c @key{RET}
1711 @item C-c @key{RET}
1712 Insert a horizontal line below current row, and move the cursor into the row
1713 below that line.
1715 @kindex C-c ^
1716 @item C-c ^
1717 Sort the table lines in the region.  The position of point indicates the
1718 column to be used for sorting, and the range of lines is the range
1719 between the nearest horizontal separator lines, or the entire table.  If
1720 point is before the first column, you will be prompted for the sorting
1721 column.  If there is an active region, the mark specifies the first line
1722 and the sorting column, while point should be in the last line to be
1723 included into the sorting.  The command prompts for the sorting type
1724 (alphabetically, numerically, or by time).  When called with a prefix
1725 argument, alphabetic sorting will be case-sensitive.
1727 @tsubheading{Regions}
1728 @kindex C-c C-x M-w
1729 @item C-c C-x M-w
1730 Copy a rectangular region from a table to a special clipboard.  Point and
1731 mark determine edge fields of the rectangle.  If there is no active region,
1732 copy just the current field.  The process ignores horizontal separator lines.
1734 @kindex C-c C-x C-w
1735 @item C-c C-x C-w
1736 Copy a rectangular region from a table to a special clipboard, and
1737 blank all fields in the rectangle.  So this is the ``cut'' operation.
1739 @kindex C-c C-x C-y
1740 @item C-c C-x C-y
1741 Paste a rectangular region into a table.
1742 The upper left corner ends up in the current field.  All involved fields
1743 will be overwritten.  If the rectangle does not fit into the present table,
1744 the table is enlarged as needed.  The process ignores horizontal separator
1745 lines.
1747 @kindex M-@key{RET}
1748 @itemx M-@kbd{RET}
1749 Wrap several fields in a column like a paragraph.  If there is an active
1750 region, and both point and mark are in the same column, the text in the
1751 column is wrapped to minimum width for the given number of lines.  A numeric
1752 prefix argument may be used to change the number of desired lines.  If there
1753 is no region, the current field is split at the cursor position and the text
1754 fragment to the right of the cursor is prepended to the field one line
1755 down. If there is no region, but you specify a prefix argument, the current
1756 field is made blank, and the content is appended to the field above.
1758 @tsubheading{Calculations}
1759 @cindex formula, in tables
1760 @cindex calculations, in tables
1761 @cindex region, active
1762 @cindex active region
1763 @cindex transient mark mode
1764 @kindex C-c +
1765 @item C-c +
1766 Sum the numbers in the current column, or in the rectangle defined by
1767 the active region.  The result is shown in the echo area and can
1768 be inserted with @kbd{C-y}.
1770 @kindex S-@key{RET}
1771 @item S-@key{RET}
1772 @vindex org-table-copy-increment
1773 When current field is empty, copy from first non-empty field above.  When not
1774 empty, copy current field down to next row and move cursor along with it.
1775 Depending on the variable @code{org-table-copy-increment}, integer field
1776 values will be incremented during copy.  Integers that are too large will not
1777 be incremented.  Also, a @code{0} prefix argument temporarily disables the
1778 increment.  This key is also used by shift-selection and related modes
1779 (@pxref{Conflicts}).
1781 @tsubheading{Miscellaneous}
1782 @kindex C-c `
1783 @item C-c `
1784 Edit the current field in a separate window.  This is useful for fields that
1785 are not fully visible (@pxref{Column width and alignment}).  When called with
1786 a @kbd{C-u} prefix, just make the full field visible, so that it can be
1787 edited in place.
1789 @item M-x org-table-import
1790 Import a file as a table.  The table should be TAB or whitespace
1791 separated.  Use, for example, to import a spreadsheet table or data
1792 from a database, because these programs generally can write
1793 TAB-separated text files.  This command works by inserting the file into
1794 the buffer and then converting the region to a table.  Any prefix
1795 argument is passed on to the converter, which uses it to determine the
1796 separator.
1797 @item C-c |
1798 Tables can also be imported by pasting tabular text into the Org
1799 buffer, selecting the pasted text with @kbd{C-x C-x} and then using the
1800 @kbd{C-c |} command (see above under @i{Creation and conversion}).
1802 @item M-x org-table-export
1803 @vindex org-table-export-default-format
1804 Export the table, by default as a TAB-separated file.  Use for data
1805 exchange with, for example, spreadsheet or database programs.  The format
1806 used to export the file can be configured in the variable
1807 @code{org-table-export-default-format}.  You may also use properties
1808 @code{TABLE_EXPORT_FILE} and @code{TABLE_EXPORT_FORMAT} to specify the file
1809 name and the format for table export in a subtree.  Org supports quite
1810 general formats for exported tables.  The exporter format is the same as the
1811 format used by Orgtbl radio tables, see @ref{Translator functions}, for a
1812 detailed description.
1813 @end table
1815 If you don't like the automatic table editor because it gets in your
1816 way on lines which you would like to start with @samp{|}, you can turn
1817 it off with
1819 @lisp
1820 (setq org-enable-table-editor nil)
1821 @end lisp
1823 @noindent Then the only table command that still works is
1824 @kbd{C-c C-c} to do a manual re-align.
1826 @node Column width and alignment, Column groups, Built-in table editor, Tables
1827 @section Column width and alignment
1828 @cindex narrow columns in tables
1829 @cindex alignment in tables
1831 The width of columns is automatically determined by the table editor.  And
1832 also the alignment of a column is determined automatically from the fraction
1833 of number-like versus non-number fields in the column.
1835 Sometimes a single field or a few fields need to carry more text, leading to
1836 inconveniently wide columns.  Or maybe you want to make a table with several
1837 columns having a fixed width, regardless of content.  To set@footnote{This
1838 feature does not work on XEmacs.} the width of a column, one field anywhere
1839 in the column may contain just the string @samp{<N>} where @samp{N} is an
1840 integer specifying the width of the column in characters.  The next re-align
1841 will then set the width of this column to this value.
1843 @example
1844 @group
1845 |---+------------------------------|               |---+--------|
1846 |   |                              |               |   | <6>    |
1847 | 1 | one                          |               | 1 | one    |
1848 | 2 | two                          |     ----\     | 2 | two    |
1849 | 3 | This is a long chunk of text |     ----/     | 3 | This=> |
1850 | 4 | four                         |               | 4 | four   |
1851 |---+------------------------------|               |---+--------|
1852 @end group
1853 @end example
1855 @noindent
1856 Fields that are wider become clipped and end in the string @samp{=>}.
1857 Note that the full text is still in the buffer, it is only invisible.
1858 To see the full text, hold the mouse over the field---a tool-tip window
1859 will show the full content.  To edit such a field, use the command
1860 @kbd{C-c `} (that is @kbd{C-c} followed by the backquote).  This will
1861 open a new window with the full field.  Edit it and finish with @kbd{C-c
1862 C-c}.
1864 @vindex org-startup-align-all-tables
1865 When visiting a file containing a table with narrowed columns, the
1866 necessary character hiding has not yet happened, and the table needs to
1867 be aligned before it looks nice.  Setting the option
1868 @code{org-startup-align-all-tables} will realign all tables in a file
1869 upon visiting, but also slow down startup.  You can also set this option
1870 on a per-file basis with:
1872 @example
1873 #+STARTUP: align
1874 #+STARTUP: noalign
1875 @end example
1877 If you would like to overrule the automatic alignment of number-rich columns
1878 to the right and of string-rich column to the left, you and use @samp{<r>} or
1879 @samp{<l>} in a similar fashion.  You may also combine alignment and field
1880 width like this: @samp{<l10>}.
1882 @node Column groups, Orgtbl mode, Column width and alignment, Tables
1883 @section Column groups
1884 @cindex grouping columns in tables
1886 When Org exports tables, it does so by default without vertical
1887 lines because that is visually more satisfying in general.  Occasionally
1888 however, vertical lines can be useful to structure a table into groups
1889 of columns, much like horizontal lines can do for groups of rows.  In
1890 order to specify column groups, you can use a special row where the
1891 first field contains only @samp{/}.  The further fields can either
1892 contain @samp{<} to indicate that this column should start a group,
1893 @samp{>} to indicate the end of a column, or @samp{<>} to make a column
1894 a group of its own.  Boundaries between column groups will upon export be
1895 marked with vertical lines.  Here is an example:
1897 @example
1898 |   |  N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
1899 |---+----+-----+-----+-----+---------+------------|
1900 | / | <> |   < |     |   > |       < |          > |
1901 | # |  1 |   1 |   1 |   1 |       1 |          1 |
1902 | # |  2 |   4 |   8 |  16 |  1.4142 |     1.1892 |
1903 | # |  3 |   9 |  27 |  81 |  1.7321 |     1.3161 |
1904 |---+----+-----+-----+-----+---------+------------|
1905 #+TBLFM: $3=$2^2::$4=$2^3::$5=$2^4::$6=sqrt($2)::$7=sqrt(sqrt(($2)))
1906 @end example
1908 It is also sufficient to just insert the column group starters after
1909 every vertical line you'd like to have:
1911 @example
1912 |  N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
1913 |----+-----+-----+-----+---------+------------|
1914 | /  | <   |     |     | <       |            |
1915 @end example
1917 @node Orgtbl mode, The spreadsheet, Column groups, Tables
1918 @section The Orgtbl minor mode
1919 @cindex Orgtbl mode
1920 @cindex minor mode for tables
1922 If you like the intuitive way the Org table editor works, you
1923 might also want to use it in other modes like Text mode or Mail mode.
1924 The minor mode Orgtbl mode makes this possible.  You can always toggle
1925 the mode with @kbd{M-x orgtbl-mode}.  To turn it on by default, for
1926 example in mail mode, use
1928 @lisp
1929 (add-hook 'mail-mode-hook 'turn-on-orgtbl)
1930 @end lisp
1932 Furthermore, with some special setup, it is possible to maintain tables
1933 in arbitrary syntax with Orgtbl mode.  For example, it is possible to
1934 construct La@TeX{} tables with the underlying ease and power of
1935 Orgtbl mode, including spreadsheet capabilities.  For details, see
1936 @ref{Tables in arbitrary syntax}.
1938 @node The spreadsheet, Org-Plot, Orgtbl mode, Tables
1939 @section The spreadsheet
1940 @cindex calculations, in tables
1941 @cindex spreadsheet capabilities
1942 @cindex @file{calc} package
1944 The table editor makes use of the Emacs @file{calc} package to implement
1945 spreadsheet-like capabilities.  It can also evaluate Emacs Lisp forms to
1946 derive fields from other fields.  While fully featured, Org's implementation
1947 is not identical to other spreadsheets.  For example, Org knows the concept
1948 of a @emph{column formula} that will be applied to all non-header fields in a
1949 column without having to copy the formula to each relevant field.  There is
1950 also a formula debugger, and a formula editor with features for highlighting
1951 fields in the table corresponding to the references at the point in the
1952 formula, moving these references by arrow keys
1954 @menu
1955 * References::                  How to refer to another field or range
1956 * Formula syntax for Calc::     Using Calc to compute stuff
1957 * Formula syntax for Lisp::     Writing formulas in Emacs Lisp
1958 * Field formulas::              Formulas valid for a single field
1959 * Column formulas::             Formulas valid for an entire column
1960 * Editing and debugging formulas::  Fixing formulas
1961 * Updating the table::          Recomputing all dependent fields
1962 * Advanced features::           Field names, parameters and automatic recalc
1963 @end menu
1965 @node References, Formula syntax for Calc, The spreadsheet, The spreadsheet
1966 @subsection References
1967 @cindex references
1969 To compute fields in the table from other fields, formulas must
1970 reference other fields or ranges.  In Org, fields can be referenced
1971 by name, by absolute coordinates, and by relative coordinates.  To find
1972 out what the coordinates of a field are, press @kbd{C-c ?} in that
1973 field, or press @kbd{C-c @}} to toggle the display of a grid.
1975 @subsubheading Field references
1976 @cindex field references
1977 @cindex references, to fields
1979 Formulas can reference the value of another field in two ways.  Like in
1980 any other spreadsheet, you may reference fields with a letter/number
1981 combination like @code{B3}, meaning the 2nd field in the 3rd row.
1982 @c Such references are always fixed to that field, they don't change
1983 @c when you copy and paste a formula to a different field.  So
1984 @c Org's @code{B3} behaves like @code{$B$3} in other spreadsheets.
1986 @noindent
1987 Org also uses another, more general operator that looks like this:
1988 @example
1989 @@@var{row}$@var{column}
1990 @end example
1992 @noindent
1993 Column references can be absolute like @samp{1}, @samp{2},...@samp{@var{N}},
1994 or relative to the current column like @samp{+1} or @samp{-2}.
1996 The row specification only counts data lines and ignores horizontal
1997 separator lines (hlines).  You can use absolute row numbers
1998 @samp{1}...@samp{@var{N}}, and row numbers relative to the current row like
1999 @samp{+3} or @samp{-1}.  Or specify the row relative to one of the
2000 hlines: @samp{I} refers to the first hline@footnote{Note that only
2001 hlines are counted that @emph{separate} table lines.  If the table
2002 starts with a hline above the header, it does not count.}, @samp{II} to
2003 the second, etc@.  @samp{-I} refers to the first such line above the
2004 current line, @samp{+I} to the first such line below the current line.
2005 You can also write @samp{III+2} which is the second data line after the
2006 third hline in the table.
2008 @samp{0} refers to the current row and column.  Also, if you omit
2009 either the column or the row part of the reference, the current
2010 row/column is implied.
2012 Org's references with @emph{unsigned} numbers are fixed references
2013 in the sense that if you use the same reference in the formula for two
2014 different fields, the same field will be referenced each time.
2015 Org's references with @emph{signed} numbers are floating
2016 references because the same reference operator can reference different
2017 fields depending on the field being calculated by the formula.
2019 As a special case, references like @samp{$LR5} and @samp{$LR12} can be used
2020 to refer in a stable way to the 5th and 12th field in the last row of the
2021 table.
2023 Here are a few examples:
2025 @example
2026 @@2$3      @r{2nd row, 3rd column}
2027 C2        @r{same as previous}
2028 $5        @r{column 5 in the current row}
2029 E&        @r{same as previous}
2030 @@2        @r{current column, row 2}
2031 @@-1$-3    @r{the field one row up, three columns to the left}
2032 @@-I$2     @r{field just under hline above current row, column 2}
2033 @end example
2035 @subsubheading Range references
2036 @cindex range references
2037 @cindex references, to ranges
2039 You may reference a rectangular range of fields by specifying two field
2040 references connected by two dots @samp{..}.  If both fields are in the
2041 current row, you may simply use @samp{$2..$7}, but if at least one field
2042 is in a different row, you need to use the general @code{@@row$column}
2043 format at least for the first field (i.e the reference must start with
2044 @samp{@@} in order to be interpreted correctly).  Examples:
2046 @example
2047 $1..$3        @r{First three fields in the current row.}
2048 $P..$Q        @r{Range, using column names (see under Advanced)}
2049 @@2$1..@@4$3    @r{6 fields between these two fields.}
2050 A2..C4        @r{Same as above.}
2051 @@-1$-2..@@-1   @r{3 numbers from the column to the left, 2 up to current row}
2052 @end example
2054 @noindent Range references return a vector of values that can be fed
2055 into Calc vector functions.  Empty fields in ranges are normally
2056 suppressed, so that the vector contains only the non-empty fields (but
2057 see the @samp{E} mode switch below).  If there are no non-empty fields,
2058 @samp{[0]} is returned to avoid syntax errors in formulas.
2060 @subsubheading Field coordinates in formulas
2061 @cindex field coordinates
2062 @cindex coordinates, of field
2063 @cindex row, of field coordinates
2064 @cindex column, of field coordinates
2066 For Calc formulas and Lisp formulas @code{@@#} and @code{$#} can be used to
2067 get the row or column number of the field where the formula result goes.
2068 The traditional Lisp formula equivalents are @code{org-table-current-dline}
2069 and @code{org-table-current-column}.  Examples:
2071 @example
2072 if(@@# % 2, $#, string(""))   @r{column number on odd lines only}
2073 $3 = remote(FOO, @@@@#$2)      @r{copy column 2 from table FOO into}
2074                              @r{column 3 of the current table}
2075 @end example
2077 @noindent For the second example, table FOO must have at least as many rows
2078 as the current table.  Inefficient@footnote{The computation time scales as
2079 O(N^2) because table FOO is parsed for each field to be copied.} for large
2080 number of rows.
2082 @subsubheading Named references
2083 @cindex named references
2084 @cindex references, named
2085 @cindex name, of column or field
2086 @cindex constants, in calculations
2087 @cindex #+CONSTANTS
2089 @vindex org-table-formula-constants
2090 @samp{$name} is interpreted as the name of a column, parameter or
2091 constant.  Constants are defined globally through the variable
2092 @code{org-table-formula-constants}, and locally (for the file) through a
2093 line like
2095 @example
2096 #+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6
2097 @end example
2099 @noindent
2100 @vindex constants-unit-system
2101 @pindex constants.el
2102 Also properties (@pxref{Properties and Columns}) can be used as
2103 constants in table formulas: for a property @samp{:Xyz:} use the name
2104 @samp{$PROP_Xyz}, and the property will be searched in the current
2105 outline entry and in the hierarchy above it.  If you have the
2106 @file{constants.el} package, it will also be used to resolve constants,
2107 including natural constants like @samp{$h} for Planck's constant, and
2108 units like @samp{$km} for kilometers@footnote{@file{constants.el} can
2109 supply the values of constants in two different unit systems, @code{SI}
2110 and @code{cgs}.  Which one is used depends on the value of the variable
2111 @code{constants-unit-system}.  You can use the @code{#+STARTUP} options
2112 @code{constSI} and @code{constcgs} to set this value for the current
2113 buffer.}.  Column names and parameters can be specified in special table
2114 lines.  These are described below, see @ref{Advanced features}.  All
2115 names must start with a letter, and further consist of letters and
2116 numbers.
2118 @subsubheading Remote references
2119 @cindex remote references
2120 @cindex references, remote
2121 @cindex references, to a different table
2122 @cindex name, of column or field
2123 @cindex constants, in calculations
2124 @cindex #+TBLNAME
2126 You may also reference constants, fields and ranges from a different table,
2127 either in the current file or even in a different file.  The syntax is
2129 @example
2130 remote(NAME-OR-ID,REF)
2131 @end example
2133 @noindent
2134 where NAME can be the name of a table in the current file as set by a
2135 @code{#+TBLNAME: NAME} line before the table.  It can also be the ID of an
2136 entry, even in a different file, and the reference then refers to the first
2137 table in that entry.  REF is an absolute field or range reference as
2138 described above for example @code{@@3$3} or @code{$somename}, valid in the
2139 referenced table.
2141 @node Formula syntax for Calc, Formula syntax for Lisp, References, The spreadsheet
2142 @subsection Formula syntax for Calc
2143 @cindex formula syntax, Calc
2144 @cindex syntax, of formulas
2146 A formula can be any algebraic expression understood by the Emacs
2147 @file{Calc} package.  @b{Note that @file{calc} has the
2148 non-standard convention that @samp{/} has lower precedence than
2149 @samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.}  Before
2150 evaluation by @code{calc-eval} (@pxref{Calling Calc from
2151 Your Programs,calc-eval,Calling Calc from Your Lisp Programs,Calc,GNU
2152 Emacs Calc Manual}),
2153 @c FIXME:  The link to the Calc manual in HTML does not work.
2154 variable substitution takes place according to the rules described above.
2155 @cindex vectors, in table calculations
2156 The range vectors can be directly fed into the Calc vector functions
2157 like @samp{vmean} and @samp{vsum}.
2159 @cindex format specifier
2160 @cindex mode, for @file{calc}
2161 @vindex org-calc-default-modes
2162 A formula can contain an optional mode string after a semicolon.  This
2163 string consists of flags to influence Calc and other modes during
2164 execution.  By default, Org uses the standard Calc modes (precision
2165 12, angular units degrees, fraction and symbolic modes off).  The display
2166 format, however, has been changed to @code{(float 8)} to keep tables
2167 compact.  The default settings can be configured using the variable
2168 @code{org-calc-default-modes}.
2170 @example
2171 p20           @r{set the internal Calc calculation precision to 20 digits}
2172 n3 s3 e2 f4   @r{Normal, scientific, engineering, or fixed}
2173               @r{format of the result of Calc passed back to Org.}
2174               @r{Calc formatting is unlimited in precision as}
2175               @r{long as the Calc calculation precision is greater.}
2176 D R           @r{angle modes: degrees, radians}
2177 F S           @r{fraction and symbolic modes}
2178 N             @r{interpret all fields as numbers, use 0 for non-numbers}
2179 T             @r{force text interpretation}
2180 E             @r{keep empty fields in ranges}
2181 L             @r{literal}
2182 @end example
2184 @noindent
2185 Unless you use large integer numbers or high-precision-calculation
2186 and -display for floating point numbers you may alternatively provide a
2187 @code{printf} format specifier to reformat the Calc result after it has been
2188 passed back to Org instead of letting Calc already do the
2189 formatting@footnote{The @code{printf} reformatting is limited in precision
2190 because the value passed to it is converted into an @code{integer} or
2191 @code{double}.  The @code{integer} is limited in size by truncating the
2192 signed value to 32 bits.  The @code{double} is limited in precision to 64
2193 bits overall which leaves approximately 16 significant decimal digits.}.
2194 A few examples:
2196 @example
2197 $1+$2                @r{Sum of first and second field}
2198 $1+$2;%.2f           @r{Same, format result to two decimals}
2199 exp($2)+exp($1)      @r{Math functions can be used}
2200 $0;%.1f              @r{Reformat current cell to 1 decimal}
2201 ($3-32)*5/9          @r{Degrees F -> C conversion}
2202 $c/$1/$cm            @r{Hz -> cm conversion, using @file{constants.el}}
2203 tan($1);Dp3s1        @r{Compute in degrees, precision 3, display SCI 1}
2204 sin($1);Dp3%.1e      @r{Same, but use printf specifier for display}
2205 vmean($2..$7)        @r{Compute column range mean, using vector function}
2206 vmean($2..$7);EN     @r{Same, but treat empty fields as 0}
2207 taylor($3,x=7,2)     @r{taylor series of $3, at x=7, second degree}
2208 @end example
2210 Calc also contains a complete set of logical operations.  For example
2212 @example
2213 if($1<20,teen,string(""))  @r{``teen'' if age $1 less than 20, else empty}
2214 @end example
2216 @node Formula syntax for Lisp, Field formulas, Formula syntax for Calc, The spreadsheet
2217 @subsection Emacs Lisp forms as formulas
2218 @cindex Lisp forms, as table formulas
2220 It is also possible to write a formula in Emacs Lisp; this can be useful
2221 for string manipulation and control structures, if Calc's
2222 functionality is not enough.  If a formula starts with a single-quote
2223 followed by an opening parenthesis, then it is evaluated as a Lisp form.
2224 The evaluation should return either a string or a number.  Just as with
2225 @file{calc} formulas, you can specify modes and a printf format after a
2226 semicolon.  With Emacs Lisp forms, you need to be conscious about the way
2227 field references are interpolated into the form.  By default, a
2228 reference will be interpolated as a Lisp string (in double-quotes)
2229 containing the field.  If you provide the @samp{N} mode switch, all
2230 referenced elements will be numbers (non-number fields will be zero) and
2231 interpolated as Lisp numbers, without quotes.  If you provide the
2232 @samp{L} flag, all fields will be interpolated literally, without quotes.
2233 I.e., if you want a reference to be interpreted as a string by the Lisp
2234 form, enclose the reference operator itself in double-quotes, like
2235 @code{"$3"}.  Ranges are inserted as space-separated fields, so you can
2236 embed them in list or vector syntax.  A few examples, note how the
2237 @samp{N} mode is used when we do computations in Lisp.
2239 @example
2240 @r{Swap the first two characters of the content of column 1}
2241   '(concat (substring $1 1 2) (substring $1 0 1) (substring $1 2))
2242 @r{Add columns 1 and 2, equivalent to Calc's @code{$1+$2}}
2243   '(+ $1 $2);N
2244 @r{Compute the sum of columns 1-4, like Calc's @code{vsum($1..$4)}}
2245   '(apply '+ '($1..$4));N
2246 @end example
2248 @node Field formulas, Column formulas, Formula syntax for Lisp, The spreadsheet
2249 @subsection Field formulas
2250 @cindex field formula
2251 @cindex formula, for individual table field
2253 To assign a formula to a particular field, type it directly into the
2254 field, preceded by @samp{:=}, for example @samp{:=$1+$2}.  When you
2255 press @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in
2256 the field, the formula will be stored as the formula for this field,
2257 evaluated, and the current field replaced with the result.
2259 @cindex #+TBLFM
2260 Formulas are stored in a special line starting with @samp{#+TBLFM:}
2261 directly below the table.  If you typed the equation in the 4th field of
2262 the 3rd data line in the table, the formula will look like
2263 @samp{@@3$4=$1+$2}.  When inserting/deleting/swapping column and rows
2264 with the appropriate commands, @i{absolute references} (but not relative
2265 ones) in stored formulas are modified in order to still reference the
2266 same field.  Of course this is not true if you edit the table structure
2267 with normal editing commands---then you must fix the equations yourself.
2268 The left-hand side of a formula may also be a named field (@pxref{Advanced
2269 features}), or a last-row reference like @samp{$LR3}.
2271 Instead of typing an equation into the field, you may also use the
2272 following command
2274 @table @kbd
2275 @kindex C-u C-c =
2276 @item C-u C-c =
2277 Install a new formula for the current field.  The command prompts for a
2278 formula with default taken from the @samp{#+TBLFM:} line, applies
2279 it to the current field, and stores it.
2280 @end table
2282 @node Column formulas, Editing and debugging formulas, Field formulas, The spreadsheet
2283 @subsection Column formulas
2284 @cindex column formula
2285 @cindex formula, for table column
2287 Often in a table, the same formula should be used for all fields in a
2288 particular column.  Instead of having to copy the formula to all fields
2289 in that column, Org allows you to assign a single formula to an entire
2290 column.  If the table contains horizontal separator hlines, everything
2291 before the first such line is considered part of the table @emph{header}
2292 and will not be modified by column formulas.
2294 To assign a formula to a column, type it directly into any field in the
2295 column, preceded by an equal sign, like @samp{=$1+$2}.  When you press
2296 @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the field,
2297 the formula will be stored as the formula for the current column, evaluated
2298 and the current field replaced with the result.  If the field contains only
2299 @samp{=}, the previously stored formula for this column is used.  For each
2300 column, Org will only remember the most recently used formula.  In the
2301 @samp{#+TBLFM:} line, column formulas will look like @samp{$4=$1+$2}.  The left-hand
2302 side of a column formula cannot currently be the name of column, it
2303 must be the numeric column reference.
2305 Instead of typing an equation into the field, you may also use the
2306 following command:
2308 @table @kbd
2309 @kindex C-c =
2310 @item C-c =
2311 Install a new formula for the current column and replace current field with
2312 the result of the formula.  The command prompts for a formula, with default
2313 taken from the @samp{#+TBLFM} line, applies it to the current field and
2314 stores it.  With a numeric prefix argument(e.g. @kbd{C-5 C-c =}) the command
2315 will apply it to that many consecutive fields in the current column.
2316 @end table
2318 @node Editing and debugging formulas, Updating the table, Column formulas, The spreadsheet
2319 @subsection Editing and debugging formulas
2320 @cindex formula editing
2321 @cindex editing, of table formulas
2323 @vindex org-table-use-standard-references
2324 You can edit individual formulas in the minibuffer or directly in the
2325 field.  Org can also prepare a special buffer with all active
2326 formulas of a table.  When offering a formula for editing, Org
2327 converts references to the standard format (like @code{B3} or @code{D&})
2328 if possible.  If you prefer to only work with the internal format (like
2329 @code{@@3$2} or @code{$4}), configure the variable
2330 @code{org-table-use-standard-references}.
2332 @table @kbd
2333 @kindex C-c =
2334 @kindex C-u C-c =
2335 @item C-c =
2336 @itemx C-u C-c =
2337 Edit the formula associated with the current column/field in the
2338 minibuffer.  See @ref{Column formulas}, and @ref{Field formulas}.
2339 @kindex C-u C-u C-c =
2340 @item C-u C-u C-c =
2341 Re-insert the active formula (either a
2342 field formula, or a column formula) into the current field, so that you
2343 can edit it directly in the field.  The advantage over editing in the
2344 minibuffer is that you can use the command @kbd{C-c ?}.
2345 @kindex C-c ?
2346 @item C-c ?
2347 While editing a formula in a table field, highlight the field(s)
2348 referenced by the reference at the cursor position in the formula.
2349 @kindex C-c @}
2350 @item C-c @}
2351 Toggle the display of row and column numbers for a table, using
2352 overlays.  These are updated each time the table is aligned; you can
2353 force it with @kbd{C-c C-c}.
2354 @kindex C-c @{
2355 @item C-c @{
2356 Toggle the formula debugger on and off.  See below.
2357 @kindex C-c '
2358 @item C-c '
2359 Edit all formulas for the current table in a special buffer, where the
2360 formulas will be displayed one per line.  If the current field has an
2361 active formula, the cursor in the formula editor will mark it.
2362 While inside the special buffer, Org will automatically highlight
2363 any field or range reference at the cursor position.  You may edit,
2364 remove and add formulas, and use the following commands:
2365 @table @kbd
2366 @kindex C-c C-c
2367 @kindex C-x C-s
2368 @item C-c C-c
2369 @itemx C-x C-s
2370 Exit the formula editor and store the modified formulas.  With @kbd{C-u}
2371 prefix, also apply the new formulas to the entire table.
2372 @kindex C-c C-q
2373 @item C-c C-q
2374 Exit the formula editor without installing changes.
2375 @kindex C-c C-r
2376 @item C-c C-r
2377 Toggle all references in the formula editor between standard (like
2378 @code{B3}) and internal (like @code{@@3$2}).
2379 @kindex @key{TAB}
2380 @item @key{TAB}
2381 Pretty-print or indent Lisp formula at point.  When in a line containing
2382 a Lisp formula, format the formula according to Emacs Lisp rules.
2383 Another @key{TAB} collapses the formula back again.  In the open
2384 formula, @key{TAB} re-indents just like in Emacs Lisp mode.
2385 @kindex M-@key{TAB}
2386 @item M-@key{TAB}
2387 Complete Lisp symbols, just like in Emacs Lisp mode.
2388 @kindex S-@key{up}
2389 @kindex S-@key{down}
2390 @kindex S-@key{left}
2391 @kindex S-@key{right}
2392 @item S-@key{up}/@key{down}/@key{left}/@key{right}
2393 Shift the reference at point.  For example, if the reference is
2394 @code{B3} and you press @kbd{S-@key{right}}, it will become @code{C3}.
2395 This also works for relative references and for hline references.
2396 @kindex M-S-@key{up}
2397 @kindex M-S-@key{down}
2398 @item M-S-@key{up}/@key{down}
2399 Move the test line for column formulas in the Org buffer up and
2400 down.
2401 @kindex M-@key{up}
2402 @kindex M-@key{down}
2403 @item M-@key{up}/@key{down}
2404 Scroll the window displaying the table.
2405 @kindex C-c @}
2406 @item C-c @}
2407 Turn the coordinate grid in the table on and off.
2408 @end table
2409 @end table
2411 Making a table field blank does not remove the formula associated with
2412 the field, because that is stored in a different line (the @samp{#+TBLFM}
2413 line)---during the next recalculation the field will be filled again.
2414 To remove a formula from a field, you have to give an empty reply when
2415 prompted for the formula, or to edit the @samp{#+TBLFM} line.
2417 @kindex C-c C-c
2418 You may edit the @samp{#+TBLFM} directly and re-apply the changed
2419 equations with @kbd{C-c C-c} in that line or with the normal
2420 recalculation commands in the table.
2422 @subsubheading Debugging formulas
2423 @cindex formula debugging
2424 @cindex debugging, of table formulas
2425 When the evaluation of a formula leads to an error, the field content
2426 becomes the string @samp{#ERROR}.  If you would like see what is going
2427 on during variable substitution and calculation in order to find a bug,
2428 turn on formula debugging in the @code{Tbl} menu and repeat the
2429 calculation, for example by pressing @kbd{C-u C-u C-c = @key{RET}} in a
2430 field.  Detailed information will be displayed.
2432 @node Updating the table, Advanced features, Editing and debugging formulas, The spreadsheet
2433 @subsection Updating the table
2434 @cindex recomputing table fields
2435 @cindex updating, table
2437 Recalculation of a table is normally not automatic, but needs to be
2438 triggered by a command.  See @ref{Advanced features}, for a way to make
2439 recalculation at least semi-automatic.
2441 In order to recalculate a line of a table or the entire table, use the
2442 following commands:
2444 @table @kbd
2445 @kindex C-c *
2446 @item C-c *
2447 Recalculate the current row by first applying the stored column formulas
2448 from left to right, and all field formulas in the current row.
2450 @kindex C-u C-c *
2451 @item C-u C-c *
2452 @kindex C-u C-c C-c
2453 @itemx C-u C-c C-c
2454 Recompute the entire table, line by line.  Any lines before the first
2455 hline are left alone, assuming that these are part of the table header.
2457 @kindex C-u C-u C-c *
2458 @kindex C-u C-u C-c C-c
2459 @item C-u C-u C-c *
2460 @itemx C-u C-u C-c C-c
2461 Iterate the table by recomputing it until no further changes occur.
2462 This may be necessary if some computed fields use the value of other
2463 fields that are computed @i{later} in the calculation sequence.
2464 @end table
2466 @node Advanced features,  , Updating the table, The spreadsheet
2467 @subsection Advanced features
2469 If you want the recalculation of fields to happen automatically, or if
2470 you want to be able to assign @i{names} to fields and columns, you need
2471 to reserve the first column of the table for special marking characters.
2472 @table @kbd
2473 @kindex C-#
2474 @item C-#
2475 Rotate the calculation mark in first column through the states @samp{ },
2476 @samp{#}, @samp{*}, @samp{!}, @samp{$}.  When there is an active region,
2477 change all marks in the region.
2478 @end table
2480 Here is an example of a table that collects exam results of students and
2481 makes use of these features:
2483 @example
2484 @group
2485 |---+---------+--------+--------+--------+-------+------|
2486 |   | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
2487 |---+---------+--------+--------+--------+-------+------|
2488 | ! |         |     P1 |     P2 |     P3 |   Tot |      |
2489 | # | Maximum |     10 |     15 |     25 |    50 | 10.0 |
2490 | ^ |         |     m1 |     m2 |     m3 |    mt |      |
2491 |---+---------+--------+--------+--------+-------+------|
2492 | # | Peter   |     10 |      8 |     23 |    41 |  8.2 |
2493 | # | Sam     |      2 |      4 |      3 |     9 |  1.8 |
2494 |---+---------+--------+--------+--------+-------+------|
2495 |   | Average |        |        |        |  29.7 |      |
2496 | ^ |         |        |        |        |    at |      |
2497 | $ | max=50  |        |        |        |       |      |
2498 |---+---------+--------+--------+--------+-------+------|
2499 #+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@@-II..@@-I);%.1f
2500 @end group
2501 @end example
2503 @noindent @b{Important}: please note that for these special tables,
2504 recalculating the table with @kbd{C-u C-c *} will only affect rows that
2505 are marked @samp{#} or @samp{*}, and fields that have a formula assigned
2506 to the field itself.  The column formulas are not applied in rows with
2507 empty first field.
2509 @cindex marking characters, tables
2510 The marking characters have the following meaning:
2511 @table @samp
2512 @item !
2513 The fields in this line define names for the columns, so that you may
2514 refer to a column as @samp{$Tot} instead of @samp{$6}.
2515 @item ^
2516 This row defines names for the fields @emph{above} the row.  With such
2517 a definition, any formula in the table may use @samp{$m1} to refer to
2518 the value @samp{10}.  Also, if you assign a formula to a names field, it
2519 will be stored as @samp{$name=...}.
2520 @item _
2521 Similar to @samp{^}, but defines names for the fields in the row
2522 @emph{below}.
2523 @item $
2524 Fields in this row can define @emph{parameters} for formulas.  For
2525 example, if a field in a @samp{$} row contains @samp{max=50}, then
2526 formulas in this table can refer to the value 50 using @samp{$max}.
2527 Parameters work exactly like constants, only that they can be defined on
2528 a per-table basis.
2529 @item #
2530 Fields in this row are automatically recalculated when pressing
2531 @key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row.  Also, this row
2532 is selected for a global recalculation with @kbd{C-u C-c *}.  Unmarked
2533 lines will be left alone by this command.
2534 @item *
2535 Selects this line for global recalculation with @kbd{C-u C-c *}, but
2536 not for automatic recalculation.  Use this when automatic
2537 recalculation slows down editing too much.
2538 @item
2539 Unmarked lines are exempt from recalculation with @kbd{C-u C-c *}.
2540 All lines that should be recalculated should be marked with @samp{#}
2541 or @samp{*}.
2542 @item /
2543 Do not export this line.  Useful for lines that contain the narrowing
2544 @samp{<N>} markers or column group markers.
2545 @end table
2547 Finally, just to whet your appetite for what can be done with the
2548 fantastic @file{calc.el} package, here is a table that computes the Taylor
2549 series of degree @code{n} at location @code{x} for a couple of
2550 functions.
2552 @example
2553 @group
2554 |---+-------------+---+-----+--------------------------------------|
2555 |   | Func        | n | x   | Result                               |
2556 |---+-------------+---+-----+--------------------------------------|
2557 | # | exp(x)      | 1 | x   | 1 + x                                |
2558 | # | exp(x)      | 2 | x   | 1 + x + x^2 / 2                      |
2559 | # | exp(x)      | 3 | x   | 1 + x + x^2 / 2 + x^3 / 6            |
2560 | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
2561 | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2    |
2562 | * | tan(x)      | 3 | x   | 0.0175 x + 1.77e-6 x^3               |
2563 |---+-------------+---+-----+--------------------------------------|
2564 #+TBLFM: $5=taylor($2,$4,$3);n3
2565 @end group
2566 @end example
2568 @node Org-Plot,  , The spreadsheet, Tables
2569 @section Org-Plot
2570 @cindex graph, in tables
2571 @cindex plot tables using gnuplot
2572 @cindex #+PLOT
2574 Org-Plot can produce 2D and 3D graphs of information stored in org tables
2575 using @file{Gnuplot} @uref{http://www.gnuplot.info/} and @file{gnuplot-mode}
2576 @uref{http://cars9.uchicago.edu/~ravel/software/gnuplot-mode.html}.  To see
2577 this in action, ensure that you have both Gnuplot and Gnuplot mode installed
2578 on your system, then call @code{org-plot/gnuplot} on the following table.
2580 @example
2581 @group
2582 #+PLOT: title:"Citas" ind:1 deps:(3) type:2d with:histograms set:"yrange [0:]"
2583 | Sede      | Max cites | H-index |
2584 |-----------+-----------+---------|
2585 | Chile     |    257.72 |   21.39 |
2586 | Leeds     |    165.77 |   19.68 |
2587 | Sao Paolo |     71.00 |   11.50 |
2588 | Stockholm |    134.19 |   14.33 |
2589 | Morelia   |    257.56 |   17.67 |
2590 @end group
2591 @end example
2593 Notice that Org Plot is smart enough to apply the table's headers as labels.
2594 Further control over the labels, type, content, and appearance of plots can
2595 be exercised through the @code{#+PLOT:} lines preceding a table.  See below
2596 for a complete list of Org-plot options.  For more information and examples
2597 see the Org-plot tutorial at
2598 @uref{http://orgmode.org/worg/org-tutorials/org-plot.php}.
2600 @subsubheading Plot Options
2602 @table @code
2603 @item set
2604 Specify any @command{gnuplot} option to be set when graphing.
2606 @item title
2607 Specify the title of the plot.
2609 @item ind
2610 Specify which column of the table to use as the @code{x} axis.
2612 @item deps
2613 Specify the columns to graph as a Lisp style list, surrounded by parentheses
2614 and separated by spaces for example @code{dep:(3 4)} to graph the third and
2615 fourth columns (defaults to graphing all other columns aside from the @code{ind}
2616 column).
2618 @item type
2619 Specify whether the plot will be @code{2d}, @code{3d}, or @code{grid}.
2621 @item with
2622 Specify a @code{with} option to be inserted for every col being plotted
2623 (e.g. @code{lines}, @code{points}, @code{boxes}, @code{impulses}, etc...).
2624 Defaults to @code{lines}.
2626 @item file
2627 If you want to plot to a file, specify @code{"@var{path/to/desired/output-file}"}.
2629 @item labels
2630 List of labels to be used for the deps (defaults to the column headers if
2631 they exist).
2633 @item line
2634 Specify an entire line to be inserted in the Gnuplot script.
2636 @item map
2637 When plotting @code{3d} or @code{grid} types, set this to @code{t} to graph a
2638 flat mapping rather than a @code{3d} slope.
2640 @item timefmt
2641 Specify format of Org-mode timestamps as they will be parsed by Gnuplot.
2642 Defaults to @samp{%Y-%m-%d-%H:%M:%S}.
2644 @item script
2645 If you want total control, you can specify a script file (place the file name
2646 between double-quotes) which will be used to plot.  Before plotting, every
2647 instance of @code{$datafile} in the specified script will be replaced with
2648 the path to the generated data file.  Note: even if you set this option, you
2649 may still want to specify the plot type, as that can impact the content of
2650 the data file.
2651 @end table
2653 @node Hyperlinks, TODO Items, Tables, Top
2654 @chapter Hyperlinks
2655 @cindex hyperlinks
2657 Like HTML, Org provides links inside a file, external links to
2658 other files, Usenet articles, emails, and much more.
2660 @menu
2661 * Link format::                 How links in Org are formatted
2662 * Internal links::              Links to other places in the current file
2663 * External links::              URL-like links to the world
2664 * Handling links::              Creating, inserting and following
2665 * Using links outside Org::     Linking from my C source code?
2666 * Link abbreviations::          Shortcuts for writing complex links
2667 * Search options::              Linking to a specific location
2668 * Custom searches::             When the default search is not enough
2669 @end menu
2671 @node Link format, Internal links, Hyperlinks, Hyperlinks
2672 @section Link format
2673 @cindex link format
2674 @cindex format, of links
2676 Org will recognize plain URL-like links and activate them as
2677 clickable links.  The general link format, however, looks like this:
2679 @example
2680 [[link][description]]       @r{or alternatively}           [[link]]
2681 @end example
2683 @noindent
2684 Once a link in the buffer is complete (all brackets present), Org
2685 will change the display so that @samp{description} is displayed instead
2686 of @samp{[[link][description]]} and @samp{link} is displayed instead of
2687 @samp{[[link]]}.  Links will be highlighted in the face @code{org-link},
2688 which by default is an underlined face.  You can directly edit the
2689 visible part of a link.  Note that this can be either the @samp{link}
2690 part (if there is no description) or the @samp{description} part.  To
2691 edit also the invisible @samp{link} part, use @kbd{C-c C-l} with the
2692 cursor on the link.
2694 If you place the cursor at the beginning or just behind the end of the
2695 displayed text and press @key{BACKSPACE}, you will remove the
2696 (invisible) bracket at that location.  This makes the link incomplete
2697 and the internals are again displayed as plain text.  Inserting the
2698 missing bracket hides the link internals again.  To show the
2699 internal structure of all links, use the menu entry
2700 @code{Org->Hyperlinks->Literal links}.
2702 @node Internal links, External links, Link format, Hyperlinks
2703 @section Internal links
2704 @cindex internal links
2705 @cindex links, internal
2706 @cindex targets, for links
2708 @cindex property, CUSTOM_ID
2709 If the link does not look like a URL, it is considered to be internal in the
2710 current file.  The most important case is a link like
2711 @samp{[[#my-custom-id]]} which will link to the entry with the
2712 @code{CUSTOM_ID} property @samp{my-custom-id}.  Such custom IDs are very good
2713 for HTML export (@pxref{HTML export}) where they produce pretty section
2714 links.  You are responsible yourself to make sure these custom IDs are unique
2715 in a file.
2717 Links such as @samp{[[My Target]]} or @samp{[[My Target][Find my target]]}
2718 lead to a text search in the current file.
2720 The link can be followed with @kbd{C-c C-o} when the cursor is on the link,
2721 or with a mouse click (@pxref{Handling links}).  Links to custom IDs will
2722 point to the corresponding headline.  The preferred match for a text link is
2723 a @i{dedicated target}: the same string in double angular brackets.  Targets
2724 may be located anywhere; sometimes it is convenient to put them into a
2725 comment line. For example
2727 @example
2728 # <<My Target>>
2729 @end example
2731 @noindent In HTML export (@pxref{HTML export}), such targets will become
2732 named anchors for direct access through @samp{http} links@footnote{Note that
2733 text before the first headline is usually not exported, so the first such
2734 target should be after the first headline, or in the line directly before the
2735 first headline.}.
2737 If no dedicated target exists, Org will search for the words in the link.  In
2738 the above example the search would be for @samp{my target}.  Links starting
2739 with a star like @samp{*My Target} restrict the search to
2740 headlines@footnote{To insert a link targeting a headline, in-buffer
2741 completion can be used.  Just type a star followed by a few optional letters
2742 into the buffer and press @kbd{M-@key{TAB}}.  All headlines in the current
2743 buffer will be offered as completions.  @xref{Handling links}, for more
2744 commands creating links.}.  When searching, Org mode will first try an
2745 exact match, but then move on to more and more lenient searches.  For
2746 example, the link @samp{[[*My Targets]]} will find any of the following:
2748 @example
2749 ** My targets
2750 ** TODO my targets are bright
2751 ** my 20 targets are
2752 @end example
2755 Following a link pushes a mark onto Org's own mark ring.  You can
2756 return to the previous position with @kbd{C-c &}.  Using this command
2757 several times in direct succession goes back to positions recorded
2758 earlier.
2760 @menu
2761 * Radio targets::               Make targets trigger links in plain text
2762 @end menu
2764 @node Radio targets,  , Internal links, Internal links
2765 @subsection Radio targets
2766 @cindex radio targets
2767 @cindex targets, radio
2768 @cindex links, radio targets
2770 Org can automatically turn any occurrences of certain target names
2771 in normal text into a link.  So without explicitly creating a link, the
2772 text connects to the target radioing its position.  Radio targets are
2773 enclosed by triple angular brackets.  For example, a target @samp{<<<My
2774 Target>>>} causes each occurrence of @samp{my target} in normal text to
2775 become activated as a link.  The Org file is scanned automatically
2776 for radio targets only when the file is first loaded into Emacs.  To
2777 update the target list during editing, press @kbd{C-c C-c} with the
2778 cursor on or at a target.
2780 @node External links, Handling links, Internal links, Hyperlinks
2781 @section External links
2782 @cindex links, external
2783 @cindex external links
2784 @cindex links, external
2785 @cindex Gnus links
2786 @cindex BBDB links
2787 @cindex IRC links
2788 @cindex URL links
2789 @cindex file links
2790 @cindex VM links
2791 @cindex RMAIL links
2792 @cindex WANDERLUST links
2793 @cindex MH-E links
2794 @cindex USENET links
2795 @cindex SHELL links
2796 @cindex Info links
2797 @cindex Elisp links
2799 Org supports links to files, websites, Usenet and email messages,
2800 BBDB database entries and links to both IRC conversations and their
2801 logs.  External links are URL-like locators.  They start with a short
2802 identifying string followed by a colon.  There can be no space after
2803 the colon.  The following list shows examples for each link type.
2805 @example
2806 http://www.astro.uva.nl/~dominik          @r{on the web}
2807 file:/home/dominik/images/jupiter.jpg     @r{file, absolute path}
2808 /home/dominik/images/jupiter.jpg          @r{same as above}
2809 file:papers/last.pdf                      @r{file, relative path}
2810 ./papers/last.pdf                         @r{same as above}
2811 file:/myself@@some.where:papers/last.pdf   @r{file, path on remote machine}
2812 /myself@@some.where:papers/last.pdf        @r{same as above}
2813 file:sometextfile::NNN                    @r{file with line number to jump to}
2814 file:projects.org                         @r{another Org file}
2815 file:projects.org::some words             @r{text search in Org file}
2816 file:projects.org::*task title            @r{heading search in Org file}
2817 docview:papers/last.pdf::NNN              @r{open file in doc-view mode at page NNN}
2818 id:B7423F4D-2E8A-471B-8810-C40F074717E9   @r{Link to heading by ID}
2819 news:comp.emacs                           @r{Usenet link}
2820 mailto:adent@@galaxy.net                   @r{Mail link}
2821 vm:folder                                 @r{VM folder link}
2822 vm:folder#id                              @r{VM message link}
2823 vm://myself@@some.where.org/folder#id      @r{VM on remote machine}
2824 wl:folder                                 @r{WANDERLUST folder link}
2825 wl:folder#id                              @r{WANDERLUST message link}
2826 mhe:folder                                @r{MH-E folder link}
2827 mhe:folder#id                             @r{MH-E message link}
2828 rmail:folder                              @r{RMAIL folder link}
2829 rmail:folder#id                           @r{RMAIL message link}
2830 gnus:group                                @r{Gnus group link}
2831 gnus:group#id                             @r{Gnus article link}
2832 bbdb:R.*Stallman                          @r{BBDB link (with regexp)}
2833 irc:/irc.com/#emacs/bob                   @r{IRC link}
2834 info:org:External%20links                 @r{Info node link (with encoded space)}
2835 shell:ls *.org                            @r{A shell command}
2836 elisp:org-agenda                          @r{Interactive Elisp command}
2837 elisp:(find-file-other-frame "Elisp.org") @r{Elisp form to evaluate}
2838 @end example
2840 A link should be enclosed in double brackets and may contain a
2841 descriptive text to be displayed instead of the URL (@pxref{Link
2842 format}), for example:
2844 @example
2845 [[http://www.gnu.org/software/emacs/][GNU Emacs]]
2846 @end example
2848 @noindent
2849 If the description is a file name or URL that points to an image, HTML
2850 export (@pxref{HTML export}) will inline the image as a clickable
2851 button.  If there is no description at all and the link points to an
2852 image,
2853 that image will be inlined into the exported HTML file.
2855 @cindex square brackets, around links
2856 @cindex plain text external links
2857 Org also finds external links in the normal text and activates them
2858 as links.  If spaces must be part of the link (for example in
2859 @samp{bbdb:Richard Stallman}), or if you need to remove ambiguities
2860 about the end of the link, enclose them in square brackets.
2862 @node Handling links, Using links outside Org, External links, Hyperlinks
2863 @section Handling links
2864 @cindex links, handling
2866 Org provides methods to create a link in the correct syntax, to
2867 insert it into an Org file, and to follow the link.
2869 @table @kbd
2870 @kindex C-c l
2871 @cindex storing links
2872 @item C-c l
2873 Store a link to the current location.  This is a @emph{global} command (you
2874 must create the key binding yourself) which can be used in any buffer to
2875 create a link.  The link will be stored for later insertion into an Org
2876 buffer (see below).  What kind of link will be created depends on the current
2877 buffer:
2879 @b{Org-mode buffers}@*
2880 For Org files, if there is a @samp{<<target>>} at the cursor, the link points
2881 to the target.  Otherwise it points to the current headline, which will also
2882 be the description.
2884 @vindex org-link-to-org-use-id
2885 @cindex property, CUSTOM_ID
2886 @cindex property, ID
2887 If the headline has a @code{CUSTOM_ID} property, a link to this custom ID
2888 will be stored.  In addition or alternatively (depending on the value of
2889 @code{org-link-to-org-use-id}), a globally unique @code{ID} property will be
2890 created and/or used to construct a link.  So using this command in Org
2891 buffers will potentially create two links: a human-readable from the custom
2892 ID, and one that is globally unique and works even if the entry is moved from
2893 file to file.  Later, when inserting the link, you need to decide which one
2894 to use.
2896 @b{Email/News clients: VM, Rmail, Wanderlust, MH-E, Gnus}@*
2897 Pretty much all Emacs mail clients are supported.  The link will point to the
2898 current article, or, in some GNUS buffers, to the group.  The description is
2899 constructed from the author and the subject.
2901 @b{Web browsers: W3 and W3M}@*
2902 Here the link will be the current URL, with the page title as description.
2904 @b{Contacts: BBDB}@*
2905 Links created in a BBDB buffer will point to the current entry.
2907 @b{Chat: IRC}@*
2908 @vindex org-irc-link-to-logs
2909 For IRC links, if you set the variable @code{org-irc-link-to-logs} to
2910 @code{t}, a @samp{file:/} style link to the relevant point in the logs for
2911 the current conversation is created.  Otherwise an @samp{irc:/} style link to
2912 the user/channel/server under the point will be stored.
2914 @b{Other files}@*
2915 For any other files, the link will point to the file, with a search string
2916 (@pxref{Search options}) pointing to the contents of the current line.  If
2917 there is an active region, the selected words will form the basis of the
2918 search string.  If the automatically created link is not working correctly or
2919 accurately enough, you can write custom functions to select the search string
2920 and to do the search for particular file types---see @ref{Custom searches}.
2921 The key binding @kbd{C-c l} is only a suggestion---see @ref{Installation}.
2923 @b{Agenda view}@*
2924 When the cursor is in an agenda view, the created link points to the
2925 entry referenced by the current line.
2928 @kindex C-c C-l
2929 @cindex link completion
2930 @cindex completion, of links
2931 @cindex inserting links
2932 @item C-c C-l
2933 @vindex org-keep-stored-link-after-insertion
2934 Insert a link@footnote{ Note that you don't have to use this command to
2935 insert a link.  Links in Org are plain text, and you can type or paste them
2936 straight into the buffer.  By using this command, the links are automatically
2937 enclosed in double brackets, and you will be asked for the optional
2938 descriptive text.}.  This prompts for a link to be inserted into the buffer.
2939 You can just type a link, using text for an internal link, or one of the link
2940 type prefixes mentioned in the examples above.  The link will be inserted
2941 into the buffer@footnote{After insertion of a stored link, the link will be
2942 removed from the list of stored links.  To keep it in the list later use, use
2943 a triple @kbd{C-u} prefix argument to @kbd{C-c C-l}, or configure the option
2944 @code{org-keep-stored-link-after-insertion}.}, along with a descriptive text.
2945 If some text was selected when this command is called, the selected text
2946 becomes the default description.
2948 @b{Inserting stored links}@*
2949 All links stored during the
2950 current session are part of the history for this prompt, so you can access
2951 them with @key{up} and @key{down} (or @kbd{M-p/n}).
2953 @b{Completion support}@* Completion with @key{TAB} will help you to insert
2954 valid link prefixes like @samp{http:} or @samp{ftp:}, including the prefixes
2955 defined through link abbreviations (@pxref{Link abbreviations}).  If you
2956 press @key{RET} after inserting only the @var{prefix}, Org will offer
2957 specific completion support for some link types@footnote{This works by
2958 calling a special function @code{org-PREFIX-complete-link}.}  For
2959 example, if you type @kbd{file @key{RET}}, file name completion (alternative
2960 access: @kbd{C-u C-c C-l}, see below) will be offered, and after @kbd{bbdb
2961 @key{RET}} you can complete contact names.
2962 @kindex C-u C-c C-l
2963 @cindex file name completion
2964 @cindex completion, of file names
2965 @item C-u C-c C-l
2966 When @kbd{C-c C-l} is called with a @kbd{C-u} prefix argument, a link to
2967 a file will be inserted and you may use file name completion to select
2968 the name of the file.  The path to the file is inserted relative to the
2969 directory of the current Org file, if the linked file is in the current
2970 directory or in a sub-directory of it, or if the path is written relative
2971 to the current directory using @samp{../}.  Otherwise an absolute path
2972 is used, if possible with @samp{~/} for your home directory.  You can
2973 force an absolute path with two @kbd{C-u} prefixes.
2975 @item C-c C-l @r{(with cursor on existing link)}
2976 When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
2977 link and description parts of the link.
2979 @cindex following links
2980 @kindex C-c C-o
2981 @kindex RET
2982 @item C-c C-o @r{or} @key{RET}
2983 @vindex org-file-apps
2984 Open link at point.  This will launch a web browser for URLs (using
2985 @command{browse-url-at-point}), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for
2986 the corresponding links, and execute the command in a shell link.  When the
2987 cursor is on an internal link, this commands runs the corresponding search.
2988 When the cursor is on a TAG list in a headline, it creates the corresponding
2989 TAGS view.  If the cursor is on a timestamp, it compiles the agenda for that
2990 date.  Furthermore, it will visit text and remote files in @samp{file:} links
2991 with Emacs and select a suitable application for local non-text files.
2992 Classification of files is based on file extension only.  See option
2993 @code{org-file-apps}.  If you want to override the default application and
2994 visit the file with Emacs, use a @kbd{C-u} prefix.  If you want to avoid
2995 opening in Emacs, use a @kbd{C-u C-u} prefix.@*
2996 If the cursor is on a headline, but not on a link, offer all links in the
2997 headline and entry text.
2999 @kindex mouse-2
3000 @kindex mouse-1
3001 @item mouse-2
3002 @itemx mouse-1
3003 On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o}
3004 would.  Under Emacs 22, @kbd{mouse-1} will also follow a link.
3006 @kindex mouse-3
3007 @item mouse-3
3008 @vindex org-display-internal-link-with-indirect-buffer
3009 Like @kbd{mouse-2}, but force file links to be opened with Emacs, and
3010 internal links to be displayed in another window@footnote{See the
3011 variable @code{org-display-internal-link-with-indirect-buffer}}.
3013 @cindex mark ring
3014 @kindex C-c %
3015 @item C-c %
3016 Push the current position onto the mark ring, to be able to return
3017 easily. Commands following an internal link do this automatically.
3019 @cindex links, returning to
3020 @kindex C-c &
3021 @item C-c &
3022 Jump back to a recorded position.  A position is recorded by the
3023 commands following internal links, and by @kbd{C-c %}.  Using this
3024 command several times in direct succession moves through a ring of
3025 previously recorded positions.
3027 @kindex C-c C-x C-n
3028 @kindex C-c C-x C-p
3029 @cindex links, finding next/previous
3030 @item C-c C-x C-n
3031 @itemx C-c C-x C-p
3032 Move forward/backward to the next link in the buffer.  At the limit of
3033 the buffer, the search fails once, and then wraps around.  The key
3034 bindings for this are really too long, you might want to bind this also
3035 to @kbd{C-n} and @kbd{C-p}
3036 @lisp
3037 (add-hook 'org-load-hook
3038   (lambda ()
3039     (define-key 'org-mode-map "\C-n" 'org-next-link)
3040     (define-key 'org-mode-map "\C-p" 'org-previous-link)))
3041 @end lisp
3042 @end table
3044 @node Using links outside Org, Link abbreviations, Handling links, Hyperlinks
3045 @section Using links outside Org
3047 You can insert and follow links that have Org syntax not only in
3048 Org, but in any Emacs buffer.  For this, you should create two
3049 global commands, like this (please select suitable global keys
3050 yourself):
3052 @lisp
3053 (global-set-key "\C-c L" 'org-insert-link-global)
3054 (global-set-key "\C-c o" 'org-open-at-point-global)
3055 @end lisp
3057 @node Link abbreviations, Search options, Using links outside Org, Hyperlinks
3058 @section Link abbreviations
3059 @cindex link abbreviations
3060 @cindex abbreviation, links
3062 Long URLs can be cumbersome to type, and often many similar links are
3063 needed in a document.  For this you can use link abbreviations.  An
3064 abbreviated link looks like this
3066 @example
3067 [[linkword:tag][description]]
3068 @end example
3070 @noindent
3071 @vindex org-link-abbrev-alist
3072 where the tag is optional.  The @i{linkword} must be a word; letter, numbers,
3073 @samp{-}, and @samp{_} are allowed here.  Abbreviations are resolved
3074 according to the information in the variable @code{org-link-abbrev-alist}
3075 that relates the linkwords to replacement text.  Here is an example:
3077 @lisp
3078 @group
3079 (setq org-link-abbrev-alist
3080   '(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
3081     ("google"   . "http://www.google.com/search?q=")
3082     ("ads"      . "http://adsabs.harvard.edu/cgi-bin/
3083                    nph-abs_connect?author=%s&db_key=AST")))
3084 @end group
3085 @end lisp
3087 If the replacement text contains the string @samp{%s}, it will be
3088 replaced with the tag.  Otherwise the tag will be appended to the string
3089 in order to create the link.  You may also specify a function that will
3090 be called with the tag as the only argument to create the link.
3092 With the above setting, you could link to a specific bug with
3093 @code{[[bugzilla:129]]}, search the web for @samp{OrgMode} with
3094 @code{[[google:OrgMode]]} and find out what the Org author is
3095 doing besides Emacs hacking with @code{[[ads:Dominik,C]]}.
3097 If you need special abbreviations just for a single Org buffer, you
3098 can define them in the file with
3100 @cindex #+LINK
3101 @example
3102 #+LINK: bugzilla  http://10.1.2.9/bugzilla/show_bug.cgi?id=
3103 #+LINK: google    http://www.google.com/search?q=%s
3104 @end example
3106 @noindent
3107 In-buffer completion (@pxref{Completion}) can be used after @samp{[} to
3108 complete link abbreviations.  You may also define a function
3109 @code{org-PREFIX-complete-link} that implements special (e.g. completion)
3110 support for inserting such a link with @kbd{C-c C-l}.  Such a function should
3111 not accept any arguments, and return the full link with prefix.
3113 @node Search options, Custom searches, Link abbreviations, Hyperlinks
3114 @section Search options in file links
3115 @cindex search option in file links
3116 @cindex file links, searching
3118 File links can contain additional information to make Emacs jump to a
3119 particular location in the file when following a link.  This can be a
3120 line number or a search option after a double@footnote{For backward
3121 compatibility, line numbers can also follow a single colon.} colon. For
3122 example, when the command @kbd{C-c l} creates a link (@pxref{Handling
3123 links}) to a file, it encodes the words in the current line as a search
3124 string that can be used to find this line back later when following the
3125 link with @kbd{C-c C-o}.
3127 Here is the syntax of the different ways to attach a search to a file
3128 link, together with an explanation:
3130 @example
3131 [[file:~/code/main.c::255]]
3132 [[file:~/xx.org::My Target]]
3133 [[file:~/xx.org::*My Target]]
3134 [[file:~/xx.org::#my-custom-id]]
3135 [[file:~/xx.org::/regexp/]]
3136 @end example
3138 @table @code
3139 @item 255
3140 Jump to line 255.
3141 @item My Target
3142 Search for a link target @samp{<<My Target>>}, or do a text search for
3143 @samp{my target}, similar to the search in internal links, see
3144 @ref{Internal links}.  In HTML export (@pxref{HTML export}), such a file
3145 link will become an HTML reference to the corresponding named anchor in
3146 the linked file.
3147 @item *My Target
3148 In an Org file, restrict search to headlines.
3149 @item #my-custom-id
3150 Link to a heading with a @code{CUSTOM_ID} property
3151 @item /regexp/
3152 Do a regular expression search for @code{regexp}.  This uses the Emacs
3153 command @code{occur} to list all matches in a separate window.  If the
3154 target file is in Org mode, @code{org-occur} is used to create a
3155 sparse tree with the matches.
3156 @c If the target file is a directory,
3157 @c @code{grep} will be used to search all files in the directory.
3158 @end table
3160 As a degenerate case, a file link with an empty file name can be used
3161 to search the current file.  For example, @code{[[file:::find me]]} does
3162 a search for @samp{find me} in the current file, just as
3163 @samp{[[find me]]} would.
3165 @node Custom searches,  , Search options, Hyperlinks
3166 @section Custom Searches
3167 @cindex custom search strings
3168 @cindex search strings, custom
3170 The default mechanism for creating search strings and for doing the
3171 actual search related to a file link may not work correctly in all
3172 cases.  For example, Bib@TeX{} database files have many entries like
3173 @samp{year="1993"} which would not result in good search strings,
3174 because the only unique identification for a Bib@TeX{} entry is the
3175 citation key.
3177 @vindex org-create-file-search-functions
3178 @vindex org-execute-file-search-functions
3179 If you come across such a problem, you can write custom functions to set
3180 the right search string for a particular file type, and to do the search
3181 for the string in the file.  Using @code{add-hook}, these functions need
3182 to be added to the hook variables
3183 @code{org-create-file-search-functions} and
3184 @code{org-execute-file-search-functions}.  See the docstring for these
3185 variables for more information.  Org actually uses this mechanism
3186 for Bib@TeX{} database files, and you can use the corresponding code as
3187 an implementation example.  See the file @file{org-bibtex.el}.
3189 @node TODO Items, Tags, Hyperlinks, Top
3190 @chapter TODO Items
3191 @cindex TODO items
3193 Org mode does not maintain TODO lists as separate documents@footnote{Of
3194 course, you can make a document that contains only long lists of TODO items,
3195 but this is not required.}.  Instead, TODO items are an integral part of the
3196 notes file, because TODO items usually come up while taking notes!  With Org
3197 mode, simply mark any entry in a tree as being a TODO item.  In this way,
3198 information is not duplicated, and the entire context from which the TODO
3199 item emerged is always present.
3201 Of course, this technique for managing TODO items scatters them
3202 throughout your notes file.  Org mode compensates for this by providing
3203 methods to give you an overview of all the things that you have to do.
3205 @menu
3206 * TODO basics::                 Marking and displaying TODO entries
3207 * TODO extensions::             Workflow and assignments
3208 * Progress logging::            Dates and notes for progress
3209 * Priorities::                  Some things are more important than others
3210 * Breaking down tasks::         Splitting a task into manageable pieces
3211 * Checkboxes::                  Tick-off lists
3212 @end menu
3214 @node TODO basics, TODO extensions, TODO Items, TODO Items
3215 @section Basic TODO functionality
3217 Any headline becomes a TODO item when it starts with the word
3218 @samp{TODO}, for example:
3220 @example
3221 *** TODO Write letter to Sam Fortune
3222 @end example
3224 @noindent
3225 The most important commands to work with TODO entries are:
3227 @table @kbd
3228 @kindex C-c C-t
3229 @cindex cycling, of TODO states
3230 @item C-c C-t
3231 Rotate the TODO state of the current item among
3233 @example
3234 ,-> (unmarked) -> TODO -> DONE --.
3235 '--------------------------------'
3236 @end example
3238 The same rotation can also be done ``remotely'' from the timeline and
3239 agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
3241 @kindex C-u C-c C-t
3242 @item C-u C-c C-t
3243 Select a specific keyword using completion or (if it has been set up)
3244 the fast selection interface.  For the latter, you need to assign keys
3245 to TODO states, see @ref{Per-file keywords}, and @ref{Setting tags}, for
3246 more information.
3248 @kindex S-@key{right}
3249 @kindex S-@key{left}
3250 @vindex org-treat-S-cursor-todo-selection-as-state-change
3251 @item S-@key{right}
3252 @itemx S-@key{left}
3253 Select the following/preceding TODO state, similar to cycling.  Useful
3254 mostly if more than two TODO states are possible (@pxref{TODO
3255 extensions}).  See also @ref{Conflicts}, for a discussion of the interaction
3256 with @code{shift-selection-mode}.  See also the variable
3257 @code{org-treat-S-cursor-todo-selection-as-state-change}.
3258 @kindex C-c C-v
3259 @kindex C-c / t
3260 @cindex sparse tree, for TODO
3261 @item C-c C-v
3262 @itemx C-c / t
3263 @vindex org-todo-keywords
3264 View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}).  Folds the
3265 entire buffer, but shows all TODO items and the headings hierarchy above
3266 them.  With a prefix argument, search for a specific TODO.  You will be
3267 prompted for the keyword, and you can also give a list of keywords like
3268 @code{KWD1|KWD2|...} to list entries that match any one of these keywords.
3269 With numeric prefix argument N, show the tree for the Nth keyword in the
3270 variable @code{org-todo-keywords}.  With two prefix arguments, find all TODO
3271 and DONE entries.
3272 @kindex C-c a t
3273 @item C-c a t
3274 Show the global TODO list.  Collects the TODO items from all agenda
3275 files (@pxref{Agenda Views}) into a single buffer.  The new buffer will
3276 be in @code{agenda-mode}, which provides commands to examine and
3277 manipulate the TODO entries from the new buffer (@pxref{Agenda
3278 commands}).  @xref{Global TODO list}, for more information.
3279 @kindex S-M-@key{RET}
3280 @item S-M-@key{RET}
3281 Insert a new TODO entry below the current one.
3282 @end table
3284 @noindent
3285 @vindex org-todo-state-tags-triggers
3286 Changing a TODO state can also trigger tag changes.  See the docstring of the
3287 option @code{org-todo-state-tags-triggers} for details.
3289 @node TODO extensions, Progress logging, TODO basics, TODO Items
3290 @section Extended use of TODO keywords
3291 @cindex extended TODO keywords
3293 @vindex org-todo-keywords
3294 By default, marked TODO entries have one of only two states: TODO and
3295 DONE.  Org mode allows you to classify TODO items in more complex ways
3296 with @emph{TODO keywords} (stored in @code{org-todo-keywords}).  With
3297 special setup, the TODO keyword system can work differently in different
3298 files.
3300 Note that @i{tags} are another way to classify headlines in general and
3301 TODO items in particular (@pxref{Tags}).
3303 @menu
3304 * Workflow states::             From TODO to DONE in steps
3305 * TODO types::                  I do this, Fred does the rest
3306 * Multiple sets in one file::   Mixing it all, and still finding your way
3307 * Fast access to TODO states::  Single letter selection of a state
3308 * Per-file keywords::           Different files, different requirements
3309 * Faces for TODO keywords::     Highlighting states
3310 * TODO dependencies::           When one task needs to wait for others
3311 @end menu
3313 @node Workflow states, TODO types, TODO extensions, TODO extensions
3314 @subsection TODO keywords as workflow states
3315 @cindex TODO workflow
3316 @cindex workflow states as TODO keywords
3318 You can use TODO keywords to indicate different @emph{sequential} states
3319 in the process of working on an item, for example@footnote{Changing
3320 this variable only becomes effective after restarting Org mode in a
3321 buffer.}:
3323 @lisp
3324 (setq org-todo-keywords
3325   '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
3326 @end lisp
3328 The vertical bar separates the TODO keywords (states that @emph{need
3329 action}) from the DONE states (which need @emph{no further action}).  If
3330 you don't provide the separator bar, the last state is used as the DONE
3331 state.
3332 @cindex completion, of TODO keywords
3333 With this setup, the command @kbd{C-c C-t} will cycle an entry from TODO
3334 to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED.  You may
3335 also use a numeric prefix argument to quickly select a specific state.  For
3336 example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
3337 Or you can use @kbd{S-@key{left}} to go backward through the sequence.  If you
3338 define many keywords, you can use in-buffer completion
3339 (@pxref{Completion}) or even a special one-key selection scheme
3340 (@pxref{Fast access to TODO states}) to insert these words into the
3341 buffer.  Changing a TODO state can be logged with a timestamp, see
3342 @ref{Tracking TODO state changes}, for more information.
3344 @node TODO types, Multiple sets in one file, Workflow states, TODO extensions
3345 @subsection TODO keywords as types
3346 @cindex TODO types
3347 @cindex names as TODO keywords
3348 @cindex types as TODO keywords
3350 The second possibility is to use TODO keywords to indicate different
3351 @emph{types} of action items.  For example, you might want to indicate
3352 that items are for ``work'' or ``home''.  Or, when you work with several
3353 people on a single project, you might want to assign action items
3354 directly to persons, by using their names as TODO keywords.  This would
3355 be set up like this:
3357 @lisp
3358 (setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
3359 @end lisp
3361 In this case, different keywords do not indicate a sequence, but rather
3362 different types.  So the normal work flow would be to assign a task to a
3363 person, and later to mark it DONE.  Org mode supports this style by adapting
3364 the workings of the command @kbd{C-c C-t}@footnote{This is also true for the
3365 @kbd{t} command in the timeline and agenda buffers.}.  When used several
3366 times in succession, it will still cycle through all names, in order to first
3367 select the right type for a task.  But when you return to the item after some
3368 time and execute @kbd{C-c C-t} again, it will switch from any name directly
3369 to DONE.  Use prefix arguments or completion to quickly select a specific
3370 name.  You can also review the items of a specific TODO type in a sparse tree
3371 by using a numeric prefix to @kbd{C-c C-v}.  For example, to see all things
3372 Lucy has to do, you would use @kbd{C-3 C-c C-v}.  To collect Lucy's items
3373 from all agenda files into a single buffer, you would use the numeric prefix
3374 argument as well when creating the global TODO list: @kbd{C-3 C-c t}.
3376 @node Multiple sets in one file, Fast access to TODO states, TODO types, TODO extensions
3377 @subsection Multiple keyword sets in one file
3378 @cindex TODO keyword sets
3380 Sometimes you may want to use different sets of TODO keywords in
3381 parallel.  For example, you may want to have the basic
3382 @code{TODO}/@code{DONE}, but also a workflow for bug fixing, and a
3383 separate state indicating that an item has been canceled (so it is not
3384 DONE, but also does not require action).  Your setup would then look
3385 like this:
3387 @lisp
3388 (setq org-todo-keywords
3389       '((sequence "TODO" "|" "DONE")
3390         (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
3391         (sequence "|" "CANCELED")))
3392 @end lisp
3394 The keywords should all be different, this helps Org mode to keep track
3395 of which subsequence should be used for a given entry.  In this setup,
3396 @kbd{C-c C-t} only operates within a subsequence, so it switches from
3397 @code{DONE} to (nothing) to @code{TODO}, and from @code{FIXED} to
3398 (nothing) to @code{REPORT}.  Therefore you need a mechanism to initially
3399 select the correct sequence.  Besides the obvious ways like typing a
3400 keyword or using completion, you may also apply the following commands:
3402 @table @kbd
3403 @kindex C-S-@key{right}
3404 @kindex C-S-@key{left}
3405 @kindex C-u C-u C-c C-t
3406 @item C-u C-u C-c C-t
3407 @itemx C-S-@key{right}
3408 @itemx C-S-@key{left}
3409 These keys jump from one TODO subset to the next.  In the above example,
3410 @kbd{C-u C-u C-c C-t} or @kbd{C-S-@key{right}} would jump from @code{TODO} or
3411 @code{DONE} to @code{REPORT}, and any of the words in the second row to
3412 @code{CANCELED}.  Note that the @kbd{C-S-} key binding conflict with
3413 @code{shift-selection-mode} (@pxref{Conflicts}).
3414 @kindex S-@key{right}
3415 @kindex S-@key{left}
3416 @item S-@key{right}
3417 @itemx S-@key{left}
3418 @kbd{S-@key{<left>}} and @kbd{S-@key{<right>}} and walk through @emph{all}
3419 keywords from all sets, so for example @kbd{S-@key{<right>}} would switch
3420 from @code{DONE} to @code{REPORT} in the example above.  See also
3421 @ref{Conflicts}, for a discussion of the interaction with
3422 @code{shift-selection-mode}.
3423 @end table
3425 @node Fast access to TODO states, Per-file keywords, Multiple sets in one file, TODO extensions
3426 @subsection Fast access to TODO states
3428 If you would like to quickly change an entry to an arbitrary TODO state
3429 instead of cycling through the states, you can set up keys for
3430 single-letter access to the states.  This is done by adding the section
3431 key after each keyword, in parentheses.  For example:
3433 @lisp
3434 (setq org-todo-keywords
3435       '((sequence "TODO(t)" "|" "DONE(d)")
3436         (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
3437         (sequence "|" "CANCELED(c)")))
3438 @end lisp
3440 @vindex org-fast-tag-selection-include-todo
3441 If you then press @code{C-c C-t} followed by the selection key, the entry
3442 will be switched to this state.  @key{SPC} can be used to remove any TODO
3443 keyword from an entry.@footnote{Check also the variable
3444 @code{org-fast-tag-selection-include-todo}, it allows you to change the TODO
3445 state through the tags interface (@pxref{Setting tags}), in case you like to
3446 mingle the two concepts.  Note that this means you need to come up with
3447 unique keys across both sets of keywords.}
3449 @node Per-file keywords, Faces for TODO keywords, Fast access to TODO states, TODO extensions
3450 @subsection Setting up keywords for individual files
3451 @cindex keyword options
3452 @cindex per-file keywords
3453 @cindex #+TODO
3454 @cindex #+TYP_TODO
3455 @cindex #+SEQ_TODO
3457 It can be very useful to use different aspects of the TODO mechanism in
3458 different files.  For file-local settings, you need to add special lines
3459 to the file which set the keywords and interpretation for that file
3460 only.  For example, to set one of the two examples discussed above, you
3461 need one of the following lines, starting in column zero anywhere in the
3462 file:
3464 @example
3465 #+TODO: TODO FEEDBACK VERIFY | DONE CANCELED
3466 @end example
3467 @noindent (you may also write @code{#+SEQ_TODO} to be explicit about the
3468 interpretation, but it means the same as @code{#+TODO}), or
3469 @example
3470 #+TYP_TODO: Fred Sara Lucy Mike | DONE
3471 @end example
3473 A setup for using several sets in parallel would be:
3475 @example
3476 #+TODO: TODO | DONE
3477 #+TODO: REPORT BUG KNOWNCAUSE | FIXED
3478 #+TODO: | CANCELED
3479 @end example
3481 @cindex completion, of option keywords
3482 @kindex M-@key{TAB}
3483 @noindent To make sure you are using the correct keyword, type
3484 @samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
3486 @cindex DONE, final TODO keyword
3487 Remember that the keywords after the vertical bar (or the last keyword
3488 if no bar is there) must always mean that the item is DONE (although you
3489 may use a different word).  After changing one of these lines, use
3490 @kbd{C-c C-c} with the cursor still in the line to make the changes
3491 known to Org mode@footnote{Org mode parses these lines only when
3492 Org mode is activated after visiting a file.  @kbd{C-c C-c} with the
3493 cursor in a line starting with @samp{#+} is simply restarting Org mode
3494 for the current buffer.}.
3496 @node Faces for TODO keywords, TODO dependencies, Per-file keywords, TODO extensions
3497 @subsection Faces for TODO keywords
3498 @cindex faces, for TODO keywords
3500 @vindex org-todo @r{(face)}
3501 @vindex org-done @r{(face)}
3502 @vindex org-todo-keyword-faces
3503 Org mode highlights TODO keywords with special faces: @code{org-todo}
3504 for keywords indicating that an item still has to be acted upon, and
3505 @code{org-done} for keywords indicating that an item is finished.  If
3506 you are using more than 2 different states, you might want to use
3507 special faces for some of them.  This can be done using the variable
3508 @code{org-todo-keyword-faces}.  For example:
3510 @lisp
3511 @group
3512 (setq org-todo-keyword-faces
3513       '(("TODO" . org-warning) ("STARTED" . "yellow")
3514         ("CANCELED" . (:foreground "blue" :weight bold))))
3515 @end group
3516 @end lisp
3518 While using a list with face properties as shown for CANCELED @emph{should}
3519 work, this does not aways seem to be the case.  If necessary, define a
3520 special face and use that.  A string is interpreted as a color.  The variable
3521 @code{org-faces-easy-properties} determines if that color is interpreted as a
3522 foreground or a background color.
3524 @node TODO dependencies,  , Faces for TODO keywords, TODO extensions
3525 @subsection TODO dependencies
3526 @cindex TODO dependencies
3527 @cindex dependencies, of TODO states
3529 @vindex org-enforce-todo-dependencies
3530 @cindex property, ORDERED
3531 The structure of Org files (hierarchy and lists) makes it easy to define TODO
3532 dependencies.  Usually, a parent TODO task should not be marked DONE until
3533 all subtasks (defined as children tasks) are marked as DONE.  And sometimes
3534 there is a logical sequence to a number of (sub)tasks, so that one task
3535 cannot be acted upon before all siblings above it are done.  If you customize
3536 the variable @code{org-enforce-todo-dependencies}, Org will block entries
3537 from changing state to DONE while they have children that are not DONE.
3538 Furthermore, if an entry has a property @code{ORDERED}, each of its children
3539 will be blocked until all earlier siblings are marked DONE.  Here is an
3540 example:
3542 @example
3543 * TODO Blocked until (two) is done
3544 ** DONE one
3545 ** TODO two
3547 * Parent
3548   :PROPERTIES:
3549     :ORDERED: t
3550   :END:
3551 ** TODO a
3552 ** TODO b, needs to wait for (a)
3553 ** TODO c, needs to wait for (a) and (b)
3554 @end example
3556 @table @kbd
3557 @kindex C-c C-x o
3558 @item C-c C-x o
3559 @vindex org-track-ordered-property-with-tag
3560 @cindex property, ORDERED
3561 Toggle the @code{ORDERED} property of the current entry.  A property is used
3562 for this behavior because this should be local to the current entry, not
3563 inherited like a tag.  However, if you would like to @i{track} the value of
3564 this property with a tag for better visibility, customize the variable
3565 @code{org-track-ordered-property-with-tag}.
3566 @kindex C-u C-u C-u C-c C-t
3567 @item C-u C-u C-u C-c C-t
3568 Change TODO state, circumventing any state blocking.
3569 @end table
3571 @vindex org-agenda-dim-blocked-tasks
3572 If you set the variable @code{org-agenda-dim-blocked-tasks}, TODO entries
3573 that cannot be closed because of such dependencies will be shown in a dimmed
3574 font or even made invisible in agenda views (@pxref{Agenda Views}).
3576 @cindex checkboxes and TODO dependencies
3577 @vindex org-enforce-todo-dependencies
3578 You can also block changes of TODO states by looking at checkboxes
3579 (@pxref{Checkboxes}).  If you set the variable
3580 @code{org-enforce-todo-checkbox-dependencies}, an entry that has unchecked
3581 checkboxes will be blocked from switching to DONE.
3583 If you need more complex dependency structures, for example dependencies
3584 between entries in different trees or files, check out the contributed
3585 module @file{org-depend.el}.
3587 @page
3588 @node Progress logging, Priorities, TODO extensions, TODO Items
3589 @section Progress logging
3590 @cindex progress logging
3591 @cindex logging, of progress
3593 Org mode can automatically record a timestamp and possibly a note when
3594 you mark a TODO item as DONE, or even each time you change the state of
3595 a TODO item.  This system is highly configurable, settings can be on a
3596 per-keyword basis and can be localized to a file or even a subtree.  For
3597 information on how to clock working time for a task, see @ref{Clocking
3598 work time}.
3600 @menu
3601 * Closing items::               When was this entry marked DONE?
3602 * Tracking TODO state changes::  When did the status change?
3603 * Tracking your habits::        How consistent have you been?
3604 @end menu
3606 @node Closing items, Tracking TODO state changes, Progress logging, Progress logging
3607 @subsection Closing items
3609 The most basic logging is to keep track of @emph{when} a certain TODO
3610 item was finished.  This is achieved with@footnote{The corresponding
3611 in-buffer setting is: @code{#+STARTUP: logdone}}.
3613 @lisp
3614 (setq org-log-done 'time)
3615 @end lisp
3617 @noindent
3618 Then each time you turn an entry from a TODO (not-done) state into any
3619 of the DONE states, a line @samp{CLOSED: [timestamp]} will be inserted
3620 just after the headline.  If you turn the entry back into a TODO item
3621 through further state cycling, that line will be removed again.  If you
3622 want to record a note along with the timestamp, use@footnote{The
3623 corresponding in-buffer setting is: @code{#+STARTUP: lognotedone}}
3625 @lisp
3626 (setq org-log-done 'note)
3627 @end lisp
3629 @noindent
3630 You will then be prompted for a note, and that note will be stored below
3631 the entry with a @samp{Closing Note} heading.
3633 In the timeline (@pxref{Timeline}) and in the agenda
3634 (@pxref{Weekly/daily agenda}), you can then use the @kbd{l} key to
3635 display the TODO items with a @samp{CLOSED} timestamp on each day,
3636 giving you an overview of what has been done.
3638 @node Tracking TODO state changes, Tracking your habits, Closing items, Progress logging
3639 @subsection Tracking TODO state changes
3640 @cindex drawer, for state change recording
3642 @vindex org-log-states-order-reversed
3643 @vindex org-log-into-drawer
3644 @cindex property, LOG_INTO_DRAWER
3645 When TODO keywords are used as workflow states (@pxref{Workflow states}), you
3646 might want to keep track of when a state change occurred and maybe take a
3647 note about this change.  You can either record just a timestamp, or a
3648 time-stamped note for a change.  These records will be inserted after the
3649 headline as an itemized list, newest first@footnote{See the variable
3650 @code{org-log-states-order-reversed}}.  When taking a lot of notes, you might
3651 want to get the notes out of the way into a drawer (@pxref{Drawers}).
3652 Customize the variable @code{org-log-into-drawer} to get this
3653 behavior---the recommended drawer for this is called @code{LOGBOOK}.  You can
3654 also overrule the setting of this variable for a subtree by setting a
3655 @code{LOG_INTO_DRAWER} property.
3657 Since it is normally too much to record a note for every state, Org mode
3658 expects configuration on a per-keyword basis for this.  This is achieved by
3659 adding special markers @samp{!} (for a timestamp) and @samp{@@} (for a note)
3660 in parentheses after each keyword.  For example, with the setting
3662 @lisp
3663 (setq org-todo-keywords
3664   '((sequence "TODO(t)" "WAIT(w@@/!)" "|" "DONE(d!)" "CANCELED(c@@)")))
3665 @end lisp
3667 @noindent
3668 @vindex org-log-done
3669 you not only define global TODO keywords and fast access keys, but also
3670 request that a time is recorded when the entry is set to
3671 DONE@footnote{It is possible that Org mode will record two timestamps
3672 when you are using both @code{org-log-done} and state change logging.
3673 However, it will never prompt for two notes---if you have configured
3674 both, the state change recording note will take precedence and cancel
3675 the @samp{Closing Note}.}, and that a note is recorded when switching to
3676 WAIT or CANCELED.  The setting for WAIT is even more special: the
3677 @samp{!} after the slash means that in addition to the note taken when
3678 entering the state, a timestamp should be recorded when @i{leaving} the
3679 WAIT state, if and only if the @i{target} state does not configure
3680 logging for entering it.  So it has no effect when switching from WAIT
3681 to DONE, because DONE is configured to record a timestamp only.  But
3682 when switching from WAIT back to TODO, the @samp{/!} in the WAIT
3683 setting now triggers a timestamp even though TODO has no logging
3684 configured.
3686 You can use the exact same syntax for setting logging preferences local
3687 to a buffer:
3688 @example
3689 #+TODO: TODO(t) WAIT(w@@/!) | DONE(d!) CANCELED(c@@)
3690 @end example
3692 @cindex property, LOGGING
3693 In order to define logging settings that are local to a subtree or a
3694 single item, define a LOGGING property in this entry.  Any non-empty
3695 LOGGING property resets all logging settings to nil.  You may then turn
3696 on logging for this specific tree using STARTUP keywords like
3697 @code{lognotedone} or @code{logrepeat}, as well as adding state specific
3698 settings like @code{TODO(!)}.  For example
3700 @example
3701 * TODO Log each state with only a time
3702   :PROPERTIES:
3703   :LOGGING: TODO(!) WAIT(!) DONE(!) CANCELED(!)
3704   :END:
3705 * TODO Only log when switching to WAIT, and when repeating
3706   :PROPERTIES:
3707   :LOGGING: WAIT(@@) logrepeat
3708   :END:
3709 * TODO No logging at all
3710   :PROPERTIES:
3711   :LOGGING: nil
3712   :END:
3713 @end example
3715 @node Tracking your habits,  , Tracking TODO state changes, Progress logging
3716 @subsection Tracking your habits
3717 @cindex habits
3719 Org has the ability to track the consistency of a special category of TODOs,
3720 called ``habits''.  A habit has the following properties:
3722 @enumerate
3723 @item
3724 You have enabled the @code{habits} module by customizing the variable
3725 @code{org-modules}.
3726 @item
3727 The habit is a TODO, with a TODO keyword representing an open state.
3728 @item
3729 The property @code{STYLE} is set to the value @code{habit}.
3730 @item
3731 The TODO has a scheduled date, with a @code{.+} style repeat interval.
3732 @item
3733 The TODO may also have minimum and maximum ranges specified by using the
3734 syntax @samp{.+2d/3d}, which says that you want to do the task at least every
3735 three days, but at most every two days.
3736 @item
3737 You must also have state logging for the @code{DONE} state enabled, in order
3738 for historical data to be represented in the consistency graph.  If it's not
3739 enabled it's not an error, but the consistency graphs will be largely
3740 meaningless.
3741 @end enumerate
3743 To give you an idea of what the above rules look like in action, here's an
3744 actual habit with some history:
3746 @example
3747 ** TODO Shave
3748    SCHEDULED: <2009-10-17 Sat .+2d/4d>
3749    - State "DONE"       from "TODO"       [2009-10-15 Thu]
3750    - State "DONE"       from "TODO"       [2009-10-12 Mon]
3751    - State "DONE"       from "TODO"       [2009-10-10 Sat]
3752    - State "DONE"       from "TODO"       [2009-10-04 Sun]
3753    - State "DONE"       from "TODO"       [2009-10-02 Fri]
3754    - State "DONE"       from "TODO"       [2009-09-29 Tue]
3755    - State "DONE"       from "TODO"       [2009-09-25 Fri]
3756    - State "DONE"       from "TODO"       [2009-09-19 Sat]
3757    - State "DONE"       from "TODO"       [2009-09-16 Wed]
3758    - State "DONE"       from "TODO"       [2009-09-12 Sat]
3759    :PROPERTIES:
3760    :STYLE:    habit
3761    :LAST_REPEAT: [2009-10-19 Mon 00:36]
3762    :END:
3763 @end example
3765 What this habit says is: I want to shave at most every 2 days (given by the
3766 @code{SCHEDULED} date and repeat interval) and at least every 4 days.  If
3767 today is the 15th, then the habit first appears in the agenda on Oct 17,
3768 after the minimum of 2 days has elapsed, and will appear overdue on Oct 19,
3769 after four days have elapsed.
3771 What's really useful about habits is that they are displayed along with a
3772 consistency graph, to show how consistent you've been at getting that task
3773 done in the past.  This graph shows every day that the task was done over the
3774 past three weeks, with colors for each day.  The colors used are:
3776 @table @code
3777 @item Blue
3778 If the task wasn't to be done yet on that day.
3779 @item Green
3780 If the task could have been done on that day.
3781 @item Yellow
3782 If the task was going to be overdue the next day.
3783 @item Red
3784 If the task was overdue on that day.
3785 @end table
3787 In addition to coloring each day, the day is also marked with an asterix if
3788 the task was actually done that day, and an exclamation mark to show where
3789 the current day falls in the graph.
3791 There are several configuration variables that can be used to change the way
3792 habits are displayed in the agenda.
3794 @table @code
3795 @item org-habit-graph-column
3796 The buffer column at which the consistency graph should be drawn.  This will
3797 overwrite any text in that column, so it's a good idea to keep your habits'
3798 titles brief and to the point.
3799 @item org-habit-preceding-days
3800 The amount of history, in days before today, to appear in consistency graphs.
3801 @item org-habit-following-days
3802 The number of days after today that will appear in consistency graphs.
3803 @item org-habit-show-habits-only-for-today
3804 If non-nil, only show habits in today's agenda view.  This is set to true by
3805 default.
3806 @end table
3808 Lastly, pressing @kbd{K} in the agenda buffer will cause habits to
3809 temporarily be disabled and they won't appear at all.  Press @kbd{K} again to
3810 bring them back.  They are also subject to tag filtering, if you have habits
3811 which should only be done in certain contexts, for example.
3813 @node Priorities, Breaking down tasks, Progress logging, TODO Items
3814 @section Priorities
3815 @cindex priorities
3817 If you use Org mode extensively, you may end up with enough TODO items that
3818 it starts to make sense to prioritize them.  Prioritizing can be done by
3819 placing a @emph{priority cookie} into the headline of a TODO item, like this
3821 @example
3822 *** TODO [#A] Write letter to Sam Fortune
3823 @end example
3825 @noindent
3826 @vindex org-priority-faces
3827 By default, Org mode supports three priorities: @samp{A}, @samp{B}, and
3828 @samp{C}.  @samp{A} is the highest priority.  An entry without a cookie is
3829 treated as priority @samp{B}.  Priorities make a difference only in the
3830 agenda (@pxref{Weekly/daily agenda}); outside the agenda, they have no
3831 inherent meaning to Org mode.  The cookies can be highlighted with special
3832 faces by customizing the variable @code{org-priority-faces}.
3834 Priorities can be attached to any outline tree entries; they do not need
3835 to be TODO items.
3837 @table @kbd
3838 @kindex @kbd{C-c ,}
3839 @item @kbd{C-c ,}
3840 Set the priority of the current headline.  The command prompts for a
3841 priority character @samp{A}, @samp{B} or @samp{C}.  When you press
3842 @key{SPC} instead, the priority cookie is removed from the headline.
3843 The priorities can also be changed ``remotely'' from the timeline and
3844 agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
3846 @kindex S-@key{up}
3847 @kindex S-@key{down}
3848 @item S-@key{up}
3849 @itemx S-@key{down}
3850 @vindex org-priority-start-cycle-with-default
3851 Increase/decrease priority of current headline@footnote{See also the option
3852 @code{org-priority-start-cycle-with-default}.}.  Note that these keys are
3853 also used to modify timestamps (@pxref{Creating timestamps}).  See also
3854 @ref{Conflicts}, for a discussion of the interaction with
3855 @code{shift-selection-mode}.
3856 @end table
3858 @vindex org-highest-priority
3859 @vindex org-lowest-priority
3860 @vindex org-default-priority
3861 You can change the range of allowed priorities by setting the variables
3862 @code{org-highest-priority}, @code{org-lowest-priority}, and
3863 @code{org-default-priority}.  For an individual buffer, you may set
3864 these values (highest, lowest, default) like this (please make sure that
3865 the highest priority is earlier in the alphabet than the lowest
3866 priority):
3868 @cindex #+PRIORITIES
3869 @example
3870 #+PRIORITIES: A C B
3871 @end example
3873 @node Breaking down tasks, Checkboxes, Priorities, TODO Items
3874 @section Breaking tasks down into subtasks
3875 @cindex tasks, breaking down
3876 @cindex statistics, for TODO items
3878 @vindex org-agenda-todo-list-sublevels
3879 It is often advisable to break down large tasks into smaller, manageable
3880 subtasks.  You can do this by creating an outline tree below a TODO item,
3881 with detailed subtasks on the tree@footnote{To keep subtasks out of the
3882 global TODO list, see the @code{org-agenda-todo-list-sublevels}.}.  To keep
3883 the overview over the fraction of subtasks that are already completed, insert
3884 either @samp{[/]} or @samp{[%]} anywhere in the headline.  These cookies will
3885 be updated each time the TODO status of a child changes, or when pressing
3886 @kbd{C-c C-c} on the cookie.  For example:
3888 @example
3889 * Organize Party [33%]
3890 ** TODO Call people [1/2]
3891 *** TODO Peter
3892 *** DONE Sarah
3893 ** TODO Buy food
3894 ** DONE Talk to neighbor
3895 @end example
3897 @cindex property, COOKIE_DATA
3898 If a heading has both checkboxes and TODO children below it, the meaning of
3899 the statistics cookie become ambiguous.  Set the property
3900 @code{COOKIE_DATA} to either @samp{checkbox} or @samp{todo} to resolve
3901 this issue.
3903 @vindex org-hierarchical-todo-statistics
3904 If you would like to have the statistics cookie count any TODO entries in the
3905 subtree (not just direct children), configure the variable
3906 @code{org-hierarchical-todo-statistics}.  To do this for a single subtree,
3907 include the word @samp{recursive} into the value of the @code{COOKIE_DATA}
3908 property.
3910 @example
3911 * Parent capturing statistics [2/20]
3912   :PROPERTIES:
3913   :COOKIE_DATA: todo recursive
3914   :END:
3915 @end example
3917 If you would like a TODO entry to automatically change to DONE
3918 when all children are done, you can use the following setup:
3920 @example
3921 (defun org-summary-todo (n-done n-not-done)
3922   "Switch entry to DONE when all subentries are done, to TODO otherwise."
3923   (let (org-log-done org-log-states)   ; turn off logging
3924     (org-todo (if (= n-not-done 0) "DONE" "TODO"))))
3926 (add-hook 'org-after-todo-statistics-hook 'org-summary-todo)
3927 @end example
3930 Another possibility is the use of checkboxes to identify (a hierarchy of) a
3931 large number of subtasks (@pxref{Checkboxes}).
3934 @node Checkboxes,  , Breaking down tasks, TODO Items
3935 @section Checkboxes
3936 @cindex checkboxes
3938 Every item in a plain list (@pxref{Plain lists}) can be made into a
3939 checkbox by starting it with the string @samp{[ ]}.  This feature is
3940 similar to TODO items (@pxref{TODO Items}), but is more lightweight.
3941 Checkboxes are not included into the global TODO list, so they are often
3942 great to split a task into a number of simple steps.  Or you can use
3943 them in a shopping list.  To toggle a checkbox, use @kbd{C-c C-c}, or
3944 use the mouse (thanks to Piotr Zielinski's @file{org-mouse.el}).
3946 Here is an example of a checkbox list.
3948 @example
3949 * TODO Organize party [2/4]
3950   - [-] call people [1/3]
3951     - [ ] Peter
3952     - [X] Sarah
3953     - [ ] Sam
3954   - [X] order food
3955   - [ ] think about what music to play
3956   - [X] talk to the neighbors
3957 @end example
3959 Checkboxes work hierarchically, so if a checkbox item has children that
3960 are checkboxes, toggling one of the children checkboxes will make the
3961 parent checkbox reflect if none, some, or all of the children are
3962 checked.
3964 @cindex statistics, for checkboxes
3965 @cindex checkbox statistics
3966 @cindex property, COOKIE_DATA
3967 @vindex org-hierarchical-checkbox-statistics
3968 The @samp{[2/4]} and @samp{[1/3]} in the first and second line are cookies
3969 indicating how many checkboxes present in this entry have been checked off,
3970 and the total number of checkboxes present.  This can give you an idea on how
3971 many checkboxes remain, even without opening a folded entry.  The cookies can
3972 be placed into a headline or into (the first line of) a plain list item.
3973 Each cookie covers checkboxes of direct children structurally below the
3974 headline/item on which the cookie appears@footnote{Set the variable
3975 @code{org-hierarchical-checkbox-statistics} if you want such cookies to
3976 represent the all checkboxes below the cookie, not just the direct
3977 children.}.  You have to insert the cookie yourself by typing either
3978 @samp{[/]} or @samp{[%]}.  With @samp{[/]} you get an @samp{n out of m}
3979 result, as in the examples above.  With @samp{[%]} you get information about
3980 the percentage of checkboxes checked (in the above example, this would be
3981 @samp{[50%]} and @samp{[33%]}, respectively).  In a headline, a cookie can
3982 count either checkboxes below the heading or TODO states of children, and it
3983 will display whatever was changed last.  Set the property @code{COOKIE_DATA}
3984 to either @samp{checkbox} or @samp{todo} to resolve this issue.
3986 @cindex blocking, of checkboxes
3987 @cindex checkbox blocking
3988 @cindex property, ORDERED
3989 If the current outline node has an @code{ORDERED} property, checkboxes must
3990 be checked off in sequence, and an error will be thrown if you try to check
3991 off a box while there are unchecked boxes above it.
3993 @noindent The following commands work with checkboxes:
3995 @table @kbd
3996 @kindex C-c C-c
3997 @item C-c C-c
3998 Toggle checkbox status or (with prefix arg) checkbox presence at point.  With
3999 double prefix argument, set it to @samp{[-]}, which is considered to be an
4000 intermediate state.
4001 @kindex C-c C-x C-b
4002 @item C-c C-x C-b
4003 Toggle checkbox status or (with prefix arg) checkbox presence at point.  With
4004 double prefix argument, set it to @samp{[-]}, which is considered to be an
4005 intermediate state.
4006 @itemize @minus
4007 @item
4008 If there is an active region, toggle the first checkbox in the region
4009 and set all remaining boxes to the same status as the first.  With a prefix
4010 arg, add or remove the checkbox for all items in the region.
4011 @item
4012 If the cursor is in a headline, toggle checkboxes in the region between
4013 this headline and the next (so @emph{not} the entire subtree).
4014 @item
4015 If there is no active region, just toggle the checkbox at point.
4016 @end itemize
4017 @kindex M-S-@key{RET}
4018 @item M-S-@key{RET}
4019 Insert a new item with a checkbox.
4020 This works only if the cursor is already in a plain list item
4021 (@pxref{Plain lists}).
4022 @kindex C-c C-x o
4023 @item C-c C-x o
4024 @vindex org-track-ordered-property-with-tag
4025 @cindex property, ORDERED
4026 Toggle the @code{ORDERED} property of the entry, to toggle if checkboxes must
4027 be checked off in sequence.  A property is used for this behavior because
4028 this should be local to the current entry, not inherited like a tag.
4029 However, if you would like to @i{track} the value of this property with a tag
4030 for better visibility, customize the variable
4031 @code{org-track-ordered-property-with-tag}.
4032 @kindex C-c #
4033 @item C-c #
4034 Update the statistics cookie in the current outline entry.  When called with
4035 a @kbd{C-u} prefix, update the entire file.  Checkbox statistic cookies are
4036 updated automatically if you toggle checkboxes with @kbd{C-c C-c} and make
4037 new ones with @kbd{M-S-@key{RET}}.  TODO statistics cookies update when
4038 changing TODO states.  If you delete boxes/entries or add/change them by
4039 hand, use this command to get things back into sync.  Or simply toggle any
4040 entry twice (checkboxes with @kbd{C-c C-c}).
4041 @end table
4043 @node Tags, Properties and Columns, TODO Items, Top
4044 @chapter Tags
4045 @cindex tags
4046 @cindex headline tagging
4047 @cindex matching, tags
4048 @cindex sparse tree, tag based
4050 An excellent way to implement labels and contexts for cross-correlating
4051 information is to assign @i{tags} to headlines.  Org mode has extensive
4052 support for tags.
4054 @vindex org-tag-faces
4055 Every headline can contain a list of tags; they occur at the end of the
4056 headline.  Tags are normal words containing letters, numbers, @samp{_}, and
4057 @samp{@@}.  Tags must be preceded and followed by a single colon, e.g.,
4058 @samp{:work:}.  Several tags can be specified, as in @samp{:work:urgent:}.
4059 Tags will by default be in bold face with the same color as the headline.
4060 You may specify special faces for specific tags using the variable
4061 @code{org-tag-faces}, in much the same way as you can for TODO keywords
4062 (@pxref{Faces for TODO keywords}).
4064 @menu
4065 * Tag inheritance::             Tags use the tree structure of the outline
4066 * Setting tags::                How to assign tags to a headline
4067 * Tag searches::                Searching for combinations of tags
4068 @end menu
4070 @node Tag inheritance, Setting tags, Tags, Tags
4071 @section Tag inheritance
4072 @cindex tag inheritance
4073 @cindex inheritance, of tags
4074 @cindex sublevels, inclusion into tags match
4076 @i{Tags} make use of the hierarchical structure of outline trees.  If a
4077 heading has a certain tag, all subheadings will inherit the tag as
4078 well.  For example, in the list
4080 @example
4081 * Meeting with the French group      :work:
4082 ** Summary by Frank                  :boss:notes:
4083 *** TODO Prepare slides for him      :action:
4084 @end example
4086 @noindent
4087 the final heading will have the tags @samp{:work:}, @samp{:boss:},
4088 @samp{:notes:}, and @samp{:action:} even though the final heading is not
4089 explicitly marked with those tags.  You can also set tags that all entries in
4090 a file should inherit just as if these tags were defined in a hypothetical
4091 level zero that surrounds the entire file.  Use a line like this@footnote{As
4092 with all these in-buffer settings, pressing @kbd{C-c C-c} activates any
4093 changes in the line.}:
4095 @cindex #+FILETAGS
4096 @example
4097 #+FILETAGS: :Peter:Boss:Secret:
4098 @end example
4100 @noindent
4101 @vindex org-use-tag-inheritance
4102 @vindex org-tags-exclude-from-inheritance
4103 To limit tag inheritance to specific tags, or to turn it off entirely, use
4104 the variables @code{org-use-tag-inheritance} and
4105 @code{org-tags-exclude-from-inheritance}.
4107 @vindex org-tags-match-list-sublevels
4108 When a headline matches during a tags search while tag inheritance is turned
4109 on, all the sublevels in the same tree will (for a simple match form) match
4110 as well@footnote{This is only true if the search does not involve more
4111 complex tests including properties (@pxref{Property searches}).}.  The list
4112 of matches may then become very long.  If you only want to see the first tags
4113 match in a subtree, configure the variable
4114 @code{org-tags-match-list-sublevels} (not recommended).
4116 @node Setting tags, Tag searches, Tag inheritance, Tags
4117 @section Setting tags
4118 @cindex setting tags
4119 @cindex tags, setting
4121 @kindex M-@key{TAB}
4122 Tags can simply be typed into the buffer at the end of a headline.
4123 After a colon, @kbd{M-@key{TAB}} offers completion on tags.  There is
4124 also a special command for inserting tags:
4126 @table @kbd
4127 @kindex C-c C-q
4128 @item C-c C-q
4129 @cindex completion, of tags
4130 @vindex org-tags-column
4131 Enter new tags for the current headline.  Org mode will either offer
4132 completion or a special single-key interface for setting tags, see
4133 below.  After pressing @key{RET}, the tags will be inserted and aligned
4134 to @code{org-tags-column}.  When called with a @kbd{C-u} prefix, all
4135 tags in the current buffer will be aligned to that column, just to make
4136 things look nice.  TAGS are automatically realigned after promotion,
4137 demotion, and TODO state changes (@pxref{TODO basics}).
4138 @kindex C-c C-c
4139 @item C-c C-c
4140 When the cursor is in a headline, this does the same as @kbd{C-c C-q}.
4141 @end table
4143 @vindex org-tag-alist
4144 Org will support tag insertion based on a @emph{list of tags}.  By
4145 default this list is constructed dynamically, containing all tags
4146 currently used in the buffer.  You may also globally specify a hard list
4147 of tags with the variable @code{org-tag-alist}.  Finally you can set
4148 the default tags for a given file with lines like
4150 @cindex #+TAGS
4151 @example
4152 #+TAGS: @@work @@home @@tennisclub
4153 #+TAGS: laptop car pc sailboat
4154 @end example
4156 If you have globally defined your preferred set of tags using the
4157 variable @code{org-tag-alist}, but would like to use a dynamic tag list
4158 in a specific file, add an empty TAGS option line to that file:
4160 @example
4161 #+TAGS:
4162 @end example
4164 @vindex org-tag-persistent-alist
4165 If you have a preferred set of tags that you would like to use in every file,
4166 in addition to those defined on a per-file basis by TAGS option lines, then
4167 you may specify a list of tags with the variable
4168 @code{org-tag-persistent-alist}.  You may turn this off on a per-file basis
4169 by adding a STARTUP option line to that file:
4171 @example
4172 #+STARTUP: noptag
4173 @end example
4175 By default Org mode uses the standard minibuffer completion facilities for
4176 entering tags.  However, it also implements another, quicker, tag selection
4177 method called @emph{fast tag selection}.  This allows you to select and
4178 deselect tags with just a single key press.  For this to work well you should
4179 assign unique letters to most of your commonly used tags.  You can do this
4180 globally by configuring the variable @code{org-tag-alist} in your
4181 @file{.emacs} file.  For example, you may find the need to tag many items in
4182 different files with @samp{:@@home:}.  In this case you can set something
4183 like:
4185 @lisp
4186 (setq org-tag-alist '(("@@work" . ?w) ("@@home" . ?h) ("laptop" . ?l)))
4187 @end lisp
4189 @noindent If the tag is only relevant to the file you are working on, then you
4190 can instead set the TAGS option line as:
4192 @example
4193 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t)  laptop(l)  pc(p)
4194 @end example
4196 @noindent The tags interface will show the available tags in a splash
4197 window.  If you want to start a new line after a specific tag, insert
4198 @samp{\n} into the tag list
4200 @example
4201 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t) \n laptop(l)  pc(p)
4202 @end example
4204 @noindent or write them in two lines:
4206 @example
4207 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t)
4208 #+TAGS: laptop(l)  pc(p)
4209 @end example
4211 @noindent
4212 You can also group together tags that are mutually exclusive by using
4213 braces, as in:
4215 @example
4216 #+TAGS: @{ @@work(w)  @@home(h)  @@tennisclub(t) @}  laptop(l)  pc(p)
4217 @end example
4219 @noindent you indicate that at most one of @samp{@@work}, @samp{@@home},
4220 and @samp{@@tennisclub} should be selected.  Multiple such groups are allowed.
4222 @noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
4223 these lines to activate any changes.
4225 @noindent
4226 To set these mutually exclusive groups in the variable @code{org-tags-alist},
4227 you must use the dummy tags @code{:startgroup} and @code{:endgroup} instead
4228 of the braces.  Similarly, you can use @code{:newline} to indicate a line
4229 break.  The previous example would be set globally by the following
4230 configuration:
4232 @lisp
4233 (setq org-tag-alist '((:startgroup . nil)
4234                       ("@@work" . ?w) ("@@home" . ?h)
4235                       ("@@tennisclub" . ?t)
4236                       (:endgroup . nil)
4237                       ("laptop" . ?l) ("pc" . ?p)))
4238 @end lisp
4240 If at least one tag has a selection key then pressing @kbd{C-c C-c} will
4241 automatically present you with a special interface, listing inherited tags,
4242 the tags of the current headline, and a list of all valid tags with
4243 corresponding keys@footnote{Keys will automatically be assigned to tags which
4244 have no configured keys.}.  In this interface, you can use the following
4245 keys:
4247 @table @kbd
4248 @item a-z...
4249 Pressing keys assigned to tags will add or remove them from the list of
4250 tags in the current line.  Selecting a tag in a group of mutually
4251 exclusive tags will turn off any other tags from that group.
4252 @kindex @key{TAB}
4253 @item @key{TAB}
4254 Enter a tag in the minibuffer, even if the tag is not in the predefined
4255 list.  You will be able to complete on all tags present in the buffer.
4256 @kindex @key{SPC}
4257 @item @key{SPC}
4258 Clear all tags for this line.
4259 @kindex @key{RET}
4260 @item @key{RET}
4261 Accept the modified set.
4262 @item C-g
4263 Abort without installing changes.
4264 @item q
4265 If @kbd{q} is not assigned to a tag, it aborts like @kbd{C-g}.
4266 @item !
4267 Turn off groups of mutually exclusive tags.  Use this to (as an
4268 exception) assign several tags from such a group.
4269 @item C-c
4270 Toggle auto-exit after the next change (see below).
4271 If you are using expert mode, the first @kbd{C-c} will display the
4272 selection window.
4273 @end table
4275 @noindent
4276 This method lets you assign tags to a headline with very few keys.  With
4277 the above setup, you could clear the current tags and set @samp{@@home},
4278 @samp{laptop} and @samp{pc} tags with just the following keys: @kbd{C-c
4279 C-c @key{SPC} h l p @key{RET}}.  Switching from @samp{@@home} to
4280 @samp{@@work} would be done with @kbd{C-c C-c w @key{RET}} or
4281 alternatively with @kbd{C-c C-c C-c w}.  Adding the non-predefined tag
4282 @samp{Sarah} could be done with @kbd{C-c C-c @key{TAB} S a r a h
4283 @key{RET} @key{RET}}.
4285 @vindex org-fast-tag-selection-single-key
4286 If you find that most of the time you need only a single key press to
4287 modify your list of tags, set the variable
4288 @code{org-fast-tag-selection-single-key}.  Then you no longer have to
4289 press @key{RET} to exit fast tag selection---it will immediately exit
4290 after the first change.  If you then occasionally need more keys, press
4291 @kbd{C-c} to turn off auto-exit for the current tag selection process
4292 (in effect: start selection with @kbd{C-c C-c C-c} instead of @kbd{C-c
4293 C-c}).  If you set the variable to the value @code{expert}, the special
4294 window is not even shown for single-key tag selection, it comes up only
4295 when you press an extra @kbd{C-c}.
4297 @vindex org-complete-tags-always-offer-all-agenda-tags
4298 As said before, when setting tags and @code{org-tag-alist} is nil, then the
4299 list of tags in the current buffer is used.  Normally, this behavior is very
4300 convenient, except in org remember buffers (@pxref{Remember}), because there
4301 are no tags that can be calculated dynamically.  Here, you most probably want
4302 to have completion for all tags in all agenda files.  This can be done by
4303 setting @code{org-complete-tags-always-offer-all-agenda-tags} to non-nil in
4304 those buffers.
4306 @lisp
4307 (add-hook 'org-remember-mode-hook
4308           (lambda ()
4309             (set (make-local-variable
4310                   'org-complete-tags-always-offer-all-agenda-tags)
4311                  t)))
4312 @end lisp
4314 Of course, you can also set it to @code{t} globally if you always want to
4315 have completion of all tags in all agenda files.
4317 @node Tag searches,  , Setting tags, Tags
4318 @section Tag searches
4319 @cindex tag searches
4320 @cindex searching for tags
4322 Once a system of tags has been set up, it can be used to collect related
4323 information into special lists.
4325 @table @kbd
4326 @kindex C-c \
4327 @kindex C-c / m
4328 @item C-c \
4329 @itemx C-c / m
4330 Create a sparse tree with all headlines matching a tags search.  With a
4331 @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
4332 @kindex C-c a m
4333 @item C-c a m
4334 Create a global list of tag matches from all agenda files.
4335 @xref{Matching tags and properties}.
4336 @kindex C-c a M
4337 @item C-c a M
4338 @vindex org-tags-match-list-sublevels
4339 Create a global list of tag matches from all agenda files, but check
4340 only TODO items and force checking subitems (see variable
4341 @code{org-tags-match-list-sublevels}).
4342 @end table
4344 These commands all prompt for a match string which allows basic Boolean logic
4345 like @samp{+boss+urgent-project1}, to find entries with tags @samp{boss} and
4346 @samp{urgent}, but not @samp{project1}, or @samp{Kathy|Sally} to find entries
4347 which are tagged, like @samp{Kathy} or @samp{Sally}.  The full syntax of the search
4348 string is rich and allows also matching against TODO keywords, entry levels
4349 and properties.  For a complete description with many examples, see
4350 @ref{Matching tags and properties}.
4353 @node Properties and Columns, Dates and Times, Tags, Top
4354 @chapter Properties and Columns
4355 @cindex properties
4357 Properties are a set of key-value pairs associated with an entry.  There
4358 are two main applications for properties in Org mode.  First, properties
4359 are like tags, but with a value.  Second, you can use properties to
4360 implement (very basic) database capabilities in an Org buffer.  For
4361 an example of the first application, imagine maintaining a file where
4362 you document bugs and plan releases for a piece of software.  Instead of
4363 using tags like @code{:release_1:}, @code{:release_2:}, one can use a
4364 property, say @code{:Release:}, that in different subtrees has different
4365 values, such as @code{1.0} or @code{2.0}.  For an example of the second
4366 application of properties, imagine keeping track of your music CDs,
4367 where properties could be things such as the album, artist, date of
4368 release, number of tracks, and so on.
4370 Properties can be conveniently edited and viewed in column view
4371 (@pxref{Column view}).
4373 @menu
4374 * Property syntax::             How properties are spelled out
4375 * Special properties::          Access to other Org mode features
4376 * Property searches::           Matching property values
4377 * Property inheritance::        Passing values down the tree
4378 * Column view::                 Tabular viewing and editing
4379 * Property API::                Properties for Lisp programmers
4380 @end menu
4382 @node Property syntax, Special properties, Properties and Columns, Properties and Columns
4383 @section Property syntax
4384 @cindex property syntax
4385 @cindex drawer, for properties
4387 Properties are key-value pairs.  They need to be inserted into a special
4388 drawer (@pxref{Drawers}) with the name @code{PROPERTIES}.  Each property
4389 is specified on a single line, with the key (surrounded by colons)
4390 first, and the value after it.  Here is an example:
4392 @example
4393 * CD collection
4394 ** Classic
4395 *** Goldberg Variations
4396     :PROPERTIES:
4397     :Title:     Goldberg Variations
4398     :Composer:  J.S. Bach
4399     :Artist:    Glen Gould
4400     :Publisher: Deutsche Grammophon
4401     :NDisks:    1
4402     :END:
4403 @end example
4405 You may define the allowed values for a particular property @samp{:Xyz:}
4406 by setting a property @samp{:Xyz_ALL:}.  This special property is
4407 @emph{inherited}, so if you set it in a level 1 entry, it will apply to
4408 the entire tree.  When allowed values are defined, setting the
4409 corresponding property becomes easier and is less prone to typing
4410 errors.  For the example with the CD collection, we can predefine
4411 publishers and the number of disks in a box like this:
4413 @example
4414 * CD collection
4415   :PROPERTIES:
4416   :NDisks_ALL:  1 2 3 4
4417   :Publisher_ALL: "Deutsche Grammophon" Philips EMI
4418   :END:
4419 @end example
4421 If you want to set properties that can be inherited by any entry in a
4422 file, use a line like
4423 @cindex property, _ALL
4424 @cindex #+PROPERTY
4425 @example
4426 #+PROPERTY: NDisks_ALL 1 2 3 4
4427 @end example
4429 @vindex org-global-properties
4430 Property values set with the global variable
4431 @code{org-global-properties} can be inherited by all entries in all
4432 Org files.
4434 @noindent
4435 The following commands help to work with properties:
4437 @table @kbd
4438 @kindex M-@key{TAB}
4439 @item M-@key{TAB}
4440 After an initial colon in a line, complete property keys.  All keys used
4441 in the current file will be offered as possible completions.
4442 @kindex C-c C-x p
4443 @item C-c C-x p
4444 Set a property.  This prompts for a property name and a value.  If
4445 necessary, the property drawer is created as well.
4446 @item M-x org-insert-property-drawer
4447 Insert a property drawer into the current entry.  The drawer will be
4448 inserted early in the entry, but after the lines with planning
4449 information like deadlines.
4450 @kindex C-c C-c
4451 @item C-c C-c
4452 With the cursor in a property drawer, this executes property commands.
4453 @item C-c C-c s
4454 Set a property in the current entry.  Both the property and the value
4455 can be inserted using completion.
4456 @kindex S-@key{right}
4457 @kindex S-@key{left}
4458 @item S-@key{left}/@key{right}
4459 Switch property at point to the next/previous allowed value.
4460 @item C-c C-c d
4461 Remove a property from the current entry.
4462 @item C-c C-c D
4463 Globally remove a property, from all entries in the current file.
4464 @item C-c C-c c
4465 Compute the property at point, using the operator and scope from the
4466 nearest column format definition.
4467 @end table
4469 @node Special properties, Property searches, Property syntax, Properties and Columns
4470 @section Special properties
4471 @cindex properties, special
4473 Special properties provide an alternative access method to Org mode
4474 features, like the TODO state or the priority of an entry, discussed in the
4475 previous chapters.  This interface exists so that you can include
4476 these states in a column view (@pxref{Column view}), or to use them in
4477 queries.  The following property names are special and should not be
4478 used as keys in the properties drawer:
4480 @cindex property, special, TODO
4481 @cindex property, special, TAGS
4482 @cindex property, special, ALLTAGS
4483 @cindex property, special, CATEGORY
4484 @cindex property, special, PRIORITY
4485 @cindex property, special, DEADLINE
4486 @cindex property, special, SCHEDULED
4487 @cindex property, special, CLOSED
4488 @cindex property, special, TIMESTAMP
4489 @cindex property, special, TIMESTAMP_IA
4490 @cindex property, special, CLOCKSUM
4491 @cindex property, special, BLOCKED
4492 @c guessing that ITEM is needed in this area; also, should this list be sorted?
4493 @cindex property, special, ITEM
4494 @example
4495 TODO         @r{The TODO keyword of the entry.}
4496 TAGS         @r{The tags defined directly in the headline.}
4497 ALLTAGS      @r{All tags, including inherited ones.}
4498 CATEGORY     @r{The category of an entry.}
4499 PRIORITY     @r{The priority of the entry, a string with a single letter.}
4500 DEADLINE     @r{The deadline time string, without the angular brackets.}
4501 SCHEDULED    @r{The scheduling timestamp, without the angular brackets.}
4502 CLOSED       @r{When was this entry closed?}
4503 TIMESTAMP    @r{The first keyword-less timestamp in the entry.}
4504 TIMESTAMP_IA @r{The first inactive timestamp in the entry.}
4505 CLOCKSUM     @r{The sum of CLOCK intervals in the subtree.  @code{org-clock-sum}}
4506              @r{must be run first to compute the values.}
4507 BLOCKED      @r{"t" if task is currently blocked by children or siblings}
4508 ITEM         @r{The content of the entry.}
4509 @end example
4511 @node Property searches, Property inheritance, Special properties, Properties and Columns
4512 @section Property searches
4513 @cindex properties, searching
4514 @cindex searching, of properties
4516 To create sparse trees and special lists with selection based on properties,
4517 the same commands are used as for tag searches (@pxref{Tag searches}).
4518 @table @kbd
4519 @kindex C-c \
4520 @kindex C-c / m
4521 @item C-c \
4522 @itemx C-c / m
4523 Create a sparse tree with all matching entries.  With a
4524 @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
4525 @kindex C-c a m
4526 @item C-c a m
4527 Create a global list of tag/property  matches from all agenda files.
4528 @xref{Matching tags and properties}.
4529 @kindex C-c a M
4530 @item C-c a M
4531 @vindex org-tags-match-list-sublevels
4532 Create a global list of tag matches from all agenda files, but check
4533 only TODO items and force checking of subitems (see variable
4534 @code{org-tags-match-list-sublevels}).
4535 @end table
4537 The syntax for the search string is described in @ref{Matching tags and
4538 properties}.
4540 There is also a special command for creating sparse trees based on a
4541 single property:
4543 @table @kbd
4544 @kindex C-c / p
4545 @item C-c / p
4546 Create a sparse tree based on the value of a property.  This first
4547 prompts for the name of a property, and then for a value.  A sparse tree
4548 is created with all entries that define this property with the given
4549 value.  If you enclose the value into curly braces, it is interpreted as
4550 a regular expression and matched against the property values.
4551 @end table
4553 @node Property inheritance, Column view, Property searches, Properties and Columns
4554 @section Property Inheritance
4555 @cindex properties, inheritance
4556 @cindex inheritance, of properties
4558 @vindex org-use-property-inheritance
4559 The outline structure of Org-mode documents lends itself for an
4560 inheritance model of properties: if the parent in a tree has a certain
4561 property, the children can inherit this property.  Org mode does not
4562 turn this on by default, because it can slow down property searches
4563 significantly and is often not needed.  However, if you find inheritance
4564 useful, you can turn it on by setting the variable
4565 @code{org-use-property-inheritance}.  It may be set to @code{t} to make
4566 all properties inherited from the parent, to a list of properties
4567 that should be inherited, or to a regular expression that matches
4568 inherited properties.
4570 Org mode has a few properties for which inheritance is hard-coded, at
4571 least for the special applications for which they are used:
4573 @cindex property, COLUMNS
4574 @table @code
4575 @item COLUMNS
4576 The @code{:COLUMNS:} property defines the format of column view
4577 (@pxref{Column view}).  It is inherited in the sense that the level
4578 where a @code{:COLUMNS:} property is defined is used as the starting
4579 point for a column view table, independently of the location in the
4580 subtree from where columns view is turned on.
4581 @item CATEGORY
4582 @cindex property, CATEGORY
4583 For agenda view, a category set through a @code{:CATEGORY:} property
4584 applies to the entire subtree.
4585 @item ARCHIVE
4586 @cindex property, ARCHIVE
4587 For archiving, the @code{:ARCHIVE:} property may define the archive
4588 location for the entire subtree (@pxref{Moving subtrees}).
4589 @item LOGGING
4590 @cindex property, LOGGING
4591 The LOGGING property may define logging settings for an entry or a
4592 subtree (@pxref{Tracking TODO state changes}).
4593 @end table
4595 @node Column view, Property API, Property inheritance, Properties and Columns
4596 @section Column view
4598 A great way to view and edit properties in an outline tree is
4599 @emph{column view}.  In column view, each outline node is turned into a
4600 table row.  Columns in this table provide access to properties of the
4601 entries.  Org mode implements columns by overlaying a tabular structure
4602 over the headline of each item.  While the headlines have been turned
4603 into a table row, you can still change the visibility of the outline
4604 tree.  For example, you get a compact table by switching to CONTENTS
4605 view (@kbd{S-@key{TAB} S-@key{TAB}}, or simply @kbd{c} while column view
4606 is active), but you can still open, read, and edit the entry below each
4607 headline.  Or, you can switch to column view after executing a sparse
4608 tree command and in this way get a table only for the selected items.
4609 Column view also works in agenda buffers (@pxref{Agenda Views}) where
4610 queries have collected selected items, possibly from a number of files.
4612 @menu
4613 * Defining columns::            The COLUMNS format property
4614 * Using column view::           How to create and use column view
4615 * Capturing column view::       A dynamic block for column view
4616 @end menu
4618 @node Defining columns, Using column view, Column view, Column view
4619 @subsection Defining columns
4620 @cindex column view, for properties
4621 @cindex properties, column view
4623 Setting up a column view first requires defining the columns.  This is
4624 done by defining a column format line.
4626 @menu
4627 * Scope of column definitions::  Where defined, where valid?
4628 * Column attributes::           Appearance and content of a column
4629 @end menu
4631 @node Scope of column definitions, Column attributes, Defining columns, Defining columns
4632 @subsubsection Scope of column definitions
4634 To define a column format for an entire file, use a line like
4636 @cindex #+COLUMNS
4637 @example
4638 #+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
4639 @end example
4641 To specify a format that only applies to a specific tree, add a
4642 @code{:COLUMNS:} property to the top node of that tree, for example:
4644 @example
4645 ** Top node for columns view
4646    :PROPERTIES:
4647    :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
4648    :END:
4649 @end example
4651 If a @code{:COLUMNS:} property is present in an entry, it defines columns
4652 for the entry itself, and for the entire subtree below it.  Since the
4653 column definition is part of the hierarchical structure of the document,
4654 you can define columns on level 1 that are general enough for all
4655 sublevels, and more specific columns further down, when you edit a
4656 deeper part of the tree.
4658 @node Column attributes,  , Scope of column definitions, Defining columns
4659 @subsubsection Column attributes
4660 A column definition sets the attributes of a column.  The general
4661 definition looks like this:
4663 @example
4664  %[@var{width}]@var{property}[(@var{title})][@{@var{summary-type}@}]
4665 @end example
4667 @noindent
4668 Except for the percent sign and the property name, all items are
4669 optional.  The individual parts have the following meaning:
4671 @example
4672 @var{width}           @r{An integer specifying the width of the column in characters.}
4673                 @r{If omitted, the width will be determined automatically.}
4674 @var{property}        @r{The property that should be edited in this column.}
4675                 @r{Special properties representing meta data are allowed here}
4676                 @r{as well (@pxref{Special properties})}
4677 (title)         @r{The header text for the column. If omitted, the}
4678                 @r{property name is used.}
4679 @{@var{summary-type}@}  @r{The summary type.  If specified, the column values for}
4680                 @r{parent nodes are computed from the children.}
4681                 @r{Supported summary types are:}
4682                 @{+@}       @r{Sum numbers in this column.}
4683                 @{+;%.1f@}  @r{Like @samp{+}, but format result with @samp{%.1f}.}
4684                 @{$@}       @r{Currency, short for @samp{+;%.2f}.}
4685                 @{:@}       @r{Sum times, HH:MM:SS, plain numbers are hours.}
4686                 @{X@}       @r{Checkbox status, @samp{[X]} if all children are @samp{[X]}.}
4687                 @{X/@}      @r{Checkbox status, @samp{[n/m]}.}
4688                 @{X%@}      @r{Checkbox status, @samp{[n%]}.}
4689                 @{min@}     @r{Smallest number in column.}
4690                 @{max@}     @r{Largest number.}
4691                 @{mean@}    @r{Arithmetic mean of numbers.}
4692                 @{:min@}    @r{Smallest time value in column.}
4693                 @{:max@}    @r{Largest time value.}
4694                 @{:mean@}   @r{Arithmetic mean of time values.}
4695                 @{@@min@}   @r{Minimum age (in days/hours/mins/seconds).}
4696                 @{@@max@}   @r{Maximum age (in days/hours/mins/seconds).}
4697                 @{@@mean@}  @r{Arithmetic mean of ages (in days/hours/mins/seconds).}
4698 @end example
4700 @noindent
4701 Be aware that you can only have one summary type for any property you
4702 include. Subsequent columns referencing the same property will all display the
4703 same summary information.
4705 Here is an example for a complete columns definition, along with allowed
4706 values.
4708 @example
4709 :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.}
4710                    %10Time_Estimate@{:@} %CLOCKSUM
4711 :Owner_ALL:    Tammy Mark Karl Lisa Don
4712 :Status_ALL:   "In progress" "Not started yet" "Finished" ""
4713 :Approved_ALL: "[ ]" "[X]"
4714 @end example
4716 @noindent
4717 The first column, @samp{%25ITEM}, means the first 25 characters of the
4718 item itself, i.e. of the headline.  You probably always should start the
4719 column definition with the @samp{ITEM} specifier.  The other specifiers
4720 create columns @samp{Owner} with a list of names as allowed values, for
4721 @samp{Status} with four different possible values, and for a checkbox
4722 field @samp{Approved}.  When no width is given after the @samp{%}
4723 character, the column will be exactly as wide as it needs to be in order
4724 to fully display all values.  The @samp{Approved} column does have a
4725 modified title (@samp{Approved?}, with a question mark).  Summaries will
4726 be created for the @samp{Time_Estimate} column by adding time duration
4727 expressions like HH:MM, and for the @samp{Approved} column, by providing
4728 an @samp{[X]} status if all children have been checked.  The
4729 @samp{CLOCKSUM} column is special, it lists the sum of CLOCK intervals
4730 in the subtree.
4732 @node Using column view, Capturing column view, Defining columns, Column view
4733 @subsection Using column view
4735 @table @kbd
4736 @tsubheading{Turning column view on and off}
4737 @kindex C-c C-x C-c
4738 @item C-c C-x C-c
4739 @vindex org-columns-default-format
4740 Turn on column view.  If the cursor is before the first headline in the file,
4741 column view is turned on for the entire file, using the @code{#+COLUMNS}
4742 definition.  If the cursor is somewhere inside the outline, this command
4743 searches the hierarchy, up from point, for a @code{:COLUMNS:} property that
4744 defines a format.  When one is found, the column view table is established
4745 for the tree starting at the entry that contains the @code{:COLUMNS:}
4746 property.  If no such property is found, the format is taken from the
4747 @code{#+COLUMNS} line or from the variable @code{org-columns-default-format},
4748 and column view is established for the current entry and its subtree.
4749 @kindex r
4750 @item r
4751 Recreate the column view, to include recent changes made in the buffer.
4752 @kindex g
4753 @item g
4754 Same as @kbd{r}.
4755 @kindex q
4756 @item q
4757 Exit column view.
4758 @tsubheading{Editing values}
4759 @item @key{left} @key{right} @key{up} @key{down}
4760 Move through the column view from field to field.
4761 @kindex S-@key{left}
4762 @kindex S-@key{right}
4763 @item  S-@key{left}/@key{right}
4764 Switch to the next/previous allowed value of the field.  For this, you
4765 have to have specified allowed values for a property.
4766 @item 1..9,0
4767 Directly select the nth allowed value, @kbd{0} selects the 10th value.
4768 @kindex n
4769 @kindex p
4770 @itemx  n / p
4771 Same as @kbd{S-@key{left}/@key{right}}
4772 @kindex e
4773 @item e
4774 Edit the property at point.  For the special properties, this will
4775 invoke the same interface that you normally use to change that
4776 property.  For example, when editing a TAGS property, the tag completion
4777 or fast selection interface will pop up.
4778 @kindex C-c C-c
4779 @item C-c C-c
4780 When there is a checkbox at point, toggle it.
4781 @kindex v
4782 @item v
4783 View the full value of this property.  This is useful if the width of
4784 the column is smaller than that of the value.
4785 @kindex a
4786 @item a
4787 Edit the list of allowed values for this property.  If the list is found
4788 in the hierarchy, the modified values is stored there.  If no list is
4789 found, the new value is stored in the first entry that is part of the
4790 current column view.
4791 @tsubheading{Modifying the table structure}
4792 @kindex <
4793 @kindex >
4794 @item < / >
4795 Make the column narrower/wider by one character.
4796 @kindex S-M-@key{right}
4797 @item S-M-@key{right}
4798 Insert a new column, to the left of the current column.
4799 @kindex S-M-@key{left}
4800 @item S-M-@key{left}
4801 Delete the current column.
4802 @end table
4804 @node Capturing column view,  , Using column view, Column view
4805 @subsection Capturing column view
4807 Since column view is just an overlay over a buffer, it cannot be
4808 exported or printed directly.  If you want to capture a column view, use
4809 a @code{columnview} dynamic block (@pxref{Dynamic blocks}).  The frame
4810 of this block looks like this:
4812 @cindex #+BEGIN, columnview
4813 @example
4814 * The column view
4815 #+BEGIN: columnview :hlines 1 :id "label"
4817 #+END:
4818 @end example
4820 @noindent This dynamic block has the following parameters:
4822 @table @code
4823 @item :id
4824 This is the most important parameter.  Column view is a feature that is
4825 often localized to a certain (sub)tree, and the capture block might be
4826 at a different location in the file.  To identify the tree whose view to
4827 capture, you can use 4 values:
4828 @cindex property, ID
4829 @example
4830 local     @r{use the tree in which the capture block is located}
4831 global    @r{make a global view, including all headings in the file}
4832 "file:@var{path-to-file}"
4833           @r{run column view at the top of this file}
4834 "@var{ID}"      @r{call column view in the tree that has an @code{:ID:}}
4835           @r{property with the value @i{label}.  You can use}
4836           @r{@kbd{M-x org-id-copy} to create a globally unique ID for}
4837           @r{the current entry and copy it to the kill-ring.}
4838 @end example
4839 @item :hlines
4840 When @code{t}, insert an hline after every line.  When a number @var{N}, insert
4841 an hline before each headline with level @code{<= @var{N}}.
4842 @item :vlines
4843 When set to @code{t}, force column groups to get vertical lines.
4844 @item :maxlevel
4845 When set to a number, don't capture entries below this level.
4846 @item :skip-empty-rows
4847 When set to @code{t}, skip rows where the only non-empty specifier of the
4848 column view is @code{ITEM}.
4850 @end table
4852 @noindent
4853 The following commands insert or update the dynamic block:
4855 @table @kbd
4856 @kindex C-c C-x i
4857 @item C-c C-x i
4858 Insert a dynamic block capturing a column view.  You will be prompted
4859 for the scope or ID of the view.
4860 @kindex C-c C-c
4861 @item C-c C-c
4862 @kindex C-c C-x C-u
4863 @itemx C-c C-x C-u
4864 Update dynamic block at point.  The cursor needs to be in the
4865 @code{#+BEGIN} line of the dynamic block.
4866 @kindex C-u C-c C-x C-u
4867 @item C-u C-c C-x C-u
4868 Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
4869 you have several clock table blocks in a buffer.
4870 @end table
4872 You can add formulas to the column view table and you may add plotting
4873 instructions in front of the table---these will survive an update of the
4874 block.  If there is a @code{#+TBLFM:} after the table, the table will
4875 actually be recalculated automatically after an update.
4877 An alternative way to capture and process property values into a table is
4878 provided by Eric Schulte's @file{org-collector.el} which is a contributed
4879 package@footnote{Contributed packages are not part of Emacs, but are
4880 distributed with the main distribution of Org (visit
4881 @uref{http://orgmode.org}).}.  It provides a general API to collect
4882 properties from entries in a certain scope, and arbitrary Lisp expressions to
4883 process these values before inserting them into a table or a dynamic block.
4885 @node Property API,  , Column view, Properties and Columns
4886 @section The Property API
4887 @cindex properties, API
4888 @cindex API, for properties
4890 There is a full API for accessing and changing properties.  This API can
4891 be used by Emacs Lisp programs to work with properties and to implement
4892 features based on them.  For more information see @ref{Using the
4893 property API}.
4895 @node Dates and Times, Capture - Refile - Archive, Properties and Columns, Top
4896 @chapter Dates and Times
4897 @cindex dates
4898 @cindex times
4899 @cindex timestamp
4900 @cindex date stamp
4902 To assist project planning, TODO items can be labeled with a date and/or
4903 a time.  The specially formatted string carrying the date and time
4904 information is called a @emph{timestamp} in Org mode.  This may be a
4905 little confusing because timestamp is often used as indicating when
4906 something was created or last changed.  However, in Org mode this term
4907 is used in a much wider sense.
4909 @menu
4910 * Timestamps::                  Assigning a time to a tree entry
4911 * Creating timestamps::         Commands which insert timestamps
4912 * Deadlines and scheduling::    Planning your work
4913 * Clocking work time::          Tracking how long you spend on a task
4914 * Resolving idle time::         Resolving time if you've been idle
4915 * Effort estimates::            Planning work effort in advance
4916 * Relative timer::              Notes with a running timer
4917 @end menu
4920 @node Timestamps, Creating timestamps, Dates and Times, Dates and Times
4921 @section Timestamps, deadlines, and scheduling
4922 @cindex timestamps
4923 @cindex ranges, time
4924 @cindex date stamps
4925 @cindex deadlines
4926 @cindex scheduling
4928 A timestamp is a specification of a date (possibly with a time or a range of
4929 times) in a special format, either @samp{<2003-09-16 Tue>} or
4930 @samp{<2003-09-16 Tue 09:39>} or @samp{<2003-09-16 Tue
4931 12:00-12:30>}@footnote{This is inspired by the standard ISO 8601 date/time
4932 format.  To use an alternative format, see @ref{Custom time format}.}.  A
4933 timestamp can appear anywhere in the headline or body of an Org tree entry.
4934 Its presence causes entries to be shown on specific dates in the agenda
4935 (@pxref{Weekly/daily agenda}).  We distinguish:
4937 @table @var
4938 @item Plain timestamp; Event; Appointment
4939 @cindex timestamp
4940 A simple timestamp just assigns a date/time to an item.  This is just
4941 like writing down an appointment or event in a paper agenda.  In the
4942 timeline and agenda displays, the headline of an entry associated with a
4943 plain timestamp will be shown exactly on that date.
4945 @example
4946 * Meet Peter at the movies <2006-11-01 Wed 19:15>
4947 * Discussion on climate change <2006-11-02 Thu 20:00-22:00>
4948 @end example
4950 @item Timestamp with repeater interval
4951 @cindex timestamp, with repeater interval
4952 A timestamp may contain a @emph{repeater interval}, indicating that it
4953 applies not only on the given date, but again and again after a certain
4954 interval of N days (d), weeks (w), months (m), or years (y).  The
4955 following will show up in the agenda every Wednesday:
4957 @example
4958 * Pick up Sam at school <2007-05-16 Wed 12:30 +1w>
4959 @end example
4961 @item Diary-style sexp entries
4962 For more complex date specifications, Org mode supports using the
4963 special sexp diary entries implemented in the Emacs calendar/diary
4964 package.  For example
4966 @example
4967 * The nerd meeting on every 2nd Thursday of the month
4968   <%%(diary-float t 4 2)>
4969 @end example
4971 @item Time/Date range
4972 @cindex timerange
4973 @cindex date range
4974 Two timestamps connected by @samp{--} denote a range.  The headline
4975 will be shown on the first and last day of the range, and on any dates
4976 that are displayed and fall in the range.  Here is an example:
4978 @example
4979 ** Meeting in Amsterdam
4980    <2004-08-23 Mon>--<2004-08-26 Thu>
4981 @end example
4983 @item Inactive timestamp
4984 @cindex timestamp, inactive
4985 @cindex inactive timestamp
4986 Just like a plain timestamp, but with square brackets instead of
4987 angular ones.  These timestamps are inactive in the sense that they do
4988 @emph{not} trigger an entry to show up in the agenda.
4990 @example
4991 * Gillian comes late for the fifth time [2006-11-01 Wed]
4992 @end example
4994 @end table
4996 @node Creating timestamps, Deadlines and scheduling, Timestamps, Dates and Times
4997 @section Creating timestamps
4998 @cindex creating timestamps
4999 @cindex timestamps, creating
5001 For Org mode to recognize timestamps, they need to be in the specific
5002 format.  All commands listed below produce timestamps in the correct
5003 format.
5005 @table @kbd
5006 @kindex C-c .
5007 @item C-c .
5008 Prompt for a date and insert a corresponding timestamp.  When the cursor is
5009 at an existing timestamp in the buffer, the command is used to modify this
5010 timestamp instead of inserting a new one.  When this command is used twice in
5011 succession, a time range is inserted.
5013 @kindex C-c !
5014 @item C-c !
5015 Like @kbd{C-c .}, but insert an inactive timestamp that will not cause
5016 an agenda entry.
5018 @kindex C-u C-c .
5019 @kindex C-u C-c !
5020 @item C-u C-c .
5021 @itemx C-u C-c !
5022 @vindex org-time-stamp-rounding-minutes
5023 Like @kbd{C-c .} and @kbd{C-c !}, but use the alternative format which
5024 contains date and time.  The default time can be rounded to multiples of 5
5025 minutes, see the option @code{org-time-stamp-rounding-minutes}.
5027 @kindex C-c <
5028 @item C-c <
5029 Insert a timestamp corresponding to the cursor date in the Calendar.
5031 @kindex C-c >
5032 @item C-c >
5033 Access the Emacs calendar for the current date.  If there is a
5034 timestamp in the current line, go to the corresponding date
5035 instead.
5037 @kindex C-c C-o
5038 @item C-c C-o
5039 Access the agenda for the date given by the timestamp or -range at
5040 point (@pxref{Weekly/daily agenda}).
5042 @kindex S-@key{left}
5043 @kindex S-@key{right}
5044 @item S-@key{left}
5045 @itemx S-@key{right}
5046 Change date at cursor by one day.  These key bindings conflict with
5047 shift-selection and related modes (@pxref{Conflicts}).
5049 @kindex S-@key{up}
5050 @kindex S-@key{down}
5051 @item S-@key{up}
5052 @itemx S-@key{down}
5053 Change the item under the cursor in a timestamp.  The cursor can be on a
5054 year, month, day, hour or minute.  When the timestamp contains a time range
5055 like @samp{15:30-16:30}, modifying the first time will also shift the second,
5056 shifting the time block with constant length.  To change the length, modify
5057 the second time.  Note that if the cursor is in a headline and not at a
5058 timestamp, these same keys modify the priority of an item.
5059 (@pxref{Priorities}). The key bindings also conflict with shift-selection and
5060 related modes (@pxref{Conflicts}).
5062 @kindex C-c C-y
5063 @cindex evaluate time range
5064 @item C-c C-y
5065 Evaluate a time range by computing the difference between start and end.
5066 With a prefix argument, insert result after the time range (in a table: into
5067 the following column).
5068 @end table
5071 @menu
5072 * The date/time prompt::        How Org mode helps you entering date and time
5073 * Custom time format::          Making dates look different
5074 @end menu
5076 @node The date/time prompt, Custom time format, Creating timestamps, Creating timestamps
5077 @subsection The date/time prompt
5078 @cindex date, reading in minibuffer
5079 @cindex time, reading in minibuffer
5081 @vindex org-read-date-prefer-future
5082 When Org mode prompts for a date/time, the default is shown in default
5083 date/time format, and the prompt therefore seems to ask for a specific
5084 format.  But it will in fact accept any string containing some date and/or
5085 time information, and it is really smart about interpreting your input.  You
5086 can, for example, use @kbd{C-y} to paste a (possibly multi-line) string
5087 copied from an email message.  Org mode will find whatever information is in
5088 there and derive anything you have not specified from the @emph{default date
5089 and time}.  The default is usually the current date and time, but when
5090 modifying an existing timestamp, or when entering the second stamp of a
5091 range, it is taken from the stamp in the buffer.  When filling in
5092 information, Org mode assumes that most of the time you will want to enter a
5093 date in the future: if you omit the month/year and the given day/month is
5094 @i{before} today, it will assume that you mean a future date@footnote{See the
5095 variable @code{org-read-date-prefer-future}.  You may set that variable to
5096 the symbol @code{time} to even make a time before now shift the date to
5097 tomorrow.}.  If the date has been automatically shifted into the future, the
5098 time prompt will show this with @samp{(=>F).}
5100 For example, let's assume that today is @b{June 13, 2006}.  Here is how
5101 various inputs will be interpreted, the items filled in by Org mode are
5102 in @b{bold}.
5104 @example
5105 3-2-5         --> 2003-02-05
5106 2/5/3         --> 2003-02-05
5107 14            --> @b{2006}-@b{06}-14
5108 12            --> @b{2006}-@b{07}-12
5109 2/5           --> @b{2003}-02-05
5110 Fri           --> nearest Friday (defaultdate or later)
5111 sep 15        --> @b{2006}-09-15
5112 feb 15        --> @b{2007}-02-15
5113 sep 12 9      --> 2009-09-12
5114 12:45         --> @b{2006}-@b{06}-@b{13} 12:45
5115 22 sept 0:34  --> @b{2006}-09-22 0:34
5116 w4            --> ISO week for of the current year @b{2006}
5117 2012 w4 fri   --> Friday of ISO week 4 in 2012
5118 2012-w04-5    --> Same as above
5119 @end example
5121 Furthermore you can specify a relative date by giving, as the
5122 @emph{first} thing in the input: a plus/minus sign, a number and a
5123 letter ([dwmy]) to indicate change in days, weeks, months, or years.  With a
5124 single plus or minus, the date is always relative to today.  With a
5125 double plus or minus, it is relative to the default date.  If instead of
5126 a single letter, you use the abbreviation of day name, the date will be
5127 the nth such day.  E.g.
5129 @example
5130 +0            --> today
5131 .             --> today
5132 +4d           --> four days from today
5133 +4            --> same as above
5134 +2w           --> two weeks from today
5135 ++5           --> five days from default date
5136 +2tue         --> second Tuesday from now.
5137 @end example
5139 @vindex parse-time-months
5140 @vindex parse-time-weekdays
5141 The function understands English month and weekday abbreviations.  If
5142 you want to use unabbreviated names and/or other languages, configure
5143 the variables @code{parse-time-months} and @code{parse-time-weekdays}.
5145 @cindex calendar, for selecting date
5146 @vindex org-popup-calendar-for-date-prompt
5147 Parallel to the minibuffer prompt, a calendar is popped up@footnote{If
5148 you don't need/want the calendar, configure the variable
5149 @code{org-popup-calendar-for-date-prompt}.}.  When you exit the date
5150 prompt, either by clicking on a date in the calendar, or by pressing
5151 @key{RET}, the date selected in the calendar will be combined with the
5152 information entered at the prompt.  You can control the calendar fully
5153 from the minibuffer:
5155 @kindex <
5156 @kindex >
5157 @kindex mouse-1
5158 @kindex S-@key{right}
5159 @kindex S-@key{left}
5160 @kindex S-@key{down}
5161 @kindex S-@key{up}
5162 @kindex M-S-@key{right}
5163 @kindex M-S-@key{left}
5164 @kindex @key{RET}
5165 @example
5166 > / <          @r{Scroll calendar forward/backward by one month.}
5167 mouse-1        @r{Select date by clicking on it.}
5168 S-@key{right}/@key{left}     @r{One day forward/backward.}
5169 S-@key{down}/@key{up}     @r{One week forward/backward.}
5170 M-S-@key{right}/@key{left}   @r{One month forward/backward.}
5171 @key{RET}           @r{Choose date in calendar.}
5172 @end example
5174 @vindex org-read-date-display-live
5175 The actions of the date/time prompt may seem complex, but I assure you they
5176 will grow on you, and you will start getting annoyed by pretty much any other
5177 way of entering a date/time out there.  To help you understand what is going
5178 on, the current interpretation of your input will be displayed live in the
5179 minibuffer@footnote{If you find this distracting, turn the display of with
5180 @code{org-read-date-display-live}.}.
5182 @node Custom time format,  , The date/time prompt, Creating timestamps
5183 @subsection Custom time format
5184 @cindex custom date/time format
5185 @cindex time format, custom
5186 @cindex date format, custom
5188 @vindex org-display-custom-times
5189 @vindex org-time-stamp-custom-formats
5190 Org mode uses the standard ISO notation for dates and times as it is
5191 defined in ISO 8601.  If you cannot get used to this and require another
5192 representation of date and time to keep you happy, you can get it by
5193 customizing the variables @code{org-display-custom-times} and
5194 @code{org-time-stamp-custom-formats}.
5196 @table @kbd
5197 @kindex C-c C-x C-t
5198 @item C-c C-x C-t
5199 Toggle the display of custom formats for dates and times.
5200 @end table
5202 @noindent
5203 Org mode needs the default format for scanning, so the custom date/time
5204 format does not @emph{replace} the default format---instead it is put
5205 @emph{over} the default format using text properties.  This has the
5206 following consequences:
5207 @itemize @bullet
5208 @item
5209 You cannot place the cursor onto a timestamp anymore, only before or
5210 after.
5211 @item
5212 The @kbd{S-@key{up}/@key{down}} keys can no longer be used to adjust
5213 each component of a timestamp.  If the cursor is at the beginning of
5214 the stamp, @kbd{S-@key{up}/@key{down}} will change the stamp by one day,
5215 just like @kbd{S-@key{left}/@key{right}}.  At the end of the stamp, the
5216 time will be changed by one minute.
5217 @item
5218 If the timestamp contains a range of clock times or a repeater, these
5219 will not be overlayed, but remain in the buffer as they were.
5220 @item
5221 When you delete a timestamp character-by-character, it will only
5222 disappear from the buffer after @emph{all} (invisible) characters
5223 belonging to the ISO timestamp have been removed.
5224 @item
5225 If the custom timestamp format is longer than the default and you are
5226 using dates in tables, table alignment will be messed up.  If the custom
5227 format is shorter, things do work as expected.
5228 @end itemize
5231 @node Deadlines and scheduling, Clocking work time, Creating timestamps, Dates and Times
5232 @section Deadlines and scheduling
5234 A timestamp may be preceded by special keywords to facilitate planning:
5236 @table @var
5237 @item DEADLINE
5238 @cindex DEADLINE keyword
5240 Meaning: the task (most likely a TODO item, though not necessarily) is supposed
5241 to be finished on that date.
5243 @vindex org-deadline-warning-days
5244 On the deadline date, the task will be listed in the agenda.  In
5245 addition, the agenda for @emph{today} will carry a warning about the
5246 approaching or missed deadline, starting
5247 @code{org-deadline-warning-days} before the due date, and continuing
5248 until the entry is marked DONE.  An example:
5250 @example
5251 *** TODO write article about the Earth for the Guide
5252     The editor in charge is [[bbdb:Ford Prefect]]
5253     DEADLINE: <2004-02-29 Sun>
5254 @end example
5256 You can specify a different lead time for warnings for a specific
5257 deadlines using the following syntax.  Here is an example with a warning
5258 period of 5 days @code{DEADLINE: <2004-02-29 Sun -5d>}.
5260 @item SCHEDULED
5261 @cindex SCHEDULED keyword
5263 Meaning: you are planning to start working on that task on the given
5264 date.
5266 @vindex org-agenda-skip-scheduled-if-done
5267 The headline will be listed under the given date@footnote{It will still
5268 be listed on that date after it has been marked DONE.  If you don't like
5269 this, set the variable @code{org-agenda-skip-scheduled-if-done}.}.  In
5270 addition, a reminder that the scheduled date has passed will be present
5271 in the compilation for @emph{today}, until the entry is marked DONE.
5272 I.e. the task will automatically be forwarded until completed.
5274 @example
5275 *** TODO Call Trillian for a date on New Years Eve.
5276     SCHEDULED: <2004-12-25 Sat>
5277 @end example
5279 @noindent
5280 @b{Important:} Scheduling an item in Org mode should @i{not} be
5281 understood in the same way that we understand @i{scheduling a meeting}.
5282 Setting a date for a meeting is just a simple appointment, you should
5283 mark this entry with a simple plain timestamp, to get this item shown
5284 on the date where it applies.  This is a frequent misunderstanding by
5285 Org users.  In Org mode, @i{scheduling} means setting a date when you
5286 want to start working on an action item.
5287 @end table
5289 You may use timestamps with repeaters in scheduling and deadline
5290 entries.  Org mode will issue early and late warnings based on the
5291 assumption that the timestamp represents the @i{nearest instance} of
5292 the repeater.  However, the use of diary sexp entries like
5294 @code{<%%(diary-float t 42)>}
5296 in scheduling and deadline timestamps is limited.  Org mode does not
5297 know enough about the internals of each sexp function to issue early and
5298 late warnings.  However, it will show the item on each day where the
5299 sexp entry matches.
5301 @menu
5302 * Inserting deadline/schedule::  Planning items
5303 * Repeated tasks::              Items that show up again and again
5304 @end menu
5306 @node Inserting deadline/schedule, Repeated tasks, Deadlines and scheduling, Deadlines and scheduling
5307 @subsection Inserting deadlines or schedules
5309 The following commands allow you to quickly insert a deadline or to schedule
5310 an item:
5312 @table @kbd
5314 @kindex C-c C-d
5315 @item C-c C-d
5316 Insert @samp{DEADLINE} keyword along with a stamp.  The insertion will happen
5317 in the line directly following the headline.  When called with a prefix arg,
5318 an existing deadline will be removed from the entry.  Depending on the
5319 variable @code{org-log-redeadline}@footnote{with corresponding
5320 @code{#+STARTUP} keywords @code{logredeadline}, @code{lognoteredeadline},
5321 and @code{nologredeadline}}, a note will be taken when changing an existing
5322 deadline.
5323 @c FIXME Any CLOSED timestamp will be removed.????????
5325 @kindex C-c C-s
5326 @item C-c C-s
5327 Insert @samp{SCHEDULED} keyword along with a stamp.  The insertion will
5328 happen in the line directly following the headline.  Any CLOSED timestamp
5329 will be removed.  When called with a prefix argument, remove the scheduling
5330 date from the entry.  Depending on the variable
5331 @code{org-log-reschedule}@footnote{with corresponding @code{#+STARTUP}
5332 keywords @code{logredeadline}, @code{lognoteredeadline}, and
5333 @code{nologredeadline}}, a note will be taken when changing an existing
5334 scheduling time.
5336 @kindex C-c C-x C-k
5337 @kindex k a
5338 @kindex k s
5339 @item C-c C-x C-k
5340 Mark the current entry for agenda action.  After you have marked the entry
5341 like this, you can open the agenda or the calendar to find an appropriate
5342 date.  With the cursor on the selected date, press @kbd{k s} or @kbd{k d} to
5343 schedule the marked item.
5345 @kindex C-c / d
5346 @cindex sparse tree, for deadlines
5347 @item C-c / d
5348 @vindex org-deadline-warning-days
5349 Create a sparse tree with all deadlines that are either past-due, or
5350 which will become due within @code{org-deadline-warning-days}.
5351 With @kbd{C-u} prefix, show all deadlines in the file.  With a numeric
5352 prefix, check that many days.  For example, @kbd{C-1 C-c / d} shows
5353 all deadlines due tomorrow.
5355 @kindex C-c / b
5356 @item C-c / b
5357 Sparse tree for deadlines and scheduled items before a given date.
5359 @kindex C-c / a
5360 @item C-c / a
5361 Sparse tree for deadlines and scheduled items after a given date.
5362 @end table
5364 @node Repeated tasks,  , Inserting deadline/schedule, Deadlines and scheduling
5365 @subsection Repeated tasks
5366 @cindex tasks, repeated
5367 @cindex repeated tasks
5369 Some tasks need to be repeated again and again.  Org mode helps to
5370 organize such tasks using a so-called repeater in a DEADLINE, SCHEDULED,
5371 or plain timestamp.  In the following example
5372 @example
5373 ** TODO Pay the rent
5374    DEADLINE: <2005-10-01 Sat +1m>
5375 @end example
5376 @noindent
5377 the @code{+1m} is a repeater; the intended interpretation is that the task
5378 has a deadline on <2005-10-01> and repeats itself every (one) month starting
5379 from that time.  If you need both a repeater and a special warning period in
5380 a deadline entry, the repeater should come first and the warning period last:
5381 @code{DEADLINE: <2005-10-01 Sat +1m -3d>}.
5383 @vindex org-todo-repeat-to-state
5384 Deadlines and scheduled items produce entries in the agenda when they are
5385 over-due, so it is important to be able to mark such an entry as completed
5386 once you have done so.  When you mark a DEADLINE or a SCHEDULE with the TODO
5387 keyword DONE, it will no longer produce entries in the agenda.  The problem
5388 with this is, however, that then also the @emph{next} instance of the
5389 repeated entry will not be active.  Org mode deals with this in the following
5390 way: When you try to mark such an entry DONE (using @kbd{C-c C-t}), it will
5391 shift the base date of the repeating timestamp by the repeater interval, and
5392 immediately set the entry state back to TODO@footnote{In fact, the target
5393 state is taken from, in this sequence, the @code{REPEAT_TO_STATE} property or
5394 the variable @code{org-todo-repeat-to-state}.  If neither of these is
5395 specified, the target state defaults to the first state of the TODO state
5396 sequence.}.  In the example above, setting the state to DONE would actually
5397 switch the date like this:
5399 @example
5400 ** TODO Pay the rent
5401    DEADLINE: <2005-11-01 Tue +1m>
5402 @end example
5404 @vindex org-log-repeat
5405 A timestamp@footnote{You can change this using the option
5406 @code{org-log-repeat}, or the @code{#+STARTUP} options @code{logrepeat},
5407 @code{lognoterepeat}, and @code{nologrepeat}.  With @code{lognoterepeat}, you
5408 will also be prompted for a note.} will be added under the deadline, to keep
5409 a record that you actually acted on the previous instance of this deadline.
5411 As a consequence of shifting the base date, this entry will no longer be
5412 visible in the agenda when checking past dates, but all future instances
5413 will be visible.
5415 With the @samp{+1m} cookie, the date shift will always be exactly one
5416 month.  So if you have not paid the rent for three months, marking this
5417 entry DONE will still keep it as an overdue deadline.  Depending on the
5418 task, this may not be the best way to handle it.  For example, if you
5419 forgot to call you father for 3 weeks, it does not make sense to call
5420 him 3 times in a single day to make up for it.  Finally, there are tasks
5421 like changing batteries which should always repeat a certain time
5422 @i{after} the last time you did it.  For these tasks, Org mode has
5423 special repeaters markers with @samp{++} and @samp{.+}.  For example:
5425 @example
5426 ** TODO Call Father
5427    DEADLINE: <2008-02-10 Sun ++1w>
5428    Marking this DONE will shift the date by at least one week,
5429    but also by as many weeks as it takes to get this date into
5430    the future.  However, it stays on a Sunday, even if you called
5431    and marked it done on Saturday.
5432 ** TODO Check the batteries in the smoke detectors
5433    DEADLINE: <2005-11-01 Tue .+1m>
5434    Marking this DONE will shift the date to one month after
5435    today.
5436 @end example
5438 You may have both scheduling and deadline information for a specific
5439 task---just make sure that the repeater intervals on both are the same.
5441 An alternative to using a repeater is to create a number of copies of a task
5442 subtree, with dates shifted in each copy.  The command @kbd{C-c C-x c} was
5443 created for this purpose, it is described in @ref{Structure editing}.
5446 @node Clocking work time, Resolving idle time, Deadlines and scheduling, Dates and Times
5447 @section Clocking work time
5449 Org mode allows you to clock the time you spend on specific tasks in a
5450 project.  When you start working on an item, you can start the clock.
5451 When you stop working on that task, or when you mark the task done, the
5452 clock is stopped and the corresponding time interval is recorded.  It
5453 also computes the total time spent on each subtree of a project.  And it
5454 remembers a history or tasks recently clocked, to that you can jump quickly
5455 between a number of tasks absorbing your time.
5457 To save the clock history across Emacs sessions, use
5458 @lisp
5459 (setq org-clock-persist 'history)
5460 (org-clock-persistence-insinuate)
5461 @end lisp
5462 When you clock into a new task after resuming Emacs, the incomplete
5463 clock@footnote{To resume the clock under the assumption that you have worked
5464 on this task while outside Emacs, use @code{(setq org-clock-persist t)}.}
5465 will be found (@pxref{Resolving idle time}) and you will be prompted about
5466 what to do with it.
5468 @table @kbd
5469 @kindex C-c C-x C-i
5470 @item C-c C-x C-i
5471 @vindex org-clock-into-drawer
5472 Start the clock on the current item (clock-in).  This inserts the CLOCK
5473 keyword together with a timestamp.  If this is not the first clocking of
5474 this item, the multiple CLOCK lines will be wrapped into a
5475 @code{:LOGBOOK:} drawer (see also the variable
5476 @code{org-clock-into-drawer}).  When called with a @kbd{C-u} prefix argument,
5477 select the task from a list of recently clocked tasks.  With two @kbd{C-u
5478 C-u} prefixes, clock into the task at point and mark it as the default task.
5479 The default task will always be available when selecting a clocking task,
5480 with letter @kbd{d}.@*
5481 @cindex property: CLOCK_MODELINE_TOTAL
5482 @cindex property: LAST_REPEAT
5483 @vindex org-clock-modeline-total
5484 While the clock is running, the current clocking time is shown in the mode
5485 line, along with the title of the task.  The clock time shown will be all
5486 time ever clocked for this task and its children.  If the task has an effort
5487 estimate (@pxref{Effort estimates}), the mode line displays the current
5488 clocking time against it@footnote{To add an effort estimate ``on the fly'',
5489 hook a function doing this to @code{org-clock-in-prepare-hook}.}  If the task
5490 is a repeating one (@pxref{Repeated tasks}), only the time since the last
5491 reset of the task @footnote{as recorded by the @code{LAST_REPEAT} property}
5492 will be shown.  More control over what time is shown can be exercised with
5493 the @code{CLOCK_MODELINE_TOTAL} property.  It may have the values
5494 @code{current} to show only the current clocking instance, @code{today} to
5495 show all time clocked on this tasks today (see also the variable
5496 @code{org-extend-today-until}), @code{all} to include all time, or
5497 @code{auto} which is the default@footnote{See also the variable
5498 @code{org-clock-modeline-total}.}.@* Clicking with @kbd{mouse-1} onto the
5499 mode line entry will pop up a menu with clocking options.
5500 @kindex C-c C-x C-o
5501 @item C-c C-x C-o
5502 @vindex org-log-note-clock-out
5503 Stop the clock (clock-out).  This inserts another timestamp at the same
5504 location where the clock was last started.  It also directly computes
5505 the resulting time in inserts it after the time range as @samp{=>
5506 HH:MM}.  See the variable @code{org-log-note-clock-out} for the
5507 possibility to record an additional note together with the clock-out
5508 timestamp@footnote{The corresponding in-buffer setting is:
5509 @code{#+STARTUP: lognoteclock-out}}.
5510 @kindex C-c C-x C-e
5511 @item C-c C-x C-e
5512 Update the effort estimate for the current clock task.
5513 @kindex C-c C-y
5514 @kindex C-c C-c
5515 @item C-c C-y @ @ @r{or}@ @ C-c C-c
5516 Recompute the time interval after changing one of the timestamps.  This
5517 is only necessary if you edit the timestamps directly.  If you change
5518 them with @kbd{S-@key{cursor}} keys, the update is automatic.
5519 @kindex C-c C-t
5520 @item C-c C-t
5521 Changing the TODO state of an item to DONE automatically stops the clock
5522 if it is running in this same item.
5523 @kindex C-c C-x C-x
5524 @item C-c C-x C-x
5525 Cancel the current clock.  This is useful if a clock was started by
5526 mistake, or if you ended up working on something else.
5527 @kindex C-c C-x C-j
5528 @item C-c C-x C-j
5529 Jump to the entry that contains the currently running clock.  With a
5530 @kbd{C-u} prefix arg, select the target task from a list of recently clocked
5531 tasks.
5532 @kindex C-c C-x C-d
5533 @item C-c C-x C-d
5534 @vindex org-remove-highlights-with-change
5535 Display time summaries for each subtree in the current buffer.  This
5536 puts overlays at the end of each headline, showing the total time
5537 recorded under that heading, including the time of any subheadings. You
5538 can use visibility cycling to study the tree, but the overlays disappear
5539 when you change the buffer (see variable
5540 @code{org-remove-highlights-with-change}) or press @kbd{C-c C-c}.
5541 @kindex C-c C-x C-r
5542 @item C-c C-x C-r
5543 Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
5544 report as an Org-mode table into the current file.  When the cursor is
5545 at an existing clock table, just update it.  When called with a prefix
5546 argument, jump to the first clock report in the current document and
5547 update it.
5548 @cindex #+BEGIN, clocktable
5549 @example
5550 #+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
5551 #+END: clocktable
5552 @end example
5553 @noindent
5554 If such a block already exists at point, its content is replaced by the
5555 new table.  The @samp{BEGIN} line can specify options:
5556 @example
5557 :maxlevel    @r{Maximum level depth to which times are listed in the table.}
5558 :emphasize   @r{When @code{t}, emphasize level one and level two items.}
5559 :scope       @r{The scope to consider.  This can be any of the following:}
5560              nil        @r{the current buffer or narrowed region}
5561              file       @r{the full current buffer}
5562              subtree    @r{the subtree where the clocktable is located}
5563              tree@var{N}      @r{the surrounding level @var{N} tree, for example @code{tree3}}
5564              tree       @r{the surrounding level 1 tree}
5565              agenda     @r{all agenda files}
5566              ("file"..) @r{scan these files}
5567              file-with-archives    @r{current file and its archives}
5568              agenda-with-archives  @r{all agenda files, including archives}
5569 :block       @r{The time block to consider.  This block is specified either}
5570              @r{absolute, or relative to the current time and may be any of}
5571              @r{these formats:}
5572              2007-12-31    @r{New year eve 2007}
5573              2007-12       @r{December 2007}
5574              2007-W50      @r{ISO-week 50 in 2007}
5575              2007          @r{the year 2007}
5576              today, yesterday, today-@var{N}          @r{a relative day}
5577              thisweek, lastweek, thisweek-@var{N}     @r{a relative week}
5578              thismonth, lastmonth, thismonth-@var{N}  @r{a relative month}
5579              thisyear, lastyear, thisyear-@var{N}     @r{a relative year}
5580              @r{Use @kbd{S-@key{left}/@key{right}} keys to shift the time interval.}
5581 :tstart      @r{A time string specifying when to start considering times.}
5582 :tend        @r{A time string specifying when to stop considering times.}
5583 :step        @r{@code{week} or @code{day}, to split the table into chunks.}
5584              @r{To use this, @code{:block} or @code{:tstart}, @code{:tend} are needed.}
5585 :tags        @r{A tags match to select entries that should contribute}
5586 :link        @r{Link the item headlines in the table to their origins.}
5587 :formula     @r{Content of a @code{#+TBLFM} line to be added and evaluated.}
5588              @r{As a special case, @samp{:formula %} adds a column with % time.}
5589              @r{If you do not specify a formula here, any existing formula.}
5590              @r{below the clock table will survive updates and be evaluated.}
5591 :timestamp   @r{A timestamp for the entry, when available.  Look for SCHEDULED,}
5592              @r{DEADLINE, TIMESTAMP and TIMESTAMP_IA, in this order.}
5593 @end example
5594 To get a clock summary of the current level 1 tree, for the current
5595 day, you could write
5596 @example
5597 #+BEGIN: clocktable :maxlevel 2 :block today :scope tree1 :link t
5598 #+END: clocktable
5599 @end example
5600 @noindent
5601 and to use a specific time range you could write@footnote{Note that all
5602 parameters must be specified in a single line---the line is broken here
5603 only to fit it into the manual.}
5604 @example
5605 #+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>"
5606                     :tend "<2006-08-10 Thu 12:00>"
5607 #+END: clocktable
5608 @end example
5609 A summary of the current subtree with % times would be
5610 @example
5611 #+BEGIN: clocktable :scope subtree :link t :formula %
5612 #+END: clocktable
5613 @end example
5614 @kindex C-c C-c
5615 @item C-c C-c
5616 @kindex C-c C-x C-u
5617 @itemx C-c C-x C-u
5618 Update dynamic block at point.  The cursor needs to be in the
5619 @code{#+BEGIN} line of the dynamic block.
5620 @kindex C-u C-c C-x C-u
5621 @item C-u C-c C-x C-u
5622 Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
5623 you have several clock table blocks in a buffer.
5624 @kindex S-@key{left}
5625 @kindex S-@key{right}
5626 @item S-@key{left}
5627 @itemx S-@key{right}
5628 Shift the current @code{:block} interval and update the table.  The cursor
5629 needs to be in the @code{#+BEGIN: clocktable} line for this command.  If
5630 @code{:block} is @code{today}, it will be shifted to @code{today-1} etc.
5631 @end table
5633 The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
5634 the agenda (@pxref{Weekly/daily agenda}) to show which tasks have been
5635 worked on or closed during a day.
5637 @node Resolving idle time, Effort estimates, Clocking work time, Dates and Times
5638 @section Resolving idle time
5639 @cindex resolve idle time
5641 @cindex idle, resolve, dangling
5642 If you clock in on a work item, and then walk away from your
5643 computer---perhaps to take a phone call---you often need to ``resolve'' the
5644 time you were away by either subtracting it from the current clock, or
5645 applying it to another one.
5647 @vindex org-clock-idle-time
5648 By customizing the variable @code{org-clock-idle-time} to some integer, such
5649 as 10 or 15, Emacs can alert you when you get back to your computer after
5650 being idle for that many minutes@footnote{On computers using Mac OS X,
5651 idleness is based on actual user idleness, not just Emacs' idle time.  For
5652 X11, you can install a utility program @file{x11idle.c}, available in the
5653 UTILITIES directory of the Org git distribution, to get the same general
5654 treatment of idleness.  On other systems, idle time refers to Emacs idle time
5655 only.}, and ask what you want to do with the idle time.  There will be a
5656 question waiting for you when you get back, indicating how much idle time has
5657 passed (constantly updated with the current amount), as well as a set of
5658 choices to correct the discrepancy:
5660 @table @kbd
5661 @item k
5662 To keep some or all of the minutes and stay clocked in, press @kbd{k}.  Org
5663 will ask how many of the minutes to keep.  Press @key{RET} to keep them all,
5664 effectively changing nothing, or enter a number to keep that many minutes.
5665 @item K
5666 If you use the shift key and press @kbd{K}, it will keep however many minutes
5667 you request and then immediately clock out of that task.  If you keep all of
5668 the minutes, this is the same as just clocking out of the current task.
5669 @item s
5670 To keep none of the minutes, use @kbd{s} to subtract all the away time from
5671 the clock, and then check back in from the moment you returned.
5672 @item S
5673 To keep none of the minutes and just clock out at the start of the away time,
5674 use the shift key and press @kbd{S}.  Remember that using shift will always
5675 leave you clocked out, no matter which option you choose.
5676 @item C
5677 To cancel the clock altogether, use @kbd{C}.  Note that if instead of
5678 cancelling you subtract the away time, and the resulting clock amount is less
5679 than a minute, the clock will still be cancelled rather than clutter up the
5680 log with an empty entry.
5681 @end table
5683 What if you subtracted those away minutes from the current clock, and now
5684 want to apply them to a new clock?  Simply clock in to any task immediately
5685 after the subtraction.  Org will notice that you have subtracted time ``on
5686 the books'', so to speak, and will ask if you want to apply those minutes to
5687 the next task you clock in on.
5689 There is one other instance when this clock resolution magic occurs.  Say you
5690 were clocked in and hacking away, and suddenly your cat chased a mouse who
5691 scared a hamster that crashed into your UPS's power button!  You suddenly
5692 lose all your buffers, but thanks to auto-save you still have your recent Org
5693 mode changes, including your last clock in.
5695 If you restart Emacs and clock into any task, Org will notice that you have a
5696 dangling clock which was never clocked out from your last session.  Using
5697 that clock's starting time as the beginning of the unaccounted-for period,
5698 Org will ask how you want to resolve that time.  The logic and behavior is
5699 identical to dealing with away time due to idleness, it's just happening due
5700 to a recovery event rather than a set amount of idle time.
5702 You can also check all the files visited by your Org agenda for dangling
5703 clocks at any time using @kbd{M-x org-resolve-clocks}.
5705 @node Effort estimates, Relative timer, Resolving idle time, Dates and Times
5706 @section Effort estimates
5707 @cindex effort estimates
5709 @cindex property, Effort
5710 @vindex org-effort-property
5711 If you want to plan your work in a very detailed way, or if you need to
5712 produce offers with quotations of the estimated work effort, you may want to
5713 assign effort estimates to entries.  If you are also clocking your work, you
5714 may later want to compare the planned effort with the actual working time, a
5715 great way to improve planning estimates.  Effort estimates are stored in a
5716 special property @samp{Effort}@footnote{You may change the property being
5717 used with the variable @code{org-effort-property}.}.  You can set the effort
5718 for an entry with the following commands:
5720 @table @kbd
5721 @kindex C-c C-x e
5722 @item C-c C-x e
5723 Set the effort estimate for the current entry.  With a numeric prefix
5724 argument, set it to the NTH allowed value (see below).  This command is also
5725 accessible from the agenda with the @kbd{e} key.
5726 @kindex C-c C-x C-e
5727 @item C-c C-x C-e
5728 Modify the effort estimate of the item currently being clocked.
5729 @end table
5731 Clearly the best way to work with effort estimates is through column view
5732 (@pxref{Column view}).  You should start by setting up discrete values for
5733 effort estimates, and a @code{COLUMNS} format that displays these values
5734 together with clock sums (if you want to clock your time).  For a specific
5735 buffer you can use
5737 @example
5738 #+PROPERTY: Effort_ALL 0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00 8:00
5739 #+COLUMNS: %40ITEM(Task) %17Effort(Estimated Effort)@{:@} %CLOCKSUM
5740 @end example
5742 @noindent
5743 @vindex org-global-properties
5744 @vindex org-columns-default-format
5745 or, even better, you can set up these values globally by customizing the
5746 variables @code{org-global-properties} and @code{org-columns-default-format}.
5747 In particular if you want to use this setup also in the agenda, a global
5748 setup may be advised.
5750 The way to assign estimates to individual items is then to switch to column
5751 mode, and to use @kbd{S-@key{right}} and @kbd{S-@key{left}} to change the
5752 value.  The values you enter will immediately be summed up in the hierarchy.
5753 In the column next to it, any clocked time will be displayed.
5755 @vindex org-agenda-columns-add-appointments-to-effort-sum
5756 If you switch to column view in the daily/weekly agenda, the effort column
5757 will summarize the estimated work effort for each day@footnote{Please note
5758 the pitfalls of summing hierarchical data in a flat list (@pxref{Agenda
5759 column view}).}, and you can use this to find space in your schedule.  To get
5760 an overview of the entire part of the day that is committed, you can set the
5761 option @code{org-agenda-columns-add-appointments-to-effort-sum}.  The
5762 appointments on a day that take place over a specified time interval will
5763 then also be added to the load estimate of the day.
5765 Effort estimates can be used in secondary agenda filtering that is triggered
5766 with the @kbd{/} key in the agenda (@pxref{Agenda commands}).  If you have
5767 these estimates defined consistently, two or three key presses will narrow
5768 down the list to stuff that fits into an available time slot.
5770 @node Relative timer,  , Effort estimates, Dates and Times
5771 @section Taking notes with a relative timer
5772 @cindex relative timer
5774 When taking notes during, for example, a meeting or a video viewing, it can
5775 be useful to have access to times relative to a starting time.  Org provides
5776 such a relative timer and make it easy to create timed notes.
5778 @table @kbd
5779 @kindex C-c C-x .
5780 @item C-c C-x .
5781 Insert a relative time into the buffer.  The first time you use this, the
5782 timer will be started.  When called with a prefix argument, the timer is
5783 restarted.
5784 @kindex C-c C-x -
5785 @item C-c C-x -
5786 Insert a description list item with the current relative time.  With a prefix
5787 argument, first reset the timer to 0.
5788 @kindex M-@key{RET}
5789 @item M-@key{RET}
5790 Once the timer list is started, you can also use @kbd{M-@key{RET}} to insert
5791 new timer items.
5792 @kindex C-c C-x ,
5793 @item C-c C-x ,
5794 Pause the timer, or continue it if it is already paused.
5795 @c removed the sentence because it is redundant to the following item
5796 @kindex C-u C-c C-x ,
5797 @item C-u C-c C-x ,
5798 Stop the timer.  After this, you can only start a new timer, not continue the
5799 old one.  This command also removes the timer from the mode line.
5800 @kindex C-c C-x 0
5801 @item C-c C-x 0
5802 Reset the timer without inserting anything into the buffer.  By default, the
5803 timer is reset to 0.  When called with a @kbd{C-u} prefix, reset the timer to
5804 specific starting offset.  The user is prompted for the offset, with a
5805 default taken from a timer string at point, if any, So this can be used to
5806 restart taking notes after a break in the process.  When called with a double
5807 prefix argument @kbd{C-c C-u}, change all timer strings in the active region
5808 by a certain amount.  This can be used to fix timer strings if the timer was
5809 not started at exactly the right moment.
5810 @end table
5812 @node Capture - Refile - Archive, Agenda Views, Dates and Times, Top
5813 @chapter Capture - Refile - Archive
5814 @cindex capture
5816 An important part of any organization system is the ability to quickly
5817 capture new ideas and tasks, and to associate reference material with them.
5818 Org uses the @file{remember.el} package to create tasks, and stores files
5819 related to a task (@i{attachments}) in a special directory.  Once in the
5820 system, tasks and projects need to be moved around.  Moving completed project
5821 trees to an archive file keeps the system compact and fast.
5823 @menu
5824 * Remember::                    Capture new tasks/ideas with little interruption
5825 * Attachments::                 Add files to tasks.
5826 * RSS Feeds::                   Getting input from RSS feeds
5827 * Protocols::                   External (e.g. Browser) access to Emacs and Org
5828 * Refiling notes::              Moving a tree from one place to another
5829 * Archiving::                   What to do with finished projects
5830 @end menu
5832 @node Remember, Attachments, Capture - Refile - Archive, Capture - Refile - Archive
5833 @section Remember
5834 @cindex @file{remember.el}
5836 The Remember package by John Wiegley lets you store quick notes with little
5837 interruption of your work flow.  It is an excellent way to add new notes and
5838 tasks to Org files.  The @code{remember.el} package is part of Emacs 23, not
5839 Emacs 22.  See @uref{http://www.emacswiki.org/cgi-bin/wiki/RememberMode} for
5840 more information.
5842 Org significantly expands the possibilities of Remember: you may define
5843 templates for different note types, and associate target files and headlines
5844 with specific templates.  It also allows you to select the location where a
5845 note should be stored interactively, on the fly.
5847 @menu
5848 * Setting up Remember for Org::  Some code for .emacs to get things going
5849 * Remember templates::          Define the outline of different note types
5850 * Storing notes::               Directly get the note to where it belongs
5851 @end menu
5853 @node Setting up Remember for Org, Remember templates, Remember, Remember
5854 @subsection Setting up Remember for Org
5856 The following customization will tell Remember to use Org files as
5857 target, and to create annotations compatible with Org links.
5859 @example
5860 (org-remember-insinuate)
5861 (setq org-directory "~/path/to/my/orgfiles/")
5862 (setq org-default-notes-file (concat org-directory "/notes.org"))
5863 (define-key global-map "\C-cr" 'org-remember)
5864 @end example
5866 @noindent
5867 The last line binds the command @code{org-remember} to a global
5868 key@footnote{Please select your own key, @kbd{C-c r} is only a
5869 suggestion.}.  @code{org-remember} basically just calls Remember,
5870 but it makes a few things easier: if there is an active region, it will
5871 automatically copy the region into the Remember buffer.  It also allows
5872 to jump to the buffer and location where Remember notes are being
5873 stored: just call @code{org-remember} with a prefix argument.  If you
5874 use two prefix arguments, Org jumps to the location where the last
5875 remember note was stored.
5877 The Remember buffer will actually use @code{org-mode} as its major mode, so
5878 that all editing features of Org mode are available.  In addition to this, a
5879 minor mode @code{org-remember-mode} is turned on, for the single purpose that
5880 you can use its keymap @code{org-remember-mode-map} to override some of
5881 Org mode's key bindings.
5883 You can also call @code{org-remember} in a special way from the agenda,
5884 using the @kbd{k r} key combination.  With this access, any timestamps
5885 inserted by the selected Remember template (see below) will default to
5886 the cursor date in the agenda, rather than to the current date.
5888 @node Remember templates, Storing notes, Setting up Remember for Org, Remember
5889 @subsection Remember templates
5890 @cindex templates, for Remember
5892 In combination with Org, you can use templates to generate
5893 different types of Remember notes.  For example, if you would like
5894 to use one template to create general TODO entries, another one for
5895 journal entries, and a third one for collecting random ideas, you could
5896 use:
5898 @example
5899 (setq org-remember-templates
5900  '(("Todo" ?t "* TODO %?\n  %i\n  %a" "~/org/TODO.org" "Tasks")
5901    ("Journal" ?j "* %U %?\n\n  %i\n  %a" "~/org/JOURNAL.org")
5902    ("Idea" ?i "* %^@{Title@}\n  %i\n  %a" "~/org/JOURNAL.org" "New Ideas")))
5903 @end example
5905 @vindex org-remember-default-headline
5906 @vindex org-directory
5907 @noindent In these entries, the first string is just a name, and the
5908 character specifies how to select the template.  It is useful if the
5909 character is also the first letter of the name.  The next string specifies
5910 the template.  Two more (optional) strings give the file in which, and the
5911 headline under which, the new note should be stored.  The file (if not
5912 present or @code{nil}) defaults to @code{org-default-notes-file}, the heading
5913 to @code{org-remember-default-headline}.  If the file name is not an absolute
5914 path, it will be interpreted relative to @code{org-directory}.
5916 The heading can also be the symbols @code{top} or @code{bottom} to send notes
5917 as level 1 entries to the beginning or end of the file, respectively.  It may
5918 also be the symbol @code{date-tree}.  Then, a tree with year on level 1,
5919 month on level 2 and day on level three will be built in the file, and the
5920 entry will be filed into the tree under the current date@footnote{If the file
5921 contains an entry with a @code{DATE_TREE} property, the entire date tree will
5922 be built under that entry.}
5924 An optional sixth element specifies the contexts in which the user can select
5925 the template.  This element can be a list of major modes or a function.
5926 @code{org-remember} will first check whether the function returns @code{t} or
5927 if we are in any of the listed major modes, and exclude templates for which
5928 this condition is not fulfilled.  Templates that do not specify this element
5929 at all, or that use @code{nil} or @code{t} as a value will always be
5930 selectable.
5932 So for example:
5934 @example
5935 (setq org-remember-templates
5936  '(("Bug" ?b "* BUG %?\n  %i\n  %a" "~/org/BUGS.org" "Bugs" (emacs-lisp-mode))
5937    ("Journal" ?j "* %U %?\n\n  %i\n  %a" "~/org/JOURNAL.org" "X" my-check)
5938    ("Idea" ?i "* %^@{Title@}\n  %i\n  %a" "~/org/JOURNAL.org" "New Ideas")))
5939 @end example
5941 @noindent
5942 The first template will only be available when invoking @code{org-remember}
5943 from a buffer in @code{emacs-lisp-mode}.  The second template will only be
5944 available when the function @code{my-check} returns @code{t}.  The third
5945 template will be proposed in any context.
5947 When you call @kbd{M-x org-remember} (or @kbd{M-x remember}) to remember
5948 something, Org will prompt for a key to select the template (if you have
5949 more than one template) and then prepare the buffer like
5950 @example
5951 * TODO
5952   [[file:@var{link to where you called remember}]]
5953 @end example
5955 @noindent
5956 During expansion of the template, special @kbd{%}-escapes@footnote{If you
5957 need one of these sequences literally, escape the @kbd{%} with a backslash.}
5958 allow dynamic insertion of content:
5959 @example
5960 %^@{@var{prompt}@}  @r{prompt the user for a string and replace this sequence with it.}
5961             @r{You may specify a default value and a completion table with}
5962             @r{%^@{prompt|default|completion2|completion3...@}}
5963             @r{The arrow keys access a prompt-specific history.}
5964 %a          @r{annotation, normally the link created with @code{org-store-link}}
5965 %A          @r{like @code{%a}, but prompt for the description part}
5966 %i          @r{initial content, the region when remember is called with C-u.}
5967             @r{The entire text will be indented like @code{%i} itself.}
5968 %t          @r{timestamp, date only}
5969 %T          @r{timestamp with date and time}
5970 %u, %U      @r{like the above, but inactive timestamps}
5971 %^t         @r{like @code{%t}, but prompt for date.  Similarly @code{%^T}, @code{%^u}, @code{%^U}}
5972             @r{You may define a prompt like @code{%^@{Birthday@}t}}
5973 %n          @r{user name (taken from @code{user-full-name})}
5974 %c          @r{Current kill ring head.}
5975 %x          @r{Content of the X clipboard.}
5976 %^C         @r{Interactive selection of which kill or clip to use.}
5977 %^L         @r{Like @code{%^C}, but insert as link.}
5978 %k          @r{title of the currently clocked task}
5979 %K          @r{link to the currently clocked task}
5980 %^g         @r{prompt for tags, with completion on tags in target file.}
5981 %^G         @r{prompt for tags, with completion all tags in all agenda files.}
5982 %^@{@var{prop}@}p   @r{Prompt the user for a value for property @var{prop}}
5983 %:keyword   @r{specific information for certain link types, see below}
5984 %[@var{file}]     @r{insert the contents of the file given by @var{file}}
5985 %(@var{sexp})     @r{evaluate Elisp @var{sexp} and replace with the result}
5986 %!          @r{immediately store note after completing the template}
5987             @r{(skipping the @kbd{C-c C-c} that normally triggers storing)}
5988 %&          @r{jump to target location immediately after storing note}
5989 @end example
5991 @noindent
5992 For specific link types, the following keywords will be
5993 defined@footnote{If you define your own link types (@pxref{Adding
5994 hyperlink types}), any property you store with
5995 @code{org-store-link-props} can be accessed in remember templates in a
5996 similar way.}:
5998 @vindex org-from-is-user-regexp
5999 @example
6000 Link type          |  Available keywords
6001 -------------------+----------------------------------------------
6002 bbdb               |  %:name %:company
6003 bbdb               |  %::server %:port %:nick
6004 vm, wl, mh, rmail  |  %:type %:subject %:message-id
6005                    |  %:from %:fromname %:fromaddress
6006                    |  %:to   %:toname   %:toaddress
6007                    |  %: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}.}}
6008 gnus               |  %:group, @r{for messages also all email fields}
6009 w3, w3m            |  %:url
6010 info               |  %:file %:node
6011 calendar           |  %:date"
6012 @end example
6014 @noindent
6015 To place the cursor after template expansion use:
6017 @example
6018 %?          @r{After completing the template, position cursor here.}
6019 @end example
6021 @noindent
6022 If you change your mind about which template to use, call
6023 @code{org-remember} in the remember buffer.  You may then select a new
6024 template that will be filled with the previous context information.
6026 @node Storing notes,  , Remember templates, Remember
6027 @subsection Storing notes
6029 @vindex org-remember-clock-out-on-exit
6030 When you are finished preparing a note with Remember, you have to press
6031 @kbd{C-c C-c} to file the note away.  If you have started the clock in the
6032 Remember buffer, you will first be asked if you want to clock out
6033 now@footnote{To avoid this query, configure the variable
6034 @code{org-remember-clock-out-on-exit}.}.  If you answer @kbd{n}, the clock
6035 will continue to run after the note was filed away.
6037 The handler will then store the note in the file and under the headline
6038 specified in the template, or it will use the default file and headline.  The
6039 window configuration will be restored, sending you back to the working
6040 context before the call to Remember.  To re-use the location found during the
6041 last call to Remember, exit the Remember buffer with @kbd{C-0 C-c C-c},
6042 i.e. specify a zero prefix argument to @kbd{C-c C-c}.  Another special case
6043 is @kbd{C-2 C-c C-c} which files the note as a child of the currently clocked
6044 item, and @kbd{C-3 C-c C-c} files as a sibling of the currently clocked item.
6046 @vindex org-remember-store-without-prompt
6047 If you want to store the note directly to a different place, use
6048 @kbd{C-1 C-c C-c} instead to exit Remember@footnote{Configure the
6049 variable @code{org-remember-store-without-prompt} to make this behavior
6050 the default.}.  The handler will then first prompt for a target file---if
6051 you press @key{RET}, the value specified for the template is used.
6052 Then the command offers the headings tree of the selected file, with the
6053 cursor position at the default headline (if you specified one in the
6054 template).  You can either immediately press @key{RET} to get the note
6055 placed there.  Or you can use the following keys to find a different
6056 location:
6057 @example
6058 @key{TAB}         @r{Cycle visibility.}
6059 @key{down} / @key{up}   @r{Next/previous visible headline.}
6060 n / p        @r{Next/previous visible headline.}
6061 f / b        @r{Next/previous headline same level.}
6062 u            @r{One level up.}
6063 @c 0-9          @r{Digit argument.}
6064 @end example
6065 @noindent
6066 Pressing @key{RET} or @key{left} or @key{right}
6067 then leads to the following result.
6069 @vindex org-reverse-note-order
6070 @multitable @columnfractions 0.2 0.15 0.65
6071 @item @b{Cursor position} @tab @b{Key} @tab @b{Note gets inserted}
6072 @item on headline     @tab @key{RET}              @tab as sublevel of the heading at cursor, first or last
6073 @item                 @tab                        @tab depending on @code{org-reverse-note-order}.
6074 @item                 @tab @key{left}/@key{right} @tab as same level, before/after current heading
6075 @item buffer-start    @tab @key{RET} @tab as level 2 heading at end of file or level 1 at beginning
6076 @item                 @tab @tab depending on @code{org-reverse-note-order}.
6077 @item not on headline @tab @key{RET}
6078       @tab at cursor position, level taken from context.
6079 @end multitable
6081 Before inserting the text into a tree, the function ensures that the text has
6082 a headline, i.e. a first line that starts with a @samp{*}.  If not, a
6083 headline is constructed from the current date.  If you have indented the text
6084 of the note below the headline, the indentation will be adapted if inserting
6085 the note into the tree requires demotion from level 1.
6088 @node Attachments, RSS Feeds, Remember, Capture - Refile - Archive
6089 @section Attachments
6090 @cindex attachments
6092 @vindex org-attach-directory
6093 It is often useful to associate reference material with an outline node/task.
6094 Small chunks of plain text can simply be stored in the subtree of a project.
6095 Hyperlinks (@pxref{Hyperlinks}) can be used to establish associations with
6096 files that live elsewhere on your computer or in the cloud, like emails or
6097 source code files belonging to a project.  Another method is @i{attachments},
6098 which are files located in a directory belonging to an outline node.  Org
6099 uses directories named by the unique ID of each entry.  These directories are
6100 located in the @file{data} directory which lives in the same directory where
6101 your Org file lives@footnote{If you move entries or Org files from one
6102 directory to another, you may want to configure @code{org-attach-directory}
6103 to contain an absolute path.}.  If you initialize this directory with
6104 @code{git init}, Org will automatically commit changes when it sees them.
6105 The attachment system has been contributed to Org by John Wiegley.
6107 In cases where it seems better to do so, you can also attach a directory of your
6108 choice to an entry.  You can also make children inherit the attachment
6109 directory from a parent, so that an entire subtree uses the same attached
6110 directory.
6112 @noindent The following commands deal with attachments.
6114 @table @kbd
6116 @kindex C-c C-a
6117 @item C-c C-a
6118 The dispatcher for commands related to the attachment system.  After these
6119 keys, a list of commands is displayed and you need to press an additional key
6120 to select a command:
6122 @table @kbd
6123 @kindex C-c C-a a
6124 @item a
6125 @vindex org-attach-method
6126 Select a file and move it into the task's attachment directory.  The file
6127 will be copied, moved, or linked, depending on @code{org-attach-method}.
6128 Note that hard links are not supported on all systems.
6130 @kindex C-c C-a c
6131 @kindex C-c C-a m
6132 @kindex C-c C-a l
6133 @item c/m/l
6134 Attach a file using the copy/move/link method.
6135 Note that hard links are not supported on all systems.
6137 @kindex C-c C-a n
6138 @item n
6139 Create a new attachment as an Emacs buffer.
6141 @kindex C-c C-a z
6142 @item z
6143 Synchronize the current task with its attachment directory, in case you added
6144 attachments yourself.
6146 @kindex C-c C-a o
6147 @item o
6148 @vindex org-file-apps
6149 Open current task's attachment.  If there are more than one, prompt for a
6150 file name first.  Opening will follow the rules set by @code{org-file-apps}.
6151 For more details, see the information on following hyperlinks
6152 (@pxref{Handling links}).
6154 @kindex C-c C-a O
6155 @item O
6156 Also open the attachment, but force opening the file in Emacs.
6158 @kindex C-c C-a f
6159 @item f
6160 Open the current task's attachment directory.
6162 @kindex C-c C-a F
6163 @item F
6164 Also open the directory, but force using @command{dired} in Emacs.
6166 @kindex C-c C-a d
6167 @item d
6168 Select and delete a single attachment.
6170 @kindex C-c C-a D
6171 @item D
6172 Delete all of a task's attachments.  A safer way is to open the directory in
6173 @command{dired} and delete from there.
6175 @kindex C-c C-a s
6176 @item C-c C-a s
6177 @cindex property, ATTACH_DIR
6178 Set a specific directory as the entry's attachment directory.  This works by
6179 putting the directory path into the @code{ATTACH_DIR} property.
6181 @kindex C-c C-a i
6182 @item C-c C-a i
6183 @cindex property, ATTACH_DIR_INHERIT
6184 Set the @code{ATTACH_DIR_INHERIT} property, so that children will use the
6185 same directory for attachments as the parent does.
6186 @end table
6187 @end table
6189 @node RSS Feeds, Protocols, Attachments, Capture - Refile - Archive
6190 @section RSS feeds
6191 @cindex RSS feeds
6193 Org has the capability to add and change entries based on information found in
6194 RSS feeds.  You could use this to make a task out of each new podcast in a
6195 podcast feed.  Or you could use a phone-based note-creating service on the
6196 web to import tasks into Org.  To access feeds, you need to configure the
6197 variable @code{org-feed-alist}.  The docstring of this variable has detailed
6198 information.  Here is just an example:
6200 @example
6201 (setq org-feed-alist
6202       '(("ReQall" "http://www.reqall.com/user/feeds/rss/a1b2c3....."
6203          "~/org/feeds.org" "ReQall Entries")
6204 @end example
6205 @noindent
6206 will configure that new items from the feed provided by @file{reqall.com}
6207 will result in new entries in the file @file{~/org/feeds.org} under the
6208 heading @samp{ReQall Entries}, whenever the following command is used:
6210 @table @kbd
6211 @kindex C-c C-x g
6212 @item C-c C-x g
6213 Collect items from the feeds configured in @code{org-feed-alist} and act upon
6214 them.
6215 @kindex C-c C-x G
6216 @item C-c C-x G
6217 Prompt for a feed name and go to the inbox configured for this feed.
6218 @end table
6220 Under the same headline, Org will create a drawer @samp{FEEDSTATUS} in which
6221 it will store information about the status of items in the feed, to avoid
6222 adding the same item several times.  You should add @samp{FEEDSTATUS} to the
6223 list of drawers in that file:
6225 @example
6226 #+DRAWERS: LOGBOOK PROPERTIES FEEDSTATUS
6227 @end example
6229 For more information, see @file{org-feed.el} and the docstring of
6230 @code{org-feed-alist}.
6232 @node Protocols, Refiling notes, RSS Feeds, Capture - Refile - Archive
6233 @section Protocols for external access
6234 @cindex protocols, for external access
6235 @cindex emacsserver
6237 You can set up Org for handling protocol calls from outside applications that
6238 are passed to Emacs through the @file{emacsserver}.  For example, you can
6239 configure bookmarks in your web browser to send a link to the current page to
6240 Org and create a note from it using Remember (@pxref{Remember}).  Or you
6241 could create a bookmark that will tell Emacs to open the local source file of
6242 a remote website you are looking at with the browser.  See
6243 @uref{http://orgmode.org/worg/org-contrib/org-protocol.php} for detailed
6244 documentation and setup instructions.
6246 @node Refiling notes, Archiving, Protocols, Capture - Refile - Archive
6247 @section Refiling notes
6248 @cindex refiling notes
6250 When reviewing the captured data, you may want to refile some of the entries
6251 into a different list, for example into a project.  Cutting, finding the
6252 right location, and then pasting the note is cumbersome.  To simplify this
6253 process, you can use the following special command:
6255 @table @kbd
6256 @kindex C-c C-w
6257 @item C-c C-w
6258 @vindex org-reverse-note-order
6259 @vindex org-refile-targets
6260 @vindex org-refile-use-outline-path
6261 @vindex org-outline-path-complete-in-steps
6262 @vindex org-refile-allow-creating-parent-nodes
6263 @vindex org-log-refile
6264 Refile the entry or region at point.  This command offers possible locations
6265 for refiling the entry and lets you select one with completion.  The item (or
6266 all items in the region) is filed below the target heading as a subitem.
6267 Depending on @code{org-reverse-note-order}, it will be either the first or
6268 last subitem.@*
6269 By default, all level 1 headlines in the current buffer are considered to be
6270 targets, but you can have more complex definitions across a number of files.
6271 See the variable @code{org-refile-targets} for details.  If you would like to
6272 select a location via a file-path-like completion along the outline path, see
6273 the variables @code{org-refile-use-outline-path} and
6274 @code{org-outline-path-complete-in-steps}.  If you would like to be able to
6275 create new nodes as new parents for refiling on the fly, check the
6276 variable @code{org-refile-allow-creating-parent-nodes}.
6277 When the variable @code{org-log-refile}@footnote{with corresponding
6278 @code{#+STARTUP} keywords @code{logrefile}, @code{lognoterefile},
6279 and @code{nologrefile}} is set, a time stamp or a note will be
6280 recorded when an entry has been refiled.
6281 @kindex C-u C-c C-w
6282 @item C-u C-c C-w
6283 Use the refile interface to jump to a heading.
6284 @kindex C-u C-u C-c C-w
6285 @item C-u C-u C-c C-w
6286 Jump to the location where @code{org-refile} last moved a tree to.
6287 @item C-2 C-c C-w
6288 Refile as the child of the item currently being clocked.
6289 @end table
6291 @node Archiving,  , Refiling notes, Capture - Refile - Archive
6292 @section Archiving
6293 @cindex archiving
6295 When a project represented by a (sub)tree is finished, you may want
6296 to move the tree out of the way and to stop it from contributing to the
6297 agenda.  Archiving is important to keep your working files compact and global
6298 searches like the construction of agenda views fast.
6300 @table @kbd
6301 @kindex C-c C-x C-a
6302 @item C-c C-x C-a
6303 @vindex org-archive-default-command
6304 Archive the current entry using the command specified in the variable
6305 @code{org-archive-default-command}.
6306 @end table
6308 @menu
6309 * Moving subtrees::             Moving a tree to an archive file
6310 * Internal archiving::          Switch off a tree but keep i in the file
6311 @end menu
6313 @node Moving subtrees, Internal archiving, Archiving, Archiving
6314 @subsection Moving a tree to the archive file
6315 @cindex external archiving
6317 The most common archiving action is to move a project tree to another file,
6318 the archive file.
6320 @table @kbd
6321 @kindex C-c $
6322 @kindex C-c C-x C-s
6323 @item C-c C-x C-s@ @r{or short} @ C-c $
6324 @vindex org-archive-location
6325 Archive the subtree starting at the cursor position to the location
6326 given by @code{org-archive-location}.
6327 @kindex C-u C-c C-x C-s
6328 @item C-u C-c C-x C-s
6329 Check if any direct children of the current headline could be moved to
6330 the archive.  To do this, each subtree is checked for open TODO entries.
6331 If none are found, the command offers to move it to the archive
6332 location.  If the cursor is @emph{not} on a headline when this command
6333 is invoked, the level 1 trees will be checked.
6334 @end table
6336 @cindex archive locations
6337 The default archive location is a file in the same directory as the
6338 current file, with the name derived by appending @file{_archive} to the
6339 current file name.  For information and examples on how to change this,
6340 see the documentation string of the variable
6341 @code{org-archive-location}.  There is also an in-buffer option for
6342 setting this variable, for example@footnote{For backward compatibility,
6343 the following also works: If there are several such lines in a file,
6344 each specifies the archive location for the text below it.  The first
6345 such line also applies to any text before its definition.  However,
6346 using this method is @emph{strongly} deprecated as it is incompatible
6347 with the outline structure of the document.  The correct method for
6348 setting multiple archive locations in a buffer is using properties.}:
6350 @cindex #+ARCHIVE
6351 @example
6352 #+ARCHIVE: %s_done::
6353 @end example
6355 @cindex property, ARCHIVE
6356 @noindent
6357 If you would like to have a special ARCHIVE location for a single entry
6358 or a (sub)tree, give the entry an @code{:ARCHIVE:} property with the
6359 location as the value (@pxref{Properties and Columns}).
6361 @vindex org-archive-save-context-info
6362 When a subtree is moved, it receives a number of special properties that
6363 record context information like the file from where the entry came, its
6364 outline path the archiving time etc.  Configure the variable
6365 @code{org-archive-save-context-info} to adjust the amount of information
6366 added.
6369 @node Internal archiving,  , Moving subtrees, Archiving
6370 @subsection Internal archiving
6372 If you want to just switch off (for agenda views) certain subtrees without
6373 moving them to a different file, you can use the @code{ARCHIVE tag}.
6375 A headline that is marked with the ARCHIVE tag (@pxref{Tags}) stays at
6376 its location in the outline tree, but behaves in the following way:
6377 @itemize @minus
6378 @item
6379 @vindex org-cycle-open-archived-trees
6380 It does not open when you attempt to do so with a visibility cycling
6381 command (@pxref{Visibility cycling}).  You can force cycling archived
6382 subtrees with @kbd{C-@key{TAB}}, or by setting the option
6383 @code{org-cycle-open-archived-trees}.  Also normal outline commands like
6384 @code{show-all} will open archived subtrees.
6385 @item
6386 @vindex org-sparse-tree-open-archived-trees
6387 During sparse tree construction (@pxref{Sparse trees}), matches in
6388 archived subtrees are not exposed, unless you configure the option
6389 @code{org-sparse-tree-open-archived-trees}.
6390 @item
6391 @vindex org-agenda-skip-archived-trees
6392 During agenda view construction (@pxref{Agenda Views}), the content of
6393 archived trees is ignored unless you configure the option
6394 @code{org-agenda-skip-archived-trees}, in which case these trees will always
6395 be included.  In the agenda you can press @kbd{v a} to get archives
6396 temporarily included.
6397 @item
6398 @vindex org-export-with-archived-trees
6399 Archived trees are not exported (@pxref{Exporting}), only the headline
6400 is.  Configure the details using the variable
6401 @code{org-export-with-archived-trees}.
6402 @item
6403 @vindex org-columns-skip-arrchived-trees
6404 Archived trees are excluded from column view unless the variable
6405 @code{org-columns-skip-arrchived-trees} is configured to @code{nil}.
6406 @end itemize
6408 The following commands help managing the ARCHIVE tag:
6410 @table @kbd
6411 @kindex C-c C-x a
6412 @item C-c C-x a
6413 Toggle the ARCHIVE tag for the current headline.  When the tag is set,
6414 the headline changes to a shadowed face, and the subtree below it is
6415 hidden.
6416 @kindex C-u C-c C-x a
6417 @item C-u C-c C-x a
6418 Check if any direct children of the current headline should be archived.
6419 To do this, each subtree is checked for open TODO entries.  If none are
6420 found, the command offers to set the ARCHIVE tag for the child.  If the
6421 cursor is @emph{not} on a headline when this command is invoked, the
6422 level 1 trees will be checked.
6423 @kindex C-@kbd{TAB}
6424 @item C-@kbd{TAB}
6425 Cycle a tree even if it is tagged with ARCHIVE.
6426 @kindex C-c C-x A
6427 @item C-c C-x A
6428 Move the current entry to the @emph{Archive Sibling}.  This is a sibling of
6429 the entry with the heading @samp{Archive} and the tag @samp{ARCHIVE}.  The
6430 entry becomes a child of that sibling and in this way retains a lot of its
6431 original context, including inherited tags and approximate position in the
6432 outline.
6433 @end table
6436 @node Agenda Views, Markup, Capture - Refile - Archive, Top
6437 @chapter Agenda Views
6438 @cindex agenda views
6440 Due to the way Org works, TODO items, time-stamped items, and
6441 tagged headlines can be scattered throughout a file or even a number of
6442 files.  To get an overview of open action items, or of events that are
6443 important for a particular date, this information must be collected,
6444 sorted and displayed in an organized way.
6446 Org can select items based on various criteria and display them
6447 in a separate buffer.  Seven different view types are provided:
6449 @itemize @bullet
6450 @item
6451 an @emph{agenda} that is like a calendar and shows information
6452 for specific dates,
6453 @item
6454 a @emph{TODO list} that covers all unfinished
6455 action items,
6456 @item
6457 a @emph{match view}, showings headlines based on the tags, properties, and
6458 TODO state associated with them,
6459 @item
6460 a @emph{timeline view} that shows all events in a single Org file,
6461 in time-sorted view,
6462 @item
6463 a @emph{text search view} that shows all entries from multiple files
6464 that contain specified keywords,
6465 @item
6466 a @emph{stuck projects view} showing projects that currently don't move
6467 along, and
6468 @item
6469 @emph{custom views} that are special searches and combinations of different
6470 views.
6471 @end itemize
6473 @noindent
6474 The extracted information is displayed in a special @emph{agenda
6475 buffer}.  This buffer is read-only, but provides commands to visit the
6476 corresponding locations in the original Org files, and even to
6477 edit these files remotely.
6479 @vindex org-agenda-window-setup
6480 @vindex org-agenda-restore-windows-after-quit
6481 Two variables control how the agenda buffer is displayed and whether the
6482 window configuration is restored when the agenda exits:
6483 @code{org-agenda-window-setup} and
6484 @code{org-agenda-restore-windows-after-quit}.
6486 @menu
6487 * Agenda files::                Files being searched for agenda information
6488 * Agenda dispatcher::           Keyboard access to agenda views
6489 * Built-in agenda views::       What is available out of the box?
6490 * Presentation and sorting::    How agenda items are prepared for display
6491 * Agenda commands::             Remote editing of Org trees
6492 * Custom agenda views::         Defining special searches and views
6493 * Exporting Agenda Views::      Writing a view to a file
6494 * Agenda column view::          Using column view for collected entries
6495 @end menu
6497 @node Agenda files, Agenda dispatcher, Agenda Views, Agenda Views
6498 @section Agenda files
6499 @cindex agenda files
6500 @cindex files for agenda
6502 @vindex org-agenda-files
6503 The information to be shown is normally collected from all @emph{agenda
6504 files}, the files listed in the variable
6505 @code{org-agenda-files}@footnote{If the value of that variable is not a
6506 list, but a single file name, then the list of agenda files will be
6507 maintained in that external file.}. If a directory is part of this list,
6508 all files with the extension @file{.org} in this directory will be part
6509 of the list.
6511 Thus, even if you only work with a single Org file, that file should
6512 be put into the list@footnote{When using the dispatcher, pressing
6513 @kbd{<} before selecting a command will actually limit the command to
6514 the current file, and ignore @code{org-agenda-files} until the next
6515 dispatcher command.}.  You can customize @code{org-agenda-files}, but
6516 the easiest way to maintain it is through the following commands
6518 @cindex files, adding to agenda list
6519 @table @kbd
6520 @kindex C-c [
6521 @item C-c [
6522 Add current file to the list of agenda files.  The file is added to
6523 the front of the list.  If it was already in the list, it is moved to
6524 the front.  With a prefix argument, file is added/moved to the end.
6525 @kindex C-c ]
6526 @item C-c ]
6527 Remove current file from the list of agenda files.
6528 @kindex C-,
6529 @kindex C-'
6530 @item C-,
6531 @itemx C-'
6532 Cycle through agenda file list, visiting one file after the other.
6533 @kindex M-x org-iswitchb
6534 @item M-x org-iswitchb
6535 Command to use an @code{iswitchb}-like interface to switch to and between Org
6536 buffers.
6537 @end table
6539 @noindent
6540 The Org menu contains the current list of files and can be used
6541 to visit any of them.
6543 If you would like to focus the agenda temporarily on a file not in
6544 this list, or on just one file in the list, or even on only a subtree in a
6545 file, then this can be done in different ways.  For a single agenda command,
6546 you may press @kbd{<} once or several times in the dispatcher
6547 (@pxref{Agenda dispatcher}).  To restrict the agenda scope for an
6548 extended period, use the following commands:
6550 @table @kbd
6551 @kindex C-c C-x <
6552 @item C-c C-x <
6553 Permanently restrict the agenda to the current subtree.  When with a
6554 prefix argument, or with the cursor before the first headline in a file,
6555 the agenda scope is set to the entire file.  This restriction remains in
6556 effect until removed with @kbd{C-c C-x >}, or by typing either @kbd{<}
6557 or @kbd{>} in the agenda dispatcher.  If there is a window displaying an
6558 agenda view, the new restriction takes effect immediately.
6559 @kindex C-c C-x >
6560 @item C-c C-x >
6561 Remove the permanent restriction created by @kbd{C-c C-x <}.
6562 @end table
6564 @noindent
6565 When working with @file{speedbar.el}, you can use the following commands in
6566 the Speedbar frame:
6567 @table @kbd
6568 @kindex <
6569 @item < @r{in the speedbar frame}
6570 Permanently restrict the agenda to the item---either an Org file or a subtree
6571 in such a file---at the cursor in the Speedbar frame.
6572 If there is a window displaying an agenda view, the new restriction takes
6573 effect immediately.
6574 @kindex >
6575 @item > @r{in the speedbar frame}
6576 Lift the restriction.
6577 @end table
6579 @node Agenda dispatcher, Built-in agenda views, Agenda files, Agenda Views
6580 @section The agenda dispatcher
6581 @cindex agenda dispatcher
6582 @cindex dispatching agenda commands
6583 The views are created through a dispatcher, which should be bound to a
6584 global key---for example @kbd{C-c a} (@pxref{Installation}).  In the
6585 following we will assume that @kbd{C-c a} is indeed how the dispatcher
6586 is accessed and list keyboard access to commands accordingly.  After
6587 pressing @kbd{C-c a}, an additional letter is required to execute a
6588 command.  The dispatcher offers the following default commands:
6589 @table @kbd
6590 @item a
6591 Create the calendar-like agenda (@pxref{Weekly/daily agenda}).
6592 @item t @r{/} T
6593 Create a list of all TODO items (@pxref{Global TODO list}).
6594 @item m @r{/} M
6595 Create a list of headlines matching a TAGS expression (@pxref{Matching
6596 tags and properties}).
6597 @item L
6598 Create the timeline view for the current buffer (@pxref{Timeline}).
6599 @item s
6600 Create a list of entries selected by a boolean expression of keywords
6601 and/or regular expressions that must or must not occur in the entry.
6602 @item /
6603 @vindex org-agenda-text-search-extra-files
6604 Search for a regular expression in all agenda files and additionally in
6605 the files listed in @code{org-agenda-text-search-extra-files}.  This
6606 uses the Emacs command @code{multi-occur}.  A prefix argument can be
6607 used to specify the number of context lines for each match, default is
6609 @item # @r{/} !
6610 Create a list of stuck projects (@pxref{Stuck projects}).
6611 @item <
6612 Restrict an agenda command to the current buffer@footnote{For backward
6613 compatibility, you can also press @kbd{1} to restrict to the current
6614 buffer.}.  After pressing @kbd{<}, you still need to press the character
6615 selecting the command.
6616 @item < <
6617 If there is an active region, restrict the following agenda command to
6618 the region.  Otherwise, restrict it to the current subtree@footnote{For
6619 backward compatibility, you can also press @kbd{0} to restrict to the
6620 current region/subtree.}.  After pressing @kbd{< <}, you still need to press the
6621 character selecting the command.
6622 @end table
6624 You can also define custom commands that will be accessible through the
6625 dispatcher, just like the default commands.  This includes the
6626 possibility to create extended agenda buffers that contain several
6627 blocks together, for example the weekly agenda, the global TODO list and
6628 a number of special tags matches.  @xref{Custom agenda views}.
6630 @node Built-in agenda views, Presentation and sorting, Agenda dispatcher, Agenda Views
6631 @section The built-in agenda views
6633 In this section we describe the built-in views.
6635 @menu
6636 * Weekly/daily agenda::         The calendar page with current tasks
6637 * Global TODO list::            All unfinished action items
6638 * Matching tags and properties::  Structured information with fine-tuned search
6639 * Timeline::                    Time-sorted view for single file
6640 * Search view::                 Find entries by searching for text
6641 * Stuck projects::              Find projects you need to review
6642 @end menu
6644 @node Weekly/daily agenda, Global TODO list, Built-in agenda views, Built-in agenda views
6645 @subsection The weekly/daily agenda
6646 @cindex agenda
6647 @cindex weekly agenda
6648 @cindex daily agenda
6650 The purpose of the weekly/daily @emph{agenda} is to act like a page of a
6651 paper agenda, showing all the tasks for the current week or day.
6653 @table @kbd
6654 @cindex org-agenda, command
6655 @kindex C-c a a
6656 @item C-c a a
6657 @vindex org-agenda-ndays
6658 Compile an agenda for the current week from a list of Org files.  The agenda
6659 shows the entries for each day.  With a numeric prefix@footnote{For backward
6660 compatibility, the universal prefix @kbd{C-u} causes all TODO entries to be
6661 listed before the agenda.  This feature is deprecated, use the dedicated TODO
6662 list, or a block agenda instead (@pxref{Block agenda}).}  (like @kbd{C-u 2 1
6663 C-c a a}) you may set the number of days to be displayed (see also the
6664 variable @code{org-agenda-ndays})
6665 @end table
6667 Remote editing from the agenda buffer means, for example, that you can
6668 change the dates of deadlines and appointments from the agenda buffer.
6669 The commands available in the Agenda buffer are listed in @ref{Agenda
6670 commands}.
6672 @subsubheading Calendar/Diary integration
6673 @cindex calendar integration
6674 @cindex diary integration
6676 Emacs contains the calendar and diary by Edward M. Reingold.  The
6677 calendar displays a three-month calendar with holidays from different
6678 countries and cultures.  The diary allows you to keep track of
6679 anniversaries, lunar phases, sunrise/set, recurrent appointments
6680 (weekly, monthly) and more.  In this way, it is quite complementary to
6681 Org.  It can be very useful to combine output from Org with
6682 the diary.
6684 In order to include entries from the Emacs diary into Org mode's
6685 agenda, you only need to customize the variable
6687 @lisp
6688 (setq org-agenda-include-diary t)
6689 @end lisp
6691 @noindent After that, everything will happen automatically.  All diary
6692 entries including holidays, anniversaries, etc., will be included in the
6693 agenda buffer created by Org mode.  @key{SPC}, @key{TAB}, and
6694 @key{RET} can be used from the agenda buffer to jump to the diary
6695 file in order to edit existing diary entries.  The @kbd{i} command to
6696 insert new entries for the current date works in the agenda buffer, as
6697 well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
6698 Sunrise/Sunset times, show lunar phases and to convert to other
6699 calendars, respectively.  @kbd{c} can be used to switch back and forth
6700 between calendar and agenda.
6702 If you are using the diary only for sexp entries and holidays, it is
6703 faster to not use the above setting, but instead to copy or even move
6704 the entries into an Org file. Org mode evaluates diary-style sexp
6705 entries, and does it faster because there is no overhead for first
6706 creating the diary display.  Note that the sexp entries must start at
6707 the left margin, no whitespace is allowed before them.  For example,
6708 the following segment of an Org file will be processed and entries
6709 will be made in the agenda:
6711 @example
6712 * Birthdays and similar stuff
6713 #+CATEGORY: Holiday
6714 %%(org-calendar-holiday)   ; special function for holiday names
6715 #+CATEGORY: Ann
6716 %%(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
6717 %%(diary-anniversary 10  2 1869) Mahatma Gandhi would be %d years old
6718 @end example
6720 @subsubheading Anniversaries from BBDB
6721 @cindex BBDB, anniversaries
6722 @cindex anniversaries, from BBDB
6724 If you are using the Big Brothers Database to store your contacts, you will
6725 very likely prefer to store anniversaries in BBDB rather than in a
6726 separate Org or diary file.  Org supports this and will show BBDB
6727 anniversaries as part of the agenda.  All you need to do is to add the
6728 following to one your your agenda files:
6730 @example
6731 * Anniversaries
6732   :PROPERTIES:
6733   :CATEGORY: Anniv
6734   :END
6735 %%(org-bbdb-anniversaries)
6736 @end example
6738 You can then go ahead and define anniversaries for a BBDB record.  Basically,
6739 you need to press @kbd{C-o anniversary @key{RET}} with the cursor in a BBDB
6740 record and then add the date in the format @code{YYYY-MM-DD}, followed by a
6741 space and the class of the anniversary (@samp{birthday} or @samp{wedding}, or
6742 a format string).  If you omit the class, it will default to @samp{birthday}.
6743 Here are a few examples, the header for the file @file{org-bbdb.el} contains
6744 more detailed information.
6746 @example
6747 1973-06-22
6748 1955-08-02 wedding
6749 2008-04-14 %s released version 6.01 of org-mode, %d years ago
6750 @end example
6752 After a change to BBDB, or for the first agenda display during an Emacs
6753 session, the agenda display will suffer a short delay as Org updates its
6754 hash with anniversaries.  However, from then on things will be very fast---much
6755 faster in fact than a long list of @samp{%%(diary-anniversary)} entries
6756 in an Org or Diary file.
6758 @subsubheading Appointment reminders
6759 @cindex @file{appt.el}
6760 @cindex appointment reminders
6762 Org can interact with Emacs appointments notification facility.  To add all
6763 the appointments of your agenda files, use the command
6764 @code{org-agenda-to-appt}.  This command also lets you filter through the
6765 list of your appointments and add only those belonging to a specific category
6766 or matching a regular expression. See the docstring for details.
6768 @node Global TODO list, Matching tags and properties, Weekly/daily agenda, Built-in agenda views
6769 @subsection The global TODO list
6770 @cindex global TODO list
6771 @cindex TODO list, global
6773 The global TODO list contains all unfinished TODO items formatted and
6774 collected into a single place.
6776 @table @kbd
6777 @kindex C-c a t
6778 @item C-c a t
6779 Show the global TODO list.  This collects the TODO items from all
6780 agenda files (@pxref{Agenda Views}) into a single buffer.  The buffer is in
6781 @code{agenda-mode}, so there are commands to examine and manipulate
6782 the TODO entries directly from that buffer (@pxref{Agenda commands}).
6783 @kindex C-c a T
6784 @item C-c a T
6785 @cindex TODO keyword matching
6786 @vindex org-todo-keywords
6787 Like the above, but allows selection of a specific TODO keyword.  You
6788 can also do this by specifying a prefix argument to @kbd{C-c a t}.  With
6789 a @kbd{C-u} prefix you are prompted for a keyword, and you may also
6790 specify several keywords by separating them with @samp{|} as the boolean OR
6791 operator.  With a numeric prefix, the nth keyword in
6792 @code{org-todo-keywords} is selected.
6793 @kindex r
6794 The @kbd{r} key in the agenda buffer regenerates it, and you can give
6795 a prefix argument to this command to change the selected TODO keyword,
6796 for example @kbd{3 r}.  If you often need a search for a specific
6797 keyword, define a custom command for it (@pxref{Agenda dispatcher}).@*
6798 Matching specific TODO keywords can also be done as part of a tags
6799 search (@pxref{Tag searches}).
6800 @end table
6802 Remote editing of TODO items means that you can change the state of a
6803 TODO entry with a single key press.  The commands available in the
6804 TODO list are described in @ref{Agenda commands}.
6806 @cindex sublevels, inclusion into TODO list
6807 Normally the global TODO list simply shows all headlines with TODO
6808 keywords.  This list can become very long.  There are two ways to keep
6809 it more compact:
6810 @itemize @minus
6811 @item
6812 @vindex org-agenda-todo-ignore-scheduled
6813 @vindex org-agenda-todo-ignore-deadlines
6814 @vindex org-agenda-todo-ignore-with-date
6815 Some people view a TODO item that has been @emph{scheduled} for execution or
6816 have a @emph{deadline} (@pxref{Timestamps}) as no longer @emph{open}.
6817 Configure the variables @code{org-agenda-todo-ignore-scheduled},
6818 @code{org-agenda-todo-ignore-deadlines}, and/or
6819 @code{org-agenda-todo-ignore-with-date} to exclude such items from the
6820 global TODO list.
6821 @item
6822 @vindex org-agenda-todo-list-sublevels
6823 TODO items may have sublevels to break up the task into subtasks.  In
6824 such cases it may be enough to list only the highest level TODO headline
6825 and omit the sublevels from the global list.  Configure the variable
6826 @code{org-agenda-todo-list-sublevels} to get this behavior.
6827 @end itemize
6829 @node Matching tags and properties, Timeline, Global TODO list, Built-in agenda views
6830 @subsection Matching tags and properties
6831 @cindex matching, of tags
6832 @cindex matching, of properties
6833 @cindex tags view
6834 @cindex match view
6836 If headlines in the agenda files are marked with @emph{tags} (@pxref{Tags}),
6837 or have properties (@pxref{Properties and Columns}), you can select headlines
6838 based on this metadata and collect them into an agenda buffer.  The match
6839 syntax described here also applies when creating sparse trees with @kbd{C-c /
6842 @table @kbd
6843 @kindex C-c a m
6844 @item C-c a m
6845 Produce a list of all headlines that match a given set of tags.  The
6846 command prompts for a selection criterion, which is a boolean logic
6847 expression with tags, like @samp{+work+urgent-withboss} or
6848 @samp{work|home} (@pxref{Tags}).  If you often need a specific search,
6849 define a custom command for it (@pxref{Agenda dispatcher}).
6850 @kindex C-c a M
6851 @item C-c a M
6852 @vindex org-tags-match-list-sublevels
6853 @vindex org-agenda-tags-todo-honor-ignore-options
6854 Like @kbd{C-c a m}, but only select headlines that are also TODO items and
6855 force checking subitems (see variable @code{org-tags-match-list-sublevels}).
6856 To exclude scheduled/deadline items, see the variable
6857 @code{org-agenda-tags-todo-honor-ignore-options}.  Matching specific TODO
6858 keywords together with a tags match is also possible, see @ref{Tag searches}.
6859 @end table
6861 The commands available in the tags list are described in @ref{Agenda
6862 commands}.
6864 @subsubheading Match syntax
6866 @cindex Boolean logic, for tag/property searches
6867 A search string can use Boolean operators @samp{&} for AND and @samp{|} for
6868 OR.  @samp{&} binds more strongly than @samp{|}.  Parentheses are currently
6869 not implemented.  Each element in the search is either a tag, a regular
6870 expression matching tags, or an expression like @code{PROPERTY OPERATOR
6871 VALUE} with a comparison operator, accessing a property value.  Each element
6872 may be preceded by @samp{-}, to select against it, and @samp{+} is syntactic
6873 sugar for positive selection.  The AND operator @samp{&} is optional when
6874 @samp{+} or @samp{-} is present.  Here are some examples, using only tags.
6876 @table @samp
6877 @item +work-boss
6878 Select headlines tagged @samp{:work:}, but discard those also tagged
6879 @samp{:boss:}.
6880 @item work|laptop
6881 Selects lines tagged @samp{:work:} or @samp{:laptop:}.
6882 @item work|laptop+night
6883 Like before, but require the @samp{:laptop:} lines to be tagged also
6884 @samp{:night:}.
6885 @end table
6887 @cindex regular expressions, with tags search
6888 Instead of a tag, you may also specify a regular expression enclosed in curly
6889 braces.  For example,
6890 @samp{work+@{^boss.*@}} matches headlines that contain the tag
6891 @samp{:work:} and any tag @i{starting} with @samp{boss}.
6893 @cindex TODO keyword matching, with tags search
6894 @cindex level, require for tags/property match
6895 @cindex category, require for tags/property match
6896 @vindex org-odd-levels-only
6897 You may also test for properties (@pxref{Properties and Columns}) at the same
6898 time as matching tags.  The properties may be real properties, or special
6899 properties that represent other metadata (@pxref{Special properties}).  For
6900 example, the ``property'' @code{TODO} represents the TODO keyword of the
6901 entry.  Or, the ``property'' @code{LEVEL} represents the level of an entry.
6902 So a search @samp{+LEVEL=3+boss-TODO="DONE"} lists all level three headlines
6903 that have the tag @samp{boss} and are @emph{not} marked with the TODO keyword
6904 DONE.  In buffers with @code{org-odd-levels-only} set, @samp{LEVEL} does not
6905 count the number of stars, but @samp{LEVEL=2} will correspond to 3 stars etc.
6907 Here are more examples:
6908 @table @samp
6909 @item work+TODO="WAITING"
6910 Select @samp{:work:}-tagged TODO lines with the specific TODO
6911 keyword @samp{WAITING}.
6912 @item work+TODO="WAITING"|home+TODO="WAITING"
6913 Waiting tasks both at work and at home.
6914 @end table
6916 When matching properties, a number of different operators can be used to test
6917 the value of a property.  Here is a complex example:
6919 @example
6920 +work-boss+PRIORITY="A"+Coffee="unlimited"+Effort<2         \
6921          +With=@{Sarah\|Denny@}+SCHEDULED>="<2008-10-11>"
6922 @end example
6924 @noindent
6925 The type of comparison will depend on how the comparison value is written:
6926 @itemize @minus
6927 @item
6928 If the comparison value is a plain number, a numerical comparison is done,
6929 and the allowed operators are @samp{<}, @samp{=}, @samp{>}, @samp{<=},
6930 @samp{>=}, and @samp{<>}.
6931 @item
6932 If the comparison value is enclosed in double-quotes,
6933 a string comparison is done, and the same operators are allowed.
6934 @item
6935 If the comparison value is enclosed in double-quotes @emph{and} angular
6936 brackets (like @samp{DEADLINE<="<2008-12-24 18:30>"}), both values are
6937 assumed to be date/time specifications in the standard Org way, and the
6938 comparison will be done accordingly.  Special values that will be recognized
6939 are @code{"<now>"} for now (including time), and @code{"<today>"}, and
6940 @code{"<tomorrow>"} for these days at 0:00 hours, i.e. without a time
6941 specification.  Also strings like @code{"<+5d>"} or @code{"<-2m>"} with units
6942 @code{d}, @code{w}, @code{m}, and @code{y} for day, week, month, and year,
6943 respectively, can be used.
6944 @item
6945 If the comparison value is enclosed
6946 in curly braces, a regexp match is performed, with @samp{=} meaning that the
6947 regexp matches the property value, and @samp{<>} meaning that it does not
6948 match.
6949 @end itemize
6951 So the search string in the example finds entries tagged @samp{:work:} but
6952 not @samp{:boss:}, which also have a priority value @samp{A}, a
6953 @samp{:Coffee:} property with the value @samp{unlimited}, an @samp{Effort}
6954 property that is numerically smaller than 2, a @samp{:With:} property that is
6955 matched by the regular expression @samp{Sarah\|Denny}, and that are scheduled
6956 on or after October 11, 2008.
6958 Accessing TODO, LEVEL, and CATEGORY during a search is fast.  Accessing any
6959 other properties will slow down the search.  However, once you have paid the
6960 price by accessing one property, testing additional properties is cheap
6961 again.
6963 You can configure Org mode to use property inheritance during a search, but
6964 beware that this can slow down searches considerably.  See @ref{Property
6965 inheritance}, for details.
6967 For backward compatibility, and also for typing speed, there is also a
6968 different way to test TODO states in a search.  For this, terminate the
6969 tags/property part of the search string (which may include several terms
6970 connected with @samp{|}) with a @samp{/} and then specify a Boolean
6971 expression just for TODO keywords.  The syntax is then similar to that for
6972 tags, but should be applied with care: for example, a positive
6973 selection on several TODO keywords cannot meaningfully be combined with
6974 boolean AND.  However, @emph{negative selection} combined with AND can be
6975 meaningful.  To make sure that only lines are checked that actually have any
6976 TODO keyword (resulting in a speed-up), use @kbd{C-c a M}, or equivalently
6977 start the TODO part after the slash with @samp{!}.  Examples:
6979 @table @samp
6980 @item work/WAITING
6981 Same as @samp{work+TODO="WAITING"}
6982 @item work/!-WAITING-NEXT
6983 Select @samp{:work:}-tagged TODO lines that are neither @samp{WAITING}
6984 nor @samp{NEXT}
6985 @item work/!+WAITING|+NEXT
6986 Select @samp{:work:}-tagged TODO lines that are either @samp{WAITING} or
6987 @samp{NEXT}.
6988 @end table
6990 @node Timeline, Search view, Matching tags and properties, Built-in agenda views
6991 @subsection Timeline for a single file
6992 @cindex timeline, single file
6993 @cindex time-sorted view
6995 The timeline summarizes all time-stamped items from a single Org mode
6996 file in a @emph{time-sorted view}.  The main purpose of this command is
6997 to give an overview over events in a project.
6999 @table @kbd
7000 @kindex C-c a L
7001 @item C-c a L
7002 Show a time-sorted view of the Org file, with all time-stamped items.
7003 When called with a @kbd{C-u} prefix, all unfinished TODO entries
7004 (scheduled or not) are also listed under the current date.
7005 @end table
7007 @noindent
7008 The commands available in the timeline buffer are listed in
7009 @ref{Agenda commands}.
7011 @node Search view, Stuck projects, Timeline, Built-in agenda views
7012 @subsection Search view
7013 @cindex search view
7014 @cindex text search
7015 @cindex searching, for text
7017 This agenda view is a general text search facility for Org mode entries.
7018 It is particularly useful to find notes.
7020 @table @kbd
7021 @kindex C-c a s
7022 @item C-c a s
7023 This is a special search that lets you select entries by matching a substring
7024 or specific words using a boolean logic.
7025 @end table
7026 For example, the search string @samp{computer equipment} will find entries
7027 that contain @samp{computer equipment} as a substring.  If the two words are
7028 separated by more space or a line break, the search will still match.
7029 Search view can also search for specific keywords in the entry, using Boolean
7030 logic.  The search string @samp{+computer +wifi -ethernet -@{8\.11[bg]@}}
7031 will search for note entries that contain the keywords @code{computer}
7032 and @code{wifi}, but not the keyword @code{ethernet}, and which are also
7033 not matched by the regular expression @code{8\.11[bg]}, meaning to
7034 exclude both 8.11b and 8.11g.  The first @samp{+} is necessary to turn on
7035 word search, other @samp{+} characters are optional.  For more details, see
7036 the docstring of the command @code{org-search-view}.
7038 @vindex org-agenda-text-search-extra-files
7039 Note that in addition to the agenda files, this command will also search
7040 the files listed in @code{org-agenda-text-search-extra-files}.
7042 @node Stuck projects,  , Search view, Built-in agenda views
7043 @subsection Stuck projects
7045 If you are following a system like David Allen's GTD to organize your
7046 work, one of the ``duties'' you have is a regular review to make sure
7047 that all projects move along.  A @emph{stuck} project is a project that
7048 has no defined next actions, so it will never show up in the TODO lists
7049 Org mode produces.  During the review, you need to identify such
7050 projects and define next actions for them.
7052 @table @kbd
7053 @kindex C-c a #
7054 @item C-c a #
7055 List projects that are stuck.
7056 @kindex C-c a !
7057 @item C-c a !
7058 @vindex org-stuck-projects
7059 Customize the variable @code{org-stuck-projects} to define what a stuck
7060 project is and how to find it.
7061 @end table
7063 You almost certainly will have to configure this view before it will
7064 work for you.  The built-in default assumes that all your projects are
7065 level-2 headlines, and that a project is not stuck if it has at least
7066 one entry marked with a TODO keyword TODO or NEXT or NEXTACTION.
7068 Let's assume that you, in your own way of using Org mode, identify
7069 projects with a tag PROJECT, and that you use a TODO keyword MAYBE to
7070 indicate a project that should not be considered yet.  Let's further
7071 assume that the TODO keyword DONE marks finished projects, and that NEXT
7072 and TODO indicate next actions.  The tag @@SHOP indicates shopping and
7073 is a next action even without the NEXT tag.  Finally, if the project
7074 contains the special word IGNORE anywhere, it should not be listed
7075 either.  In this case you would start by identifying eligible projects
7076 with a tags/todo match@footnote{@xref{Tag searches}.}
7077 @samp{+PROJECT/-MAYBE-DONE}, and then check for TODO, NEXT, @@SHOP, and
7078 IGNORE in the subtree to identify projects that are not stuck.  The
7079 correct customization for this is
7081 @lisp
7082 (setq org-stuck-projects
7083       '("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP")
7084                                "\\<IGNORE\\>"))
7085 @end lisp
7087 Note that if a project is identified as non-stuck, the subtree of this entry
7088 will still be searched for stuck projects.
7090 @node Presentation and sorting, Agenda commands, Built-in agenda views, Agenda Views
7091 @section Presentation and sorting
7092 @cindex presentation, of agenda items
7094 @vindex org-agenda-prefix-format
7095 Before displaying items in an agenda view, Org mode visually prepares
7096 the items and sorts them.  Each item occupies a single line.  The line
7097 starts with a @emph{prefix} that contains the @emph{category}
7098 (@pxref{Categories}) of the item and other important information.  You can
7099 customize the prefix using the option @code{org-agenda-prefix-format}.
7100 The prefix is followed by a cleaned-up version of the outline headline
7101 associated with the item.
7103 @menu
7104 * Categories::                  Not all tasks are equal
7105 * Time-of-day specifications::  How the agenda knows the time
7106 * Sorting of agenda items::     The order of things
7107 @end menu
7109 @node Categories, Time-of-day specifications, Presentation and sorting, Presentation and sorting
7110 @subsection Categories
7112 @cindex category
7113 The category is a broad label assigned to each agenda item.  By default,
7114 the category is simply derived from the file name, but you can also
7115 specify it with a special line in the buffer, like this@footnote{For
7116 backward compatibility, the following also works: if there are several
7117 such lines in a file, each specifies the category for the text below it.
7118 The first category also applies to any text before the first CATEGORY
7119 line.  However, using this method is @emph{strongly} deprecated as it is
7120 incompatible with the outline structure of the document.  The correct
7121 method for setting multiple categories in a buffer is using a
7122 property.}:
7124 @example
7125 #+CATEGORY: Thesis
7126 @end example
7128 @noindent
7129 @cindex property, CATEGORY
7130 If you would like to have a special CATEGORY for a single entry or a
7131 (sub)tree, give the entry a @code{:CATEGORY:} property with the
7132 special category you want to apply as the value.
7134 @noindent
7135 The display in the agenda buffer looks best if the category is not
7136 longer than 10 characters.
7138 @node Time-of-day specifications, Sorting of agenda items, Categories, Presentation and sorting
7139 @subsection Time-of-day specifications
7140 @cindex time-of-day specification
7142 Org mode checks each agenda item for a time-of-day specification.  The
7143 time can be part of the timestamp that triggered inclusion into the
7144 agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}.  Time
7145 ranges can be specified with two timestamps, like
7147 @w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
7149 In the headline of the entry itself, a time(range) may also appear as
7150 plain text (like @samp{12:45} or a @samp{8:30-1pm}).  If the agenda
7151 integrates the Emacs diary (@pxref{Weekly/daily agenda}), time
7152 specifications in diary entries are recognized as well.
7154 For agenda display, Org mode extracts the time and displays it in a
7155 standard 24 hour format as part of the prefix.  The example times in
7156 the previous paragraphs would end up in the agenda like this:
7158 @example
7159     8:30-13:00 Arthur Dent lies in front of the bulldozer
7160    12:45...... Ford Prefect arrives and takes Arthur to the pub
7161    19:00...... The Vogon reads his poem
7162    20:30-22:15 Marvin escorts the Hitchhikers to the bridge
7163 @end example
7165 @cindex time grid
7166 If the agenda is in single-day mode, or for the display of today, the
7167 timed entries are embedded in a time grid, like
7169 @example
7170     8:00...... ------------------
7171     8:30-13:00 Arthur Dent lies in front of the bulldozer
7172    10:00...... ------------------
7173    12:00...... ------------------
7174    12:45...... Ford Prefect arrives and takes Arthur to the pub
7175    14:00...... ------------------
7176    16:00...... ------------------
7177    18:00...... ------------------
7178    19:00...... The Vogon reads his poem
7179    20:00...... ------------------
7180    20:30-22:15 Marvin escorts the Hitchhikers to the bridge
7181 @end example
7183 @vindex org-agenda-use-time-grid
7184 @vindex org-agenda-time-grid
7185 The time grid can be turned on and off with the variable
7186 @code{org-agenda-use-time-grid}, and can be configured with
7187 @code{org-agenda-time-grid}.
7189 @node Sorting of agenda items,  , Time-of-day specifications, Presentation and sorting
7190 @subsection Sorting of agenda items
7191 @cindex sorting, of agenda items
7192 @cindex priorities, of agenda items
7193 Before being inserted into a view, the items are sorted.  How this is
7194 done depends on the type of view.
7195 @itemize @bullet
7196 @item
7197 @vindex org-agenda-files
7198 For the daily/weekly agenda, the items for each day are sorted.  The
7199 default order is to first collect all items containing an explicit
7200 time-of-day specification.  These entries will be shown at the beginning
7201 of the list, as a @emph{schedule} for the day.  After that, items remain
7202 grouped in categories, in the sequence given by @code{org-agenda-files}.
7203 Within each category, items are sorted by priority (@pxref{Priorities}),
7204 which is composed of the base priority (2000 for priority @samp{A}, 1000
7205 for @samp{B}, and 0 for @samp{C}), plus additional increments for
7206 overdue scheduled or deadline items.
7207 @item
7208 For the TODO list, items remain in the order of categories, but within
7209 each category, sorting takes place according to priority
7210 (@pxref{Priorities}).  The priority used for sorting derives from the
7211 priority cookie, with additions depending on how close an item is to its due
7212 or scheduled date.
7213 @item
7214 For tags matches, items are not sorted at all, but just appear in the
7215 sequence in which they are found in the agenda files.
7216 @end itemize
7218 @vindex org-agenda-sorting-strategy
7219 Sorting can be customized using the variable
7220 @code{org-agenda-sorting-strategy}, and may also include criteria based on
7221 the estimated effort of an entry (@pxref{Effort estimates}).
7223 @node Agenda commands, Custom agenda views, Presentation and sorting, Agenda Views
7224 @section Commands in the agenda buffer
7225 @cindex commands, in agenda buffer
7227 Entries in the agenda buffer are linked back to the Org file or diary
7228 file where they originate.  You are not allowed to edit the agenda
7229 buffer itself, but commands are provided to show and jump to the
7230 original entry location, and to edit the Org files ``remotely'' from
7231 the agenda buffer.  In this way, all information is stored only once,
7232 removing the risk that your agenda and note files may diverge.
7234 Some commands can be executed with mouse clicks on agenda lines.  For
7235 the other commands, the cursor needs to be in the desired line.
7237 @table @kbd
7238 @tsubheading{Motion}
7239 @cindex motion commands in agenda
7240 @kindex n
7241 @item n
7242 Next line (same as @key{up} and @kbd{C-p}).
7243 @kindex p
7244 @item p
7245 Previous line (same as @key{down} and @kbd{C-n}).
7246 @tsubheading{View/Go to Org file}
7247 @kindex mouse-3
7248 @kindex @key{SPC}
7249 @item mouse-3
7250 @itemx @key{SPC}
7251 Display the original location of the item in another window.
7252 With prefix arg, make sure that the entire entry is made visible in the
7253 outline, not only the heading.
7255 @kindex L
7256 @item L
7257 Display original location and recenter that window.
7259 @kindex mouse-2
7260 @kindex mouse-1
7261 @kindex @key{TAB}
7262 @item mouse-2
7263 @itemx mouse-1
7264 @itemx @key{TAB}
7265 Go to the original location of the item in another window.  Under Emacs
7266 22, @kbd{mouse-1} will also works for this.
7268 @kindex @key{RET}
7269 @itemx @key{RET}
7270 Go to the original location of the item and delete other windows.
7272 @kindex F
7273 @item F
7274 @vindex org-agenda-start-with-follow-mode
7275 Toggle Follow mode.  In Follow mode, as you move the cursor through
7276 the agenda buffer, the other window always shows the corresponding
7277 location in the Org file.  The initial setting for this mode in new
7278 agenda buffers can be set with the variable
7279 @code{org-agenda-start-with-follow-mode}.
7281 @kindex C-c C-x b
7282 @item C-c C-x b
7283 Display the entire subtree of the current item in an indirect buffer.  With a
7284 numeric prefix argument N, go up to level N and then take that tree.  If N is
7285 negative, go up that many levels.  With a @kbd{C-u} prefix, do not remove the
7286 previously used indirect buffer.
7288 @kindex C-c C-o
7289 @item C-c C-o
7290 Follow a link in the entry.  This will offer a selection of any links in the
7291 text belonging to the referenced Org node.  If there is only one link, it
7292 will be followed without a selection prompt.
7294 @tsubheading{Change display}
7295 @cindex display changing, in agenda
7296 @kindex o
7297 @item o
7298 Delete other windows.
7300 @kindex v d
7301 @kindex d
7302 @kindex v w
7303 @kindex w
7304 @kindex v m
7305 @kindex v y
7306 @item v d @ @r{or short} @ d
7307 @itemx v w @ @r{or short} @ w
7308 @itemx v m
7309 @itemx v y
7310 Switch to day/week/month/year view.  When switching to day or week view,
7311 this setting becomes the default for subsequent agenda commands.  Since
7312 month and year views are slow to create, they do not become the default.
7313 A numeric prefix argument may be used to jump directly to a specific day
7314 of the year, ISO week, month, or year, respectively.  For example,
7315 @kbd{32 d} jumps to February 1st, @kbd{9 w} to ISO week number 9.  When
7316 setting day, week, or month view, a year may be encoded in the prefix
7317 argument as well.  For example, @kbd{200712 w} will jump to week 12 in
7318 2007.  If such a year specification has only one or two digits, it will
7319 be mapped to the interval 1938-2037.
7321 @kindex f
7322 @item f
7323 @vindex org-agenda-ndays
7324 Go forward in time to display the following @code{org-agenda-ndays} days.
7325 For example, if the display covers a week, switch to the following week.
7326 With prefix arg, go forward that many times @code{org-agenda-ndays} days.
7328 @kindex b
7329 @item b
7330 Go backward in time to display earlier dates.
7332 @kindex .
7333 @item .
7334 Go to today.
7336 @kindex j
7337 @item j
7338 Prompt for a date and go there.
7340 @kindex D
7341 @item D
7342 Toggle the inclusion of diary entries.  See @ref{Weekly/daily agenda}.
7344 @kindex v l
7345 @kindex v L
7346 @kindex l
7347 @item v l @ @r{or short} @ l
7348 @vindex org-log-done
7349 @vindex org-agenda-log-mode-items
7350 Toggle Logbook mode.  In Logbook mode, entries that were marked DONE while
7351 logging was on (variable @code{org-log-done}) are shown in the agenda, as are
7352 entries that have been clocked on that day.  You can configure the entry
7353 types that should be included in log mode using the variable
7354 @code{org-agenda-log-mode-items}.  When called with a @kbd{C-u} prefix, show
7355 all possible logbook entries, including state changes.  When called with two
7356 prefix args @kbd{C-u C-u}, show only logging information, nothing else.
7357 @kbd{v L} is equivalent to @kbd{C-u v l}.
7359 @kindex v [
7360 @kindex [
7361 @item v [ @ @r{or short} @ [
7362 Include inactive timestamps into the current view.  Only for weekly/daily
7363 agenda and timeline views.
7365 @kindex v a
7366 @kindex v A
7367 @item v a
7368 @itemx v A
7369 Toggle Archives mode.  In Archives mode, trees that are marked
7370 @code{ARCHIVED} are also scanned when producing the agenda.  When you use the
7371 capital @kbd{A}, even all archive files are included.  To exit archives mode,
7372 press @kbd{v a} again.
7374 @kindex v R
7375 @kindex R
7376 @item v R @ @r{or short} @ R
7377 @vindex org-agenda-start-with-clockreport-mode
7378 Toggle Clockreport mode.  In Clockreport mode, the daily/weekly agenda will
7379 always show a table with the clocked times for the timespan and file scope
7380 covered by the current agenda view.  The initial setting for this mode in new
7381 agenda buffers can be set with the variable
7382 @code{org-agenda-start-with-clockreport-mode}.
7384 @kindex v E
7385 @kindex E
7386 @item v E @ @r{or short} @ E
7387 @vindex org-agenda-start-with-entry-text-mode
7388 @vindex org-agenda-entry-text-maxlines
7389 Toggle entry text mode.  In entry text mode, a number of lines from the Org
7390 outline node referenced by an agenda line will be displayed below the line.
7391 The maximum number of lines is given by the variable
7392 @code{org-agenda-entry-text-maxlines}.  Calling this command with a numeric
7393 prefix argument will temporarily modify that number to the prefix value.
7395 @kindex G
7396 @item G
7397 @vindex org-agenda-use-time-grid
7398 @vindex org-agenda-time-grid
7399 Toggle the time grid on and off.  See also the variables
7400 @code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
7402 @kindex r
7403 @item r
7404 Recreate the agenda buffer, for example to reflect the changes after
7405 modification of the timestamps of items with @kbd{S-@key{left}} and
7406 @kbd{S-@key{right}}.  When the buffer is the global TODO list, a prefix
7407 argument is interpreted to create a selective list for a specific TODO
7408 keyword.
7409 @kindex g
7410 @item g
7411 Same as @kbd{r}.
7413 @kindex s
7414 @kindex C-x C-s
7415 @item s
7416 @itemx C-x C-s
7417 Save all Org buffers in the current Emacs session, and also the locations of
7418 IDs.
7420 @kindex C-c C-x C-c
7421 @item C-c C-x C-c
7422 @vindex org-columns-default-format
7423 Invoke column view (@pxref{Column view}) in the agenda buffer.  The column
7424 view format is taken from the entry at point, or (if there is no entry at
7425 point), from the first entry in the agenda view.  So whatever the format for
7426 that entry would be in the original buffer (taken from a property, from a
7427 @code{#+COLUMNS} line, or from the default variable
7428 @code{org-columns-default-format}), will be used in the agenda.
7430 @kindex C-c C-x >
7431 @item C-c C-x >
7432 Remove the restriction lock on the agenda, if it is currently restricted to a
7433 file or subtree (@pxref{Agenda files}).
7435 @tsubheading{Secondary filtering and query editing}
7436 @cindex filtering, by tag and effort, in agenda
7437 @cindex tag filtering, in agenda
7438 @cindex effort filtering, in agenda
7439 @cindex query editing, in agenda
7441 @kindex /
7442 @item /
7443 @vindex org-agenda-filter-preset
7444 Filter the current agenda view with respect to a tag and/or effort estimates.
7445 The difference between this and a custom agenda command is that filtering is
7446 very fast, so that you can switch quickly between different filters without
7447 having to recreate the agenda@footnote{Custom commands can preset a filter by
7448 binding the variable @code{org-agenda-filter-preset} as an option.  This
7449 filter will then be applied to the view and persist as a basic filter through
7450 refreshes and more secondary filtering.}
7452 You will be prompted for a tag selection letter, SPC will mean any tag at
7453 all.  Pressing @key{TAB} at that prompt will offer use completion to select a
7454 tag (including any tags that do not have a selection character).  The command
7455 then hides all entries that do not contain or inherit this tag.  When called
7456 with prefix arg, remove the entries that @emph{do} have the tag.  A second
7457 @kbd{/} at the prompt will turn off the filter and unhide any hidden entries.
7458 If the first key you press is either @kbd{+} or @kbd{-}, the previous filter
7459 will be narrowed by requiring or forbidding the selected additional tag.
7460 Instead of pressing @kbd{+} or @kbd{-} after @kbd{/}, you can also
7461 immediately use the @kbd{\} command.
7463 @vindex org-sort-agenda-noeffort-is-high
7464 In order to filter for effort estimates, you should set-up allowed
7465 efforts globally, for example
7466 @lisp
7467 (setq org-global-properties
7468     '(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))
7469 @end lisp
7470 You can then filter for an effort by first typing an operator, one of
7471 @kbd{<}, @kbd{>}, and @kbd{=}, and then the one-digit index of an effort
7472 estimate in your array of allowed values, where @kbd{0} means the 10th value.
7473 The filter will then restrict to entries with effort smaller-or-equal, equal,
7474 or larger-or-equal than the selected value.  If the digits 0-9 are not used
7475 as fast access keys to tags, you can also simply press the index digit
7476 directly without an operator.  In this case, @kbd{<} will be assumed.  For
7477 application of the operator, entries without a defined effort will be treated
7478 according to the value of @code{org-sort-agenda-noeffort-is-high}.  To filter
7479 for tasks without effort definition, press @kbd{?} as the operator.
7481 Org also supports automatic, context-aware tag filtering.  If the variable
7482 @code{org-agenda-auto-exclude-function} is set to a user-defined function,
7483 that function can decide which tags should be excluded from the agenda
7484 automatically.  Once this is set, the @kbd{/} command then accepts @kbd{RET}
7485 as a sub-option key and runs the auto exclusion logic.  For example, let's
7486 say you use a @code{Net} tag to identify tasks which need network access, an
7487 @code{Errand} tag for errands in town, and a @code{Call} tag for making phone
7488 calls.  You could auto-exclude these tags based on the availability of the
7489 Internet, and outside of business hours, with something like this:
7491 @lisp
7492 @group
7493 (defun org-my-auto-exclude-function (tag)
7494   (and (cond
7495         ((string= tag "Net")
7496          (/= 0 (call-process "/sbin/ping" nil nil nil
7497                              "-c1" "-q" "-t1" "mail.gnu.org")))
7498         ((or (string= tag "Errand") (string= tag "Call"))
7499          (let ((hour (nth 2 (decode-time))))
7500            (or (< hour 8) (> hour 21)))))
7501        (concat "-" tag)))
7503 (setq org-agenda-auto-exclude-function 'org-my-auto-exclude-function)
7504 @end group
7505 @end lisp
7507 @kindex \
7508 @item \
7509 Narrow the current agenda filter by an additional condition.  When called with
7510 prefix arg, remove the entries that @emph{do} have the tag, or that do match
7511 the effort criterion.  You can achieve the same effect by pressing @kbd{+} or
7512 @kbd{-} as the first key after the @kbd{/} command.
7514 @kindex [
7515 @kindex ]
7516 @kindex @{
7517 @kindex @}
7518 @item [ ] @{ @}
7519 @table @i
7520 @item @r{in} search view
7521 add new search words (@kbd{[} and @kbd{]}) or new regular expressions
7522 (@kbd{@{} and @kbd{@}}) to the query string.  The opening bracket/brace will
7523 add a positive search term prefixed by @samp{+}, indicating that this search
7524 term @i{must} occur/match in the entry.  The closing bracket/brace will add a
7525 negative search term which @i{must not} occur/match in the entry for it to be
7526 selected.
7527 @end table
7529 @page
7530 @tsubheading{Remote editing}
7531 @cindex remote editing, from agenda
7533 @item 0-9
7534 Digit argument.
7536 @cindex undoing remote-editing events
7537 @cindex remote editing, undo
7538 @kindex C-_
7539 @item C-_
7540 Undo a change due to a remote editing command.  The change is undone
7541 both in the agenda buffer and in the remote buffer.
7543 @kindex t
7544 @item t
7545 Change the TODO state of the item, both in the agenda and in the
7546 original org file.
7548 @kindex C-S-@key{right}
7549 @kindex C-S-@key{left}
7550 @item C-S-@key{right}@r{/}@key{left}
7551 Switch to the next/previous set of TODO keywords.
7553 @kindex C-k
7554 @item C-k
7555 @vindex org-agenda-confirm-kill
7556 Delete the current agenda item along with the entire subtree belonging
7557 to it in the original Org file.  If the text to be deleted remotely
7558 is longer than one line, the kill needs to be confirmed by the user.  See
7559 variable @code{org-agenda-confirm-kill}.
7561 @kindex C-c C-w
7562 @item C-c C-w
7563 Refile the entry at point.
7565 @kindex C-c C-x C-a
7566 @kindex a
7567 @item C-c C-x C-a @ @r{or short} @ a
7568 @vindex org-archive-default-command
7569 Archive the subtree corresponding to the entry at point using the default
7570 archiving command set in @code{org-archive-default-command}.  When using the
7571 @code{a} key, confirmation will be required.
7573 @kindex C-c C-x a
7574 @item C-c C-x a
7575 Toggle the ARCHIVE tag for the current headline.
7577 @kindex C-c C-x A
7578 @item C-c C-x A
7579 Move the subtree corresponding to the current entry to its @emph{archive
7580 sibling}.
7582 @kindex $
7583 @kindex C-c C-x C-s
7584 @item C-c C-x C-s @ @r{or short} @ $
7585 Archive the subtree corresponding to the current headline.  This means the
7586 entry will be moved to the configured archive location, most likely a
7587 different file.
7589 @kindex T
7590 @item T
7591 @vindex org-agenda-show-inherited-tags
7592 Show all tags associated with the current item.  This is useful if you have
7593 turned off @code{org-agenda-show-inherited-tags}, but still want to see all
7594 tags of a headline occasionally.
7596 @kindex :
7597 @item :
7598 Set tags for the current headline.  If there is an active region in the
7599 agenda, change a tag for all headings in the region.
7601 @kindex ,
7602 @item ,
7603 Set the priority for the current item.  Org mode prompts for the
7604 priority character. If you reply with @key{SPC}, the priority cookie
7605 is removed from the entry.
7607 @kindex P
7608 @item P
7609 Display weighted priority of current item.
7611 @kindex +
7612 @kindex S-@key{up}
7613 @item +
7614 @itemx S-@key{up}
7615 Increase the priority of the current item.  The priority is changed in
7616 the original buffer, but the agenda is not resorted.  Use the @kbd{r}
7617 key for this.
7619 @kindex -
7620 @kindex S-@key{down}
7621 @item -
7622 @itemx S-@key{down}
7623 Decrease the priority of the current item.
7625 @kindex C-c C-z
7626 @kindex z
7627 @item z @ @r{or also} @ C-c C-z
7628 @vindex org-log-into-drawer
7629 Add a note to the entry.  This note will be recorded, and then files to the
7630 same location where state change notes are put.  Depending on
7631 @code{org-log-into-drawer}, this maybe inside a drawer.
7633 @kindex C-c C-a
7634 @item C-c C-a
7635 Dispatcher for all command related to attachments.
7637 @kindex C-c C-s
7638 @item C-c C-s
7639 Schedule this item, with prefix arg remove the scheduling timestamp
7641 @kindex C-c C-d
7642 @item C-c C-d
7643 Set a deadline for this item, with prefix arg remove the deadline.
7645 @kindex k
7646 @item k
7647 Agenda actions, to set dates for selected items to the cursor date.
7648 This command also works in the calendar!  The command prompts for an
7649 additional key:
7650 @example
7651 m   @r{Mark the entry at point for action.  You can also make entries}
7652     @r{in Org files with @kbd{C-c C-x C-k}.}
7653 d   @r{Set the deadline of the marked entry to the date at point.}
7654 s   @r{Schedule the marked entry at the date at point.}
7655 r   @r{Call @code{org-remember} with the cursor date as default date.}
7656 @end example
7657 @noindent
7658 Press @kbd{r} afterward to refresh the agenda and see the effect of the
7659 command.
7661 @kindex S-@key{right}
7662 @item S-@key{right}
7663 Change the timestamp associated with the current line by one day into the
7664 future.  With a numeric prefix argument, change it by that many days.  For
7665 example, @kbd{3 6 5 S-@key{right}} will change it by a year.  With a
7666 @kbd{C-u} prefix, change the time by one hour.  If you immediately repeat the
7667 command, it will continue to change hours even without the prefix arg.  With
7668 a double @kbd{C-u C-u} prefix, do the same for changing minutes.  The stamp
7669 is changed in the original Org file, but the change is not directly reflected
7670 in the agenda buffer.  Use @kbd{r} or @kbd{g} to update the buffer.
7672 @kindex S-@key{left}
7673 @item S-@key{left}
7674 Change the timestamp associated with the current line by one day
7675 into the past.
7677 @kindex >
7678 @item >
7679 Change the timestamp associated with the current line.  The key @kbd{>} has
7680 been chosen, because it is the same as @kbd{S-.}  on my keyboard.
7682 @kindex I
7683 @item I
7684 Start the clock on the current item.  If a clock is running already, it
7685 is stopped first.
7687 @kindex O
7688 @item O
7689 Stop the previously started clock.
7691 @kindex X
7692 @item X
7693 Cancel the currently running clock.
7695 @kindex J
7696 @item J
7697 Jump to the running clock in another window.
7699 @tsubheading{Bulk remote editing selected entries}
7700 @cindex remote editing, bulk, from agenda
7702 @kindex m
7703 @item m
7704 Mark the entry at point for bulk action.
7706 @kindex u
7707 @item u
7708 Unmark entry for bulk action.
7710 @kindex U
7711 @item U
7712 Unmark all marked entries for bulk action.
7714 @kindex B
7715 @item B
7716 Bulk action: act on all marked entries in the agenda.  This will prompt for
7717 another key to select the action to be applied.  The prefix arg to @kbd{B}
7718 will be passed through to the @kbd{s} and @kbd{d} commands, to bulk-remove
7719 these special timestamps.
7720 @example
7721 r  @r{Prompt for a single refile target and move all entries.  The entries}
7722    @r{will no longer be in the agenda, refresh (@kbd{g}) to bring them back.}
7723 $  @r{Archive all selected entries.}
7724 A  @r{Archive entries by moving them to their respective archive siblings.}
7725 t  @r{Change TODO state.  This prompts for a single TODO keyword and}
7726    @r{changes the state of all selected entries, bypassing blocking and}
7727    @r{suppressing logging notes (but not time stamps).}
7728 +  @r{Add a tag to all selected entries.}
7729 -  @r{Remove a tag from all selected entries.}
7730 s  @r{Schedule all items to a new date.  To shift existing schedule dates}
7731    @r{by a fixed number of days, use something starting with double plus}
7732    @r{at the prompt, for example @samp{++8d} or @samp{++2w}.}
7733 d  @r{Set deadline to a specific date.}
7734 @end example
7737 @tsubheading{Calendar commands}
7738 @cindex calendar commands, from agenda
7739 @kindex c
7740 @item c
7741 Open the Emacs calendar and move to the date at the agenda cursor.
7743 @item c
7744 When in the calendar, compute and show the Org mode agenda for the
7745 date at the cursor.
7747 @cindex diary entries, creating from agenda
7748 @kindex i
7749 @item i
7750 @vindex org-agenda-diary-file
7751 Insert a new entry into the diary, using the date at the cursor and (for
7752 block entries) the date at the mark.  This will add to the Emacs diary
7753 file@footnote{This file is parsed for the agenda when
7754 @code{org-agenda-include-diary} is set.}, in a way similar to the @kbd{i}
7755 command in the calendar.  The diary file will pop up in another window, where
7756 you can add the entry.
7758 If you configure @code{org-agenda-diary-file} to point to an Org-mode file,
7759 Org will create entries (in org-mode syntax) in that file instead.  Most
7760 entries will be stored in a date-based outline tree that will later make it
7761 easy to archive appointments from previous months/years.  The tree will be
7762 built under an entry with a @code{DATE_TREE} property, or else with years as
7763 top-level entries.  Emacs will prompt you for the entry text - if you specify
7764 it, the entry will be created in @code{org-agenda-diary-file} without further
7765 interaction.  If you directly press @key{RET} at the prompt without typing
7766 text, the target file will be shown in another window for you to finish the
7767 entry there.  See also the @kbd{k r} command.
7769 @kindex M
7770 @item M
7771 Show the phases of the moon for the three months around current date.
7773 @kindex S
7774 @item S
7775 Show sunrise and sunset times.  The geographical location must be set
7776 with calendar variables, see the documentation for the Emacs calendar.
7778 @kindex C
7779 @item C
7780 Convert the date at cursor into many other cultural and historic
7781 calendars.
7783 @kindex H
7784 @item H
7785 Show holidays for three months around the cursor date.
7787 @item M-x org-export-icalendar-combine-agenda-files
7788 Export a single iCalendar file containing entries from all agenda files.
7789 This is a globally available command, and also available in the agenda menu.
7791 @tsubheading{Exporting to a file}
7792 @kindex C-x C-w
7793 @item C-x C-w
7794 @cindex exporting agenda views
7795 @cindex agenda views, exporting
7796 @vindex org-agenda-exporter-settings
7797 Write the agenda view to a file.  Depending on the extension of the selected
7798 file name, the view will be exported as HTML (extension @file{.html} or
7799 @file{.htm}), Postscript (extension @file{.ps}), PDF (extension @file{.pdf}),
7800 and plain text (any other extension).  When called with a @kbd{C-u} prefix
7801 argument, immediately open the newly created file.  Use the variable
7802 @code{org-agenda-exporter-settings} to set options for @file{ps-print} and
7803 for @file{htmlize} to be used during export.
7805 @tsubheading{Quit and Exit}
7806 @kindex q
7807 @item q
7808 Quit agenda, remove the agenda buffer.
7810 @kindex x
7811 @cindex agenda files, removing buffers
7812 @item x
7813 Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
7814 for the compilation of the agenda.  Buffers created by the user to
7815 visit Org files will not be removed.
7816 @end table
7819 @node Custom agenda views, Exporting Agenda Views, Agenda commands, Agenda Views
7820 @section Custom agenda views
7821 @cindex custom agenda views
7822 @cindex agenda views, custom
7824 Custom agenda commands serve two purposes: to store and quickly access
7825 frequently used TODO and tags searches, and to create special composite
7826 agenda buffers.  Custom agenda commands will be accessible through the
7827 dispatcher (@pxref{Agenda dispatcher}), just like the default commands.
7829 @menu
7830 * Storing searches::            Type once, use often
7831 * Block agenda::                All the stuff you need in a single buffer
7832 * Setting Options::             Changing the rules
7833 @end menu
7835 @node Storing searches, Block agenda, Custom agenda views, Custom agenda views
7836 @subsection Storing searches
7838 The first application of custom searches is the definition of keyboard
7839 shortcuts for frequently used searches, either creating an agenda
7840 buffer, or a sparse tree (the latter covering of course only the current
7841 buffer).
7842 @kindex C-c a C
7843 @vindex org-agenda-custom-commands
7844 Custom commands are configured in the variable
7845 @code{org-agenda-custom-commands}.  You can customize this variable, for
7846 example by pressing @kbd{C-c a C}.  You can also directly set it with
7847 Emacs Lisp in @file{.emacs}.  The following example contains all valid
7848 search types:
7850 @lisp
7851 @group
7852 (setq org-agenda-custom-commands
7853       '(("w" todo "WAITING")
7854         ("W" todo-tree "WAITING")
7855         ("u" tags "+boss-urgent")
7856         ("v" tags-todo "+boss-urgent")
7857         ("U" tags-tree "+boss-urgent")
7858         ("f" occur-tree "\\<FIXME\\>")
7859         ("h" . "HOME+Name tags searches") ; description for "h" prefix
7860         ("hl" tags "+home+Lisa")
7861         ("hp" tags "+home+Peter")
7862         ("hk" tags "+home+Kim")))
7863 @end group
7864 @end lisp
7866 @noindent
7867 The initial string in each entry defines the keys you have to press
7868 after the dispatcher command @kbd{C-c a} in order to access the command.
7869 Usually this will be just a single character, but if you have many
7870 similar commands, you can also define two-letter combinations where the
7871 first character is the same in several combinations and serves as a
7872 prefix key@footnote{You can provide a description for a prefix key by
7873 inserting a cons cell with the prefix and the description.}.  The second
7874 parameter is the search type, followed by the string or regular
7875 expression to be used for the matching.  The example above will
7876 therefore define:
7878 @table @kbd
7879 @item C-c a w
7880 as a global search for TODO entries with @samp{WAITING} as the TODO
7881 keyword
7882 @item C-c a W
7883 as the same search, but only in the current buffer and displaying the
7884 results as a sparse tree
7885 @item C-c a u
7886 as a global tags search for headlines marked @samp{:boss:} but not
7887 @samp{:urgent:}
7888 @item C-c a v
7889 as the same search as @kbd{C-c a u}, but limiting the search to
7890 headlines that are also TODO items
7891 @item C-c a U
7892 as the same search as @kbd{C-c a u}, but only in the current buffer and
7893 displaying the result as a sparse tree
7894 @item C-c a f
7895 to create a sparse tree (again: current buffer only) with all entries
7896 containing the word @samp{FIXME}
7897 @item C-c a h
7898 as a prefix command for a HOME tags search where you have to press an
7899 additional key (@kbd{l}, @kbd{p} or @kbd{k}) to select a name (Lisa,
7900 Peter, or Kim) as additional tag to match.
7901 @end table
7903 @node Block agenda, Setting Options, Storing searches, Custom agenda views
7904 @subsection Block agenda
7905 @cindex block agenda
7906 @cindex agenda, with block views
7908 Another possibility is the construction of agenda views that comprise
7909 the results of @emph{several} commands, each of which creates a block in
7910 the agenda buffer.  The available commands include @code{agenda} for the
7911 daily or weekly agenda (as created with @kbd{C-c a a}), @code{alltodo}
7912 for the global TODO list (as constructed with @kbd{C-c a t}), and the
7913 matching commands discussed above: @code{todo}, @code{tags}, and
7914 @code{tags-todo}.  Here are two examples:
7916 @lisp
7917 @group
7918 (setq org-agenda-custom-commands
7919       '(("h" "Agenda and Home-related tasks"
7920          ((agenda "")
7921           (tags-todo "home")
7922           (tags "garden")))
7923         ("o" "Agenda and Office-related tasks"
7924          ((agenda "")
7925           (tags-todo "work")
7926           (tags "office")))))
7927 @end group
7928 @end lisp
7930 @noindent
7931 This will define @kbd{C-c a h} to create a multi-block view for stuff
7932 you need to attend to at home.  The resulting agenda buffer will contain
7933 your agenda for the current week, all TODO items that carry the tag
7934 @samp{home}, and also all lines tagged with @samp{garden}.  Finally the
7935 command @kbd{C-c a o} provides a similar view for office tasks.
7937 @node Setting Options,  , Block agenda, Custom agenda views
7938 @subsection Setting options for custom commands
7939 @cindex options, for custom agenda views
7941 @vindex org-agenda-custom-commands
7942 Org mode contains a number of variables regulating agenda construction
7943 and display.  The global variables define the behavior for all agenda
7944 commands, including the custom commands.  However, if you want to change
7945 some settings just for a single custom view, you can do so.  Setting
7946 options requires inserting a list of variable names and values at the
7947 right spot in @code{org-agenda-custom-commands}.  For example:
7949 @lisp
7950 @group
7951 (setq org-agenda-custom-commands
7952       '(("w" todo "WAITING"
7953          ((org-agenda-sorting-strategy '(priority-down))
7954           (org-agenda-prefix-format "  Mixed: ")))
7955         ("U" tags-tree "+boss-urgent"
7956          ((org-show-following-heading nil)
7957           (org-show-hierarchy-above nil)))
7958         ("N" search ""
7959          ((org-agenda-files '("~org/notes.org"))
7960           (org-agenda-text-search-extra-files nil)))))
7961 @end group
7962 @end lisp
7964 @noindent
7965 Now the @kbd{C-c a w} command will sort the collected entries only by
7966 priority, and the prefix format is modified to just say @samp{  Mixed: }
7967 instead of giving the category of the entry.  The sparse tags tree of
7968 @kbd{C-c a U} will now turn out ultra-compact, because neither the
7969 headline hierarchy above the match, nor the headline following the match
7970 will be shown.  The command @kbd{C-c a N} will do a text search limited
7971 to only a single file.
7973 @vindex org-agenda-custom-commands
7974 For command sets creating a block agenda,
7975 @code{org-agenda-custom-commands} has two separate spots for setting
7976 options.  You can add options that should be valid for just a single
7977 command in the set, and options that should be valid for all commands in
7978 the set.  The former are just added to the command entry, the latter
7979 must come after the list of command entries.  Going back to the block
7980 agenda example (@pxref{Block agenda}), let's change the sorting strategy
7981 for the @kbd{C-c a h} commands to @code{priority-down}, but let's sort
7982 the results for GARDEN tags query in the opposite order,
7983 @code{priority-up}.  This would look like this:
7985 @lisp
7986 @group
7987 (setq org-agenda-custom-commands
7988       '(("h" "Agenda and Home-related tasks"
7989          ((agenda)
7990           (tags-todo "home")
7991           (tags "garden"
7992                 ((org-agenda-sorting-strategy '(priority-up)))))
7993          ((org-agenda-sorting-strategy '(priority-down))))
7994         ("o" "Agenda and Office-related tasks"
7995          ((agenda)
7996           (tags-todo "work")
7997           (tags "office")))))
7998 @end group
7999 @end lisp
8001 As you see, the values and parentheses setting is a little complex.
8002 When in doubt, use the customize interface to set this variable---it
8003 fully supports its structure.  Just one caveat: when setting options in
8004 this interface, the @emph{values} are just Lisp expressions.  So if the
8005 value is a string, you need to add the double-quotes around the value
8006 yourself.
8009 @node Exporting Agenda Views, Agenda column view, Custom agenda views, Agenda Views
8010 @section Exporting Agenda Views
8011 @cindex agenda views, exporting
8013 If you are away from your computer, it can be very useful to have a printed
8014 version of some agenda views to carry around.  Org mode can export custom
8015 agenda views as plain text, HTML@footnote{You need to install Hrvoje Niksic's
8016 @file{htmlize.el}.}, Postscript, PDF@footnote{To create PDF output, the
8017 ghostscript @file{ps2pdf} utility must be installed on the system.  Selecting
8018 a PDF file with also create the postscript file.}, and iCalendar files.  If
8019 you want to do this only occasionally, use the command
8021 @table @kbd
8022 @kindex C-x C-w
8023 @item C-x C-w
8024 @cindex exporting agenda views
8025 @cindex agenda views, exporting
8026 @vindex org-agenda-exporter-settings
8027 Write the agenda view to a file.  Depending on the extension of the selected
8028 file name, the view will be exported as HTML (extension @file{.html} or
8029 @file{.htm}), Postscript (extension @file{.ps}), iCalendar (extension
8030 @file{.ics}), or plain text (any other extension).  Use the variable
8031 @code{org-agenda-exporter-settings} to set options for @file{ps-print} and
8032 for @file{htmlize} to be used during export, for example
8034 @vindex org-agenda-add-entry-text-maxlines
8035 @vindex htmlize-output-type
8036 @vindex ps-number-of-columns
8037 @vindex ps-landscape-mode
8038 @lisp
8039 (setq org-agenda-exporter-settings
8040       '((ps-number-of-columns 2)
8041         (ps-landscape-mode t)
8042         (org-agenda-add-entry-text-maxlines 5)
8043         (htmlize-output-type 'css)))
8044 @end lisp
8045 @end table
8047 If you need to export certain agenda views frequently, you can associate
8048 any custom agenda command with a list of output file names
8049 @footnote{If you want to store standard views like the weekly agenda
8050 or the global TODO list as well, you need to define custom commands for
8051 them in order to be able to specify file names.}.  Here is an example
8052 that first defines custom commands for the agenda and the global
8053 TODO list, together with a number of files to which to export them.
8054 Then we define two block agenda commands and specify file names for them
8055 as well.  File names can be relative to the current working directory,
8056 or absolute.
8058 @lisp
8059 @group
8060 (setq org-agenda-custom-commands
8061       '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
8062         ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
8063         ("h" "Agenda and Home-related tasks"
8064          ((agenda "")
8065           (tags-todo "home")
8066           (tags "garden"))
8067          nil
8068          ("~/views/home.html"))
8069         ("o" "Agenda and Office-related tasks"
8070          ((agenda)
8071           (tags-todo "work")
8072           (tags "office"))
8073          nil
8074          ("~/views/office.ps" "~/calendars/office.ics"))))
8075 @end group
8076 @end lisp
8078 The extension of the file name determines the type of export.  If it is
8079 @file{.html}, Org mode will use the @file{htmlize.el} package to convert
8080 the buffer to HTML and save it to this file name.  If the extension is
8081 @file{.ps}, @code{ps-print-buffer-with-faces} is used to produce
8082 Postscript output.  If the extension is @file{.ics}, iCalendar export is
8083 run export over all files that were used to construct the agenda, and
8084 limit the export to entries listed in the agenda.  Any other
8085 extension produces a plain ASCII file.
8087 The export files are @emph{not} created when you use one of those
8088 commands interactively because this might use too much overhead.
8089 Instead, there is a special command to produce @emph{all} specified
8090 files in one step:
8092 @table @kbd
8093 @kindex C-c a e
8094 @item C-c a e
8095 Export all agenda views that have export file names associated with
8096 them.
8097 @end table
8099 You can use the options section of the custom agenda commands to also
8100 set options for the export commands.  For example:
8102 @lisp
8103 (setq org-agenda-custom-commands
8104       '(("X" agenda ""
8105          ((ps-number-of-columns 2)
8106           (ps-landscape-mode t)
8107           (org-agenda-prefix-format " [ ] ")
8108           (org-agenda-with-colors nil)
8109           (org-agenda-remove-tags t))
8110          ("theagenda.ps"))))
8111 @end lisp
8113 @noindent
8114 This command sets two options for the Postscript exporter, to make it
8115 print in two columns in landscape format---the resulting page can be cut
8116 in two and then used in a paper agenda.  The remaining settings modify
8117 the agenda prefix to omit category and scheduling information, and
8118 instead include a checkbox to check off items.  We also remove the tags
8119 to make the lines compact, and we don't want to use colors for the
8120 black-and-white printer.  Settings specified in
8121 @code{org-agenda-exporter-settings} will also apply, but the settings
8122 in @code{org-agenda-custom-commands} take precedence.
8124 @noindent
8125 From the command line you may also use
8126 @example
8127 emacs -f org-batch-store-agenda-views -kill
8128 @end example
8129 @noindent
8130 or, if you need to modify some parameters@footnote{Quoting depends on the
8131 system you use, please check the FAQ for examples.}
8132 @example
8133 emacs -eval '(org-batch-store-agenda-views                      \
8134               org-agenda-ndays 30                               \
8135               org-agenda-start-day "2007-11-01"                 \
8136               org-agenda-include-diary nil                      \
8137               org-agenda-files (quote ("~/org/project.org")))'  \
8138       -kill
8139 @end example
8140 @noindent
8141 which will create the agenda views restricted to the file
8142 @file{~/org/project.org}, without diary entries and with a 30-day
8143 extent.
8145 You can also extract agenda information in a way that allows further
8146 processing by other programs.  See @ref{Extracting agenda information}, for
8147 more information.
8150 @node Agenda column view,  , Exporting Agenda Views, Agenda Views
8151 @section Using column view in the agenda
8152 @cindex column view, in agenda
8153 @cindex agenda, column view
8155 Column view (@pxref{Column view}) is normally used to view and edit
8156 properties embedded in the hierarchical structure of an Org file.  It can be
8157 quite useful to use column view also from the agenda, where entries are
8158 collected by certain criteria.
8160 @table @kbd
8161 @kindex C-c C-x C-c
8162 @item C-c C-x C-c
8163 Turn on column view in the agenda.
8164 @end table
8166 To understand how to use this properly, it is important to realize that the
8167 entries in the agenda are no longer in their proper outline environment.
8168 This causes the following issues:
8170 @enumerate
8171 @item
8172 @vindex org-columns-default-format
8173 @vindex org-overriding-columns-format
8174 Org needs to make a decision which @code{COLUMNS} format to use.  Since the
8175 entries in the agenda are collected from different files, and different files
8176 may have different @code{COLUMNS} formats, this is a non-trivial problem.
8177 Org first checks if the variable @code{org-overriding-columns-format} is
8178 currently set, and if so, takes the format from there.  Otherwise it takes
8179 the format associated with the first item in the agenda, or, if that item
8180 does not have a specific format (defined in a property, or in its file), it
8181 uses @code{org-columns-default-format}.
8182 @item
8183 @cindex property, special, CLOCKSUM
8184 If any of the columns has a summary type defined (@pxref{Column attributes}),
8185 turning on column view in the agenda will visit all relevant agenda files and
8186 make sure that the computations of this property are up to date.  This is
8187 also true for the special @code{CLOCKSUM} property.  Org will then sum the
8188 values displayed in the agenda.  In the daily/weekly agenda, the sums will
8189 cover a single day, in all other views they cover the entire block.  It is
8190 vital to realize that the agenda may show the same entry @emph{twice} (for
8191 example as scheduled and as a deadline), and it may show two entries from the
8192 same hierarchy (for example a @emph{parent} and its @emph{child}).  In these
8193 cases, the summation in the agenda will lead to incorrect results because
8194 some values will count double.
8195 @item
8196 When the column view in the agenda shows the @code{CLOCKSUM}, that is always
8197 the entire clocked time for this item.  So even in the daily/weekly agenda,
8198 the clocksum listed in column view may originate from times outside the
8199 current view.  This has the advantage that you can compare these values with
8200 a column listing the planned total effort for a task---one of the major
8201 applications for column view in the agenda.  If you want information about
8202 clocked time in the displayed period use clock table mode (press @kbd{R} in
8203 the agenda).
8204 @end enumerate
8207 @node Markup, Exporting, Agenda Views, Top
8208 @chapter Markup for rich export
8210 When exporting Org-mode documents, the exporter tries to reflect the
8211 structure of the document as accurately as possible in the backend.  Since
8212 export targets like HTML, La@TeX{}, or DocBook allow much richer formatting,
8213 Org mode has rules on how to prepare text for rich export.  This section
8214 summarizes the markup rules used in an Org-mode buffer.
8216 @menu
8217 * Structural markup elements::  The basic structure as seen by the exporter
8218 * Images and tables::           Tables and Images will be included
8219 * Literal examples::            Source code examples with special formatting
8220 * Include files::               Include additional files into a document
8221 * Index entries::               
8222 * Macro replacement::           Use macros to create complex output
8223 * Embedded LaTeX::              LaTeX can be freely used inside Org documents
8224 @end menu
8226 @node Structural markup elements, Images and tables, Markup, Markup
8227 @section Structural markup elements
8229 @menu
8230 * Document title::              Where the title is taken from
8231 * Headings and sections::       The document structure as seen by the exporter
8232 * Table of contents::           The if and where of the table of contents
8233 * Initial text::                Text before the first heading?
8234 * Lists::                       Lists
8235 * Paragraphs::                  Paragraphs
8236 * Footnote markup::             Footnotes
8237 * Emphasis and monospace::      Bold, italic, etc.
8238 * Horizontal rules::            Make a line
8239 * Comment lines::               What will *not* be exported
8240 @end menu
8242 @node Document title, Headings and sections, Structural markup elements, Structural markup elements
8243 @subheading Document title
8244 @cindex document title, markup rules
8246 @noindent
8247 The title of the exported document is taken from the special line
8249 @cindex #+TITLE
8250 @example
8251 #+TITLE: This is the title of the document
8252 @end example
8254 @noindent
8255 If this line does not exist, the title is derived from the first non-empty,
8256 non-comment line in the buffer.  If no such line exists, or if you have
8257 turned off exporting of the text before the first headline (see below), the
8258 title will be the file name without extension.
8260 @cindex property, EXPORT_TITLE
8261 If you are exporting only a subtree by marking is as the region, the heading
8262 of the subtree will become the title of the document.  If the subtree has a
8263 property @code{EXPORT_TITLE}, that will take precedence.
8265 @node Headings and sections, Table of contents, Document title, Structural markup elements
8266 @subheading Headings and sections
8267 @cindex headings and sections, markup rules
8269 @vindex org-export-headline-levels
8270 The outline structure of the document as described in @ref{Document
8271 Structure}, forms the basis for defining sections of the exported document.
8272 However, since the outline structure is also used for (for example) lists of
8273 tasks, only the first three outline levels will be used as headings.  Deeper
8274 levels will become itemized lists.  You can change the location of this
8275 switch globally by setting the variable @code{org-export-headline-levels}, or on a
8276 per-file basis with a line
8278 @cindex #+OPTIONS
8279 @example
8280 #+OPTIONS: H:4
8281 @end example
8283 @node Table of contents, Initial text, Headings and sections, Structural markup elements
8284 @subheading Table of contents
8285 @cindex table of contents, markup rules
8287 @vindex org-export-with-toc
8288 The table of contents is normally inserted directly before the first headline
8289 of the file.  If you would like to get it to a different location, insert the
8290 string @code{[TABLE-OF-CONTENTS]} on a line by itself at the desired
8291 location.  The depth of the table of contents is by default the same as the
8292 number of headline levels, but you can choose a smaller number, or turn off
8293 the table of contents entirely, by configuring the variable
8294 @code{org-export-with-toc}, or on a per-file basis with a line like
8296 @example
8297 #+OPTIONS: toc:2          (only to two levels in TOC)
8298 #+OPTIONS: toc:nil        (no TOC at all)
8299 @end example
8301 @node Initial text, Lists, Table of contents, Structural markup elements
8302 @subheading Text before the first headline
8303 @cindex text before first headline, markup rules
8304 @cindex #+TEXT
8306 Org mode normally exports the text before the first headline, and even uses
8307 the first line as the document title.  The text will be fully marked up.  If
8308 you need to include literal HTML, La@TeX{}, or DocBook code, use the special
8309 constructs described below in the sections for the individual exporters.
8311 @vindex org-export-skip-text-before-1st-heading
8312 Some people like to use the space before the first headline for setup and
8313 internal links and therefore would like to control the exported text before
8314 the first headline in a different way.  You can do so by setting the variable
8315 @code{org-export-skip-text-before-1st-heading} to @code{t}.  On a per-file
8316 basis, you can get the same effect with @samp{#+OPTIONS: skip:t}.
8318 @noindent
8319 If you still want to have some text before the first headline, use the
8320 @code{#+TEXT} construct:
8322 @example
8323 #+OPTIONS: skip:t
8324 #+TEXT: This text will go before the *first* headline.
8325 #+TEXT: [TABLE-OF-CONTENTS]
8326 #+TEXT: This goes between the table of contents and the first headline
8327 @end example
8329 @node Lists, Paragraphs, Initial text, Structural markup elements
8330 @subheading Lists
8331 @cindex lists, markup rules
8333 Plain lists as described in @ref{Plain lists}, are translated to the backend's
8334 syntax for such lists.  Most backends support unordered, ordered, and
8335 description lists.
8337 @node Paragraphs, Footnote markup, Lists, Structural markup elements
8338 @subheading Paragraphs, line breaks, and quoting
8339 @cindex paragraphs, markup rules
8341 Paragraphs are separated by at least one empty line.  If you need to enforce
8342 a line break within a paragraph, use @samp{\\} at the end of a line.
8344 To keep the line breaks in a region, but otherwise use normal formatting, you
8345 can use this construct, which can also be used to format poetry.
8347 @cindex #+BEGIN_VERSE
8348 @example
8349 #+BEGIN_VERSE
8350  Great clouds overhead
8351  Tiny black birds rise and fall
8352  Snow covers Emacs
8354      -- AlexSchroeder
8355 #+END_VERSE
8356 @end example
8358 When quoting a passage from another document, it is customary to format this
8359 as a paragraph that is indented on both the left and the right margin.  You
8360 can include quotations in Org-mode documents like this:
8362 @cindex #+BEGIN_QUOTE
8363 @example
8364 #+BEGIN_QUOTE
8365 Everything should be made as simple as possible,
8366 but not any simpler -- Albert Einstein
8367 #+END_QUOTE
8368 @end example
8370 If you would like to center some text, do it like this:
8371 @cindex #+BEGIN_CENTER
8372 @example
8373 #+BEGIN_CENTER
8374 Everything should be made as simple as possible, \\
8375 but not any simpler
8376 #+END_CENTER
8377 @end example
8380 @node Footnote markup, Emphasis and monospace, Paragraphs, Structural markup elements
8381 @subheading Footnote markup
8382 @cindex footnotes, markup rules
8383 @cindex @file{footnote.el}
8385 Footnotes defined in the way described in @ref{Footnotes}, will be exported by
8386 all backends.  Org allows multiple references to the same note, and
8387 different backends support this to varying degrees.
8389 @node Emphasis and monospace, Horizontal rules, Footnote markup, Structural markup elements
8390 @subheading Emphasis and monospace
8392 @cindex underlined text, markup rules
8393 @cindex bold text, markup rules
8394 @cindex italic text, markup rules
8395 @cindex verbatim text, markup rules
8396 @cindex code text, markup rules
8397 @cindex strike-through text, markup rules
8398 You can make words @b{*bold*}, @i{/italic/}, _underlined_, @code{=code=}
8399 and @code{~verbatim~}, and, if you must, @samp{+strike-through+}.  Text
8400 in the code and verbatim string is not processed for Org-mode specific
8401 syntax, it is exported verbatim.
8403 @node Horizontal rules, Comment lines, Emphasis and monospace, Structural markup elements
8404 @subheading  Horizontal rules
8405 @cindex horizontal rules, markup rules
8406 A line consisting of only dashes, and at least 5 of them, will be
8407 exported as a horizontal line (@samp{<hr/>} in HTML).
8409 @node Comment lines,  , Horizontal rules, Structural markup elements
8410 @subheading Comment lines
8411 @cindex comment lines
8412 @cindex exporting, not
8413 @cindex #+BEGIN_COMMENT
8415 Lines starting with @samp{#} in column zero are treated as comments and will
8416 never be exported. If you want an indented line to be treated as a comment,
8417 start it with @samp{#+ }.  Also entire subtrees starting with the word
8418 @samp{COMMENT} will never be exported.  Finally, regions surrounded by
8419 @samp{#+BEGIN_COMMENT} ... @samp{#+END_COMMENT} will not be exported.
8421 @table @kbd
8422 @kindex C-c ;
8423 @item C-c ;
8424 Toggle the COMMENT keyword at the beginning of an entry.
8425 @end table
8428 @node Images and tables, Literal examples, Structural markup elements, Markup
8429 @section Images and Tables
8431 @cindex tables, markup rules
8432 @cindex #+CAPTION
8433 @cindex #+LABEL
8434 Both the native Org mode tables (@pxref{Tables}) and tables formatted with
8435 the @file{table.el} package will be exported properly.  For Org mode tables,
8436 the lines before the first horizontal separator line will become table header
8437 lines.  You can use the following lines somewhere before the table to assign
8438 a caption and a label for cross references, and in the text you can refer to
8439 the object with @code{\ref@{tab:basic-data@}}:
8441 @example
8442 #+CAPTION: This is the caption for the next table (or link)
8443 #+LABEL:   tbl:basic-data
8444    | ... | ...|
8445    |-----|----|
8446 @end example
8448 @cindex inlined images, markup rules
8449 Some backends (HTML, La@TeX{}, and DocBook) allow you to directly include
8450 images into the exported document.  Org does this, if a link to an image
8451 files does not have a description part, for example @code{[[./img/a.jpg]]}.
8452 If you wish to define a caption for the image and maybe a label for internal
8453 cross references, you sure that the link is on a line by itself precede it
8454 with:
8456 @example
8457 #+CAPTION: This is the caption for the next figure link (or table)
8458 #+LABEL:   fig:SED-HR4049
8459 [[./img/a.jpg]]
8460 @end example
8462 You may also define additional attributes for the figure.  As this is
8463 backend-specific, see the sections about the individual backends for more
8464 information.
8467 @node Literal examples, Include files, Images and tables, Markup
8468 @section Literal examples
8469 @cindex literal examples, markup rules
8470 @cindex code line references, markup rules
8472 You can include literal examples that should not be subjected to
8473 markup.  Such examples will be typeset in monospace, so this is well suited
8474 for source code and similar examples.
8475 @cindex #+BEGIN_EXAMPLE
8477 @example
8478 #+BEGIN_EXAMPLE
8479 Some example from a text file.
8480 #+END_EXAMPLE
8481 @end example
8483 Note that such blocks may be @i{indented} in order to align nicely with
8484 indented text and in particular with plain list structure (@pxref{Plain
8485 lists}).  For simplicity when using small examples, you can also start the
8486 example lines with a colon followed by a space.  There may also be additional
8487 whitespace before the colon:
8489 @example
8490 Here is an example
8491    : Some example from a text file.
8492 @end example
8494 @cindex formatting source code, markup rules
8495 If the example is source code from a programming language, or any other text
8496 that can be marked up by font-lock in Emacs, you can ask for the example to
8497 look like the fontified Emacs buffer@footnote{Currently this works for the
8498 HTML backend, and requires the @file{htmlize.el} package version 1.34 or
8499 later.  It also works for LaTeX with the listings package, if you turn on the
8500 option @code{org-export-latex-listings} and make sure that the listings
8501 package is included by the LaTeX header.}.  This is done with the @samp{src}
8502 block, where you also need to specify the name of the major mode that should
8503 be used to fontify the example:
8504 @cindex #+BEGIN_SRC
8506 @example
8507 #+BEGIN_SRC emacs-lisp
8508 (defun org-xor (a b)
8509    "Exclusive or."
8510    (if a (not b) b))
8511 #+END_SRC
8512 @end example
8514 Both in @code{example} and in @code{src} snippets, you can add a @code{-n}
8515 switch to the end of the @code{BEGIN} line, to get the lines of the example
8516 numbered.  If you use a @code{+n} switch, the numbering from the previous
8517 numbered snippet will be continued in the current one.  In literal examples,
8518 Org will interpret strings like @samp{(ref:name)} as labels, and use them as
8519 targets for special hyperlinks like @code{[[(name)]]} (i.e. the reference name
8520 enclosed in single parenthesis).  In HTML, hovering the mouse over such a
8521 link will remote-highlight the corresponding code line, which is kind of
8522 cool.
8524 You can also add a @code{-r} switch which @i{removes} the labels from the
8525 source code@footnote{Adding @code{-k} to @code{-n -r} will @i{keep} the
8526 labels in the source code while using line numbers for the links, which might
8527 be useful to explain those in an org-mode example code.}.  With the @code{-n}
8528 switch, links to these references will be labeled by the line numbers from
8529 the code listing, otherwise links will use the labels with no parentheses.
8530 Here is an example:
8532 @example
8533 #+BEGIN_SRC emacs-lisp -n -r
8534 (save-excursion                  (ref:sc)
8535    (goto-char (point-min))       (ref:jump)
8536 #+END_SRC
8537 In line [[(sc)]] we remember the current position.  [[(jump)][Line (jump)]]
8538 jumps to point-min.
8539 @end example
8541 @vindex org-coderef-label-format
8542 If the syntax for the label format conflicts with the language syntax, use a
8543 @code{-l} switch to change the format, for example @samp{#+BEGIN_SRC pascal
8544 -n -r -l "((%s))"}.  See also the variable @code{org-coderef-label-format}.
8546 HTML export also allows examples to be published as text areas, @xref{Text
8547 areas in HTML export}.
8549 @table @kbd
8550 @kindex C-c '
8551 @item C-c '
8552 Edit the source code example at point in its native mode.  This works by
8553 switching to a temporary buffer with the source code.  You need to exit by
8554 pressing @kbd{C-c '} again@footnote{Upon exit, lines starting with @samp{*}
8555 or @samp{#} will get a comma prepended, to keep them from being interpreted
8556 by Org as outline nodes or special comments.  These commas will be striped
8557 for editing with @kbd{C-c '}, and also for export.}, the edited version will
8558 then replace the old version in the Org buffer.  Fixed-width regions
8559 (where each line starts with a colon followed by a space) will be edited
8560 using @code{artist-mode}@footnote{You may select a different-mode with the
8561 variable @code{org-edit-fixed-width-region-mode}.} to allow creating ASCII
8562 drawings easily.  Using this command in an empty line will create a new
8563 fixed-width region.
8564 @kindex C-c l
8565 @item C-c l
8566 Calling @code{org-store-link} while editing a source code example in a
8567 temporary buffer created with @kbd{C-c '} will prompt for a label, make sure
8568 that it is unique in the current buffer, and insert it with the proper
8569 formatting like @samp{(ref:label)} at the end of the current line.  Then the
8570 label is stored as a link @samp{(label)}, for retrieval with @kbd{C-c C-l}.
8571 @end table
8574 @node Include files, Index entries, Literal examples, Markup
8575 @section Include files
8576 @cindex include files, markup rules
8578 During export, you can include the content of another file.  For example, to
8579 include your @file{.emacs} file, you could use:
8580 @cindex #+INCLUDE
8582 @example
8583 #+INCLUDE: "~/.emacs" src emacs-lisp
8584 @end example
8585 @noindent
8586 The optional second and third parameter are the markup (e.g. @samp{quote},
8587 @samp{example}, or @samp{src}), and, if the markup is @samp{src}, the
8588 language for formatting the contents.  The markup is optional, if it is not
8589 given, the text will be assumed to be in Org mode format and will be
8590 processed normally.  The include line will also allow additional keyword
8591 parameters @code{:prefix1} and @code{:prefix} to specify prefixes for the
8592 first line and for each following line, as well as any options accepted by
8593 the selected markup.  For example, to include a file as an item, use
8595 @example
8596 #+INCLUDE: "~/snippets/xx" :prefix1 "   + " :prefix "     "
8597 @end example
8599 @table @kbd
8600 @kindex C-c '
8601 @item C-c '
8602 Visit the include file at point.
8603 @end table
8605 @node Index entries, Macro replacement, Include files, Markup
8606 @section Index enries
8607 @cindex index entries, for publishing
8609 You can specify entries that will be used for generating an index during
8610 publishing.  This is done by lines starting with @code{#+INDEX}.  An entry
8611 the contains an exclamation mark will create a sub item.  See @ref{Generating
8612 an index} for more information.
8614 @example
8615 * Curriculum Vitae 
8616 #+INDEX: CV
8617 #+INDEX: Application!CV
8618 @end example
8623 @node Macro replacement, Embedded LaTeX, Index entries, Markup
8624 @section Macro replacement
8625 @cindex macro replacement, during export
8626 @cindex #+MACRO
8628 You can define text snippets with
8630 @example
8631 #+MACRO: name   replacement text $1, $2 are arguments
8632 @end example
8634 @noindent which can be referenced anywhere in the document (even in
8635 code examples) with @code{@{@{@{name(arg1,arg2)@}@}@}}.  In addition to
8636 defined macros, @code{@{@{@{title@}@}@}}, @code{@{@{@{author@}@}@}}, etc.,
8637 will reference information set by the @code{#+TITLE:}, @code{#+AUTHOR:}, and
8638 similar lines.  Also, @code{@{@{@{date(@var{FORMAT})@}@}@}} and
8639 @code{@{@{@{modification-time(@var{FORMAT})@}@}@}} refer to current date time
8640 and to the modification time of the file being exported, respectively.
8641 @var{FORMAT} should be a format string understood by
8642 @code{format-time-string}.
8644 Macro expansion takes place during export, and some people use it to
8645 construct complex HTML code.
8648 @node Embedded LaTeX,  , Macro replacement, Markup
8649 @section Embedded La@TeX{}
8650 @cindex @TeX{} interpretation
8651 @cindex La@TeX{} interpretation
8653 Plain ASCII is normally sufficient for almost all note taking.  One
8654 exception, however, are scientific notes which need to be able to contain
8655 mathematical symbols and the occasional formula.  La@TeX{}@footnote{La@TeX{}
8656 is a macro system based on Donald E. Knuth's @TeX{} system.  Many of the
8657 features described here as ``La@TeX{}'' are really from @TeX{}, but for
8658 simplicity I am blurring this distinction.}  is widely used to typeset
8659 scientific documents. Org mode supports embedding La@TeX{} code into its
8660 files, because many academics are used to reading La@TeX{} source code, and
8661 because it can be readily processed into images for HTML production.
8663 It is not necessary to mark La@TeX{} macros and code in any special way.
8664 If you observe a few conventions, Org mode knows how to find it and what
8665 to do with it.
8667 @menu
8668 * Special symbols::             Greek letters and other symbols
8669 * Subscripts and superscripts::  Simple syntax for raising/lowering text
8670 * LaTeX fragments::             Complex formulas made easy
8671 * Previewing LaTeX fragments::  What will this snippet look like?
8672 * CDLaTeX mode::                Speed up entering of formulas
8673 @end menu
8675 @node Special symbols, Subscripts and superscripts, Embedded LaTeX, Embedded LaTeX
8676 @subsection Special symbols
8677 @cindex math symbols
8678 @cindex special symbols
8679 @cindex @TeX{} macros
8680 @cindex La@TeX{} fragments, markup rules
8681 @cindex HTML entities
8682 @cindex La@TeX{} entities
8684 You can use La@TeX{} macros to insert special symbols like @samp{\alpha} to
8685 indicate the Greek letter, or @samp{\to} to indicate an arrow.  Completion
8686 for these macros is available, just type @samp{\} and maybe a few letters,
8687 and press @kbd{M-@key{TAB}} to see possible completions.  Unlike La@TeX{}
8688 code, Org mode allows these macros to be present without surrounding math
8689 delimiters, for example:
8691 @example
8692 Angles are written as Greek letters \alpha, \beta and \gamma.
8693 @end example
8695 @vindex org-html-entities
8696 During export, these symbols will be transformed into the native format of
8697 the exporter backend.  Strings like @code{\alpha} will be exported as
8698 @code{&alpha;} in the HTML output, and as @code{$\alpha$} in the La@TeX{}
8699 output.  Similarly, @code{\nbsp} will become @code{&nbsp;} in HTML and
8700 @code{~} in La@TeX{}.  If you need such a symbol inside a word, terminate it
8701 like this: @samp{\Aacute@{@}stor}.
8703 A large number of entities is provided, with names taken from both HTML and
8704 La@TeX{}, see the variable @code{org-html-entities} for the complete list.
8705 @samp{\-} is treated as a shy hyphen, and @samp{--}, @samp{---}, and
8706 @samp{...} are all converted into special commands creating hyphens of
8707 different lengths or a compact set of dots.
8709 @node Subscripts and superscripts, LaTeX fragments, Special symbols, Embedded LaTeX
8710 @subsection Subscripts and superscripts
8711 @cindex subscript
8712 @cindex superscript
8714 Just like in La@TeX{}, @samp{^} and @samp{_} are used to indicate super-
8715 and subscripts.  Again, these can be used without embedding them in
8716 math-mode delimiters.  To increase the readability of ASCII text, it is
8717 not necessary (but OK) to surround multi-character sub- and superscripts
8718 with curly braces.  For example
8720 @example
8721 The mass if the sun is M_sun = 1.989 x 10^30 kg.  The radius of
8722 the sun is R_@{sun@} = 6.96 x 10^8 m.
8723 @end example
8725 @vindex org-export-with-sub-superscripts
8726 To avoid interpretation as raised or lowered text, you can quote @samp{^} and
8727 @samp{_} with a backslash: @samp{\^} and @samp{\_}.  If you write a text
8728 where the underscore is often used in a different context, Org's convention
8729 to always interpret these as subscripts can get in your way.  Configure the
8730 variable @code{org-export-with-sub-superscripts} to globally change this
8731 convention, or use, on a per-file basis:
8733 @example
8734 #+OPTIONS: ^:@{@}
8735 @end example
8738 @node LaTeX fragments, Previewing LaTeX fragments, Subscripts and superscripts, Embedded LaTeX
8739 @subsection La@TeX{} fragments
8740 @cindex La@TeX{} fragments
8742 @vindex org-format-latex-header
8743 With symbols, sub- and superscripts, HTML is pretty much at its end when
8744 it comes to representing mathematical formulas@footnote{Yes, there is
8745 MathML, but that is not yet fully supported by many browsers, and there
8746 is no decent converter for turning La@TeX{} or ASCII representations of
8747 formulas into MathML. So for the time being, converting formulas into
8748 images seems the way to go.}. More complex expressions need a dedicated
8749 formula processor. To this end, Org mode can contain arbitrary La@TeX{}
8750 fragments. It provides commands to preview the typeset result of these
8751 fragments, and upon export to HTML, all fragments will be converted to
8752 images and inlined into the HTML document@footnote{The La@TeX{} export
8753 will not use images for displaying La@TeX{} fragments but include these
8754 fragments directly into the La@TeX{} code.}. For this to work you
8755 need to be on a system with a working La@TeX{} installation. You also
8756 need the @file{dvipng} program, available at
8757 @url{http://sourceforge.net/projects/dvipng/}. The La@TeX{} header that
8758 will be used when processing a fragment can be configured with the
8759 variable @code{org-format-latex-header}.
8761 La@TeX{} fragments don't need any special marking at all.  The following
8762 snippets will be identified as La@TeX{} source code:
8763 @itemize @bullet
8764 @item
8765 Environments of any kind.  The only requirement is that the
8766 @code{\begin} statement appears on a new line, preceded by only
8767 whitespace.
8768 @item
8769 Text within the usual La@TeX{} math delimiters.  To avoid conflicts with
8770 currency specifications, single @samp{$} characters are only recognized as
8771 math delimiters if the enclosed text contains at most two line breaks, is
8772 directly attached to the @samp{$} characters with no whitespace in between,
8773 and if the closing @samp{$} is followed by whitespace, punctuation or a dash.
8774 For the other delimiters, there is no such restriction, so when in doubt, use
8775 @samp{\(...\)} as inline math delimiters.
8776 @end itemize
8778 @noindent For example:
8780 @example
8781 \begin@{equation@}                          % arbitrary environments,
8782 x=\sqrt@{b@}                                % even tables, figures
8783 \end@{equation@}                            % etc
8785 If $a^2=b$ and \( b=2 \), then the solution must be
8786 either $$ a=+\sqrt@{2@} $$ or \[ a=-\sqrt@{2@} \].
8787 @end example
8789 @noindent
8790 @vindex org-format-latex-options
8791 If you need any of the delimiter ASCII sequences for other purposes, you
8792 can configure the option @code{org-format-latex-options} to deselect the
8793 ones you do not wish to have interpreted by the La@TeX{} converter.
8795 @node Previewing LaTeX fragments, CDLaTeX mode, LaTeX fragments, Embedded LaTeX
8796 @subsection Previewing LaTeX fragments
8797 @cindex LaTeX fragments, preview
8799 La@TeX{} fragments can be processed to produce preview images of the
8800 typeset expressions:
8802 @table @kbd
8803 @kindex C-c C-x C-l
8804 @item C-c C-x C-l
8805 Produce a preview image of the La@TeX{} fragment at point and overlay it
8806 over the source code.  If there is no fragment at point, process all
8807 fragments in the current entry (between two headlines).  When called
8808 with a prefix argument, process the entire subtree.  When called with
8809 two prefix arguments, or when the cursor is before the first headline,
8810 process the entire buffer.
8811 @kindex C-c C-c
8812 @item C-c C-c
8813 Remove the overlay preview images.
8814 @end table
8816 @vindex org-format-latex-options
8817 You can customize the variable @code{org-format-latex-options} to influence
8818 some aspects of the preview. In particular, the @code{:scale} (and for HTML
8819 export, @code{:html-scale}) property can be used to adjust the size of the
8820 preview images.
8822 During HTML export (@pxref{HTML export}), all La@TeX{} fragments are
8823 converted into images and inlined into the document if the following
8824 setting is active:
8826 @lisp
8827 (setq org-export-with-LaTeX-fragments t)
8828 @end lisp
8830 @node CDLaTeX mode,  , Previewing LaTeX fragments, Embedded LaTeX
8831 @subsection Using CDLa@TeX{} to enter math
8832 @cindex CDLa@TeX{}
8834 CDLa@TeX{} mode is a minor mode that is normally used in combination with a
8835 major La@TeX{} mode like AUC@TeX{} in order to speed-up insertion of
8836 environments and math templates.  Inside Org mode, you can make use of
8837 some of the features of CDLa@TeX{} mode.  You need to install
8838 @file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
8839 AUC@TeX{}) from @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
8840 Don't use CDLa@TeX{} mode itself under Org mode, but use the light
8841 version @code{org-cdlatex-mode} that comes as part of Org mode.  Turn it
8842 on for the current buffer with @code{M-x org-cdlatex-mode}, or for all
8843 Org files with
8845 @lisp
8846 (add-hook 'org-mode-hook 'turn-on-org-cdlatex)
8847 @end lisp
8849 When this mode is enabled, the following features are present (for more
8850 details see the documentation of CDLa@TeX{} mode):
8851 @itemize @bullet
8852 @kindex C-c @{
8853 @item
8854 Environment templates can be inserted with @kbd{C-c @{}.
8855 @item
8856 @kindex @key{TAB}
8857 The @key{TAB} key will do template expansion if the cursor is inside a
8858 La@TeX{} fragment@footnote{Org mode has a method to test if the cursor is
8859 inside such a fragment, see the documentation of the function
8860 @code{org-inside-LaTeX-fragment-p}.}.  For example, @key{TAB} will
8861 expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
8862 correctly inside the first brace.  Another @key{TAB} will get you into
8863 the second brace.  Even outside fragments, @key{TAB} will expand
8864 environment abbreviations at the beginning of a line.  For example, if
8865 you write @samp{equ} at the beginning of a line and press @key{TAB},
8866 this abbreviation will be expanded to an @code{equation} environment.
8867 To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help}.
8868 @item
8869 @kindex _
8870 @kindex ^
8871 @vindex cdlatex-simplify-sub-super-scripts
8872 Pressing @kbd{_} and @kbd{^} inside a La@TeX{} fragment will insert these
8873 characters together with a pair of braces.  If you use @key{TAB} to move
8874 out of the braces, and if the braces surround only a single character or
8875 macro, they are removed again (depending on the variable
8876 @code{cdlatex-simplify-sub-super-scripts}).
8877 @item
8878 @kindex `
8879 Pressing the backquote @kbd{`} followed by a character inserts math
8880 macros, also outside La@TeX{} fragments.  If you wait more than 1.5 seconds
8881 after the backquote, a help window will pop up.
8882 @item
8883 @kindex '
8884 Pressing the single-quote @kbd{'} followed by another character modifies
8885 the symbol before point with an accent or a font.  If you wait more than
8886 1.5 seconds after the backquote, a help window will pop up.  Character
8887 modification will work only inside La@TeX{} fragments, outside the quote
8888 is normal.
8889 @end itemize
8891 @node Exporting, Publishing, Markup, Top
8892 @chapter Exporting
8893 @cindex exporting
8895 Org-mode documents can be exported into a variety of other formats.  For
8896 printing and sharing of notes, ASCII export produces a readable and simple
8897 version of an Org file.  HTML export allows you to publish a notes file on
8898 the web, while the XOXO format provides a solid base for exchange with a
8899 broad range of other applications. La@TeX{} export lets you use Org mode and
8900 its structured editing functions to easily create La@TeX{} files.  DocBook
8901 export makes it possible to convert Org files to many other formats using
8902 DocBook tools.  To incorporate entries with associated times like deadlines
8903 or appointments into a desktop calendar program like iCal, Org mode can also
8904 produce extracts in the iCalendar format.  Currently Org mode only supports
8905 export, not import of these different formats.
8907 Org supports export of selected regions when @code{transient-mark-mode} is
8908 enabled (default in Emacs 23).
8910 @menu
8911 * Selective export::            Using tags to select and exclude trees
8912 * Export options::              Per-file export settings
8913 * The export dispatcher::       How to access exporter commands
8914 * ASCII/Latin-1/UTF-8 export::  Exporting to flat files with encoding
8915 * HTML export::                 Exporting to HTML
8916 * LaTeX and PDF export::        Exporting to La@TeX{}, and processing to PDF
8917 * DocBook export::              Exporting to DocBook
8918 * Freemind export::             Exporting to Freemind mind maps
8919 * XOXO export::                 Exporting to XOXO
8920 * iCalendar export::            Exporting in iCalendar format
8921 @end menu
8923 @node Selective export, Export options, Exporting, Exporting
8924 @section Selective export
8925 @cindex export, selective by tags
8927 @vindex org-export-select-tags
8928 @vindex org-export-exclude-tags
8929 You may use tags to select the parts of a document that should be exported,
8930 or to exclude parts from export.  This behavior is governed by two variables:
8931 @code{org-export-select-tags} and @code{org-export-exclude-tags}.
8933 Org first checks if any of the @emph{select} tags is present in the buffer.
8934 If yes, all trees that do not carry one of these tags will be excluded.  If a
8935 selected tree is a subtree, the heading hierarchy above it will also be
8936 selected for export, but not the text below those headings.
8938 @noindent
8939 If none of the select tags is found, the whole buffer will be selected for
8940 export.
8942 @noindent
8943 Finally, all subtrees that are marked by any of the @emph{exclude} tags will
8944 be removed from the export buffer.
8946 @node Export options, The export dispatcher, Selective export, Exporting
8947 @section Export options
8948 @cindex options, for export
8950 @cindex completion, of option keywords
8951 The exporter recognizes special lines in the buffer which provide
8952 additional information.  These lines may be put anywhere in the file.
8953 The whole set of lines can be inserted into the buffer with @kbd{C-c
8954 C-e t}.  For individual lines, a good way to make sure the keyword is
8955 correct is to type @samp{#+} and then use @kbd{M-@key{TAB}} completion
8956 (@pxref{Completion}).   For a summary of other in-buffer settings not
8957 specifically related to export, see @ref{In-buffer settings}.
8958 In particular, note that you can place commonly-used (export) options in
8959 a separate file which can be included using @code{#+SETUPFILE}.
8961 @table @kbd
8962 @kindex C-c C-e t
8963 @item C-c C-e t
8964 Insert template with export options, see example below.
8965 @end table
8967 @cindex #+TITLE
8968 @cindex #+AUTHOR
8969 @cindex #+DATE
8970 @cindex #+EMAIL
8971 @cindex #+DESCRIPTION
8972 @cindex #+KEYWORDS
8973 @cindex #+LANGUAGE
8974 @cindex #+TEXT
8975 @cindex #+OPTIONS
8976 @cindex #+BIND
8977 @cindex #+LINK_UP
8978 @cindex #+LINK_HOME
8979 @cindex #+EXPORT_SELECT_TAGS
8980 @cindex #+EXPORT_EXCLUDE_TAGS
8981 @cindex #+LATEX_HEADER
8982 @vindex user-full-name
8983 @vindex user-mail-address
8984 @vindex org-export-default-language
8985 @example
8986 #+TITLE:       the title to be shown (default is the buffer name)
8987 #+AUTHOR:      the author (default taken from @code{user-full-name})
8988 #+DATE:        a date, fixed, of a format string for @code{format-time-string}
8989 #+EMAIL:       his/her email address (default from @code{user-mail-address})
8990 #+DESCRIPTION: the page description, e.g. for the XHTML meta tag
8991 #+KEYWORDS:    the page keywords, e.g. for the XHTML meta tag
8992 #+LANGUAGE:    language for HTML, e.g. @samp{en} (@code{org-export-default-language})
8993 #+TEXT:        Some descriptive text to be inserted at the beginning.
8994 #+TEXT:        Several lines may be given.
8995 #+OPTIONS:     H:2 num:t toc:t \n:nil @@:t ::t |:t ^:t f:t TeX:t ...
8996 #+BIND:        lisp-var lisp-val, e.g.: org-export-latex-low-levels itemize
8997                @r{You need to confirm using these, or configure @code{org-export-allow-BIND}}
8998 #+LINK_UP:     the ``up'' link of an exported page
8999 #+LINK_HOME:   the ``home'' link of an exported page
9000 #+LATEX_HEADER: extra line(s) for the LaTeX header, like \usepackage@{xyz@}
9001 #+EXPORT_SELECT_TAGS:   Tags that select a tree for export
9002 #+EXPORT_EXCLUDE_TAGS:  Tags that exclude a tree from export
9003 @end example
9005 @noindent
9006 The OPTIONS line is a compact@footnote{If you want to configure many options
9007 this way, you can use several OPTIONS lines.} form to specify export settings.  Here
9008 you can:
9009 @cindex headline levels
9010 @cindex section-numbers
9011 @cindex table of contents
9012 @cindex line-break preservation
9013 @cindex quoted HTML tags
9014 @cindex fixed-width sections
9015 @cindex tables
9016 @cindex @TeX{}-like syntax for sub- and superscripts
9017 @cindex footnotes
9018 @cindex special strings
9019 @cindex emphasized text
9020 @cindex @TeX{} macros
9021 @cindex La@TeX{} fragments
9022 @cindex author info, in export
9023 @cindex time info, in export
9024 @example
9025 H:         @r{set the number of headline levels for export}
9026 num:       @r{turn on/off section-numbers}
9027 toc:       @r{turn on/off table of contents, or set level limit (integer)}
9028 \n:        @r{turn on/off line-break-preservation (DOES NOT WORK)}
9029 @@:         @r{turn on/off quoted HTML tags}
9030 ::         @r{turn on/off fixed-width sections}
9031 |:         @r{turn on/off tables}
9032 ^:         @r{turn on/off @TeX{}-like syntax for sub- and superscripts.  If}
9033            @r{you write "^:@{@}", @code{a_@{b@}} will be interpreted, but}
9034            @r{the simple @code{a_b} will be left as it is.}
9035 -:         @r{turn on/off conversion of special strings.}
9036 f:         @r{turn on/off footnotes like this[1].}
9037 todo:      @r{turn on/off inclusion of TODO keywords into exported text}
9038 pri:       @r{turn on/off priority cookies}
9039 tags:      @r{turn on/off inclusion of tags, may also be @code{not-in-toc}}
9040 <:         @r{turn on/off inclusion of any time/date stamps like DEADLINES}
9041 *:         @r{turn on/off emphasized text (bold, italic, underlined)}
9042 TeX:       @r{turn on/off simple @TeX{} macros in plain text}
9043 LaTeX:     @r{turn on/off La@TeX{} fragments}
9044 skip:      @r{turn on/off skipping the text before the first heading}
9045 author:    @r{turn on/off inclusion of author name/email into exported file}
9046 email:     @r{turn on/off inclusion of author email into exported file}
9047 creator:   @r{turn on/off inclusion of creator info into exported file}
9048 timestamp: @r{turn on/off inclusion creation time into exported file}
9049 d:         @r{turn on/off inclusion of drawers}
9050 @end example
9051 @noindent
9052 These options take effect in both the HTML and La@TeX{} export, except
9053 for @code{TeX} and @code{LaTeX}, which are respectively @code{t} and
9054 @code{nil} for the La@TeX{} export.
9056 When exporting only a single subtree by selecting it with @kbd{C-c @@} before
9057 calling an export command, the subtree can overrule some of the file's export
9058 settings with properties @code{EXPORT_FILE_NAME}, @code{EXPORT_TITLE},
9059 @code{EXPORT_TEXT}, @code{EXPORT_AUTHOR}, @code{EXPORT_DATE}, and
9060 @code{EXPORT_OPTIONS}.
9062 @node The export dispatcher, ASCII/Latin-1/UTF-8 export, Export options, Exporting
9063 @section The export dispatcher
9064 @cindex dispatcher, for export commands
9066 All export commands can be reached using the export dispatcher, which is a
9067 prefix key that prompts for an additional key specifying the command.
9068 Normally the entire file is exported, but if there is an active region that
9069 contains one outline tree, the first heading is used as document title and
9070 the subtrees are exported.
9072 @table @kbd
9073 @kindex C-c C-e
9074 @item C-c C-e
9075 @vindex org-export-run-in-background
9076 Dispatcher for export and publishing commands.  Displays a help-window
9077 listing the additional key(s) needed to launch an export or publishing
9078 command.  The prefix arg is passed through to the exporter.  A double prefix
9079 @kbd{C-u C-u} causes most commands to be executed in the background, in a
9080 separate Emacs process@footnote{To make this behavior the default, customize
9081 the variable @code{org-export-run-in-background}.}.
9082 @kindex C-c C-e v
9083 @item C-c C-e v
9084 Like @kbd{C-c C-e}, but only export the text that is currently visible
9085 (i.e. not hidden by outline visibility).
9086 @kindex C-u C-u C-c C-e
9087 @item C-u C-u C-c C-e
9088 @vindex org-export-run-in-background
9089 Call an the exporter, but reverse the setting of
9090 @code{org-export-run-in-background}, i.e. request background processing if
9091 not set, or force processing in the current Emacs process if set.
9092 @end table
9094 @node ASCII/Latin-1/UTF-8 export, HTML export, The export dispatcher, Exporting
9095 @section ASCII/Latin-1/UTF-8 export
9096 @cindex ASCII export
9097 @cindex Latin-1 export
9098 @cindex UTF-8 export
9100 ASCII export produces a simple and very readable version of an Org-mode
9101 file, containing only plain ASCII.  Latin-1 and UTF-8 export augment the file
9102 with special characters and symbols available in these encodings.
9104 @cindex region, active
9105 @cindex active region
9106 @cindex transient-mark-mode
9107 @table @kbd
9108 @kindex C-c C-e a
9109 @item C-c C-e a
9110 @cindex property, EXPORT_FILE_NAME
9111 Export as ASCII file.  For an Org file, @file{myfile.org}, the ASCII file
9112 will be @file{myfile.txt}.  The file will be overwritten without
9113 warning.  If there is an active region@footnote{This requires
9114 @code{transient-mark-mode} be turned on.}, only the region will be
9115 exported. If the selected region is a single tree@footnote{To select the
9116 current subtree, use @kbd{C-c @@}.}, the tree head will
9117 become the document title.  If the tree head entry has or inherits an
9118 @code{EXPORT_FILE_NAME} property, that name will be used for the
9119 export.
9120 @kindex C-c C-e A
9121 @item C-c C-e A
9122 Export to a temporary buffer, do not create a file.
9123 @kindex C-c C-e n
9124 @kindex C-c C-e N
9125 @item C-c C-e n @ @ @r{and} @ @ C-c C-e N
9126 Like the above commands, but use Latin-1 encoding.
9127 @kindex C-c C-e u
9128 @kindex C-c C-e U
9129 @item C-c C-e u @ @ @r{and} @ @ C-c C-e U
9130 Like the above commands, but use UTF-8 encoding.
9131 @kindex C-c C-e v a
9132 @kindex C-c C-e v n
9133 @kindex C-c C-e v u
9134 @item C-c C-e v a @ @ @r{and} @ @ C-c C-e v n @ @ @r{and} @ @ C-c C-e v u
9135 Export only the visible part of the document.
9136 @end table
9138 @cindex headline levels, for exporting
9139 In the exported version, the first 3 outline levels will become
9140 headlines, defining a general document structure.  Additional levels
9141 will be exported as itemized lists.  If you want that transition to occur
9142 at a different level, specify it with a prefix argument.  For example,
9144 @example
9145 @kbd{C-1 C-c C-e a}
9146 @end example
9148 @noindent
9149 creates only top level headlines and does the rest as items.  When
9150 headlines are converted to items, the indentation of the text following
9151 the headline is changed to fit nicely under the item.  This is done with
9152 the assumption that the first body line indicates the base indentation of
9153 the body text.  Any indentation larger than this is adjusted to preserve
9154 the layout relative to the first line.  Should there be lines with less
9155 indentation than the first, these are left alone.
9157 @vindex org-export-ascii-links-to-notes
9158 Links will be exported in a footnote-like style, with the descriptive part in
9159 the text and the link in a note before the next heading.  See the variable
9160 @code{org-export-ascii-links-to-notes} for details and other options.
9162 @node HTML export, LaTeX and PDF export, ASCII/Latin-1/UTF-8 export, Exporting
9163 @section HTML export
9164 @cindex HTML export
9166 Org mode contains an HTML (XHTML 1.0 strict) exporter with extensive
9167 HTML formatting, in ways similar to John Gruber's @emph{markdown}
9168 language, but with additional support for tables.
9170 @menu
9171 * HTML Export commands::        How to invoke HTML export
9172 * Quoting HTML tags::           Using direct HTML in Org mode
9173 * Links in HTML export::        How links will be interpreted and formatted
9174 * Tables in HTML export::       How to modify the formatting of tables
9175 * Images in HTML export::       How to insert figures into HTML output
9176 * Text areas in HTML export::   An alternative way to show an example
9177 * CSS support::                 Changing the appearance of the output
9178 * Javascript support::          Info and Folding in a web browser
9179 @end menu
9181 @node HTML Export commands, Quoting HTML tags, HTML export, HTML export
9182 @subsection HTML export commands
9184 @cindex region, active
9185 @cindex active region
9186 @cindex transient-mark-mode
9187 @table @kbd
9188 @kindex C-c C-e h
9189 @item C-c C-e h
9190 @cindex property, EXPORT_FILE_NAME
9191 Export as HTML file @file{myfile.html}.  For an Org file @file{myfile.org},
9192 the ASCII file will be @file{myfile.html}.  The file will be overwritten
9193 without warning.  If there is an active region@footnote{This requires
9194 @code{transient-mark-mode} be turned on.}, only the region will be
9195 exported. If the selected region is a single tree@footnote{To select the
9196 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
9197 title.  If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
9198 property, that name will be used for the export.
9199 @kindex C-c C-e b
9200 @item C-c C-e b
9201 Export as HTML file and immediately open it with a browser.
9202 @kindex C-c C-e H
9203 @item C-c C-e H
9204 Export to a temporary buffer, do not create a file.
9205 @kindex C-c C-e R
9206 @item C-c C-e R
9207 Export the active region to a temporary buffer.  With a prefix argument, do
9208 not produce the file header and footer, but just the plain HTML section for
9209 the region.  This is good for cut-and-paste operations.
9210 @kindex C-c C-e v h
9211 @kindex C-c C-e v b
9212 @kindex C-c C-e v H
9213 @kindex C-c C-e v R
9214 @item C-c C-e v h
9215 @item C-c C-e v b
9216 @item C-c C-e v H
9217 @item C-c C-e v R
9218 Export only the visible part of the document.
9219 @item M-x org-export-region-as-html
9220 Convert the region to HTML under the assumption that it was Org-mode
9221 syntax before.  This is a global command that can be invoked in any
9222 buffer.
9223 @item M-x org-replace-region-by-HTML
9224 Replace the active region (assumed to be in Org-mode syntax) by HTML
9225 code.
9226 @end table
9228 @cindex headline levels, for exporting
9229 In the exported version, the first 3 outline levels will become headlines,
9230 defining a general document structure.  Additional levels will be exported as
9231 itemized lists.  If you want that transition to occur at a different level,
9232 specify it with a numeric prefix argument.  For example,
9234 @example
9235 @kbd{C-2 C-c C-e b}
9236 @end example
9238 @noindent
9239 creates two levels of headings and does the rest as items.
9241 @node Quoting HTML tags, Links in HTML export, HTML Export commands, HTML export
9242 @subsection Quoting HTML tags
9244 Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
9245 @samp{&gt;} in HTML export.  If you want to include simple HTML tags
9246 which should be interpreted as such, mark them with @samp{@@} as in
9247 @samp{@@<b>bold text@@</b>}.  Note that this really works only for
9248 simple tags.  For more extensive HTML that should be copied verbatim to
9249 the exported file use either
9251 @cindex #+HTML
9252 @cindex #+BEGIN_HTML
9253 @example
9254 #+HTML: Literal HTML code for export
9255 @end example
9257 @noindent or
9258 @cindex #+BEGIN_HTML
9260 @example
9261 #+BEGIN_HTML
9262 All lines between these markers are exported literally
9263 #+END_HTML
9264 @end example
9267 @node Links in HTML export, Tables in HTML export, Quoting HTML tags, HTML export
9268 @subsection Links in HTML export
9270 @cindex links, in HTML export
9271 @cindex internal links, in HTML export
9272 @cindex external links, in HTML export
9273 Internal links (@pxref{Internal links}) will continue to work in HTML.  This
9274 includes automatic links created by radio targets (@pxref{Radio
9275 targets}).  Links to external files will still work if the target file is on
9276 the same @i{relative} path as the published Org file.  Links to other
9277 @file{.org} files will be translated into HTML links under the assumption
9278 that an HTML version also exists of the linked file, at the same relative
9279 path.  @samp{id:} links can then be used to jump to specific entries across
9280 files.  For information related to linking files while publishing them to a
9281 publishing directory see @ref{Publishing links}.
9283 If you want to specify attributes for links, you can do so using a special
9284 @code{#+ATTR_HTML} line to define attributes that will be added to the
9285 @code{<a>} or @code{<img>} tags.  Here is an example that sets @code{title}
9286 and @code{style} attributes for a link:
9288 @cindex #+ATTR_HTML
9289 @example
9290 #+ATTR_HTML: title="The Org-mode homepage" style="color:red;"
9291 [[http://orgmode.org]]
9292 @end example
9294 @node Tables in HTML export, Images in HTML export, Links in HTML export, HTML export
9295 @subsection Tables
9296 @cindex tables, in HTML
9297 @vindex org-export-html-table-tag
9299 Org-mode tables are exported to HTML using the table tag defined in
9300 @code{org-export-html-table-tag}.  The default setting makes tables without
9301 cell borders and frame.  If you would like to change this for individual
9302 tables, place somthing like the following before the table:
9304 @cindex #+CAPTION
9305 @cindex #+ATTR_HTML
9306 @example
9307 #+CAPTION: This is a table with lines around and between cells
9308 #+ATTR_HTML: border="2" rules="all" frame="all"
9309 @end example
9311 @node Images in HTML export, Text areas in HTML export, Tables in HTML export, HTML export
9312 @subsection Images in HTML export
9314 @cindex images, inline in HTML
9315 @cindex inlining images in HTML
9316 @vindex org-export-html-inline-images
9317 HTML export can inline images given as links in the Org file, and
9318 it can make an image the clickable part of a link.  By
9319 default@footnote{But see the variable
9320 @code{org-export-html-inline-images}.}, images are inlined if a link does
9321 not have a description.  So @samp{[[file:myimg.jpg]]} will be inlined,
9322 while @samp{[[file:myimg.jpg][the image]]} will just produce a link
9323 @samp{the image} that points to the image.  If the description part
9324 itself is a @code{file:} link or a @code{http:} URL pointing to an
9325 image, this image will be inlined and activated so that clicking on the
9326 image will activate the link.  For example, to include a thumbnail that
9327 will link to a high resolution version of the image, you could use:
9329 @example
9330 [[file:highres.jpg][file:thumb.jpg]]
9331 @end example
9333 If you need to add attributes to an inlines image, use a @code{#+ATTR_HTML}.
9334 In the example below we specify the @code{alt} and @code{title} attributes to
9335 support text viewers and accessibility, and align it to the right.
9337 @cindex #+CAPTION
9338 @cindex #+ATTR_HTML
9339 @example
9340 #+CAPTION: A black cat stalking a spider
9341 #+ATTR_HTML: alt="cat/spider image" title="Action!" align="right"
9342 [[./img/a.jpg]]
9343 @end example
9345 @noindent
9346 and you could use @code{http} addresses just as well.
9348 @node Text areas in HTML export, CSS support, Images in HTML export, HTML export
9349 @subsection Text areas in HTML export
9351 @cindex text areas, in HTML
9352 An alternative way to publish literal code examples in HTML is to use text
9353 areas, where the example can even be edited before pasting it into an
9354 application.  It is triggered by a @code{-t} switch at an @code{example} or
9355 @code{src} block.  Using this switch disables any options for syntax and
9356 label highlighting, and line numbering, which may be present.  You may also
9357 use @code{-h} and @code{-w} switches to specify the height and width of the
9358 text area, which default to the number of lines in the example, and 80,
9359 respectively.  For example
9361 @example
9362 #+BEGIN_EXAMPLE -t -w 40
9363 (defun org-xor (a b)
9364    "Exclusive or."
9365    (if a (not b) b))
9366 #+END_EXAMPLE
9367 @end example
9370 @node CSS support, Javascript support, Text areas in HTML export, HTML export
9371 @subsection CSS support
9372 @cindex CSS, for HTML export
9373 @cindex HTML export, CSS
9375 @vindex org-export-html-todo-kwd-class-prefix
9376 @vindex org-export-html-tag-class-prefix
9377 You can also give style information for the exported file.  The HTML exporter
9378 assigns the following special CSS classes@footnote{If the classes on TODO
9379 keywords and tags lead to conflicts, use the variables
9380 @code{org-export-html-todo-kwd-class-prefix} and
9381 @code{org-export-html-tag-class-prefix} to make them unique.} to appropriate
9382 parts of the document---your style specifications may change these, in
9383 addition to any of the standard classes like for headlines, tables, etc.
9384 @example
9385 p.author            @r{author information, including email}
9386 p.date              @r{publishing date}
9387 p.creator           @r{creator info, about org-mode version}
9388 .title              @r{document title}
9389 .todo               @r{TODO keywords, all not-done states}
9390 .done               @r{the DONE keywords, all stated the count as done}
9391 .WAITING            @r{each TODO keyword also uses a class named after itself}
9392 .timestamp          @r{timestamp}
9393 .timestamp-kwd      @r{keyword associated with a timestamp, like SCHEDULED}
9394 .timestamp-wrapper  @r{span around keyword plus timestamp}
9395 .tag                @r{tag in a headline}
9396 ._HOME              @r{each tag uses itself as a class, "@@" replaced by "_"}
9397 .target             @r{target for links}
9398 .linenr             @r{the line number in a code example}
9399 .code-highlighted   @r{for highlighting referenced code lines}
9400 div.outline-N       @r{div for outline level N (headline plus text))}
9401 div.outline-text-N  @r{extra div for text at outline level N}
9402 .section-number-N   @r{section number in headlines, different for each level}
9403 div.figure          @r{how to format an inlined image}
9404 pre.src             @r{formatted source code}
9405 pre.example         @r{normal example}
9406 p.verse             @r{verse paragraph}
9407 div.footnotes       @r{footnote section headline}
9408 p.footnote          @r{footnote definition paragraph, containing a footnote}
9409 .footref            @r{a footnote reference number (always a <sup>)}
9410 .footnum            @r{footnote number in footnote definition (always <sup>)}
9411 @end example
9413 @vindex org-export-html-style-default
9414 @vindex org-export-html-style-include-default
9415 @vindex org-export-html-style
9416 @vindex org-export-html-extra
9417 @vindex org-export-html-style-default
9418 Each exported file contains a compact default style that defines these
9419 classes in a basic way@footnote{This style is defined in the constant
9420 @code{org-export-html-style-default}, which you should not modify.  To turn
9421 inclusion of these defaults off, customize
9422 @code{org-export-html-style-include-default}}.  You may overwrite these
9423 settings, or add to them by using the variables @code{org-export-html-style}
9424 (for Org-wide settings) and @code{org-export-html-style-extra} (for more
9425 granular settings, like file-local settings).  To set the latter variable
9426 individually for each file, you can use
9428 @cindex #+STYLE
9429 @example
9430 #+STYLE: <link rel="stylesheet" type="text/css" href="stylesheet.css" />
9431 @end example
9433 @noindent
9434 For longer style definitions, you can use several such lines.  You could also
9435 directly write a @code{<style>} @code{</style>} section in this way, without
9436 referring to an external file.
9438 @c FIXME: More about header and footer styles
9439 @c FIXME: Talk about links and targets.
9441 @node Javascript support,  , CSS support, HTML export
9442 @subsection Javascript supported display of web pages
9444 @cindex Rose, Sebastian
9445 Sebastian Rose has written a JavaScript program especially designed to
9446 enhance the web viewing experience of HTML files created with Org.  This
9447 program allows you to view large files in two different ways.  The first one
9448 is an @emph{Info}-like mode where each section is displayed separately and
9449 navigation can be done with the @kbd{n} and @kbd{p} keys (and some other keys
9450 as well, press @kbd{?} for an overview of the available keys).  The second
9451 view type is a @emph{folding} view much like Org provides inside Emacs.  The
9452 script is available at @url{http://orgmode.org/org-info.js} and you can find
9453 the documentation for it at @url{http://orgmode.org/worg/code/org-info-js/}.
9454 We host the script at our site, but if you use it a lot, you might
9455 not want to be dependent on @url{orgmode.org} and prefer to install a local
9456 copy on your own web server.
9458 To use the script, you need to make sure that the @file{org-jsinfo.el} module
9459 gets loaded.  It should be loaded by default, but you can try @kbd{M-x
9460 customize-variable @key{RET} org-modules @key{RET}} to convince yourself that
9461 this is indeed the case.  All it then takes to make use of the program is
9462 adding a single line to the Org file:
9464 @cindex #+INFOJS_OPT
9465 @example
9466 #+INFOJS_OPT: view:info toc:nil
9467 @end example
9469 @noindent
9470 If this line is found, the HTML header will automatically contain the code
9471 needed to invoke the script.  Using the line above, you can set the following
9472 viewing options:
9474 @example
9475 path:    @r{The path to the script.  The default is to grab the script from}
9476          @r{@url{http://orgmode.org/org-info.js}, but you might want to have}
9477          @r{a local copy and use a path like @samp{../scripts/org-info.js}.}
9478 view:    @r{Initial view when website is first shown.  Possible values are:}
9479          info      @r{Info-like interface with one section per page.}
9480          overview  @r{Folding interface, initially showing only top-level.}
9481          content   @r{Folding interface, starting with all headlines visible.}
9482          showall   @r{Folding interface, all headlines and text visible.}
9483 sdepth:  @r{Maximum headline level that will still become an independent}
9484          @r{section for info and folding modes.  The default is taken from}
9485          @r{@code{org-export-headline-levels} (= the @code{H} switch in @code{#+OPTIONS}).}
9486          @r{If this is smaller than in @code{org-export-headline-levels}, each}
9487          @r{info/folding section can still contain child headlines.}
9488 toc:     @r{Should the table of content @emph{initially} be visible?}
9489          @r{Even when @code{nil}, you can always get to the "toc" with @kbd{i}.}
9490 tdepth:  @r{The depth of the table of contents.  The defaults are taken from}
9491          @r{the variables @code{org-export-headline-levels} and @code{org-export-with-toc}.}
9492 ftoc:    @r{Does the css of the page specify a fixed position for the "toc"?}
9493          @r{If yes, the toc will never be displayed as a section.}
9494 ltoc:    @r{Should there be short contents (children) in each section?}
9495          @r{Make this @code{above} if the section should be above initial text.}
9496 mouse:   @r{Headings are highlighted when the mouse is over them.  Should be}
9497          @r{@samp{underline} (default) or a background color like @samp{#cccccc}.}
9498 buttons: @r{Should view-toggle buttons be everywhere?  When @code{nil} (the}
9499          @r{default), only one such button will be present.}
9500 @end example
9501 @noindent
9502 @vindex org-infojs-options
9503 @vindex org-export-html-use-infojs
9504 You can choose default values for these options by customizing the variable
9505 @code{org-infojs-options}.  If you always want to apply the script to your
9506 pages, configure the variable @code{org-export-html-use-infojs}.
9508 @node LaTeX and PDF export, DocBook export, HTML export, Exporting
9509 @section La@TeX{} and PDF export
9510 @cindex La@TeX{} export
9511 @cindex PDF export
9512 @cindex Guerry, Bastien
9514 Org mode contains a La@TeX{} exporter written by Bastien Guerry.  With
9515 further processing@footnote{The default LaTeX output is designed for
9516 processing with pdftex or latex.  It includes packages that are not
9517 compatible with xetex and possibly luatex.  See the variables
9518 @code{org-export-latex-default-packages-alist} and
9519 @code{org-export-latex-packages-alist}.}, this backend is also used to
9520 produce PDF output.  Since the La@TeX{} output uses @file{hyperref} to
9521 implement links and cross references, the PDF output file will be fully
9522 linked.
9524 @menu
9525 * LaTeX/PDF export commands::   Which key invokes which commands
9526 * Header and sectioning::       Setting up the export file structure
9527 * Quoting LaTeX code::          Incorporating literal La@TeX{} code
9528 * Tables in LaTeX export::      Options for exporting tables to La@TeX{}
9529 * Images in LaTeX export::      How to insert figures into La@TeX{} output
9530 * Beamer class export::         Turning the file into a presentation
9531 @end menu
9533 @node LaTeX/PDF export commands, Header and sectioning, LaTeX and PDF export, LaTeX and PDF export
9534 @subsection La@TeX{} export commands
9536 @cindex region, active
9537 @cindex active region
9538 @cindex transient-mark-mode
9539 @table @kbd
9540 @kindex C-c C-e l
9541 @item C-c C-e l
9542 @cindex property EXPORT_FILE_NAME
9543 Export as La@TeX{} file @file{myfile.tex}.  For an Org file
9544 @file{myfile.org}, the ASCII file will be @file{myfile.tex}.  The file will
9545 be overwritten without warning.  If there is an active region@footnote{This
9546 requires @code{transient-mark-mode} be turned on.}, only the region will be
9547 exported. If the selected region is a single tree@footnote{To select the
9548 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
9549 title.  If the tree head entry has or inherits an @code{EXPORT_FILE_NAME}
9550 property, that name will be used for the export.
9551 @kindex C-c C-e L
9552 @item C-c C-e L
9553 Export to a temporary buffer, do not create a file.
9554 @kindex C-c C-e v l
9555 @kindex C-c C-e v L
9556 @item C-c C-e v l
9557 @item C-c C-e v L
9558 Export only the visible part of the document.
9559 @item M-x org-export-region-as-latex
9560 Convert the region to La@TeX{} under the assumption that it was Org mode
9561 syntax before.  This is a global command that can be invoked in any
9562 buffer.
9563 @item M-x org-replace-region-by-latex
9564 Replace the active region (assumed to be in Org mode syntax) by La@TeX{}
9565 code.
9566 @kindex C-c C-e p
9567 @item C-c C-e p
9568 Export as La@TeX{} and then process to PDF.
9569 @kindex C-c C-e d
9570 @item C-c C-e d
9571 Export as La@TeX{} and then process to PDF, then open the resulting PDF file.
9572 @end table
9574 @cindex headline levels, for exporting
9575 @vindex org-latex-low-levels
9576 In the exported version, the first 3 outline levels will become
9577 headlines, defining a general document structure.  Additional levels
9578 will be exported as description lists.  The exporter can ignore them or
9579 convert them to a custom string depending on
9580 @code{org-latex-low-levels}.
9582 If you want that transition to occur at a different level, specify it
9583 with a numeric prefix argument. For example,
9585 @example
9586 @kbd{C-2 C-c C-e l}
9587 @end example
9589 @noindent
9590 creates two levels of headings and does the rest as items.
9592 @node Header and sectioning, Quoting LaTeX code, LaTeX/PDF export commands, LaTeX and PDF export
9593 @subsection Header and sectioning structure
9594 @cindex La@TeX{} class
9595 @cindex La@TeX{} sectioning structure
9596 @cindex La@TeX{} header
9597 @cindex header, for LaTeX files
9598 @cindex sectioning structure, for LaTeX export
9600 By default, the La@TeX{} output uses the class @code{article}.
9602 @vindex org-export-latex-default-class
9603 @vindex org-export-latex-classes
9604 @vindex org-export-latex-default-packages-alist
9605 @vindex org-export-latex-packages-alist
9606 @cindex #+LATEX_HEADER
9607 @cindex #+LATEX_CLASS
9608 @cindex #+LATEX_CLASS_OPTIONS
9609 @cindex property, LATEX_CLASS
9610 @cindex property, LATEX_CLASS_OPTIONS
9611 You can change this globally by setting a different value for
9612 @code{org-export-latex-default-class} or locally by adding an option like
9613 @code{#+LaTeX_CLASS: myclass} in your file, or with a @code{:LaTeX_CLASS:}
9614 property that applies when exporting a region containing only this (sub)tree.
9615 The class must be listed in @code{org-export-latex-classes}.  This variable
9616 defines a header template for each class@footnote{Into which the values of
9617 @code{org-export-latex-default-packages-alist} and
9618 @code{org-export-latex-packages-alist} are spliced.}, and allows you to
9619 define the sectioning structure for each class.  You can also define your own
9620 classes there.  @code{#+LaTeX_CLASS_OPTIONS} or a @code{LaTeX_CLASS_OPTIONS}
9621 property can specify the options for the @code{\documentclass} macro.  You
9622 can also use @code{#+LATEX_HEADER: \usepackage@{xyz@}} to add lines to the
9623 header.  See the docstring of @code{org-export-latex-classes} for more
9624 information.
9626 @node Quoting LaTeX code, Tables in LaTeX export, Header and sectioning, LaTeX and PDF export
9627 @subsection Quoting La@TeX{} code
9629 Embedded La@TeX{} as described in @ref{Embedded LaTeX}, will be correctly
9630 inserted into the La@TeX{} file.  This includes simple macros like
9631 @samp{\ref@{LABEL@}} to create a cross reference to a figure.  Furthermore,
9632 you can add special code that should only be present in La@TeX{} export with
9633 the following constructs:
9635 @cindex #+LaTeX
9636 @cindex #+BEGIN_LaTeX
9637 @example
9638 #+LaTeX: Literal LaTeX code for export
9639 @end example
9641 @noindent or
9642 @cindex #+BEGIN_LaTeX
9644 @example
9645 #+BEGIN_LaTeX
9646 All lines between these markers are exported literally
9647 #+END_LaTeX
9648 @end example
9651 @node Tables in LaTeX export, Images in LaTeX export, Quoting LaTeX code, LaTeX and PDF export
9652 @subsection Tables in La@TeX{} export
9653 @cindex tables, in La@TeX{} export
9655 For La@TeX{} export of a table, you can specify a label and a caption
9656 (@pxref{Images and tables}).  You can also use the @code{ATTR_LaTeX} line to
9657 request a longtable environment for the table, so that it may span several
9658 pages.  Finally, you can set the alignment string:
9660 @cindex #+CAPTION
9661 @cindex #+LABEL
9662 @cindex #+ATTR_LaTeX
9663 @example
9664 #+CAPTION: A long table
9665 #+LABEL: tbl:long
9666 #+ATTR_LaTeX: longtable align=l|lp@{3cm@}r|l
9667 | ..... | ..... |
9668 | ..... | ..... |
9669 @end example
9672 @node Images in LaTeX export, Beamer class export, Tables in LaTeX export, LaTeX and PDF export
9673 @subsection Images in La@TeX{} export
9674 @cindex images, inline in La@TeX{}
9675 @cindex inlining images in La@TeX{}
9677 Images that are linked to without a description part in the link, like
9678 @samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]} will be inserted into the PDF
9679 output file resulting from La@TeX{} processing.  Org will use an
9680 @code{\includegraphics} macro to insert the image.  If you have specified a
9681 caption and/or a label as described in @ref{Images and tables}, the figure
9682 will be wrapped into a @code{figure} environment and thus become a floating
9683 element.  You can use an @code{#+ATTR_LaTeX:} line to specify the various
9684 options that can be used in the optional argument of the
9685 @code{\includegraphics} macro.  To modify the placement option of the
9686 @code{figure} environment, add something like @samp{placement=[h!]} to the
9687 Attributes.
9689 If you'd like to let text flow around the image, add the word @samp{wrap} to
9690 the @code{#+ATTR_LaTeX:} line, which will make the figure occupy the left
9691 half of the page.  To fine-tune, the @code{placement} field will be the
9692 set of additional arguments needed by the @code{wrapfigure} environment.
9693 Note that if you change the size of the image, you need to use compatible
9694 settings for @code{\includegraphics} and @code{wrapfigure}.
9696 @cindex #+CAPTION
9697 @cindex #+LABEL
9698 @cindex #+ATTR_LaTeX
9699 @example
9700 #+CAPTION:    The black-body emission of the disk around HR 4049
9701 #+LABEL:      fig:SED-HR4049
9702 #+ATTR_LaTeX: width=5cm,angle=90
9703 [[./img/sed-hr4049.pdf]]
9705 #+ATTR_LaTeX: width=0.38\textwidth wrap placement=@{r@}@{0.4\textwidth@}
9706 [[./img/hst.png]]
9707 @end example
9709 If you need references to a label created in this way, write
9710 @samp{\ref@{fig:SED-HR4049@}} just like in La@TeX{}.
9712 @node Beamer class export,  , Images in LaTeX export, LaTeX and PDF export
9713 @subsection Beamer class export
9715 The LaTeX class @file{beamer} allows to produce high quality presentations
9716 using LaTeX and pdf processing.  Org-mode has special support for turning an
9717 Org-mode file or tree into a @file{beamer} presentation.
9719 When the LaTeX class for the current buffer (as set with @code{#+LaTeX_CLASS:
9720 beamer}) or subtree (set with a @code{LaTeX_CLASS} property) is
9721 @code{beamer}, a special export mode will turn the file or tree into a beamer
9722 presentation.  Any tree with not-to-deep level nesting should in principle be
9723 exportable as a beamer presentation.  By default, the top-level entries (or
9724 the first level below the selected subtree heading) will be turned into
9725 frames, and the outline structure below this level will become itemize lists.
9726 You can also configure the variable @code{org-beamer-frame-level} to a
9727 different level - then the hierarchy above frames will produce the sectioning
9728 structure of the presentation.
9730 A template for useful in-buffer settings or properties can be inserted into
9731 the buffer with @kbd{M-x org-beamer-settings-template}.  Among other things,
9732 this will install a column view format which is very handy for editing
9733 special properties used by beamer.
9735 You can influence the structure of the presentation using the following
9736 properties:
9738 @table @code
9739 @item BEAMER_env
9740 The environment that should be used to format this entry.  Valid environments
9741 are defined in the constant @code{org-beamer-environments-default}, and you
9742 can define more in @code{org-beamer-environments-extra}.  If this property is
9743 set, the entry will also get a @code{:B_environment:} tag to make this
9744 visible.  This tag has no semantic meaning, it is only a visual aid.
9745 @item BEAMER_envargs
9746 The beamer-special arguments that should be used for the environment, like
9747 @code{[t]} or @code{[<+->]} of @code{<2-3>}.  If the @code{BEAMER_col}
9748 property is also set, something like @code{C[t]} can be added here as well to
9749 set an options argument for the implied @code{columns} environment.
9750 @code{c[t]} will set an option for the implied @code{column} environment.
9751 @item BEAMER_col
9752 The width of a column that should start with this entry.  If this property is
9753 set, the entry will also get a @code{:BMCOL:} property to make this visible.
9754 Also this tag is only a visual aid.  When his is a plain number, it will be
9755 interpreted as a fraction of @code{\textwidth}.  Otherwise it will be assumed
9756 that you have specified the units, like @samp{3cm}.  The first such property
9757 in a frame will start a @code{columns} environment to surround the columns.
9758 This environment is closed when an entry has a @code{BEAMER_col} property
9759 with value 0 or 1, or automatically at the end of the frame.
9760 @item BEAMER_extra
9761 Additional commands that should be inserted after the environment has been
9762 opened.  For example, when creating a frame, this can be used to specify
9763 transitions.
9764 @end table
9766 Frames will automatically receive a @code{fragile} option if they contain
9767 source code that uses the verbatim environment.  Special @file{beamer}
9768 specific code can be inserted using @code{#+BEAMER:} and
9769 @code{#+BEGIN_beamer...#+end_beamer} constructs, similar to other export
9770 backends, but with the difference that @code{#+LaTeX:} stuff will be included
9771 in the presentation as well.
9773 Outline nodes with @code{BEAMER_env} property value @samp{note} or
9774 @samp{noteNH} will be formatted as beamer notes, i,e, they will be wrapped
9775 into @code{\note@{...@}}.  The former will include the heading as part of the
9776 note text, the latter will ignore the heading of that node.  To simplify note
9777 generation, it is actually enough to mark the note with a @emph{tag} (either
9778 @code{:B_note:} or @code{:B_noteNH:}) instead of creating the
9779 @code{BEAMER_env} property.
9781 You can turn on a special minor mode @code{org-beamer-mode} for editing
9782 support with
9784 @example
9785 #+STARTUP: beamer
9786 @end example
9788 @table @kbd
9789 @kindex C-c C-b
9790 @item C-c C-b
9791 In @code{org-beamer-mode}, this key offers fast selection of a beamer
9792 environment or the @code{BEAMER_col} property.
9793 @end table
9795 Column view provides a great way to set the environment of a node and other
9796 important parameters.  Make sure you are using a COLUMN format that is geared
9797 toward this special purpose.  The command @kbd{M-x
9798 org-beamer-settings-template} does define such a format.
9800 Here is a simple example Org document that is intended for beamer export.
9802 @smallexample
9803 #+LaTeX_CLASS: beamer
9804 #+TITLE: Example Presentation
9805 #+AUTHOR: Carsten Dominik
9806 #+LaTeX_CLASS_OPTIONS: [presentation]
9807 #+BEAMER_FRAME_LEVEL: 2
9808 #+BEAMER_HEADER_EXTRA: \usetheme@{Madrid@}\usecolortheme@{default@}
9809 #+COLUMNS: %35ITEM %10BEAMER_env(Env) %10BEAMER_envargs(Args) %4BEAMER_col(Col) %8BEAMER_extra(Ex)
9811 * This is the first structural section
9813 ** Frame 1 \\ with a subtitle
9814 *** Thanks to Eric Fraga                                      :BMCOL:B_block:
9815     :PROPERTIES:
9816     :BEAMER_env: block
9817     :BEAMER_envargs: C[t]
9818     :BEAMER_col: 0.5
9819     :END:
9820     for the first viable beamer setup in Org
9821 *** Thanks to everyone else                                   :BMCOL:B_block:
9822     :PROPERTIES:
9823     :BEAMER_col: 0.5
9824     :BEAMER_env: block
9825     :BEAMER_envargs: <2->
9826     :END:
9827     for contributing to the discussion
9828 **** This will be formatted as a beamer note                  :B_note:
9829 ** Frame 2 \\ where we will not use columns
9830 *** Request                                                   :B_block:
9831     Please test this stuff!
9832     :PROPERTIES:
9833     :BEAMER_env: block
9834     :END:
9835 @end smallexample
9837 For more information, see the documentation on Worg.
9839 @node DocBook export, Freemind export, LaTeX and PDF export, Exporting
9840 @section DocBook export
9841 @cindex DocBook export
9842 @cindex PDF export
9843 @cindex Cui, Baoqui
9845 Org contains a DocBook exporter written by Baoqiu Cui.  Once an Org file is
9846 exported to DocBook format, it can be further processed to produce other
9847 formats, including PDF, HTML, man pages, etc., using many available DocBook
9848 tools and stylesheets.
9850 Currently DocBook exporter only supports DocBook V5.0.
9852 @menu
9853 * DocBook export commands::     How to invoke DocBook export
9854 * Quoting DocBook code::        Incorporating DocBook code in Org files
9855 * Recursive sections::          Recursive sections in DocBook
9856 * Tables in DocBook export::    Tables are exported as HTML tables
9857 * Images in DocBook export::    How to insert figures into DocBook output
9858 * Special characters::          How to handle special characters
9859 @end menu
9861 @node DocBook export commands, Quoting DocBook code, DocBook export, DocBook export
9862 @subsection DocBook export commands
9864 @cindex region, active
9865 @cindex active region
9866 @cindex transient-mark-mode
9867 @table @kbd
9868 @kindex C-c C-e D
9869 @item C-c C-e D
9870 @cindex property EXPORT_FILE_NAME
9871 Export as DocBook file.  For an Org file, @file{myfile.org}, the DocBook XML
9872 file will be @file{myfile.xml}.  The file will be overwritten without
9873 warning.  If there is an active region@footnote{This requires
9874 @code{transient-mark-mode} to be turned on}, only the region will be
9875 exported.  If the selected region is a single tree@footnote{To select the
9876 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
9877 title.  If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
9878 property, that name will be used for the export.
9879 @kindex C-c C-e V
9880 @item C-c C-e V
9881 Export as DocBook file, process to PDF, then open the resulting PDF file.
9883 @vindex org-export-docbook-xslt-proc-command
9884 @vindex org-export-docbook-xsl-fo-proc-command
9885 Note that, in order to produce PDF output based on exported DocBook file, you
9886 need to have XSLT processor and XSL-FO processor software installed on your
9887 system.  Check variables @code{org-export-docbook-xslt-proc-command} and
9888 @code{org-export-docbook-xsl-fo-proc-command}.
9890 @kindex C-c C-e v D
9891 @item C-c C-e v D
9892 Export only the visible part of the document.
9893 @end table
9895 @node Quoting DocBook code, Recursive sections, DocBook export commands, DocBook export
9896 @subsection Quoting DocBook code
9898 You can quote DocBook code in Org files and copy it verbatim into exported
9899 DocBook file with the following constructs:
9901 @cindex #+DOCBOOK
9902 @cindex #+BEGIN_DOCBOOK
9903 @example
9904 #+DOCBOOK: Literal DocBook code for export
9905 @end example
9907 @noindent or
9908 @cindex #+BEGIN_DOCBOOK
9910 @example
9911 #+BEGIN_DOCBOOK
9912 All lines between these markers are exported by DocBook exporter
9913 literally.
9914 #+END_DOCBOOK
9915 @end example
9917 For example, you can use the following lines to include a DocBook warning
9918 admonition.  As to what this warning says, you should pay attention to the
9919 document context when quoting DocBook code in Org files.  You may make
9920 exported DocBook XML files invalid by not quoting DocBook code correctly.
9922 @example
9923 #+BEGIN_DOCBOOK
9924 <warning>
9925   <para>You should know what you are doing when quoting DocBook XML code
9926   in your Org file.  Invalid DocBook XML file may be generated by
9927   DocBook exporter if you are not careful!</para>
9928 </warning>
9929 #+END_DOCBOOK
9930 @end example
9932 @node Recursive sections, Tables in DocBook export, Quoting DocBook code, DocBook export
9933 @subsection Recursive sections
9934 @cindex DocBook recursive sections
9936 DocBook exporter exports Org files as articles using the @code{article}
9937 element in DocBook.  Recursive sections, i.e. @code{section} elements, are
9938 used in exported articles.  Top level headlines in Org files are exported as
9939 top level sections, and lower level headlines are exported as nested
9940 sections.  The entire structure of Org files will be exported completely, no
9941 matter how many nested levels of headlines there are.
9943 Using recursive sections makes it easy to port and reuse exported DocBook
9944 code in other DocBook document types like @code{book} or @code{set}.
9946 @node Tables in DocBook export, Images in DocBook export, Recursive sections, DocBook export
9947 @subsection Tables in DocBook export
9948 @cindex tables, in DocBook export
9950 Tables in Org files are exported as HTML tables, which have been supported since
9951 DocBook V4.3.
9953 If a table does not have a caption, an informal table is generated using the
9954 @code{informaltable} element; otherwise, a formal table will be generated
9955 using the @code{table} element.
9957 @node Images in DocBook export, Special characters, Tables in DocBook export, DocBook export
9958 @subsection Images in DocBook export
9959 @cindex images, inline in DocBook
9960 @cindex inlining images in DocBook
9962 Images that are linked to without a description part in the link, like
9963 @samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]}, will be exported to DocBook
9964 using @code{mediaobject} elements.  Each @code{mediaobject} element contains
9965 an @code{imageobject} that wraps an @code{imagedata} element.  If you have
9966 specified a caption for an image as described in @ref{Images and tables}, a
9967 @code{caption} element will be added in @code{mediaobject}.  If a label is
9968 also specified, it will be exported as an @code{xml:id} attribute of the
9969 @code{mediaobject} element.
9971 @vindex org-export-docbook-default-image-attributes
9972 Image attributes supported by the @code{imagedata} element, like @code{align}
9973 or @code{width}, can be specified in two ways: you can either customize
9974 variable @code{org-export-docbook-default-image-attributes} or use the
9975 @code{#+ATTR_DOCBOOK:} line.  Attributes specified in variable
9976 @code{org-export-docbook-default-image-attributes} are applied to all inline
9977 images in the Org file to be exported (unless they are overridden by image
9978 attributes specified in @code{#+ATTR_DOCBOOK:} lines).
9980 The @code{#+ATTR_DOCBOOK:} line can be used to specify additional image
9981 attributes or override default image attributes for individual images.  If
9982 the same attribute appears in both the @code{#+ATTR_DOCBOOK:} line and
9983 variable @code{org-export-docbook-default-image-attributes}, the former
9984 takes precedence.  Here is an example about how image attributes can be
9985 set:
9987 @cindex #+CAPTION
9988 @cindex #+LABEL
9989 @cindex #+ATTR_DOCBOOK
9990 @example
9991 #+CAPTION:    The logo of Org mode
9992 #+LABEL:      unicorn-svg
9993 #+ATTR_DOCBOOK: scalefit="1" width="100%" depth="100%"
9994 [[./img/org-mode-unicorn.svg]]
9995 @end example
9997 @vindex org-export-docbook-inline-image-extensions
9998 By default, DocBook exporter recognizes the following image file types:
9999 @file{jpeg}, @file{jpg}, @file{png}, @file{gif}, and @file{svg}.  You can
10000 customize variable @code{org-export-docbook-inline-image-extensions} to add
10001 more types to this list as long as DocBook supports them.
10003 @node Special characters,  , Images in DocBook export, DocBook export
10004 @subsection Special characters in DocBook export
10005 @cindex Special characters in DocBook export
10007 @vindex org-export-docbook-doctype
10008 @vindex org-html-entities
10009 Special characters that are written in @TeX{}-like syntax, such as @code{\alpha},
10010 @code{\Gamma}, and @code{\Zeta}, are supported by DocBook exporter.  These
10011 characters are rewritten to XML entities, like @code{&alpha;},
10012 @code{&Gamma;}, and @code{&Zeta;}, based on the list saved in variable
10013 @code{org-html-entities}.  As long as the generated DocBook file includes the
10014 corresponding entities, these special characters are recognized.
10016 You can customize variable @code{org-export-docbook-doctype} to include the
10017 entities you need.  For example, you can set variable
10018 @code{org-export-docbook-doctype} to the following value to recognize all
10019 special characters included in XHTML entities:
10021 @example
10022 "<!DOCTYPE article [
10023 <!ENTITY % xhtml1-symbol PUBLIC
10024 \"-//W3C//ENTITIES Symbol for HTML//EN//XML\"
10025 \"http://www.w3.org/2003/entities/2007/xhtml1-symbol.ent\"
10027 %xhtml1-symbol;
10030 @end example
10032 @node Freemind export, XOXO export, DocBook export, Exporting
10033 @section Freemind export
10034 @cindex Freemind export
10035 @cindex mind map
10037 The freemind exporter was written by Lennart Borgman.
10039 @table @kbd
10040 @kindex C-c C-e m
10041 @item C-c C-e m
10042 Export as Freemind mind map @file{myfile.mm}.
10043 @end table
10045 @node XOXO export, iCalendar export, Freemind export, Exporting
10046 @section XOXO export
10047 @cindex XOXO export
10049 Org mode contains an exporter that produces XOXO-style output.
10050 Currently, this exporter only handles the general outline structure and
10051 does not interpret any additional Org-mode features.
10053 @table @kbd
10054 @kindex C-c C-e x
10055 @item C-c C-e x
10056 Export as XOXO file @file{myfile.html}.
10057 @kindex C-c C-e v
10058 @item C-c C-e v x
10059 Export only the visible part of the document.
10060 @end table
10062 @node iCalendar export,  , XOXO export, Exporting
10063 @section iCalendar export
10064 @cindex iCalendar export
10066 @vindex org-icalendar-include-todo
10067 @vindex org-icalendar-use-deadline
10068 @vindex org-icalendar-use-scheduled
10069 @vindex org-icalendar-categories
10070 Some people use Org mode for keeping track of projects, but still prefer a
10071 standard calendar application for anniversaries and appointments.  In this
10072 case it can be useful to show deadlines and other time-stamped items in Org
10073 files in the calendar application.  Org mode can export calendar information
10074 in the standard iCalendar format.  If you also want to have TODO entries
10075 included in the export, configure the variable
10076 @code{org-icalendar-include-todo}.  Plain timestamps are exported as VEVENT,
10077 and TODO items as VTODO.  It will also create events from deadlines that are
10078 in non-TODO items.  Deadlines and scheduling dates in TODO items will be used
10079 to set the start and due dates for the TODO entry@footnote{See the variables
10080 @code{org-icalendar-use-deadline} and @code{org-icalendar-use-scheduled}.}.
10081 As categories, it will use the tags locally defined in the heading, and the
10082 file/tree category@footnote{To add inherited tags or the TODO state,
10083 configure the variable @code{org-icalendar-categories}.}.
10085 @vindex org-icalendar-store-UID
10086 @cindex property, ID
10087 The iCalendar standard requires each entry to have a globally unique
10088 identifier (UID).  Org creates these identifiers during export.  If you set
10089 the variable @code{org-icalendar-store-UID}, the UID will be stored in the
10090 @code{:ID:} property of the entry and re-used next time you report this
10091 entry.  Since a single entry can give rise to multiple iCalendar entries (as
10092 a timestamp, a deadline, a scheduled item, and as a TODO item), Org adds
10093 prefixes to the UID, depending on what triggered the inclusion of the entry.
10094 In this way the UID remains unique, but a synchronization program can still
10095 figure out from which entry all the different instances originate.
10097 @table @kbd
10098 @kindex C-c C-e i
10099 @item C-c C-e i
10100 Create iCalendar entries for the current file and store them in the same
10101 directory, using a file extension @file{.ics}.
10102 @kindex C-c C-e I
10103 @item C-c C-e I
10104 @vindex org-agenda-files
10105 Like @kbd{C-c C-e i}, but do this for all files in
10106 @code{org-agenda-files}.  For each of these files, a separate iCalendar
10107 file will be written.
10108 @kindex C-c C-e c
10109 @item C-c C-e c
10110 @vindex org-combined-agenda-icalendar-file
10111 Create a single large iCalendar file from all files in
10112 @code{org-agenda-files} and write it to the file given by
10113 @code{org-combined-agenda-icalendar-file}.
10114 @end table
10116 @vindex org-use-property-inheritance
10117 @vindex org-icalendar-include-body
10118 @cindex property, SUMMARY
10119 @cindex property, DESCRIPTION
10120 @cindex property, LOCATION
10121 The export will honor SUMMARY, DESCRIPTION and LOCATION@footnote{The LOCATION
10122 property can be inherited from higher in the hierarchy if you configure
10123 @code{org-use-property-inheritance} accordingly.} properties if the selected
10124 entries have them.  If not, the summary will be derived from the headline,
10125 and the description from the body (limited to
10126 @code{org-icalendar-include-body} characters).
10128 How this calendar is best read and updated, depends on the application
10129 you are using.  The FAQ covers this issue.
10131 @node Publishing, Miscellaneous, Exporting, Top
10132 @chapter Publishing
10133 @cindex publishing
10134 @cindex O'Toole, David
10136 Org includes a publishing management system that allows you to configure
10137 automatic HTML conversion of @emph{projects} composed of interlinked org
10138 files.  You can also configure Org to automatically upload your exported HTML
10139 pages and related attachments, such as images and source code files, to a web
10140 server.
10142 You can also use Org to convert files into PDF, or even combine HTML and PDF
10143 conversion so that files are available in both formats on the server.
10145 Publishing has been contributed to Org by David O'Toole.
10147 @menu
10148 * Configuration::               Defining projects
10149 * Uploading files::             How to get files up on the server
10150 * Sample configuration::        Example projects
10151 * Triggering publication::      Publication commands
10152 @end menu
10154 @node Configuration, Uploading files, Publishing, Publishing
10155 @section Configuration
10157 Publishing needs significant configuration to specify files, destination
10158 and many other properties of a project.
10160 @menu
10161 * Project alist::               The central configuration variable
10162 * Sources and destinations::    From here to there
10163 * Selecting files::             What files are part of the project?
10164 * Publishing action::           Setting the function doing the publishing
10165 * Publishing options::          Tweaking HTML export
10166 * Publishing links::            Which links keep working after publishing?
10167 * Sitemap::                     Generating a list of all pages
10168 * Generating an index::         An index that reaches across pages
10169 @end menu
10171 @node Project alist, Sources and destinations, Configuration, Configuration
10172 @subsection The variable @code{org-publish-project-alist}
10173 @cindex org-publish-project-alist
10174 @cindex projects, for publishing
10176 @vindex org-publish-project-alist
10177 Publishing is configured almost entirely through setting the value of one
10178 variable, called @code{org-publish-project-alist}.  Each element of the list
10179 configures one project, and may be in one of the two following forms:
10181 @lisp
10182    ("project-name" :property value :property value ...)
10183 @r{or}
10184    ("project-name" :components ("project-name" "project-name" ...))
10186 @end lisp
10188 In both cases, projects are configured by specifying property values.  A
10189 project defines the set of files that will be published, as well as the
10190 publishing configuration to use when publishing those files.  When a project
10191 takes the second form listed above, the individual members of the
10192 @code{:components} property are taken to be sub-projects, which group
10193 together files requiring different publishing options.  When you publish such
10194 a ``meta-project'', all the components will also be published, in the
10195 sequence given.
10197 @node Sources and destinations, Selecting files, Project alist, Configuration
10198 @subsection Sources and destinations for files
10199 @cindex directories, for publishing
10201 Most properties are optional, but some should always be set.  In
10202 particular, Org needs to know where to look for source files,
10203 and where to put published files.
10205 @multitable @columnfractions 0.3 0.7
10206 @item @code{:base-directory}
10207 @tab Directory containing publishing source files
10208 @item @code{:publishing-directory}
10209 @tab Directory where output files will be published.  You can directly
10210 publish to a webserver using a file name syntax appropriate for
10211 the Emacs @file{tramp} package.  Or you can publish to a local directory and
10212 use external tools to upload your website (@pxref{Uploading files}).
10213 @item @code{:preparation-function}
10214 @tab Function or list of functions to be called before starting the
10215 publishing process, for example, to run @code{make} for updating files to be
10216 published.  The project property list is scoped into this call as the
10217 variable @code{project-plist}.
10218 @item @code{:completion-function}
10219 @tab Function or list of functions called after finishing the publishing
10220 process, for example, to change permissions of the resulting files.  The
10221 project property list is scoped into this call as the variable
10222 @code{project-plist}.
10223 @end multitable
10224 @noindent
10226 @node Selecting files, Publishing action, Sources and destinations, Configuration
10227 @subsection Selecting files
10228 @cindex files, selecting for publishing
10230 By default, all files with extension @file{.org} in the base directory
10231 are considered part of the project.  This can be modified by setting the
10232 properties
10233 @multitable @columnfractions 0.25 0.75
10234 @item @code{:base-extension}
10235 @tab Extension (without the dot!) of source files.  This actually is a
10236 regular expression.  Set this to the symbol @code{any} if you want to get all
10237 files in @code{:base-directory}, even without extension.
10239 @item @code{:exclude}
10240 @tab Regular expression to match file names that should not be
10241 published, even though they have been selected on the basis of their
10242 extension.
10244 @item @code{:include}
10245 @tab List of files to be included regardless of @code{:base-extension}
10246 and @code{:exclude}.
10247 @end multitable
10249 @node Publishing action, Publishing options, Selecting files, Configuration
10250 @subsection Publishing action
10251 @cindex action, for publishing
10253 Publishing means that a file is copied to the destination directory and
10254 possibly transformed in the process.  The default transformation is to export
10255 Org files as HTML files, and this is done by the function
10256 @code{org-publish-org-to-html} which calls the HTML exporter (@pxref{HTML
10257 export}).  But you also can publish your content as PDF files using
10258 @code{org-publish-org-to-pdf}.  If you want to publish the Org file itself,
10259 but with @i{archived}, @i{commented}, and @i{tag-excluded} trees removed, use
10260 @code{org-publish-org-to-org} and set the parameters @code{:plain-source}
10261 and/or @code{:htmlized-source}.  This will produce @file{file.org} and
10262 @file{file.org.html} in the publishing
10263 directory@footnote{@file{file-source.org} and @file{file-source.org.html} if
10264 source and publishing directories are equal.  Note that with this kind of
10265 setup, you need to add @code{:exclude "-source\\.org"} to the project
10266 definition in @code{org-publish-project-alist} to avoid that the published
10267 source files will be considered as new org files the next time the project is
10268 published.}.  Other files like images only
10269 need to be copied to the publishing destination, for this you may use
10270 @code{org-publish-attachment}.  For non-Org files, you always need to
10271 specify the publishing function:
10273 @multitable @columnfractions 0.3 0.7
10274 @item @code{:publishing-function}
10275 @tab Function executing the publication of a file.  This may also be a
10276 list of functions, which will all be called in turn.
10277 @item @code{:plain-source}
10278 @tab Non-nil means, publish plain source.
10279 @item @code{:htmlized-source}
10280 @tab Non-nil means, publish htmlized source.
10281 @end multitable
10283 The function must accept three arguments: a property list containing at least
10284 a @code{:publishing-directory} property, the name of the file to be
10285 published, and the path to the publishing directory of the output file.  It
10286 should take the specified file, make the necessary transformation (if any)
10287 and place the result into the destination folder.
10289 @node Publishing options, Publishing links, Publishing action, Configuration
10290 @subsection Options for the HTML/La@TeX{} exporters
10291 @cindex options, for publishing
10293 The property list can be used to set many export options for the HTML
10294 and La@TeX{} exporters.  In most cases, these properties correspond to user
10295 variables in Org.  The table below lists these properties along
10296 with the variable they belong to.  See the documentation string for the
10297 respective variable for details.
10299 @vindex org-export-html-link-up
10300 @vindex org-export-html-link-home
10301 @vindex org-export-default-language
10302 @vindex org-display-custom-times
10303 @vindex org-export-headline-levels
10304 @vindex org-export-with-section-numbers
10305 @vindex org-export-section-number-format
10306 @vindex org-export-with-toc
10307 @vindex org-export-preserve-breaks
10308 @vindex org-export-with-archived-trees
10309 @vindex org-export-with-emphasize
10310 @vindex org-export-with-sub-superscripts
10311 @vindex org-export-with-special-strings
10312 @vindex org-export-with-footnotes
10313 @vindex org-export-with-drawers
10314 @vindex org-export-with-tags
10315 @vindex org-export-with-todo-keywords
10316 @vindex org-export-with-priority
10317 @vindex org-export-with-TeX-macros
10318 @vindex org-export-with-LaTeX-fragments
10319 @vindex org-export-skip-text-before-1st-heading
10320 @vindex org-export-with-fixed-width
10321 @vindex org-export-with-timestamps
10322 @vindex org-export-author-info
10323 @vindex org-export-email
10324 @vindex org-export-creator-info
10325 @vindex org-export-with-tables
10326 @vindex org-export-highlight-first-table-line
10327 @vindex org-export-html-style-include-default
10328 @vindex org-export-html-style
10329 @vindex org-export-html-style-extra
10330 @vindex org-export-html-link-org-files-as-html
10331 @vindex org-export-html-inline-images
10332 @vindex org-export-html-extension
10333 @vindex org-export-html-table-tag
10334 @vindex org-export-html-expand
10335 @vindex org-export-html-with-timestamp
10336 @vindex org-export-publishing-directory
10337 @vindex org-export-html-preamble
10338 @vindex org-export-html-postamble
10339 @vindex org-export-html-auto-preamble
10340 @vindex org-export-html-auto-postamble
10341 @vindex user-full-name
10342 @vindex user-mail-address
10343 @vindex org-export-select-tags
10344 @vindex org-export-exclude-tags
10346 @multitable @columnfractions 0.32 0.68
10347 @item @code{:link-up}               @tab @code{org-export-html-link-up}
10348 @item @code{:link-home}             @tab @code{org-export-html-link-home}
10349 @item @code{:language}              @tab @code{org-export-default-language}
10350 @item @code{:customtime}            @tab @code{org-display-custom-times}
10351 @item @code{:headline-levels}       @tab @code{org-export-headline-levels}
10352 @item @code{:section-numbers}       @tab @code{org-export-with-section-numbers}
10353 @item @code{:section-number-format} @tab @code{org-export-section-number-format}
10354 @item @code{:table-of-contents}     @tab @code{org-export-with-toc}
10355 @item @code{:preserve-breaks}       @tab @code{org-export-preserve-breaks}
10356 @item @code{:archived-trees}        @tab @code{org-export-with-archived-trees}
10357 @item @code{:emphasize}             @tab @code{org-export-with-emphasize}
10358 @item @code{:sub-superscript}       @tab @code{org-export-with-sub-superscripts}
10359 @item @code{:special-strings}       @tab @code{org-export-with-special-strings}
10360 @item @code{:footnotes}             @tab @code{org-export-with-footnotes}
10361 @item @code{:drawers}               @tab @code{org-export-with-drawers}
10362 @item @code{:tags}                  @tab @code{org-export-with-tags}
10363 @item @code{:todo-keywords}         @tab @code{org-export-with-todo-keywords}
10364 @item @code{:priority}              @tab @code{org-export-with-priority}
10365 @item @code{:TeX-macros}            @tab @code{org-export-with-TeX-macros}
10366 @item @code{:LaTeX-fragments}       @tab @code{org-export-with-LaTeX-fragments}
10367 @item @code{:latex-listings}        @tab @code{org-export-latex-listings}
10368 @item @code{:skip-before-1st-heading} @tab @code{org-export-skip-text-before-1st-heading}
10369 @item @code{:fixed-width}           @tab @code{org-export-with-fixed-width}
10370 @item @code{:timestamps}            @tab @code{org-export-with-timestamps}
10371 @item @code{:author-info}           @tab @code{org-export-author-info}
10372 @item @code{:email-info}            @tab @code{org-export-email-info}
10373 @item @code{:creator-info}          @tab @code{org-export-creator-info}
10374 @item @code{:tables}                @tab @code{org-export-with-tables}
10375 @item @code{:table-auto-headline}   @tab @code{org-export-highlight-first-table-line}
10376 @item @code{:style-include-default} @tab @code{org-export-html-style-include-default}
10377 @item @code{:style}                 @tab @code{org-export-html-style}
10378 @item @code{:style-extra}           @tab @code{org-export-html-style-extra}
10379 @item @code{:convert-org-links}     @tab @code{org-export-html-link-org-files-as-html}
10380 @item @code{:inline-images}         @tab @code{org-export-html-inline-images}
10381 @item @code{:html-extension}        @tab @code{org-export-html-extension}
10382 @item @code{:xml-declaration}       @tab @code{org-export-html-xml-declaration}
10383 @item @code{:html-table-tag}        @tab @code{org-export-html-table-tag}
10384 @item @code{:expand-quoted-html}    @tab @code{org-export-html-expand}
10385 @item @code{:timestamp}             @tab @code{org-export-html-with-timestamp}
10386 @item @code{:publishing-directory}  @tab @code{org-export-publishing-directory}
10387 @item @code{:preamble}              @tab @code{org-export-html-preamble}
10388 @item @code{:postamble}             @tab @code{org-export-html-postamble}
10389 @item @code{:auto-preamble}         @tab @code{org-export-html-auto-preamble}
10390 @item @code{:auto-postamble}        @tab @code{org-export-html-auto-postamble}
10391 @item @code{:author}                @tab @code{user-full-name}
10392 @item @code{:email}                 @tab @code{user-mail-address} : @code{addr;addr;..}
10393 @item @code{:select-tags}           @tab @code{org-export-select-tags}
10394 @item @code{:exclude-tags}          @tab @code{org-export-exclude-tags}
10395 @item @code{:latex-image-options}   @tab @code{org-export-latex-image-default-option}
10396 @end multitable
10398 Most of the @code{org-export-with-*} variables have the same effect in
10399 both HTML and La@TeX{} exporters, except for @code{:TeX-macros} and
10400 @code{:LaTeX-fragments}, respectively @code{nil} and @code{t} in the
10401 La@TeX{} export.
10403 @vindex org-publish-project-alist
10404 When a property is given a value in @code{org-publish-project-alist},
10405 its setting overrides the value of the corresponding user variable (if
10406 any) during publishing.  Options set within a file (@pxref{Export
10407 options}), however, override everything.
10409 @node Publishing links, Sitemap, Publishing options, Configuration
10410 @subsection Links between published files
10411 @cindex links, publishing
10413 To create a link from one Org file to another, you would use
10414 something like @samp{[[file:foo.org][The foo]]} or simply
10415 @samp{file:foo.org.} (@pxref{Hyperlinks}).  When published, this link
10416 becomes a link to @file{foo.html}.  In this way, you can interlink the
10417 pages of your "org web" project and the links will work as expected when
10418 you publish them to HTML.  If you also publish the Org source file and want
10419 to link to that, use an @code{http:} link instead of a @code{file:} link,
10420 because @code{file:} links are converted to link to the corresponding
10421 @file{html} file.
10423 You may also link to related files, such as images. Provided you are careful
10424 with relative file names, and provided you have also configured Org to upload
10425 the related files, these links will work too. See @ref{Complex example}, for
10426 an example of this usage.
10428 Sometimes an Org file to be published may contain links that are
10429 only valid in your production environment, but not in the publishing
10430 location.  In this case, use the property
10432 @multitable @columnfractions 0.4 0.6
10433 @item @code{:link-validation-function}
10434 @tab Function to validate links
10435 @end multitable
10437 @noindent
10438 to define a function for checking link validity.  This function must
10439 accept two arguments, the file name and a directory relative to which
10440 the file name is interpreted in the production environment.  If this
10441 function returns @code{nil}, then the HTML generator will only insert a
10442 description into the HTML file, but no link.  One option for this
10443 function is @code{org-publish-validate-link} which checks if the given
10444 file is part of any project in @code{org-publish-project-alist}.
10446 @node Sitemap, Generating an index, Publishing links, Configuration
10447 @subsection Generating a sitemap
10448 @cindex sitemap, of published pages
10450 The following properties may be used to control publishing of 
10451 a map of files for a given project.
10453 @multitable @columnfractions 0.35 0.65
10454 @item @code{:auto-sitemap}
10455 @tab When non-nil, publish a sitemap during @code{org-publish-current-project}
10456 or @code{org-publish-all}.
10458 @item @code{:sitemap-filename}
10459 @tab Filename for output of sitemap. Defaults to @file{sitemap.org} (which
10460 becomes @file{sitemap.html}).
10462 @item @code{:sitemap-title}
10463 @tab Title of sitemap page. Defaults to name of file.
10465 @item @code{:sitemap-function}
10466 @tab Plug-in function to use for generation of the sitemap.
10467 Defaults to @code{org-publish-org-sitemap}, which generates a plain list
10468 of links to all files in the project.
10470 @item @code{:sitemap-sort-folders}
10471 @tab Where folders should appear in the sitemap.  Set this to @code{first}
10472 (default) or @code{last} to display folders first or last,
10473 respectively.  Any other value will mix files and folders.
10475 @item @code{:sitemap-alphabetically}
10476 @tab The site map is normally sorted alphabetically.  Set this explicitly to
10477 @code{nil} to turn off sorting.
10479 @item @code{:sitemap-ignore-case}
10480 @tab Should sorting be case-sensitive?  Default @code{nil}.
10482 @end multitable
10484 @node Generating an index,  , Sitemap, Configuration
10485 @subsection Generating an index
10486 @cindex index, in a publishing project
10488 Org-mode can generate an index across the files of a publishing project.
10490 @multitable @columnfractions 0.25 0.75
10491 @item @code{:makeindex}
10492 @tab When non-nil, generate in index in the file @file{theindex.org} and
10493 publish it as @file{theindex.html}.
10494 @end multitable
10496 The file will be create when first publishing a project with the
10497 @code{:makeindex} set.  The file only contains a statement @code{#+include:
10498 "theindex.inc"}.  You can then built around this include statement by adding
10499 a title, style information etc.
10501 @node Uploading files, Sample configuration, Configuration, Publishing
10502 @section Uploading files
10503 @cindex rsync
10504 @cindex unison
10506 For those people already utilizing third party sync tools such as
10507 @command{rsync} or @command{unison}, it might be preferable not to use the built in
10508 @i{remote} publishing facilities of Org mode which rely heavily on
10509 Tramp.  Tramp, while very useful and powerful, tends not to be
10510 so efficient for multiple file transfer and has been known to cause problems
10511 under heavy usage.
10513 Specialized synchronization utilities offer several advantages.  In addition
10514 to timestamp comparison, they also do content and permissions/attribute
10515 checks.  For this reason you might prefer to publish your web to a local
10516 directory (possibly even @i{in place} with your Org files) and then use
10517 @file{unison} or @file{rsync} to do the synchronization with the remote host.
10519 Since Unison (for example) can be configured as to which files to transfer to
10520 a certain remote destination, it can greatly simplify the project publishing
10521 definition.  Simply keep all files in the correct location, process your Org
10522 files with @code{org-publish} and let the synchronization tool do the rest.
10523 You do not need, in this scenario, to include attachments such as @file{jpg},
10524 @file{css} or @file{gif} files in the project definition since the 3rd party
10525 tool syncs them.
10527 Publishing to a local directory is also much faster than to a remote one, so
10528 that you can afford more easily to republish entire projects.  If you set
10529 @code{org-publish-use-timestamps-flag} to @code{nil}, you gain the main
10530 benefit of re-including any changed external files such as source example
10531 files you might include with @code{#+INCLUDE}.  The timestamp mechanism in
10532 Org is not smart enough to detect if included files have been modified.
10534 @node Sample configuration, Triggering publication, Uploading files, Publishing
10535 @section Sample configuration
10537 Below we provide two example configurations.  The first one is a simple
10538 project publishing only a set of Org files.  The second example is
10539 more complex, with a multi-component project.
10541 @menu
10542 * Simple example::              One-component publishing
10543 * Complex example::             A multi-component publishing example
10544 @end menu
10546 @node Simple example, Complex example, Sample configuration, Sample configuration
10547 @subsection Example: simple publishing configuration
10549 This example publishes a set of Org files to the @file{public_html}
10550 directory on the local machine.
10552 @lisp
10553 (setq org-publish-project-alist
10554       '(("org"
10555          :base-directory "~/org/"
10556          :publishing-directory "~/public_html"
10557          :section-numbers nil
10558          :table-of-contents nil
10559          :style "<link rel=\"stylesheet\"
10560                 href=\"../other/mystyle.css\"
10561                 type=\"text/css\"/>")))
10562 @end lisp
10564 @node Complex example,  , Simple example, Sample configuration
10565 @subsection Example: complex publishing configuration
10567 This more complicated example publishes an entire website, including
10568 Org files converted to HTML, image files, Emacs Lisp source code, and
10569 style sheets. The publishing directory is remote and private files are
10570 excluded.
10572 To ensure that links are preserved, care should be taken to replicate
10573 your directory structure on the web server, and to use relative file
10574 paths. For example, if your Org files are kept in @file{~/org} and your
10575 publishable images in @file{~/images}, you'd link to an image with
10577 @example
10578 file:../images/myimage.png
10579 @end example
10581 On the web server, the relative path to the image should be the
10582 same. You can accomplish this by setting up an "images" folder in the
10583 right place on the web server, and publishing images to it.
10585 @lisp
10586 (setq org-publish-project-alist
10587       '(("orgfiles"
10588           :base-directory "~/org/"
10589           :base-extension "org"
10590           :publishing-directory "/ssh:user@@host:~/html/notebook/"
10591           :publishing-function org-publish-org-to-html
10592           :exclude "PrivatePage.org"   ;; regexp
10593           :headline-levels 3
10594           :section-numbers nil
10595           :table-of-contents nil
10596           :style "<link rel=\"stylesheet\"
10597                   href=\"../other/mystyle.css\" type=\"text/css\"/>"
10598           :auto-preamble t
10599           :auto-postamble nil)
10601          ("images"
10602           :base-directory "~/images/"
10603           :base-extension "jpg\\|gif\\|png"
10604           :publishing-directory "/ssh:user@@host:~/html/images/"
10605           :publishing-function org-publish-attachment)
10607          ("other"
10608           :base-directory "~/other/"
10609           :base-extension "css\\|el"
10610           :publishing-directory "/ssh:user@@host:~/html/other/"
10611           :publishing-function org-publish-attachment)
10612          ("website" :components ("orgfiles" "images" "other"))))
10613 @end lisp
10615 @node Triggering publication,  , Sample configuration, Publishing
10616 @section Triggering publication
10618 Once properly configured, Org can publish with the following commands:
10620 @table @kbd
10621 @kindex C-c C-e C
10622 @item C-c C-e C
10623 Prompt for a specific project and publish all files that belong to it.
10624 @kindex C-c C-e P
10625 @item C-c C-e P
10626 Publish the project containing the current file.
10627 @kindex C-c C-e F
10628 @item C-c C-e F
10629 Publish only the current file.
10630 @kindex C-c C-e E
10631 @item C-c C-e E
10632 Publish every project.
10633 @end table
10635 @vindex org-publish-use-timestamps-flag
10636 Org uses timestamps to track when a file has changed. The above functions
10637 normally only publish changed files. You can override this and force
10638 publishing of all files by giving a prefix argument to any of the commands
10639 above, or by customizing the variable @code{org-publish-use-timestamps-flag}.
10640 This may be necessary in particular if files include other files via
10641 @code{#+SETUPFILE:} or @code{#+INCLUDE:}.
10643 @node Miscellaneous, Hacking, Publishing, Top
10644 @chapter Miscellaneous
10646 @menu
10647 * Completion::                  M-TAB knows what you need
10648 * Speed keys::                  Electic commands at the beginning of a headline
10649 * Customization::               Adapting Org to your taste
10650 * In-buffer settings::          Overview of the #+KEYWORDS
10651 * The very busy C-c C-c key::   When in doubt, press C-c C-c
10652 * Clean view::                  Getting rid of leading stars in the outline
10653 * TTY keys::                    Using Org on a tty
10654 * Interaction::                 Other Emacs packages
10655 @end menu
10658 @node Completion, Speed keys, Miscellaneous, Miscellaneous
10659 @section Completion
10660 @cindex completion, of @TeX{} symbols
10661 @cindex completion, of TODO keywords
10662 @cindex completion, of dictionary words
10663 @cindex completion, of option keywords
10664 @cindex completion, of tags
10665 @cindex completion, of property keys
10666 @cindex completion, of link abbreviations
10667 @cindex @TeX{} symbol completion
10668 @cindex TODO keywords completion
10669 @cindex dictionary word completion
10670 @cindex option keyword completion
10671 @cindex tag completion
10672 @cindex link abbreviations, completion of
10674 Emacs would not be Emacs without completion, and Org-mode uses it whenever it
10675 makes sense.  If you prefer an @i{iswitchb}- or @i{ido}-like interface for
10676 some of the completion prompts, you can specify your preference by setting at
10677 most one of the variables @code{org-completion-use-iswitchb}
10678 @code{org-completion-use-ido}.
10680 Org supports in-buffer completion.  This type of completion does
10681 not make use of the minibuffer.  You simply type a few letters into
10682 the buffer and use the key to complete text right there.
10684 @table @kbd
10685 @kindex M-@key{TAB}
10686 @item M-@key{TAB}
10687 Complete word at point
10688 @itemize @bullet
10689 @item
10690 At the beginning of a headline, complete TODO keywords.
10691 @item
10692 After @samp{\}, complete @TeX{} symbols supported by the exporter.
10693 @item
10694 After @samp{*}, complete headlines in the current buffer so that they
10695 can be used in search links like @samp{[[*find this headline]]}.
10696 @item
10697 After @samp{:} in a headline, complete tags.  The list of tags is taken
10698 from the variable @code{org-tag-alist} (possibly set through the
10699 @samp{#+TAGS} in-buffer option, @pxref{Setting tags}), or it is created
10700 dynamically from all tags used in the current buffer.
10701 @item
10702 After @samp{:} and not in a headline, complete property keys.  The list
10703 of keys is constructed dynamically from all keys used in the current
10704 buffer.
10705 @item
10706 After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
10707 @item
10708 After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
10709 @samp{OPTIONS} which set file-specific options for Org mode.  When the
10710 option keyword is already complete, pressing @kbd{M-@key{TAB}} again
10711 will insert example settings for this keyword.
10712 @item
10713 In the line after @samp{#+STARTUP: }, complete startup keywords,
10714 i.e. valid keys for this line.
10715 @item
10716 Elsewhere, complete dictionary words using Ispell.
10717 @end itemize
10718 @end table
10720 @node Speed keys, Customization, Completion, Miscellaneous
10721 @section Speed keys
10722 @cindex speed keys
10723 @vindex org-use-speed-commands
10724 @vindex org-speed-commands-user
10726 Single keys can be made to execute commands when the cursor is at the
10727 beginning of a headline, i.e. before the first star.  Configure the variable
10728 @code{org-use-speed-commands} to activate this feature.  There is a
10729 pre-defined list of commands, and you can add more such commands using the
10730 variable @code{org-speed-commands-user}.  Speed keys do not only speed up
10731 navigation and other commands, but they also provide an alternative way to
10732 execute commands bound to keys that are not or not easily available on a tty,
10733 or on a small mobile device with a limited keyboard.
10735 To see which commands are available, activate the feature and press @kbd{?}
10736 with the cursor at the beginning of a headline.
10738 @node Customization, In-buffer settings, Speed keys, Miscellaneous
10739 @section Customization
10740 @cindex customization
10741 @cindex options, for customization
10742 @cindex variables, for customization
10744 There are more than 180 variables that can be used to customize
10745 Org.  For the sake of compactness of the manual, I am not
10746 describing the variables here.  A structured overview of customization
10747 variables is available with @kbd{M-x org-customize}.  Or select
10748 @code{Browse Org Group} from the @code{Org->Customization} menu.  Many
10749 settings can also be activated on a per-file basis, by putting special
10750 lines into the buffer (@pxref{In-buffer settings}).
10752 @node In-buffer settings, The very busy C-c C-c key, Customization, Miscellaneous
10753 @section Summary of in-buffer settings
10754 @cindex in-buffer settings
10755 @cindex special keywords
10757 Org mode uses special lines in the buffer to define settings on a
10758 per-file basis.  These lines start with a @samp{#+} followed by a
10759 keyword, a colon, and then individual words defining a setting.  Several
10760 setting words can be in the same line, but you can also have multiple
10761 lines for the keyword.  While these settings are described throughout
10762 the manual, here is a summary.  After changing any of those lines in the
10763 buffer, press @kbd{C-c C-c} with the cursor still in the line to
10764 activate the changes immediately.  Otherwise they become effective only
10765 when the file is visited again in a new Emacs session.
10767 @vindex org-archive-location
10768 @table @kbd
10769 @item #+ARCHIVE: %s_done::
10770 This line sets the archive location for the agenda file.  It applies for
10771 all subsequent lines until the next @samp{#+ARCHIVE} line, or the end
10772 of the file.  The first such line also applies to any entries before it.
10773 The corresponding variable is @code{org-archive-location}.
10774 @item #+CATEGORY:
10775 This line sets the category for the agenda file.  The category applies
10776 for all subsequent lines until the next @samp{#+CATEGORY} line, or the
10777 end of the file.  The first such line also applies to any entries before it.
10778 @item #+COLUMNS: %25ITEM .....
10779 @cindex property, COLUMNS
10780 Set the default format for columns view.  This format applies when
10781 columns view is invoked in locations where no @code{COLUMNS} property
10782 applies.
10783 @item #+CONSTANTS: name1=value1 ...
10784 @vindex org-table-formula-constants
10785 @vindex org-table-formula
10786 Set file-local values for constants to be used in table formulas.  This
10787 line set the local variable @code{org-table-formula-constants-local}.
10788 The global version of this variable is
10789 @code{org-table-formula-constants}.
10790 @item #+FILETAGS: :tag1:tag2:tag3:
10791 Set tags that can be inherited by any entry in the file, including the
10792 top-level entries.
10793 @item #+DRAWERS: NAME1 .....
10794 @vindex org-drawers
10795 Set the file-local set of drawers.  The corresponding global variable is
10796 @code{org-drawers}.
10797 @item #+LINK:  linkword replace
10798 @vindex org-link-abbrev-alist
10799 These lines (several are allowed) specify link abbreviations.
10800 @xref{Link abbreviations}.  The corresponding variable is
10801 @code{org-link-abbrev-alist}.
10802 @item #+PRIORITIES: highest lowest default
10803 @vindex org-highest-priority
10804 @vindex org-lowest-priority
10805 @vindex org-default-priority
10806 This line sets the limits and the default for the priorities.  All three
10807 must be either letters A-Z or numbers 0-9.  The highest priority must
10808 have a lower ASCII number that the lowest priority.
10809 @item #+PROPERTY: Property_Name Value
10810 This line sets a default inheritance value for entries in the current
10811 buffer, most useful for specifying the allowed values of a property.
10812 @cindex #+SETUPFILE
10813 @item #+SETUPFILE: file
10814 This line defines a file that holds more in-buffer setup.  Normally this is
10815 entirely ignored.  Only when the buffer is parsed for option-setting lines
10816 (i.e. when starting Org mode for a file, when pressing @kbd{C-c C-c} in a
10817 settings line, or when exporting), then the contents of this file are parsed
10818 as if they had been included in the buffer.  In particular, the file can be
10819 any other Org mode file with internal setup.  You can visit the file the
10820 cursor is in the line with @kbd{C-c '}.
10821 @item #+STARTUP:
10822 @cindex #+STARTUP:
10823 This line sets options to be used at startup of Org mode, when an
10824 Org file is being visited.
10826 The first set of options deals with the initial visibility of the outline
10827 tree.  The corresponding variable for global default settings is
10828 @code{org-startup-folded}, with a default value @code{t}, which means
10829 @code{overview}.
10830 @vindex org-startup-folded
10831 @cindex @code{overview}, STARTUP keyword
10832 @cindex @code{content}, STARTUP keyword
10833 @cindex @code{showall}, STARTUP keyword
10834 @cindex @code{showeverything}, STARTUP keyword
10835 @example
10836 overview         @r{top-level headlines only}
10837 content          @r{all headlines}
10838 showall          @r{no folding of any entries}
10839 showeverything   @r{show even drawer contents}
10840 @end example
10842 @vindex org-startup-indented
10843 @cindex @code{indent}, STARTUP keyword
10844 @cindex @code{noindent}, STARTUP keyword
10845 Dynamic virtual indentation is controlled by the variable
10846 @code{org-startup-indented}@footnote{Emacs 23 and Org-mode 6.29 are required}
10847 @example
10848 indent     @r{start with @code{org-indent-mode} turned on}
10849 noindent   @r{start with @code{org-indent-mode} turned off}
10850 @end example
10852 @vindex org-startup-align-all-tables
10853 Then there are options for aligning tables upon visiting a file.  This
10854 is useful in files containing narrowed table columns.  The corresponding
10855 variable is @code{org-startup-align-all-tables}, with a default value
10856 @code{nil}.
10857 @cindex @code{align}, STARTUP keyword
10858 @cindex @code{noalign}, STARTUP keyword
10859 @example
10860 align      @r{align all tables}
10861 noalign    @r{don't align tables on startup}
10862 @end example
10863 @vindex org-log-done
10864 @vindex org-log-note-clock-out
10865 @vindex org-log-repeat
10866 Logging the closing and reopening of TODO items and clock intervals can be
10867 configured using these options (see variables @code{org-log-done},
10868 @code{org-log-note-clock-out} and @code{org-log-repeat})
10869 @cindex @code{logdone}, STARTUP keyword
10870 @cindex @code{lognotedone}, STARTUP keyword
10871 @cindex @code{nologdone}, STARTUP keyword
10872 @cindex @code{lognoteclock-out}, STARTUP keyword
10873 @cindex @code{nolognoteclock-out}, STARTUP keyword
10874 @cindex @code{logrepeat}, STARTUP keyword
10875 @cindex @code{lognoterepeat}, STARTUP keyword
10876 @cindex @code{nologrepeat}, STARTUP keyword
10877 @cindex @code{logreschedule}, STARTUP keyword
10878 @cindex @code{lognotereschedule}, STARTUP keyword
10879 @cindex @code{nologreschedule}, STARTUP keyword
10880 @cindex @code{logredeadline}, STARTUP keyword
10881 @cindex @code{lognoteredeadline}, STARTUP keyword
10882 @cindex @code{nologredeadline}, STARTUP keyword
10883 @cindex @code{logrefile}, STARTUP keyword
10884 @cindex @code{lognoterefile}, STARTUP keyword
10885 @cindex @code{nologrefile}, STARTUP keyword
10886 @example
10887 logdone            @r{record a timestamp when an item is marked DONE}
10888 lognotedone        @r{record timestamp and a note when DONE}
10889 nologdone          @r{don't record when items are marked DONE}
10890 logrepeat          @r{record a time when reinstating a repeating item}
10891 lognoterepeat      @r{record a note when reinstating a repeating item}
10892 nologrepeat        @r{do not record when reinstating repeating item}
10893 lognoteclock-out   @r{record a note when clocking out}
10894 nolognoteclock-out @r{don't record a note when clocking out}
10895 logreschedule      @r{record a timestamp when scheduling time changes}
10896 lognotereschedule  @r{record a note when scheduling time changes}
10897 nologreschedule    @r{do not record when a scheduling date changes}
10898 logredeadline      @r{record a timestamp when deadline changes}
10899 lognoteredeadline  @r{record a note when deadline changes}
10900 nologredeadline    @r{do not record when a deadline date changes}
10901 logrefile          @r{record a timestamp when refiling}
10902 lognoterefile      @r{record a note when refiling}
10903 nologrefile        @r{do not record when refiling}
10904 @end example
10905 @vindex org-hide-leading-stars
10906 @vindex org-odd-levels-only
10907 Here are the options for hiding leading stars in outline headings, and for
10908 indenting outlines.  The corresponding variables are
10909 @code{org-hide-leading-stars} and @code{org-odd-levels-only}, both with a
10910 default setting @code{nil} (meaning @code{showstars} and @code{oddeven}).
10911 @cindex @code{hidestars}, STARTUP keyword
10912 @cindex @code{showstars}, STARTUP keyword
10913 @cindex @code{odd}, STARTUP keyword
10914 @cindex @code{even}, STARTUP keyword
10915 @example
10916 hidestars  @r{make all but one of the stars starting a headline invisible.}
10917 showstars  @r{show all stars starting a headline}
10918 indent     @r{virtual indentation according to outline level}
10919 noindent   @r{no virtual indentation according to outline level}
10920 odd        @r{allow only odd outline levels (1,3,...)}
10921 oddeven    @r{allow all outline levels}
10922 @end example
10923 @vindex org-put-time-stamp-overlays
10924 @vindex org-time-stamp-overlay-formats
10925 To turn on custom format overlays over timestamps (variables
10926 @code{org-put-time-stamp-overlays} and
10927 @code{org-time-stamp-overlay-formats}), use
10928 @cindex @code{customtime}, STARTUP keyword
10929 @example
10930 customtime @r{overlay custom time format}
10931 @end example
10932 @vindex constants-unit-system
10933 The following options influence the table spreadsheet (variable
10934 @code{constants-unit-system}).
10935 @cindex @code{constcgs}, STARTUP keyword
10936 @cindex @code{constSI}, STARTUP keyword
10937 @example
10938 constcgs   @r{@file{constants.el} should use the c-g-s unit system}
10939 constSI    @r{@file{constants.el} should use the SI unit system}
10940 @end example
10941 @vindex org-footnote-define-inline
10942 @vindex org-footnote-auto-label
10943 @vindex org-footnote-auto-adjust
10944 To influence footnote settings, use the following keywords.  The
10945 corresponding variables are @code{org-footnote-define-inline},
10946 @code{org-footnote-auto-label}, and @code{org-footnote-auto-adjust}.
10947 @cindex @code{fninline}, STARTUP keyword
10948 @cindex @code{nofninline}, STARTUP keyword
10949 @cindex @code{fnlocal}, STARTUP keyword
10950 @cindex @code{fnprompt}, STARTUP keyword
10951 @cindex @code{fnauto}, STARTUP keyword
10952 @cindex @code{fnconfirm}, STARTUP keyword
10953 @cindex @code{fnplain}, STARTUP keyword
10954 @cindex @code{fnadjust}, STARTUP keyword
10955 @cindex @code{nofnadjust}, STARTUP keyword
10956 @example
10957 fninline    @r{define footnotes inline}
10958 fnnoinline  @r{define footnotes in separate section}
10959 fnlocal     @r{define footnotes near first reference, but not inline}
10960 fnprompt    @r{prompt for footnote labels}
10961 fnauto      @r{create [fn:1]-like labels automatically (default)}
10962 fnconfirm   @r{offer automatic label for editing or confirmation}
10963 fnplain     @r{create [1]-like labels automatically}
10964 fnadjust    @r{automatically renumber and sort footnotes}
10965 nofnadjust  @r{do not renumber and sort automatically}
10966 @end example
10967 @cindex org-hide-block-startup
10968 To hide blocks on startup, use these keywords. The corresponding variable is
10969 @code{org-hide-block-startup}.
10970 @cindex @code{hideblocks}, STARTUP keyword
10971 @cindex @code{nohideblocks}, STARTUP keyword
10972 @example
10973 hideblocks   @r{Hide all begin/end blocks on startup}
10974 nohideblocks @r{Do not hide blocks on startup}
10975 @end example
10976 @item #+TAGS:  TAG1(c1) TAG2(c2)
10977 @vindex org-tag-alist
10978 These lines (several such lines are allowed) specify the valid tags in
10979 this file, and (potentially) the corresponding @emph{fast tag selection}
10980 keys.  The corresponding variable is @code{org-tag-alist}.
10981 @item #+TBLFM:
10982 This line contains the formulas for the table directly above the line.
10983 @item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+DATE:,
10984 @itemx #+OPTIONS:, #+BIND:
10985 @itemx #+DESCRIPTION:, #+KEYWORDS:
10986 @itemx #+LATEX_HEADER:, #+STYLE:, #+LINK_UP:, #+LINK_HOME:,
10987 @itemx #+EXPORT_SELECT_TAGS:, #+EXPORT_EXCLUDE_TAGS:
10988 These lines provide settings for exporting files.  For more details see
10989 @ref{Export options}.
10990 @item #+TODO:    #+SEQ_TODO:   #+TYP_TODO:
10991 @vindex org-todo-keywords
10992 These lines set the TODO keywords and their interpretation in the
10993 current file.  The corresponding variable is @code{org-todo-keywords}.
10994 @end table
10996 @node The very busy C-c C-c key, Clean view, In-buffer settings, Miscellaneous
10997 @section The very busy C-c C-c key
10998 @kindex C-c C-c
10999 @cindex C-c C-c, overview
11001 The key @kbd{C-c C-c} has many purposes in Org, which are all
11002 mentioned scattered throughout this manual.  One specific function of
11003 this key is to add @emph{tags} to a headline (@pxref{Tags}).  In many
11004 other circumstances it means something like @emph{``Hey Org, look
11005 here and update according to what you see here''}.  Here is a summary of
11006 what this means in different contexts.
11008 @itemize @minus
11009 @item
11010 If there are highlights in the buffer from the creation of a sparse
11011 tree, or from clock display, remove these highlights.
11012 @item
11013 If the cursor is in one of the special @code{#+KEYWORD} lines, this
11014 triggers scanning the buffer for these lines and updating the
11015 information.
11016 @item
11017 If the cursor is inside a table, realign the table.  This command
11018 works even if the automatic table editor has been turned off.
11019 @item
11020 If the cursor is on a @code{#+TBLFM} line, re-apply the formulas to
11021 the entire table.
11022 @item
11023 If the current buffer is a Remember buffer, close the note and file it.
11024 With a prefix argument, file it, without further interaction, to the
11025 default location.
11026 @item
11027 If the cursor is on a @code{<<<target>>>}, update radio targets and
11028 corresponding links in this buffer.
11029 @item
11030 If the cursor is in a property line or at the start or end of a property
11031 drawer, offer property commands.
11032 @item
11033 If the cursor is at a footnote reference, go to the corresponding
11034 definition, and vice versa.
11035 @item
11036 If the cursor is on a statistics cookie, update it.
11037 @item
11038 If the cursor is in a plain list item with a checkbox, toggle the status
11039 of the checkbox.
11040 @item
11041 If the cursor is on a numbered item in a plain list, renumber the
11042 ordered list.
11043 @item
11044 If the cursor is on the @code{#+BEGIN} line of a dynamic block, the
11045 block is updated.
11046 @end itemize
11048 @node Clean view, TTY keys, The very busy C-c C-c key, Miscellaneous
11049 @section A cleaner outline view
11050 @cindex hiding leading stars
11051 @cindex dynamic indentation
11052 @cindex odd-levels-only outlines
11053 @cindex clean outline view
11055 Some people find it noisy and distracting that the Org headlines start with a
11056 potentially large number of stars, and that text below the headlines is not
11057 indented.  While this is no problem when writing a @emph{book-like} document
11058 where the outline headings are really section headings, in a more
11059 @emph{list-oriented} outline, indented structure is a lot cleaner:
11061 @example
11062 @group
11063 * Top level headline             |    * Top level headline
11064 ** Second level                  |      * Second level
11065 *** 3rd level                    |        * 3rd level
11066 some text                        |          some text
11067 *** 3rd level                    |        * 3rd level
11068 more text                        |          more text
11069 * Another top level headline     |    * Another top level headline
11070 @end group
11071 @end example
11073 @noindent
11074 If you are using at least Emacs 23.1.50.3 and version 6.29 of Org, this kind
11075 of view can be achieved dynamically at display time using
11076 @code{org-indent-mode}.  In this minor mode, all lines are prefixed for
11077 display with the necessary amount of space@footnote{@code{org-indent-mode}
11078 also sets the @code{wrap-prefix} property, such that @code{visual-line-mode}
11079 (or purely setting @code{word-wrap}) wraps long lines (including headlines)
11080 correctly indented.  }.  Also headlines are prefixed with additional stars,
11081 so that the amount of indentation shifts by two@footnote{See the variable
11082 @code{org-indent-indentation-per-level}.}  spaces per level.  All headline
11083 stars but the last one are made invisible using the @code{org-hide}
11084 face@footnote{Turning on @code{org-indent-mode} sets
11085 @code{org-hide-leading-stars} to @code{t} and @code{org-adapt-indentation} to
11086 @code{nil}.} - see below under @samp{2.} for more information on how this
11087 works.  You can turn on @code{org-indent-mode} for all files by customizing
11088 the variable @code{org-startup-indented}, or you can turn it on for
11089 individual files using
11091 @example
11092 #+STARTUP: indent
11093 @end example
11095 If you want a similar effect in earlier version of Emacs and/or Org, or if
11096 you want the indentation to be hard space characters so that the plain text
11097 file looks as similar as possible to the Emacs display, Org supports you in
11098 the following way:
11100 @enumerate
11101 @item
11102 @emph{Indentation of text below headlines}@*
11103 You may indent text below each headline to make the left boundary line up
11104 with the headline, like
11106 @example
11107 *** 3rd level
11108     more text, now indented
11109 @end example
11111 @vindex org-adapt-indentation
11112 Org supports this with paragraph filling, line wrapping, and structure
11113 editing@footnote{See also the variable @code{org-adapt-indentation}.},
11114 preserving or adapting the indentation as appropriate.
11116 @item
11117 @vindex org-hide-leading-stars
11118 @emph{Hiding leading stars}@* You can modify the display in such a way that
11119 all leading stars become invisible.  To do this in a global way, configure
11120 the variable @code{org-hide-leading-stars} or change this on a per-file basis
11121 with
11123 @example
11124 #+STARTUP: hidestars
11125 #+STARTUP: showstars
11126 @end example
11128 With hidden stars, the tree becomes:
11130 @example
11131 @group
11132 * Top level headline
11133  * Second level
11134   * 3rd level
11135   ...
11136 @end group
11137 @end example
11139 @noindent
11140 @vindex org-hide @r{(face)}
11141 The leading stars are not truly replaced by whitespace, they are only
11142 fontified with the face @code{org-hide} that uses the background color as
11143 font color.  If you are not using either white or black background, you may
11144 have to customize this face to get the wanted effect.  Another possibility is
11145 to set this font such that the extra stars are @i{almost} invisible, for
11146 example using the color @code{grey90} on a white background.
11148 @item
11149 @vindex org-odd-levels-only
11150 Things become cleaner still if you skip all the even levels and use only odd
11151 levels 1, 3, 5..., effectively adding two stars to go from one outline level
11152 to the next@footnote{When you need to specify a level for a property search
11153 or refile targets, @samp{LEVEL=2} will correspond to 3 stars, etc@.}.  In this
11154 way we get the outline view shown at the beginning of this section.  In order
11155 to make the structure editing and export commands handle this convention
11156 correctly, configure the variable @code{org-odd-levels-only}, or set this on
11157 a per-file basis with one of the following lines:
11159 @example
11160 #+STARTUP: odd
11161 #+STARTUP: oddeven
11162 @end example
11164 You can convert an Org file from single-star-per-level to the
11165 double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
11166 RET} in that file.  The reverse operation is @kbd{M-x
11167 org-convert-to-oddeven-levels}.
11168 @end enumerate
11170 @node TTY keys, Interaction, Clean view, Miscellaneous
11171 @section Using Org on a tty
11172 @cindex tty key bindings
11174 Because Org contains a large number of commands, by default many of
11175 Org's core commands are bound to keys that are generally not
11176 accessible on a tty, such as the cursor keys (@key{left}, @key{right},
11177 @key{up}, @key{down}), @key{TAB} and @key{RET}, in particular when used
11178 together with modifiers like @key{Meta} and/or @key{Shift}.  To access
11179 these commands on a tty when special keys are unavailable, the following
11180 alternative bindings can be used.  The tty bindings below will likely be
11181 more cumbersome; you may find for some of the bindings below that a
11182 customized workaround suits you better.  For example, changing a timestamp
11183 is really only fun with @kbd{S-@key{cursor}} keys, whereas on a
11184 tty you would rather use @kbd{C-c .} to re-insert the timestamp.
11186 @multitable @columnfractions 0.15 0.2 0.1 0.2
11187 @item @b{Default} @tab @b{Alternative 1} @tab @b{Speed key} @tab @b{Alternative 2} 
11188 @item @kbd{S-@key{TAB}}     @tab @kbd{C-u @key{TAB}}       @tab @kbd{C} @tab                            
11189 @item @kbd{M-@key{left}}    @tab @kbd{C-c C-x l}           @tab @kbd{l} @tab @kbd{@key{Esc} @key{left}} 
11190 @item @kbd{M-S-@key{left}}  @tab @kbd{C-c C-x L}           @tab @kbd{L} @tab                            
11191 @item @kbd{M-@key{right}}   @tab @kbd{C-c C-x r}           @tab @kbd{r} @tab @kbd{@key{Esc} @key{right}}
11192 @item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R}           @tab @kbd{R} @tab                           
11193 @item @kbd{M-@key{up}}      @tab @kbd{C-c C-x u}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{up}}  
11194 @item @kbd{M-S-@key{up}}    @tab @kbd{C-c C-x U}           @tab @kbd{U} @tab                           
11195 @item @kbd{M-@key{down}}    @tab @kbd{C-c C-x d}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{down}}
11196 @item @kbd{M-S-@key{down}}  @tab @kbd{C-c C-x D}           @tab @kbd{D} @tab                            
11197 @item @kbd{S-@key{RET}}     @tab @kbd{C-c C-x c}           @tab @kbd{ } @tab
11198 @item @kbd{M-@key{RET}}     @tab @kbd{C-c C-x m}           @tab @kbd{ } @tab @kbd{@key{Esc} @key{RET}}
11199 @item @kbd{M-S-@key{RET}}   @tab @kbd{C-c C-x M}           @tab @kbd{ } @tab
11200 @item @kbd{S-@key{left}}    @tab @kbd{C-c @key{left}}      @tab @kbd{ } @tab
11201 @item @kbd{S-@key{right}}   @tab @kbd{C-c @key{right}}     @tab @kbd{ } @tab
11202 @item @kbd{S-@key{up}}      @tab @kbd{C-c @key{up}}        @tab @kbd{ } @tab
11203 @item @kbd{S-@key{down}}    @tab @kbd{C-c @key{down}}      @tab @kbd{ } @tab
11204 @item @kbd{C-S-@key{left}}  @tab @kbd{C-c C-x @key{left}}  @tab @kbd{ } @tab
11205 @item @kbd{C-S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab @kbd{ } @tab
11206 @end multitable
11209 @node Interaction,  , TTY keys, Miscellaneous
11210 @section Interaction with other packages
11211 @cindex packages, interaction with other
11212 Org lives in the world of GNU Emacs and interacts in various ways
11213 with other code out there.
11215 @menu
11216 * Cooperation::                 Packages Org cooperates with
11217 * Conflicts::                   Packages that lead to conflicts
11218 @end menu
11220 @node Cooperation, Conflicts, Interaction, Interaction
11221 @subsection Packages that Org cooperates with
11223 @table @asis
11224 @cindex @file{calc.el}
11225 @cindex Gillespie, Dave
11226 @item @file{calc.el} by Dave Gillespie
11227 Org uses the Calc package for implementing spreadsheet
11228 functionality in its tables (@pxref{The spreadsheet}).  Org
11229 checks for the availability of Calc by looking for the function
11230 @code{calc-eval} which will have been autoloaded during setup if Calc has
11231 been installed properly.  As of Emacs 22, Calc is part of the Emacs
11232 distribution.  Another possibility for interaction between the two
11233 packages is using Calc for embedded calculations. @xref{Embedded Mode,
11234 , Embedded Mode, Calc, GNU Emacs Calc Manual}.
11235 @item @file{constants.el} by Carsten Dominik
11236 @cindex @file{constants.el}
11237 @cindex Dominik, Carsten
11238 @vindex org-table-formula-constants
11239 In a table formula (@pxref{The spreadsheet}), it is possible to use
11240 names for natural constants or units.  Instead of defining your own
11241 constants in the variable @code{org-table-formula-constants}, install
11242 the @file{constants} package which defines a large number of constants
11243 and units, and lets you use unit prefixes like @samp{M} for
11244 @samp{Mega}, etc@.  You will need version 2.0 of this package, available
11245 at @url{http://www.astro.uva.nl/~dominik/Tools}. Org checks for
11246 the function @code{constants-get}, which has to be autoloaded in your
11247 setup.  See the installation instructions in the file
11248 @file{constants.el}.
11249 @item @file{cdlatex.el} by Carsten Dominik
11250 @cindex @file{cdlatex.el}
11251 @cindex Dominik, Carsten
11252 Org mode can make use of the CDLa@TeX{} package to efficiently enter
11253 La@TeX{} fragments into Org files.  See @ref{CDLaTeX mode}.
11254 @item @file{imenu.el} by Ake Stenhoff and Lars Lindberg
11255 @cindex @file{imenu.el}
11256 Imenu allows menu access to an index of items in a file.  Org mode
11257 supports Imenu---all you need to do to get the index is the following:
11258 @lisp
11259 (add-hook 'org-mode-hook
11260           (lambda () (imenu-add-to-menubar "Imenu")))
11261 @end lisp
11262 @vindex org-imenu-depth
11263 By default the index is two levels deep---you can modify the depth using
11264 the option @code{org-imenu-depth}.
11265 @item @file{remember.el} by John Wiegley
11266 @cindex @file{remember.el}
11267 @cindex Wiegley, John
11268 Org cooperates with remember, see @ref{Remember}.
11269 As of Emacs 23, @file{Remember.el} is part of the Emacs distribution.
11270 @item @file{speedbar.el} by Eric M. Ludlam
11271 @cindex @file{speedbar.el}
11272 @cindex Ludlam, Eric M.
11273 Speedbar is a package that creates a special frame displaying files and
11274 index items in files.  Org mode supports Speedbar and allows you to
11275 drill into Org files directly from the Speedbar.  It also allows you to
11276 restrict the scope of agenda commands to a file or a subtree by using
11277 the command @kbd{<} in the Speedbar frame.
11278 @cindex @file{table.el}
11279 @item @file{table.el} by Takaaki Ota
11280 @kindex C-c C-c
11281 @cindex table editor, @file{table.el}
11282 @cindex @file{table.el}
11283 @cindex Ota, Takaaki
11285 Complex ASCII tables with automatic line wrapping, column- and row-spanning,
11286 and alignment can be created using the Emacs table package by Takaaki Ota
11287 (@uref{http://sourceforge.net/projects/table}, and also part of Emacs 22).
11288 Org-mode will recognize these tables and export them properly.  Because of
11289 interference with other Org-mode functionality, you unfortunately cannot edit
11290 these tables directly in the buffer.  Instead, you need to use the command
11291 @kbd{C-c '} to edit them, similar to source code snippets.
11293 @table @kbd
11294 @kindex C-c '
11295 @item C-c '
11296 Edit a @file{table.el} table.  Works when the cursor is in a table.el table.
11298 @kindex C-c ~
11299 @item C-c ~
11300 Insert a @file{table.el} table.  If there is already a table at point, this
11301 command converts it between the @file{table.el} format and the Org-mode
11302 format.  See the documentation string of the command
11303 @code{org-convert-table} for the restrictions under which this is
11304 possible.
11305 @end table
11306 @file{table.el} is part of Emacs since Emacs 22.
11307 @item @file{footnote.el} by Steven L. Baur
11308 @cindex @file{footnote.el}
11309 @cindex Baur, Steven L.
11310 Org mode recognizes numerical footnotes as provided by this package.
11311 However, Org mode also has its own footnote support (@pxref{Footnotes}),
11312 which makes using @file{footnote.el} unnecessary.
11313 @end table
11315 @node Conflicts,  , Cooperation, Interaction
11316 @subsection Packages that lead to conflicts with Org mode
11318 @table @asis
11320 @cindex @code{shift-selection-mode}
11321 @vindex org-support-shift-select
11322 In Emacs 23, @code{shift-selection-mode} is on by default, meaning that
11323 cursor motions combined with the shift key should start or enlarge regions.
11324 This conflicts with the use of @kbd{S-@key{cursor}} commands in Org to change
11325 timestamps, TODO keywords, priorities, and item bullet types if the cursor is
11326 at such a location.  By default, @kbd{S-@key{cursor}} commands outside
11327 special contexts don't do anything, but you can customize the variable
11328 @code{org-support-shift-select}.  Org mode then tries to accommodate shift
11329 selection by (i) using it outside of the special contexts where special
11330 commands apply, and by (ii) extending an existing active region even if the
11331 cursor moves across a special context.
11333 @item @file{CUA.el} by Kim. F. Storm
11334 @cindex @file{CUA.el}
11335 @cindex Storm, Kim. F.
11336 @vindex org-replace-disputed-keys
11337 Key bindings in Org conflict with the @kbd{S-<cursor>} keys used by CUA mode
11338 (as well as @code{pc-select-mode} and @code{s-region-mode}) to select and extend the
11339 region.  In fact, Emacs 23 has this built-in in the form of
11340 @code{shift-selection-mode}, see previous paragraph.  If you are using Emacs
11341 23, you probably don't want to use another package for this purpose.  However,
11342 if you prefer to leave these keys to a different package while working in
11343 Org mode, configure the variable @code{org-replace-disputed-keys}.  When set,
11344 Org will move the following key bindings in Org files, and in the agenda
11345 buffer (but not during date selection).
11347 @example
11348 S-UP      ->  M-p             S-DOWN     ->  M-n
11349 S-LEFT    ->  M--             S-RIGHT    ->  M-+
11350 C-S-LEFT  ->  M-S--           C-S-RIGHT  ->  M-S-+
11351 @end example
11353 @vindex org-disputed-keys
11354 Yes, these are unfortunately more difficult to remember.  If you want
11355 to have other replacement keys, look at the variable
11356 @code{org-disputed-keys}.
11358 @item @file{yasnippet.el}
11359 @cindex @file{yasnippet.el}
11360 The way Org-mode binds the TAB key (binding to @code{[tab]} instead of
11361 @code{"\t"}) overrules yasnippets' access to this key.  The following code
11362 fixed this problem:
11364 @lisp
11365 (add-hook 'org-mode-hook
11366           (lambda ()
11367             (org-set-local 'yas/trigger-key [tab])
11368             (define-key yas/keymap [tab] 'yas/next-field-group)))
11369 @end lisp
11371 @item @file{windmove.el} by Hovav Shacham
11372 @cindex @file{windmove.el}
11373 This package also uses the @kbd{S-<cursor>} keys, so everything written
11374 in the paragraph above about CUA mode also applies here.
11376 @item @file{viper.el} by Michael Kifer
11377 @cindex @file{viper.el}
11378 @kindex C-c /
11379 Viper uses @kbd{C-c /} and therefore makes this key not access the
11380 corresponding Org-mode command @code{org-sparse-tree}.  You need to find
11381 another key for this command, or override the key in
11382 @code{viper-vi-global-user-map} with
11384 @lisp
11385 (define-key viper-vi-global-user-map "C-c /" 'org-sparse-tree)
11386 @end lisp
11388 @end table
11391 @node Hacking, MobileOrg, Miscellaneous, Top
11392 @appendix Hacking
11393 @cindex hacking
11395 This appendix covers some aspects where users can extend the functionality of
11396 Org.
11398 @menu
11399 * Hooks::                       Who to reach into Org's internals
11400 * Add-on packages::             Available extensions
11401 * Adding hyperlink types::      New custom link types
11402 * Context-sensitive commands::  How to add functionality to such commands
11403 * Tables in arbitrary syntax::  Orgtbl for La@TeX{} and other programs
11404 * Dynamic blocks::              Automatically filled blocks
11405 * Special agenda views::        Customized views
11406 * Extracting agenda information::  Postprocessing of agenda information
11407 * Using the property API::      Writing programs that use entry properties
11408 * Using the mapping API::       Mapping over all or selected entries
11409 @end menu
11411 @node Hooks, Add-on packages, Hacking, Hacking
11412 @section Hooks
11413 @cindex hooks
11415 Org has a large number of hook variables that can be used to add
11416 functionality.  This appendix about hacking is going to illustrate the
11417 use of some of them.  A complete list of all hooks with documentation is
11418 maintained by the Worg project and can be found at
11419 @uref{http://orgmode.org/worg/org-configs/org-hooks.php}.
11421 @node Add-on packages, Adding hyperlink types, Hooks, Hacking
11422 @section Add-on packages
11423 @cindex add-on packages
11425 A large number of add-on packages have been written by various authors.
11426 These packages are not part of Emacs, but they are distributed as contributed
11427 packages with the separate release available at the Org mode home page at
11428 @uref{http://orgmode.org}.  The list of contributed packages, along with
11429 documentation about each package, is maintained by the Worg project at
11430 @uref{http://orgmode.org/worg/org-contrib/}.
11434 @node Adding hyperlink types, Context-sensitive commands, Add-on packages, Hacking
11435 @section Adding hyperlink types
11436 @cindex hyperlinks, adding new types
11438 Org has a large number of hyperlink types built-in
11439 (@pxref{Hyperlinks}).  If you would like to add new link types, Org
11440 provides an interface for doing so.  Let's look at an example file,
11441 @file{org-man.el}, that will add support for creating links like
11442 @samp{[[man:printf][The printf manpage]]} to show Unix manual pages inside
11443 Emacs:
11445 @lisp
11446 ;;; org-man.el - Support for links to manpages in Org
11448 (require 'org)
11450 (org-add-link-type "man" 'org-man-open)
11451 (add-hook 'org-store-link-functions 'org-man-store-link)
11453 (defcustom org-man-command 'man
11454   "The Emacs command to be used to display a man page."
11455   :group 'org-link
11456   :type '(choice (const man) (const woman)))
11458 (defun org-man-open (path)
11459   "Visit the manpage on PATH.
11460 PATH should be a topic that can be thrown at the man command."
11461   (funcall org-man-command path))
11463 (defun org-man-store-link ()
11464   "Store a link to a manpage."
11465   (when (memq major-mode '(Man-mode woman-mode))
11466     ;; This is a man page, we do make this link
11467     (let* ((page (org-man-get-page-name))
11468            (link (concat "man:" page))
11469            (description (format "Manpage for %s" page)))
11470       (org-store-link-props
11471        :type "man"
11472        :link link
11473        :description description))))
11475 (defun org-man-get-page-name ()
11476   "Extract the page name from the buffer name."
11477   ;; This works for both `Man-mode' and `woman-mode'.
11478   (if (string-match " \\(\\S-+\\)\\*" (buffer-name))
11479       (match-string 1 (buffer-name))
11480     (error "Cannot create link to this man page")))
11482 (provide 'org-man)
11484 ;;; org-man.el ends here
11485 @end lisp
11487 @noindent
11488 You would activate this new link type in @file{.emacs} with
11490 @lisp
11491 (require 'org-man)
11492 @end lisp
11494 @noindent
11495 Let's go through the file and see what it does.
11496 @enumerate
11497 @item
11498 It does @code{(require 'org)} to make sure that @file{org.el} has been
11499 loaded.
11500 @item
11501 The next line calls @code{org-add-link-type} to define a new link type
11502 with prefix @samp{man}.  The call also contains the name of a function
11503 that will be called to follow such a link.
11504 @item
11505 @vindex org-store-link-functions
11506 The next line adds a function to @code{org-store-link-functions}, in
11507 order to allow the command @kbd{C-c l} to record a useful link in a
11508 buffer displaying a man page.
11509 @end enumerate
11511 The rest of the file defines the necessary variables and functions.
11512 First there is a customization variable that determines which Emacs
11513 command should be used to display man pages.  There are two options,
11514 @code{man} and @code{woman}.  Then the function to follow a link is
11515 defined.  It gets the link path as an argument---in this case the link
11516 path is just a topic for the manual command.  The function calls the
11517 value of @code{org-man-command} to display the man page.
11519 Finally the function @code{org-man-store-link} is defined.  When you try
11520 to store a link with @kbd{C-c l}, this function will be called to
11521 try to make a link.  The function must first decide if it is supposed to
11522 create the link for this buffer type; we do this by checking the value
11523 of the variable @code{major-mode}.  If not, the function must exit and
11524 return the value @code{nil}.  If yes, the link is created by getting the
11525 manual topic from the buffer name and prefixing it with the string
11526 @samp{man:}.  Then it must call the command @code{org-store-link-props}
11527 and set the @code{:type} and @code{:link} properties.  Optionally you
11528 can also set the @code{:description} property to provide a default for
11529 the link description when the link is later inserted into an Org
11530 buffer with @kbd{C-c C-l}.
11532 When is makes sense for your new link type, you may also define a function
11533 @code{org-PREFIX-complete-link} that implements special (e.g. completion)
11534 support for inserting such a link with @kbd{C-c C-l}.  Such a function should
11535 not accept any arguments, and return the full link with prefix.
11537 @node Context-sensitive commands, Tables in arbitrary syntax, Adding hyperlink types, Hacking
11538 @section Context-sensitive commands
11539 @cindex context-sensitive commands, hooks
11540 @cindex add-ons, context-sensitive commands
11541 @vindex org-ctrl-c-ctrl-c-hook
11543 Org has several commands that act differently depending on context.  The most
11544 important example it the @kbd{C-c C-c} (@pxref{The very busy C-c C-c key}).
11545 Also the @kbd{M-cursor} and @kbd{M-S-cursor} keys have this property.
11547 Add-ons can tap into this functionality by providing a function that detects
11548 special context for that add-on and executes functionality appropriate for
11549 the context.  Here is an example from Dan Davison's @file{org-R.el} which
11550 allows you to evaluate commands based on the @file{R} programming language.  For
11551 this package, special contexts are lines that start with @code{#+R:} or
11552 @code{#+RR:}.
11554 @lisp
11555 (defun org-R-apply-maybe ()
11556   "Detect if this is context for org-R and execute R commands."
11557   (if (save-excursion
11558         (beginning-of-line 1)
11559         (looking-at "#\\+RR?:"))
11560       (progn (call-interactively 'org-R-apply)
11561              t) ;; to signal that we took action
11562     nil)) ;; to signal that we did not
11564 (add-hook 'org-ctrl-c-ctrl-c-hook 'org-R-apply-maybe)
11565 @end lisp
11567 The function first checks if the cursor is in such a line.  If that is the
11568 case, @code{org-R-apply} is called and the function returns @code{t} to
11569 signal that action was taken, and @kbd{C-c C-c} will stop looking for other
11570 contexts.  If the function finds it should do nothing locally, it returns @code{nil} so that other, similar functions can have a try.
11573 @node Tables in arbitrary syntax, Dynamic blocks, Context-sensitive commands, Hacking
11574 @section Tables and lists in arbitrary syntax
11575 @cindex tables, in other modes
11576 @cindex lists, in other modes
11577 @cindex Orgtbl mode
11579 Since Orgtbl mode can be used as a minor mode in arbitrary buffers, a
11580 frequent feature request has been to make it work with native tables in
11581 specific languages, for example La@TeX{}.  However, this is extremely
11582 hard to do in a general way, would lead to a customization nightmare,
11583 and would take away much of the simplicity of the Orgtbl-mode table
11584 editor.
11587 This appendix describes a different approach.  We keep the Orgtbl mode
11588 table in its native format (the @i{source table}), and use a custom
11589 function to @i{translate} the table to the correct syntax, and to
11590 @i{install} it in the right location (the @i{target table}).  This puts
11591 the burden of writing conversion functions on the user, but it allows
11592 for a very flexible system.
11594 Bastien added the ability to do the same with lists.  You can use Org's
11595 facilities to edit and structure lists by turning @code{orgstruct-mode}
11596 on, then locally exporting such lists in another format (HTML, La@TeX{}
11597 or Texinfo.)
11600 @menu
11601 * Radio tables::                Sending and receiving radio tables
11602 * A LaTeX example::             Step by step, almost a tutorial
11603 * Translator functions::        Copy and modify
11604 * Radio lists::                 Doing the same for lists
11605 @end menu
11607 @node Radio tables, A LaTeX example, Tables in arbitrary syntax, Tables in arbitrary syntax
11608 @subsection Radio tables
11609 @cindex radio tables
11611 To define the location of the target table, you first need to create two
11612 lines that are comments in the current mode, but contain magic words for
11613 Orgtbl mode to find.  Orgtbl mode will insert the translated table
11614 between these lines, replacing whatever was there before.  For example:
11616 @example
11617 /* BEGIN RECEIVE ORGTBL table_name */
11618 /* END RECEIVE ORGTBL table_name */
11619 @end example
11621 @noindent
11622 Just above the source table, we put a special line that tells
11623 Orgtbl mode how to translate this table and where to install it.  For
11624 example:
11625 @cindex #+ORGTBL
11626 @example
11627 #+ORGTBL: SEND table_name translation_function arguments....
11628 @end example
11630 @noindent
11631 @code{table_name} is the reference name for the table that is also used
11632 in the receiver lines. @code{translation_function} is the Lisp function
11633 that does the translation.  Furthermore, the line can contain a list of
11634 arguments (alternating key and value) at the end.  The arguments will be
11635 passed as a property list to the translation function for
11636 interpretation.  A few standard parameters are already recognized and
11637 acted upon before the translation function is called:
11639 @table @code
11640 @item :skip N
11641 Skip the first N lines of the table.  Hlines do count as separate lines for
11642 this parameter!
11644 @item :skipcols (n1 n2 ...)
11645 List of columns that should be skipped.  If the table has a column with
11646 calculation marks, that column is automatically discarded as well.
11647 Please note that the translator function sees the table @emph{after} the
11648 removal of these columns, the function never knows that there have been
11649 additional columns.
11650 @end table
11652 @noindent
11653 The one problem remaining is how to keep the source table in the buffer
11654 without disturbing the normal workings of the file, for example during
11655 compilation of a C file or processing of a La@TeX{} file.  There are a
11656 number of different solutions:
11658 @itemize @bullet
11659 @item
11660 The table could be placed in a block comment if that is supported by the
11661 language.  For example, in C mode you could wrap the table between
11662 @samp{/*} and @samp{*/} lines.
11663 @item
11664 Sometimes it is possible to put the table after some kind of @i{END}
11665 statement, for example @samp{\bye} in @TeX{} and @samp{\end@{document@}}
11666 in La@TeX{}.
11667 @item
11668 You can just comment the table line-by-line whenever you want to process
11669 the file, and uncomment it whenever you need to edit the table.  This
11670 only sounds tedious---the command @kbd{M-x orgtbl-toggle-comment}
11671 makes this comment-toggling very easy, in particular if you bind it to a
11672 key.
11673 @end itemize
11675 @node A LaTeX example, Translator functions, Radio tables, Tables in arbitrary syntax
11676 @subsection A La@TeX{} example of radio tables
11677 @cindex La@TeX{}, and Orgtbl mode
11679 The best way to wrap the source table in La@TeX{} is to use the
11680 @code{comment} environment provided by @file{comment.sty}.  It has to be
11681 activated by placing @code{\usepackage@{comment@}} into the document
11682 header.  Orgtbl mode can insert a radio table skeleton@footnote{By
11683 default this works only for La@TeX{}, HTML, and Texinfo.  Configure the
11684 variable @code{orgtbl-radio-tables} to install templates for other
11685 modes.}  with the command @kbd{M-x orgtbl-insert-radio-table}.  You will
11686 be prompted for a table name, let's say we use @samp{salesfigures}.  You
11687 will then get the following template:
11689 @cindex #+ORGTBL, SEND
11690 @example
11691 % BEGIN RECEIVE ORGTBL salesfigures
11692 % END RECEIVE ORGTBL salesfigures
11693 \begin@{comment@}
11694 #+ORGTBL: SEND salesfigures orgtbl-to-latex
11695 | | |
11696 \end@{comment@}
11697 @end example
11699 @noindent
11700 @vindex La@TeX{}-verbatim-environments
11701 The @code{#+ORGTBL: SEND} line tells Orgtbl mode to use the function
11702 @code{orgtbl-to-latex} to convert the table into La@TeX{} and to put it
11703 into the receiver location with name @code{salesfigures}.  You may now
11704 fill in the table, feel free to use the spreadsheet features@footnote{If
11705 the @samp{#+TBLFM} line contains an odd number of dollar characters,
11706 this may cause problems with font-lock in La@TeX{} mode.  As shown in the
11707 example you can fix this by adding an extra line inside the
11708 @code{comment} environment that is used to balance the dollar
11709 expressions.  If you are using AUC@TeX{} with the font-latex library, a
11710 much better solution is to add the @code{comment} environment to the
11711 variable @code{LaTeX-verbatim-environments}.}:
11713 @example
11714 % BEGIN RECEIVE ORGTBL salesfigures
11715 % END RECEIVE ORGTBL salesfigures
11716 \begin@{comment@}
11717 #+ORGTBL: SEND salesfigures orgtbl-to-latex
11718 | Month | Days | Nr sold | per day |
11719 |-------+------+---------+---------|
11720 | Jan   |   23 |      55 |     2.4 |
11721 | Feb   |   21 |      16 |     0.8 |
11722 | March |   22 |     278 |    12.6 |
11723 #+TBLFM: $4=$3/$2;%.1f
11724 % $ (optional extra dollar to keep font-lock happy, see footnote)
11725 \end@{comment@}
11726 @end example
11728 @noindent
11729 When you are done, press @kbd{C-c C-c} in the table to get the converted
11730 table inserted between the two marker lines.
11732 Now let's assume you want to make the table header by hand, because you
11733 want to control how columns are aligned, etc@.  In this case we make sure
11734 that the table translator skips the first 2 lines of the source
11735 table, and tell the command to work as a @i{splice}, i.e. to not produce
11736 header and footer commands of the target table:
11738 @example
11739 \begin@{tabular@}@{lrrr@}
11740 Month & \multicolumn@{1@}@{c@}@{Days@} & Nr.\ sold & per day\\
11741 % BEGIN RECEIVE ORGTBL salesfigures
11742 % END RECEIVE ORGTBL salesfigures
11743 \end@{tabular@}
11745 \begin@{comment@}
11746 #+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2
11747 | Month | Days | Nr sold | per day |
11748 |-------+------+---------+---------|
11749 | Jan   |   23 |      55 |     2.4 |
11750 | Feb   |   21 |      16 |     0.8 |
11751 | March |   22 |     278 |    12.6 |
11752 #+TBLFM: $4=$3/$2;%.1f
11753 \end@{comment@}
11754 @end example
11756 The La@TeX{} translator function @code{orgtbl-to-latex} is already part of
11757 Orgtbl mode.  It uses a @code{tabular} environment to typeset the table
11758 and marks horizontal lines with @code{\hline}.  Furthermore, it
11759 interprets the following parameters (see also @pxref{Translator functions}):
11761 @table @code
11762 @item :splice nil/t
11763 When set to t, return only table body lines, don't wrap them into a
11764 tabular environment.  Default is nil.
11766 @item :fmt fmt
11767 A format to be used to wrap each field, it should contain @code{%s} for the
11768 original field value.  For example, to wrap each field value in dollars,
11769 you could use @code{:fmt "$%s$"}.  This may also be a property list with
11770 column numbers and formats. for example @code{:fmt (2 "$%s$" 4 "%s\\%%")}.
11771 A function of one argument can be used in place of the strings; the
11772 function must return a formatted string.
11774 @item :efmt efmt
11775 Use this format to print numbers with exponentials.  The format should
11776 have @code{%s} twice for inserting mantissa and exponent, for example
11777 @code{"%s\\times10^@{%s@}"}.  The default is @code{"%s\\,(%s)"}.  This
11778 may also be a property list with column numbers and formats, for example
11779 @code{:efmt (2 "$%s\\times10^@{%s@}$" 4 "$%s\\cdot10^@{%s@}$")}.  After
11780 @code{efmt} has been applied to a value, @code{fmt} will also be
11781 applied.  Similar to @code{fmt}, functions of two arguments can be
11782 supplied instead of strings.
11783 @end table
11785 @node Translator functions, Radio lists, A LaTeX example, Tables in arbitrary syntax
11786 @subsection Translator functions
11787 @cindex HTML, and Orgtbl mode
11788 @cindex translator function
11790 Orgtbl mode has several translator functions built-in: @code{orgtbl-to-csv}
11791 (comma-separated values), @code{orgtbl-to-tsv} (TAB-separated values)
11792 @code{orgtbl-to-latex}, @code{orgtbl-to-html}, and @code{orgtbl-to-texinfo}.
11793 Except for @code{orgtbl-to-html}@footnote{The HTML translator uses the same
11794 code that produces tables during HTML export.}, these all use a generic
11795 translator, @code{orgtbl-to-generic}.  For example, @code{orgtbl-to-latex}
11796 itself is a very short function that computes the column definitions for the
11797 @code{tabular} environment, defines a few field and line separators and then
11798 hands processing over to the generic translator.  Here is the entire code:
11800 @lisp
11801 @group
11802 (defun orgtbl-to-latex (table params)
11803   "Convert the Orgtbl mode TABLE to LaTeX."
11804   (let* ((alignment (mapconcat (lambda (x) (if x "r" "l"))
11805                                org-table-last-alignment ""))
11806          (params2
11807           (list
11808            :tstart (concat "\\begin@{tabular@}@{" alignment "@}")
11809            :tend "\\end@{tabular@}"
11810            :lstart "" :lend " \\\\" :sep " & "
11811            :efmt "%s\\,(%s)" :hline "\\hline")))
11812     (orgtbl-to-generic table (org-combine-plists params2 params))))
11813 @end group
11814 @end lisp
11816 As you can see, the properties passed into the function (variable
11817 @var{PARAMS}) are combined with the ones newly defined in the function
11818 (variable @var{PARAMS2}).  The ones passed into the function (i.e. the
11819 ones set by the @samp{ORGTBL SEND} line) take precedence.  So if you
11820 would like to use the La@TeX{} translator, but wanted the line endings to
11821 be @samp{\\[2mm]} instead of the default @samp{\\}, you could just
11822 overrule the default with
11824 @example
11825 #+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]"
11826 @end example
11828 For a new language, you can either write your own converter function in
11829 analogy with the La@TeX{} translator, or you can use the generic function
11830 directly.  For example, if you have a language where a table is started
11831 with @samp{!BTBL!}, ended with @samp{!ETBL!}, and where table lines are
11832 started with @samp{!BL!}, ended with @samp{!EL!}, and where the field
11833 separator is a TAB, you could call the generic translator like this (on
11834 a single line!):
11836 @example
11837 #+ORGTBL: SEND test orgtbl-to-generic :tstart "!BTBL!" :tend "!ETBL!"
11838                               :lstart "!BL! " :lend " !EL!" :sep "\t"
11839 @end example
11841 @noindent
11842 Please check the documentation string of the function
11843 @code{orgtbl-to-generic} for a full list of parameters understood by
11844 that function, and remember that you can pass each of them into
11845 @code{orgtbl-to-latex}, @code{orgtbl-to-texinfo}, and any other function
11846 using the generic function.
11848 Of course you can also write a completely new function doing complicated
11849 things the generic translator cannot do.  A translator function takes
11850 two arguments.  The first argument is the table, a list of lines, each
11851 line either the symbol @code{hline} or a list of fields.  The second
11852 argument is the property list containing all parameters specified in the
11853 @samp{#+ORGTBL: SEND} line.  The function must return a single string
11854 containing the formatted table.  If you write a generally useful
11855 translator, please post it on @email{emacs-orgmode@@gnu.org} so that
11856 others can benefit from your work.
11858 @node  Radio lists,  , Translator functions, Tables in arbitrary syntax
11859 @subsection Radio lists
11860 @cindex radio lists
11861 @cindex org-list-insert-radio-list
11863 Sending and receiving radio lists works exactly the same way than sending and
11864 receiving radio tables (@pxref{Radio tables}).  As for radio tables, you can
11865 insert radio lists templates in HTML, La@TeX{} and Texinfo modes by calling
11866 @code{org-list-insert-radio-list}.
11868 Here are the differences with radio tables:
11870 @itemize @minus
11871 @item
11872 Use @code{ORGLST} instead of @code{ORGTBL}.
11873 @item
11874 The available translation functions for radio lists don't take
11875 parameters.
11876 @item
11877 @kbd{C-c C-c} will work when pressed on the first item of the list.
11878 @end itemize
11880 Here is a La@TeX{} example.  Let's say that you have this in your
11881 La@TeX{} file:
11883 @cindex #+ORGLIST
11884 @example
11885 % BEGIN RECEIVE ORGLST to-buy
11886 % END RECEIVE ORGLST to-buy
11887 \begin@{comment@}
11888 #+ORGLIST: SEND to-buy orgtbl-to-latex
11889 - a new house
11890 - a new computer
11891   + a new keyboard
11892   + a new mouse
11893 - a new life
11894 \end@{comment@}
11895 @end example
11897 Pressing `C-c C-c' on @code{a new house} and will insert the converted
11898 La@TeX{} list between the two marker lines.
11900 @node Dynamic blocks, Special agenda views, Tables in arbitrary syntax, Hacking
11901 @section Dynamic blocks
11902 @cindex dynamic blocks
11904 Org documents can contain @emph{dynamic blocks}.  These are
11905 specially marked regions that are updated by some user-written function.
11906 A good example for such a block is the clock table inserted by the
11907 command @kbd{C-c C-x C-r} (@pxref{Clocking work time}).
11909 Dynamic block are enclosed by a BEGIN-END structure that assigns a name
11910 to the block and can also specify parameters for the function producing
11911 the content of the block.
11913 #+BEGIN:dynamic block
11914 @example
11915 #+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
11917 #+END:
11918 @end example
11920 Dynamic blocks are updated with the following commands
11922 @table @kbd
11923 @kindex C-c C-x C-u
11924 @item C-c C-x C-u
11925 Update dynamic block at point.
11926 @kindex C-u C-c C-x C-u
11927 @item C-u C-c C-x C-u
11928 Update all dynamic blocks in the current file.
11929 @end table
11931 Updating a dynamic block means to remove all the text between BEGIN and
11932 END, parse the BEGIN line for parameters and then call the specific
11933 writer function for this block to insert the new content.  If you want
11934 to use the original content in the writer function, you can use the
11935 extra parameter @code{:content}.
11937 For a block with name @code{myblock}, the writer function is
11938 @code{org-dblock-write:myblock} with as only parameter a property list
11939 with the parameters given in the begin line.  Here is a trivial example
11940 of a block that keeps track of when the block update function was last
11941 run:
11943 @example
11944 #+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M"
11946 #+END:
11947 @end example
11949 @noindent
11950 The corresponding block writer function could look like this:
11952 @lisp
11953 (defun org-dblock-write:block-update-time (params)
11954    (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
11955      (insert "Last block update at: "
11956              (format-time-string fmt (current-time)))))
11957 @end lisp
11959 If you want to make sure that all dynamic blocks are always up-to-date,
11960 you could add the function @code{org-update-all-dblocks} to a hook, for
11961 example @code{before-save-hook}.  @code{org-update-all-dblocks} is
11962 written in a way such that it does nothing in buffers that are not in
11963 @code{org-mode}.
11965 @node Special agenda views, Extracting agenda information, Dynamic blocks, Hacking
11966 @section Special agenda views
11967 @cindex agenda views, user-defined
11969 Org provides a special hook that can be used to narrow down the
11970 selection made by any of the agenda views.  You may specify a function
11971 that is used at each match to verify if the match should indeed be part
11972 of the agenda view, and if not, how much should be skipped.
11974 Let's say you want to produce a list of projects that contain a WAITING
11975 tag anywhere in the project tree.  Let's further assume that you have
11976 marked all tree headings that define a project with the TODO keyword
11977 PROJECT.  In this case you would run a TODO search for the keyword
11978 PROJECT, but skip the match unless there is a WAITING tag anywhere in
11979 the subtree belonging to the project line.
11981 To achieve this, you must write a function that searches the subtree for
11982 the tag.  If the tag is found, the function must return @code{nil} to
11983 indicate that this match should not be skipped.  If there is no such
11984 tag, return the location of the end of the subtree, to indicate that
11985 search should continue from there.
11987 @lisp
11988 (defun my-skip-unless-waiting ()
11989   "Skip trees that are not waiting"
11990   (let ((subtree-end (save-excursion (org-end-of-subtree t))))
11991     (if (re-search-forward ":waiting:" subtree-end t)
11992         nil          ; tag found, do not skip
11993       subtree-end))) ; tag not found, continue after end of subtree
11994 @end lisp
11996 Now you may use this function in an agenda custom command, for example
11997 like this:
11999 @lisp
12000 (org-add-agenda-custom-command
12001  '("b" todo "PROJECT"
12002    ((org-agenda-skip-function 'my-skip-unless-waiting)
12003     (org-agenda-overriding-header "Projects waiting for something: "))))
12004 @end lisp
12006 @vindex org-agenda-overriding-header
12007 Note that this also binds @code{org-agenda-overriding-header} to get a
12008 meaningful header in the agenda view.
12010 @vindex org-odd-levels-only
12011 @vindex org-agenda-skip-function
12012 A general way to create custom searches is to base them on a search for
12013 entries with a certain level limit.  If you want to study all entries with
12014 your custom search function, simply do a search for
12015 @samp{LEVEL>0}@footnote{Note that, when using @code{org-odd-levels-only}, a
12016 level number corresponds to order in the hierarchy, not to the number of
12017 stars.}, and then use @code{org-agenda-skip-function} to select the entries
12018 you really want to have.
12020 You may also put a Lisp form into @code{org-agenda-skip-function}.  In
12021 particular, you may use the functions @code{org-agenda-skip-entry-if}
12022 and @code{org-agenda-skip-subtree-if} in this form, for example:
12024 @table @code
12025 @item '(org-agenda-skip-entry-if 'scheduled)
12026 Skip current entry if it has been scheduled.
12027 @item '(org-agenda-skip-entry-if 'notscheduled)
12028 Skip current entry if it has not been scheduled.
12029 @item '(org-agenda-skip-entry-if 'deadline)
12030 Skip current entry if it has a deadline.
12031 @item '(org-agenda-skip-entry-if 'scheduled 'deadline)
12032 Skip current entry if it has a deadline, or if it is scheduled.
12033 @item '(org-agenda-skip-entry-if 'todo '("TODO" "WAITING"))
12034 Skip current entry if the TODO keyword is TODO or WAITING.
12035 @item '(org-agenda-skip-entry-if 'todo 'done)
12036 Skip current entry if the TODO keyword marks a DONE state.
12037 @item '(org-agenda-skip-entry-if 'timestamp)
12038 Skip current entry if it has any timestamp, may also be deadline or scheduled.
12039 @item '(org-agenda-skip-entry 'regexp "regular expression")
12040 Skip current entry if the regular expression matches in the entry.
12041 @item '(org-agenda-skip-entry 'notregexp "regular expression")
12042 Skip current entry unless the regular expression matches.
12043 @item '(org-agenda-skip-subtree-if 'regexp "regular expression")
12044 Same as above, but check and skip the entire subtree.
12045 @end table
12047 Therefore we could also have written the search for WAITING projects
12048 like this, even without defining a special function:
12050 @lisp
12051 (org-add-agenda-custom-command
12052  '("b" todo "PROJECT"
12053    ((org-agenda-skip-function '(org-agenda-skip-subtree-if
12054                                 'regexp ":waiting:"))
12055     (org-agenda-overriding-header "Projects waiting for something: "))))
12056 @end lisp
12058 @node Extracting agenda information, Using the property API, Special agenda views, Hacking
12059 @section Extracting agenda information
12060 @cindex agenda, pipe
12061 @cindex Scripts, for agenda processing
12063 @vindex org-agenda-custom-commands
12064 Org provides commands to access agenda information for the command
12065 line in Emacs batch mode.  This extracted information can be sent
12066 directly to a printer, or it can be read by a program that does further
12067 processing of the data.  The first of these commands is the function
12068 @code{org-batch-agenda}, that produces an agenda view and sends it as
12069 ASCII text to STDOUT.  The command takes a single string as parameter.
12070 If the string has length 1, it is used as a key to one of the commands
12071 you have configured in @code{org-agenda-custom-commands}, basically any
12072 key you can use after @kbd{C-c a}.  For example, to directly print the
12073 current TODO list, you could use
12075 @example
12076 emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
12077 @end example
12079 If the parameter is a string with 2 or more characters, it is used as a
12080 tags/TODO match string.  For example, to print your local shopping list
12081 (all items with the tag @samp{shop}, but excluding the tag
12082 @samp{NewYork}), you could use
12084 @example
12085 emacs -batch -l ~/.emacs                                      \
12086       -eval '(org-batch-agenda "+shop-NewYork")' | lpr
12087 @end example
12089 @noindent
12090 You may also modify parameters on the fly like this:
12092 @example
12093 emacs -batch -l ~/.emacs                                      \
12094    -eval '(org-batch-agenda "a"                               \
12095             org-agenda-ndays 30                               \
12096             org-agenda-include-diary nil                      \
12097             org-agenda-files (quote ("~/org/project.org")))'  \
12098    | lpr
12099 @end example
12101 @noindent
12102 which will produce a 30-day agenda, fully restricted to the Org file
12103 @file{~/org/projects.org}, not even including the diary.
12105 If you want to process the agenda data in more sophisticated ways, you
12106 can use the command @code{org-batch-agenda-csv} to get a comma-separated
12107 list of values for each agenda item.  Each line in the output will
12108 contain a number of fields separated by commas.  The fields in a line
12109 are:
12111 @example
12112 category     @r{The category of the item}
12113 head         @r{The headline, without TODO keyword, TAGS and PRIORITY}
12114 type         @r{The type of the agenda entry, can be}
12115                 todo               @r{selected in TODO match}
12116                 tagsmatch          @r{selected in tags match}
12117                 diary              @r{imported from diary}
12118                 deadline           @r{a deadline}
12119                 scheduled          @r{scheduled}
12120                 timestamp          @r{appointment, selected by timestamp}
12121                 closed             @r{entry was closed on date}
12122                 upcoming-deadline  @r{warning about nearing deadline}
12123                 past-scheduled     @r{forwarded scheduled item}
12124                 block              @r{entry has date block including date}
12125 todo         @r{The TODO keyword, if any}
12126 tags         @r{All tags including inherited ones, separated by colons}
12127 date         @r{The relevant date, like 2007-2-14}
12128 time         @r{The time, like 15:00-16:50}
12129 extra        @r{String with extra planning info}
12130 priority-l   @r{The priority letter if any was given}
12131 priority-n   @r{The computed numerical priority}
12132 @end example
12134 @noindent
12135 Time and date will only be given if a timestamp (or deadline/scheduled)
12136 led to the selection of the item.
12138 A CSV list like this is very easy to use in a post-processing script.
12139 For example, here is a Perl program that gets the TODO list from
12140 Emacs/Org and prints all the items, preceded by a checkbox:
12142 @example
12143 #!/usr/bin/perl
12145 # define the Emacs command to run
12146 $cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'";
12148 # run it and capture the output
12149 $agenda = qx@{$cmd 2>/dev/null@};
12151 # loop over all lines
12152 foreach $line (split(/\n/,$agenda)) @{
12153   # get the individual values
12154   ($category,$head,$type,$todo,$tags,$date,$time,$extra,
12155    $priority_l,$priority_n) = split(/,/,$line);
12156   # process and print
12157   print "[ ] $head\n";
12159 @end example
12161 @node Using the property API, Using the mapping API, Extracting agenda information, Hacking
12162 @section Using the property API
12163 @cindex API, for properties
12164 @cindex properties, API
12166 Here is a description of the functions that can be used to work with
12167 properties.
12169 @defun org-entry-properties &optional pom which
12170 Get all properties of the entry at point-or-marker POM.@*
12171 This includes the TODO keyword, the tags, time strings for deadline,
12172 scheduled, and clocking, and any additional properties defined in the
12173 entry.  The return value is an alist, keys may occur multiple times
12174 if the property key was used several times.@*
12175 POM may also be nil, in which case the current entry is used.
12176 If WHICH is nil or `all', get all properties.  If WHICH is
12177 `special' or `standard', only get that subclass.
12178 @end defun
12179 @vindex org-use-property-inheritance
12180 @defun org-entry-get pom property &optional inherit
12181 Get value of PROPERTY for entry at point-or-marker POM.  By default,
12182 this only looks at properties defined locally in the entry.  If INHERIT
12183 is non-nil and the entry does not have the property, then also check
12184 higher levels of the hierarchy.  If INHERIT is the symbol
12185 @code{selective}, use inheritance if and only if the setting of
12186 @code{org-use-property-inheritance} selects PROPERTY for inheritance.
12187 @end defun
12189 @defun org-entry-delete pom property
12190 Delete the property PROPERTY from entry at point-or-marker POM.
12191 @end defun
12193 @defun org-entry-put pom property value
12194 Set PROPERTY to VALUE for entry at point-or-marker POM.
12195 @end defun
12197 @defun org-buffer-property-keys &optional include-specials
12198 Get all property keys in the current buffer.
12199 @end defun
12201 @defun org-insert-property-drawer
12202 Insert a property drawer at point.
12203 @end defun
12205 @defun org-entry-put-multivalued-property pom property &rest values
12206 Set PROPERTY at point-or-marker POM to VALUES.  VALUES should be a list of
12207 strings.  They will be concatenated, with spaces as separators.
12208 @end defun
12210 @defun org-entry-get-multivalued-property pom property
12211 Treat the value of the property PROPERTY as a whitespace-separated list of
12212 values and return the values as a list of strings.
12213 @end defun
12215 @defun org-entry-add-to-multivalued-property pom property value
12216 Treat the value of the property PROPERTY as a whitespace-separated list of
12217 values and make sure that VALUE is in this list.
12218 @end defun
12220 @defun org-entry-remove-from-multivalued-property pom property value
12221 Treat the value of the property PROPERTY as a whitespace-separated list of
12222 values and make sure that VALUE is @emph{not} in this list.
12223 @end defun
12225 @defun org-entry-member-in-multivalued-property pom property value
12226 Treat the value of the property PROPERTY as a whitespace-separated list of
12227 values and check if VALUE is in this list.
12228 @end defun
12230 @defopt org-property-allowed-value-functions
12231 Hook for functions supplying allowed values for specific.
12232 The functions must take a single argument, the name of the property, and
12233 return a flat list of allowed values.  If @samp{:ETC} is one of
12234 the values, use the values as completion help, but allow also other values
12235 to be entered.  The functions must return @code{nil} if they are not
12236 responsible for this property.
12237 @end defopt
12239 @node Using the mapping API,  , Using the property API, Hacking
12240 @section Using the mapping API
12241 @cindex API, for mapping
12242 @cindex mapping entries, API
12244 Org has sophisticated mapping capabilities to find all entries satisfying
12245 certain criteria.  Internally, this functionality is used to produce agenda
12246 views, but there is also an API that can be used to execute arbitrary
12247 functions for each or selected entries.  The main entry point for this API
12250 @defun org-map-entries func &optional match scope &rest skip
12251 Call FUNC at each headline selected by MATCH in SCOPE.
12253 FUNC is a function or a Lisp form.  The function will be called without
12254 arguments, with the cursor positioned at the beginning of the headline.
12255 The return values of all calls to the function will be collected and
12256 returned as a list.
12258 The call to FUNC will be wrapped into a save-excursion form, so FUNC
12259 does not need to preserve point.  After evaluation, the cursor will be
12260 moved to the end of the line (presumably of the headline of the
12261 processed entry) and search continues from there.  Under some
12262 circumstances, this may not produce the wanted results.  For example,
12263 if you have removed (e.g. archived) the current (sub)tree it could
12264 mean that the next entry will be skipped entirely.  In such cases, you
12265 can specify the position from where search should continue by making
12266 FUNC set the variable `org-map-continue-from' to the desired buffer
12267 position.
12269 MATCH is a tags/property/todo match as it is used in the agenda match view.
12270 Only headlines that are matched by this query will be considered during
12271 the iteration.  When MATCH is nil or t, all headlines will be
12272 visited by the iteration.
12274 SCOPE determines the scope of this command.  It can be any of:
12276 @example
12277 nil     @r{the current buffer, respecting the restriction if any}
12278 tree    @r{the subtree started with the entry at point}
12279 file    @r{the current buffer, without restriction}
12280 file-with-archives
12281         @r{the current buffer, and any archives associated with it}
12282 agenda  @r{all agenda files}
12283 agenda-with-archives
12284         @r{all agenda files with any archive files associated with them}
12285 (file1 file2 ...)
12286         @r{if this is a list, all files in the list will be scanned}
12287 @end example
12288 @noindent
12289 The remaining args are treated as settings for the skipping facilities of
12290 the scanner.  The following items can be given here:
12292 @vindex org-agenda-skip-function
12293 @example
12294 archive   @r{skip trees with the archive tag}
12295 comment   @r{skip trees with the COMMENT keyword}
12296 function or Lisp form
12297           @r{will be used as value for @code{org-agenda-skip-function},}
12298           @r{so whenever the function returns t, FUNC}
12299           @r{will not be called for that entry and search will}
12300           @r{continue from the point where the function leaves it}
12301 @end example
12302 @end defun
12304 The function given to that mapping routine can really do anything you like.
12305 It can use the property API (@pxref{Using the property API}) to gather more
12306 information about the entry, or in order to change metadata in the entry.
12307 Here are a couple of functions that might be handy:
12309 @defun org-todo &optional arg
12310 Change the TODO state of the entry, see the docstring of the functions for
12311 the many possible values for the argument ARG.
12312 @end defun
12314 @defun org-priority &optional action
12315 Change the priority of the entry, see the docstring of this function for the
12316 possible values for ACTION.
12317 @end defun
12319 @defun org-toggle-tag tag &optional onoff
12320 Toggle the tag TAG in the current entry.  Setting ONOFF to either @code{on}
12321 or @code{off} will not toggle tag, but ensure that it is either on or off.
12322 @end defun
12324 @defun org-promote
12325 Promote the current entry.
12326 @end defun
12328 @defun org-demote
12329 Demote the current entry.
12330 @end defun
12332 Here is a simple example that will turn all entries in the current file with
12333 a tag @code{TOMORROW} into TODO entries with the keyword @code{UPCOMING}.
12334 Entries in comment trees and in archive trees will be ignored.
12336 @lisp
12337 (org-map-entries
12338    '(org-todo "UPCOMING")
12339    "+TOMORROW" 'file 'archive 'comment)
12340 @end lisp
12342 The following example counts the number of entries with TODO keyword
12343 @code{WAITING}, in all agenda files.
12345 @lisp
12346 (length (org-map-entries t "/+WAITING" 'agenda))
12347 @end lisp
12349 @node MobileOrg, History and Acknowledgments, Hacking, Top
12350 @appendix MobileOrg
12351 @cindex iPhone
12352 @cindex MobileOrg
12354 @i{MobileOrg} is an application for the @i{iPhone/iPod Touch} series of
12355 devices, developed by Richard Moreland.  @i{MobileOrg} offers offline viewing
12356 and capture support for an Org-mode system rooted on a ``real'' computer.  It
12357 does also allow you to record changes to existing entries.  For information
12358 about @i{MobileOrg}, see @uref{http://mobileorg.ncogni.to/}).
12360 This appendix describes the support Org has for creating agenda views in a
12361 format that can be displayed by @i{MobileOrg}, and for integrating notes
12362 captured and changes made by @i{MobileOrg} into the main system.
12364 For changing tags and TODO states in MobileOrg, you should have set up the
12365 customization variables @code{org-todo-keywords} and @code{org-tags-alist} to
12366 cover all important tags and TODO keywords, even if individual files use only
12367 part of these.  MobileOrg will also offer you states and tags set up with
12368 in-buffer settings, but it will understand the logistics of TODO state
12369 @i{sets} (@pxref{Per-file keywords}) and @i{mutually exclusive} tags
12370 (@pxref{Setting tags}) only for those set in these variables.
12372 @menu
12373 * Setting up the staging area::  Where to interact with the mobile device
12374 * Pushing to MobileOrg::        Uploading Org files and agendas
12375 * Pulling from MobileOrg::      Integrating captured and flagged items
12376 @end menu
12378 @node Setting up the staging area, Pushing to MobileOrg, MobileOrg, MobileOrg
12379 @section Setting up the staging area
12381 Org-mode has commands to prepare a directory with files for @i{MobileOrg},
12382 and to read captured notes from there.  If Emacs can directly write to the
12383 WebDAV directory@footnote{If you are using a public server, you might prefer
12384 to encrypt the files on the server.  This can be done with Org-mode 6.35 and
12385 MobileOrg 1.2.  On the Emacs side, configure the variables
12386 @code{org-mobile-use-encryption} and @code{org-mobile-encryption-password}.}
12387 accessed by @i{MobileOrg}, just point to this directory using the variable
12388 @code{org-mobile-directory}.  Using the @file{tramp} method,
12389 @code{org-mobile-directory} may point to a remote directory accessible
12390 through, for example, @file{ssh/scp}:
12392 @smallexample
12393 (setq org-mobile-directory "/scpc:user@@remote.host:org/webdav/")
12394 @end smallexample
12396 If Emacs cannot access the WebDAV directory directly using a @file{tramp}
12397 method, or you prefer to maintain a local copy, you can use a local directory
12398 for staging.  Other means must then be used to keep this directory in sync
12399 with the WebDAV directory.  In the following example, files are staged in
12400 @file{~/stage}, and Org-mode hooks take care of moving files to and from the
12401 WebDAV directory using @file{scp}.
12403 @smallexample
12404 (setq org-mobile-directory "~/stage/")
12405 (add-hook 'org-mobile-post-push-hook
12406   (lambda () (shell-command "scp -r ~/stage/* user@@wdhost:mobile/")))
12407 (add-hook 'org-mobile-pre-pull-hook
12408   (lambda () (shell-command "scp user@@wdhost:mobile/mobileorg.org ~/stage/ ")))
12409 (add-hook 'org-mobile-post-pull-hook
12410   (lambda () (shell-command "scp ~/stage/mobileorg.org user@@wdhost:mobile/")))
12411 @end smallexample
12413 @node Pushing to MobileOrg, Pulling from MobileOrg, Setting up the staging area, MobileOrg
12414 @section Pushing to MobileOrg
12416 This operation copies all files currently listed in @code{org-mobile-files}
12417 to the directory @code{org-mobile-directory}.  By default this list contains
12418 all agenda files (as listed in @code{org-agenda-files}), but additional files
12419 can be included by customizing @code{org-mobiles-files}.  File names will be
12420 staged with path relative to @code{org-directory}, so all files should be
12421 inside this directory.  The push operation also creates (in the same
12422 directory) a special Org file @file{agendas.org}.  This file is an Org-mode
12423 style outline, containing every custom agenda view defined by the user.
12424 While creating the agendas, Org-mode will force@footnote{See the variable
12425 @code{org-mobile-force-id-on-agenda-items}.}  an ID property on all entries
12426 referenced by the agendas, so that these entries can be uniquely identified
12427 if @i{MobileOrg} flags them for further action.  Finally, Org writes the file
12428 @file{index.org}, containing links to all other files.  If @i{MobileOrg} is
12429 configured to request this file from the WebDAV server, all agendas and Org
12430 files will be downloaded to the device.  To speed up the download, MobileOrg
12431 will only read files whose checksums@footnote{stored automatically in the
12432 file @file{checksums.dat}} have changed.
12434 @node Pulling from MobileOrg,  , Pushing to MobileOrg, MobileOrg
12435 @section Pulling from MobileOrg
12437 When @i{MobileOrg} synchronizes with the WebDAV server, it not only pulls the
12438 Org files for viewing.  It also appends captured entries and pointers to
12439 flagged and changed entries to the file @file{mobileorg.org} on the server.
12440 Org has a @emph{pull} operation that integrates this information into an
12441 inbox file and operates on the pointers to flagged entries.  Here is how it
12442 works:
12444 @enumerate
12445 @item
12446 Org moves all entries found in
12447 @file{mobileorg.org}@footnote{@file{mobileorg.org} will be empty after this
12448 operation.} and appends them to the file pointed to by the variable
12449 @code{org-mobile-inbox-for-pull}.  Each captured entry and each editing event
12450 will be a top-level entry in the inbox file.
12451 @item
12452 After moving the entries, Org will attempt to implement the changes made in
12453 @i{MobileOrg}.  Some changes are applied directly and without user
12454 interaction.  Examples are all changes to tags, TODO state, headline and body
12455 text that can be cleanly applied.  Entries that have been flagged for further
12456 action will receive a tag @code{:FLAGGED:}, so that they can be easily found
12457 again.  When there is a problem finding an entry or applying the change, the
12458 pointer entry will remain in the inbox and will be marked with an error
12459 message.  You need to later resolve these issues by hand.
12460 @item
12461 Org will then generate an agenda view with all flagged entries.  The user
12462 should then go through these entries and do whatever actions are necessary.
12463 If a note has been stored while flagging an entry in @i{MobileOrg}, that note
12464 will be displayed in the echo area when the cursor is on the corresponding
12465 agenda line.
12466 @table @kbd
12467 @kindex ?
12468 @item ?
12469 Pressing @kbd{?} in that special agenda will display the full flagging note in
12470 another window and also push it onto the kill ring.  So you could use @kbd{?
12471 z C-y C-c C-c} to store that flagging note as a normal note in the entry.
12472 Pressing @kbd{?} twice in succession will offer to remove the
12473 @code{:FLAGGED:} tag along with the recorded flagging note (which is stored
12474 in a property).  In this way you indicate, that the intended processing for
12475 this flagged entry is finished.
12476 @end table
12477 @end enumerate
12479 @kindex C-c a ?
12480 If you are not able to process all flagged entries directly, you can always
12481 return to this agenda view using @kbd{C-c a ?}.  Note, however, that there is
12482 a subtle difference.  The view created automatically by @kbd{M-x
12483 org-mobile-pull RET} is guaranteed to search all files that have been
12484 addressed by the last pull.  This might include a file that is not currently
12485 in your list of agenda files.  If you later use @kbd{C-c a ?} to regenerate
12486 the view, only the current agenda files will be searched.
12488 @node History and Acknowledgments, Main Index, MobileOrg, Top
12489 @appendix History and Acknowledgments
12490 @cindex acknowledgements
12491 @cindex history
12492 @cindex thanks
12494 Org was born in 2003, out of frustration over the user interface
12495 of the Emacs Outline mode.  I was trying to organize my notes and
12496 projects, and using Emacs seemed to be the natural way to go.  However,
12497 having to remember eleven different commands with two or three keys per
12498 command, only to hide and show parts of the outline tree, that seemed
12499 entirely unacceptable to me.  Also, when using outlines to take notes, I
12500 constantly wanted to restructure the tree, organizing it parallel to my
12501 thoughts and plans.  @emph{Visibility cycling} and @emph{structure
12502 editing} were originally implemented in the package
12503 @file{outline-magic.el}, but quickly moved to the more general
12504 @file{org.el}.  As this environment became comfortable for project
12505 planning, the next step was adding @emph{TODO entries}, basic
12506 @emph{timestamps}, and @emph{table support}.  These areas highlighted the two main
12507 goals that Org still has today: to be a new, outline-based,
12508 plain text mode with innovative and intuitive editing features, and to
12509 incorporate project planning functionality directly into a notes file.
12511 A special thanks goes to @i{Bastien Guerry} who has not only written a large
12512 number of extensions to Org (most of them integrated into the core by now),
12513 but who has also helped in the development and maintenance of Org so much that he
12514 should be considered the main co-contributor to this package.
12516 Since the first release, literally thousands of emails to me or to
12517 @email{emacs-orgmode@@gnu.org} have provided a constant stream of bug
12518 reports, feedback, new ideas, and sometimes patches and add-on code.
12519 Many thanks to everyone who has helped to improve this package.  I am
12520 trying to keep here a list of the people who had significant influence
12521 in shaping one or more aspects of Org.  The list may not be
12522 complete, if I have forgotten someone, please accept my apologies and
12523 let me know.
12525 @itemize @bullet
12527 @item
12528 @i{Russel Adams} came up with the idea for drawers.
12529 @item
12530 @i{Thomas Baumann} wrote @file{org-bbdb.el} and @file{org-mhe.el}.
12531 @item
12532 @i{Christophe Bataillon} created the great unicorn logo that we use on the
12533 Org-mode website.
12534 @item
12535 @i{Alex Bochannek} provided a patch for rounding timestamps.
12536 @item
12537 @i{Jan Böcker} wrote @file{org-docview.el}.
12538 @item
12539 @i{Brad Bozarth} showed how to pull RSS feed data into Org-mode files.
12540 @item
12541 @i{Tom Breton} wrote @file{org-choose.el}.
12542 @item
12543 @i{Charles Cave}'s suggestion sparked the implementation of templates
12544 for Remember.
12545 @item
12546 @i{Pavel Chalmoviansky} influenced the agenda treatment of items with
12547 specified time.
12548 @item
12549 @i{Gregory Chernov} patched support for Lisp forms into table
12550 calculations and improved XEmacs compatibility, in particular by porting
12551 @file{nouline.el} to XEmacs.
12552 @item
12553 @i{Sacha Chua} suggested copying some linking code from Planner.
12554 @item
12555 @i{Baoqiu Cui} contributed the DocBook exporter.
12556 @item
12557 @i{Dan Davison} wrote (together with @i{Eric Schulte}) Org Babel.
12558 @item
12559 @i{Eddward DeVilla} proposed and tested checkbox statistics.  He also
12560 came up with the idea of properties, and that there should be an API for
12561 them.
12562 @item
12563 @i{Nick Dokos} tracked down several nasty bugs.
12564 @item
12565 @i{Kees Dullemond} used to edit projects lists directly in HTML and so
12566 inspired some of the early development, including HTML export.  He also
12567 asked for a way to narrow wide table columns.
12568 @item
12569 @i{Christian Egli} converted the documentation into Texinfo format,
12570 patched CSS formatting into the HTML exporter, and inspired the agenda.
12571 @item
12572 @i{David Emery} provided a patch for custom CSS support in exported
12573 HTML agendas.
12574 @item
12575 @i{Nic Ferrier} contributed mailcap and XOXO support.
12576 @item
12577 @i{Miguel A. Figueroa-Villanueva} implemented hierarchical checkboxes.
12578 @item
12579 @i{John Foerch} figured out how to make incremental search show context
12580 around a match in a hidden outline tree.
12581 @item
12582 @i{Raimar Finken} wrote @file{org-git-line.el}.
12583 @item
12584 @i{Mikael Fornius} works as a mailing list moderator.
12585 @item
12586 @i{Austin Frank} works as a mailing list moderator.
12587 @item
12588 @i{Niels Giesen} had the idea to automatically archive DONE trees.
12589 @item
12590 @i{Bastien Guerry} wrote the La@TeX{} exporter and @file{org-bibtex.el}, and
12591 has been prolific with patches, ideas, and bug reports.
12592 @item
12593 @i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
12594 @item
12595 @i{Bernt Hansen} has driven much of the support for auto-repeating tasks,
12596 task state change logging, and the clocktable.  His clear explanations have
12597 been critical when we started to adopt the Git version control system.
12598 @item
12599 @i{Manuel Hermenegildo} has contributed various ideas, small fixes and
12600 patches.
12601 @item
12602 @i{Phil Jackson} wrote @file{org-irc.el}.
12603 @item
12604 @i{Scott Jaderholm} proposed footnotes, control over whitespace between
12605 folded entries, and column view for properties.
12606 @item
12607 @i{Tokuya Kameshima} wrote @file{org-wl.el} and @file{org-mew.el}.
12608 @item
12609 @i{Shidai Liu} ("Leo") asked for embedded La@TeX{} and tested it.  He also
12610 provided frequent feedback and some patches.
12611 @item
12612 @i{Matt Lundin} has proposed last-row references for table formulas and named
12613 invisible anchors.  He has also worked a lot on the FAQ.
12614 @item
12615 @i{Jason F. McBrayer} suggested agenda export to CSV format.
12616 @item
12617 @i{Max Mikhanosha} came up with the idea of refiling.
12618 @item
12619 @i{Dmitri Minaev} sent a patch to set priority limits on a per-file
12620 basis.
12621 @item
12622 @i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
12623 happy.
12624 @item
12625 @i{Richard Moreland} wrote @i{MobileOrg} for the iPhone.
12626 @item
12627 @i{Rick Moynihan} proposed allowing multiple TODO sequences in a file
12628 and being able to quickly restrict the agenda to a subtree.
12629 @item
12630 @i{Todd Neal} provided patches for links to Info files and Elisp forms.
12631 @item
12632 @i{Greg Newman} refreshed the unicorn logo into its current form.
12633 @item
12634 @i{Tim O'Callaghan} suggested in-file links, search options for general
12635 file links, and TAGS.
12636 @item
12637 @i{Takeshi Okano} translated the manual and David O'Toole's tutorial
12638 into Japanese.
12639 @item
12640 @i{Oliver Oppitz} suggested multi-state TODO items.
12641 @item
12642 @i{Scott Otterson} sparked the introduction of descriptive text for
12643 links, among other things.
12644 @item
12645 @i{Pete Phillips} helped during the development of the TAGS feature, and
12646 provided frequent feedback.
12647 @item
12648 @i{Martin Pohlack} provided the code snippet to bundle character insertion
12649 into bundles of 20 for undo.
12650 @item
12651 @i{T.V. Raman} reported bugs and suggested improvements.
12652 @item
12653 @i{Matthias Rempe} (Oelde) provided ideas, Windows support, and quality
12654 control.
12655 @item
12656 @i{Paul Rivier} provided the basic implementation of named footnotes.  He
12657 also acted as mailing list moderator for some time.
12658 @item
12659 @i{Kevin Rogers} contributed code to access VM files on remote hosts.
12660 @item
12661 @i{Sebastian Rose} wrote @file{org-info.js}, a Java script for displaying
12662 webpages derived from Org using an Info-like or a folding interface with
12663 single-key navigation, and make lots of improvements to the HTML exporter.
12664 @item
12665 @i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a
12666 conflict with @file{allout.el}.
12667 @item
12668 @i{Jason Riedy} generalized the send-receive mechanism for Orgtbl tables with
12669 extensive patches.
12670 @item
12671 @i{Philip Rooke} created the Org reference card, provided lots
12672 of feedback, developed and applied standards to the Org documentation.
12673 @item
12674 @i{Christian Schlauer} proposed angular brackets around links, among
12675 other things.
12676 @item
12677 @i{Eric Schulte} wrote @file{org-plot.el} and (together with @i{Dan Davison})
12678 Org Babel, and contributed various patches, small features and modules.
12679 @item
12680 @i{Paul Sexton} wrote @file{org-ctags.el}.
12681 @item
12682 Linking to VM/BBDB/Gnus was first inspired by @i{Tom Shannon}'s
12683 @file{organizer-mode.el}.
12684 @item
12685 @i{Ilya Shlyakhter} proposed the Archive Sibling, line numbering in literal
12686 examples, and remote highlighting for referenced code lines.
12687 @item
12688 @i{Stathis Sideris} wrote the @file{ditaa.jar} ASCII to PNG converter that is
12689 now packaged into Org's @file{contrib} directory.
12690 @item
12691 @i{Daniel Sinder} came up with the idea of internal archiving by locking
12692 subtrees.
12693 @item
12694 @i{Dale Smith} proposed link abbreviations.
12695 @item
12696 @i{James TD Smith} has contributed a large number of patches for useful
12697 tweaks and features.
12698 @item
12699 @i{Adam Spiers} asked for global linking commands, inspired the link
12700 extension system, added support for mairix, and proposed the mapping API.
12701 @item
12702 @i{Ulf Stegemann} created the table to translate special symbols to HTML,
12703 LaTeX, UTF-8, Latin-1 and ASCII.
12704 @item
12705 @i{Andy Stewart} contributed code to @file{org-w3m.el}, to copy HTML content
12706 with links transformation to Org syntax.
12707 @item
12708 @i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
12709 chapter about publishing.
12710 @item
12711 @i{Stefan Vollmar} organized a video-recorded talk at the
12712 Max-Planck-Institute for Neurology.  He also inspired the creation of a
12713 concept index for HTML export.
12714 @item
12715 @i{J@"urgen Vollmer} contributed code generating the table of contents
12716 in HTML output.
12717 @item
12718 @i{Samuel Wales} has provided important feedback and bug reports.
12719 @item
12720 @i{Chris Wallace} provided a patch implementing the @samp{QUOTE}
12721 keyword.
12722 @item
12723 @i{David Wainberg} suggested archiving, and improvements to the linking
12724 system.
12725 @item
12726 @i{John Wiegley} wrote @file{emacs-wiki.el}, @file{planner.el}, and
12727 @file{muse.el}, which have some overlap with Org.  Initially the development
12728 of Org was fully independent because I was not aware of the existence of
12729 these packages.  But with time I have occasionally looked at John's code and
12730 learned a lot from it.  John has also contributed a number of great ideas and
12731 patches directly to Org, including the attachment system
12732 (@file{org-attach.el}), integration with Apple Mail
12733 (@file{org-mac-message.el}), hierarchical dependencies of TODO items, habit
12734 tracking (@file{org-habits.el}).
12735 @item
12736 @i{Carsten Wimmer} suggested some changes and helped fix a bug in
12737 linking to Gnus.
12738 @item
12739 @i{Roland Winkler} requested additional key bindings to make Org
12740 work on a tty.
12741 @item
12742 @i{Piotr Zielinski} wrote @file{org-mouse.el}, proposed agenda blocks
12743 and contributed various ideas and code snippets.
12744 @end itemize
12747 @node Main Index, Key Index, History and Acknowledgments, Top
12748 @unnumbered Concept Index
12750 @printindex cp
12752 @node Key Index, Variable Index, Main Index, Top
12753 @unnumbered Key Index
12755 @printindex ky
12757 @node Variable Index,  , Key Index, Top
12758 @unnumbered Variable Index
12760 This is not a complete index of variables and faces, only the ones that are
12761 mentioned in the manual.  For a more complete list, use @kbd{M-x
12762 org-customize @key{RET}} and then click yourself through the tree.
12764 @printindex vr
12766 @bye
12768 @ignore
12769         arch-tag: 7893d1Fe-cc57-4d13-b5e5-f494a1CBC7ac
12770 @end ignore
12772 @c Local variables:
12773 @c ispell-local-dictionary: "en_US-w_accents"
12774 @c ispell-local-pdict: "./.aspell.org.pws"
12775 @c fill-column: 77
12776 @c End:
12779 @c  LocalWords:  webdavhost pre