Release 5.16a
[org-mode/org-tableheadings.git] / org.texi
blobad2a993f24186c2c210875225f0523e11cd6cba6
1 ]\input texinfo
2 @c %**start of header
3 @setfilename ../../info/org
4 @settitle Org Mode Manual
6 @set VERSION 5.16a
7 @set DATE December 2007
9 @dircategory Emacs
10 @direntry
11 * Org Mode: (org).      Outline-based notes management and organizer
12 @end direntry
14 @c Version and Contact Info
15 @set MAINTAINERSITE @uref{http://orgmode.org,maintainers webpage}
16 @set AUTHOR Carsten Dominik
17 @set MAINTAINER Carsten Dominik
18 @set MAINTAINEREMAIL @email{carsten at orgmode dot org}
19 @set MAINTAINERCONTACT @uref{mailto:carsten at orgmode dot org,contact the maintainer}
20 @c %**end of header
21 @finalout
23 @c Macro definitions
25 @c Subheadings inside a table.
26 @macro tsubheading{text}
27 @ifinfo
28 @subsubheading \text\
29 @end ifinfo
30 @ifnotinfo
31 @item @b{\text\}
32 @end ifnotinfo
33 @end macro
35 @copying
36 This manual is for Org-mode (version @value{VERSION}).
38 Copyright @copyright{} 2004, 2005, 2006, 2007 Free Software Foundation
40 @quotation
41 Permission is granted to copy, distribute and/or modify this document
42 under the terms of the GNU Free Documentation License, Version 1.1 or
43 any later version published by the Free Software Foundation; with no
44 Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
45 and with the Back-Cover Texts as in (a) below.  A copy of the
46 license is included in the section entitled ``GNU Free Documentation
47 License.''
49 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
50 this GNU Manual, like GNU software.  Copies published by the Free
51 Software Foundation raise funds for GNU development.''
52 @end quotation
53 @end copying
55 @titlepage
56 @title Org Mode Manual
58 @subtitle Release @value{VERSION}
59 @author by Carsten Dominik
61 @c The following two commands start the copyright page.
62 @page
63 @vskip 0pt plus 1filll
64 @insertcopying
65 @end titlepage
67 @c Output the table of contents at the beginning.
68 @contents
70 @ifnottex
71 @node Top, Introduction, (dir), (dir)
72 @top Org Mode Manual
74 @insertcopying
75 @end ifnottex
77 @menu
78 * Introduction::                Getting started
79 * Document structure::          A tree works like your brain
80 * Tables::                      Pure magic for quick formatting
81 * Hyperlinks::                  Notes in context
82 * TODO items::                  Every tree branch can be a TODO item
83 * Tags::                        Tagging headlines and matching sets of tags
84 * Properties and columns::      Storing information about an entry
85 * Dates and times::             Making items useful for planning
86 * Remember::                    Quickly adding nodes to the outline tree
87 * Agenda views::                Collecting information into views
88 * Embedded LaTeX::              LaTeX fragments and formulas
89 * Exporting::                   Sharing and publishing of notes
90 * Publishing::                  Create a web site of linked Org-mode files
91 * Miscellaneous::               All the rest which did not fit elsewhere
92 * Extensions and Hacking::      It is possible to write add-on code
93 * History and Acknowledgments::  How Org-mode came into being 
94 * Index::                       The fast road to specific information
95 * Key Index::                   Key bindings and where they are described
97 @detailmenu
98  --- The Detailed Node Listing ---
100 Introduction
102 * Summary::                     Brief summary of what Org-mode does
103 * Installation::                How to install a downloaded version of Org-mode
104 * Activation::                  How to activate Org-mode for certain buffers.
105 * Feedback::                    Bug reports, ideas, patches etc.
106 * Conventions::                 Type-setting conventions in the manual
108 Document Structure
110 * Outlines::                    Org-mode is based on outline-mode
111 * Headlines::                   How to typeset org-tree headlines
112 * Visibility cycling::          Show and hide, much simplified
113 * Motion::                      Jumping to other headlines
114 * Structure editing::           Changing sequence and level of headlines
115 * Archiving::                   Move done task trees to a different place
116 * Sparse trees::                Matches embedded in context
117 * Plain lists::                 Additional structure within an entry
118 * Drawers::                     Tucking stuff away
119 * orgstruct-mode::              Structure editing outside Org-mode
121 Archiving
123 * ARCHIVE tag::                 Marking a tree as inactive
124 * Moving subtrees::             Moving a tree to an archive file
126 Tables
128 * Built-in table editor::       Simple tables
129 * Narrow columns::              Stop wasting space in tables   
130 * Column groups::               Grouping to trigger vertical lines
131 * orgtbl-mode::                 The table editor as minor mode
132 * The spreadsheet::             The table editor has spreadsheet capabilities.
134 The spreadsheet
136 * References::                  How to refer to another field or range
137 * Formula syntax for Calc::     Using Calc to compute stuff
138 * Formula syntax for Lisp::     Writing formulas in Emacs Lisp
139 * Field formulas::              Formulas valid for a single field
140 * Column formulas::             Formulas valid for an entire column
141 * Editing and debugging formulas::  Fixing formulas
142 * Updating the table::          Recomputing all dependent fields
143 * Advanced features::           Field names, parameters and automatic recalc
145 Hyperlinks
147 * Link format::                 How links in Org-mode are formatted
148 * Internal links::              Links to other places in the current file
149 * External links::              URL-like links to the world
150 * Handling links::              Creating, inserting and following
151 * Using links outside Org-mode::  Linking from my C source code?
152 * Link abbreviations::          Shortcuts for writing complex links
153 * Search options::              Linking to a specific location
154 * Custom searches::             When the default search is not enough
156 Internal links
158 * Radio targets::               Make targets trigger links in plain text.
160 TODO items
162 * TODO basics::                 Marking and displaying TODO entries
163 * TODO extensions::             Workflow and assignments
164 * Progress logging::            Dates and notes for progress
165 * Priorities::                  Some things are more important than others
166 * Breaking down tasks::         Splitting a task into manageable pieces
167 * Checkboxes::                  Tick-off lists
169 Extended use of TODO keywords
171 * Workflow states::             From TODO to DONE in steps
172 * TODO types::                  I do this, Fred the rest
173 * Multiple sets in one file::   Mixing it all, and still finding your way
174 * Fast access to TODO states::  Single letter selection of a state
175 * Per file keywords::           Different files, different requirements
176 * Faces for TODO keywords::     Highlighting states
178 Progress Logging
180 * Closing items::               When was this entry marked DONE?
181 * Tracking TODO state changes::  When did the status change?
183 Tags
185 * Tag inheritance::             Tags use the tree structure of the outline
186 * Setting tags::                How to assign tags to a headline
187 * Tag searches::                Searching for combinations of tags
189 Properties and Columns
191 * Property syntax::             How properties are spelled out
192 * Special properties::          Access to other Org-mode features
193 * Property searches::           Matching property values
194 * Property inheritance::        Passing values down the tree
195 * Column view::                 Tabular viewing and editing
196 * Property API::                Properties for Lisp programmers
198 Column View
200 * Defining columns::            The COLUMNS format property
201 * Using column view::           How to create and use column view
202 * Capturing Column View::       A dynamic block for column view
204 Defining Columns
206 * Scope of column definitions::  Where defined, where valid?
207 * Column attributes::           Appearance and content of a column
209 Dates and Times
211 * Time stamps::                 Assigning a time to a tree entry
212 * Creating timestamps::         Commands which insert timestamps
213 * Deadlines and scheduling::    Planning your work
214 * Clocking work time::          
216 Creating timestamps
218 * The date/time prompt::        How org-mode helps you entering date and time
219 * Custom time format::          Making dates look differently
221 Deadlines and Scheduling
223 * Inserting deadline/schedule::  Planning items
224 * Repeated tasks::              Items that show up again and again
226 Remember
228 * Setting up remember::         Some code for .emacs to get things going
229 * Remember templates::          Define the outline of different note types
230 * Storing notes::               Directly get the note to where it belongs
231 * Refiling notes::              Moving a note or task to a project
233 Agenda Views
235 * Agenda files::                Files being searched for agenda information
236 * Agenda dispatcher::           Keyboard access to agenda views
237 * Built-in agenda views::       What is available out of the box?
238 * Presentation and sorting::    How agenda items are prepared for display
239 * Agenda commands::             Remote editing of org trees
240 * Custom agenda views::         Defining special searches and views
242 The built-in agenda views
244 * Weekly/Daily agenda::         The calendar page with current tasks
245 * Global TODO list::            All unfinished action items
246 * Matching tags and properties::  Structured information with fine-tuned search
247 * Timeline::                    Time-sorted view for single file
248 * Stuck projects::              Find projects you need to review
250 Presentation and sorting
252 * Categories::                  Not all tasks are equal
253 * Time-of-day specifications::  How the agenda knows the time
254 * Sorting of agenda items::     The order of things
256 Custom agenda views
258 * Storing searches::            Type once, use often
259 * Block agenda::                All the stuff you need in a single buffer
260 * Setting Options::             Changing the rules
261 * Exporting Agenda Views::      Writing agendas to files.
262 * Extracting Agenda Information for other programs::  
264 Embedded LaTeX
266 * Math symbols::                TeX macros for symbols and Greek letters
267 * Subscripts and Superscripts::  Simple syntax for raising/lowering text
268 * LaTeX fragments::             Complex formulas made easy
269 * Processing LaTeX fragments::  Previewing LaTeX processing
270 * CDLaTeX mode::                Speed up entering of formulas
272 Exporting
274 * ASCII export::                Exporting to plain ASCII
275 * HTML export::                 Exporting to HTML
276 * LaTeX export::                Exporting to LaTeX
277 * XOXO export::                 Exporting to XOXO
278 * iCalendar export::            Exporting in iCalendar format
279 * Text interpretation::         How the exporter looks at the file
281 HTML export
283 * HTML Export commands::        How to invoke LaTeX export
284 * Quoting HTML tags::           Using direct HTML in Org-mode
285 * Links::                       Transformation of links for HTML
286 * Images::                      How to include images
287 * CSS support::                 Changing the appearence of the output
289 LaTeX export
291 * LaTeX export commands::       How to invoke LaTeX export
292 * Quoting LaTeX code::          Incorporating literal LaTeX code
293 * Sectioning structure::        
295 Text interpretation by the exporter
297 * Comment lines::               Some lines will not be exported
298 * Initial text::                Text before the first headline
299 * Footnotes::                   Numbers like [1]
300 * Quoted examples::             Inserting quoted chnuks of text            
301 * Enhancing text::              Subscripts, symbols and more
302 * Export options::              How to influence the export settings
304 Publishing
306 * Configuration::               Defining projects
307 * Sample configuration::        Example projects
308 * Triggering publication::      Publication commands
310 Configuration
312 * Project alist::               The central configuration variable
313 * Sources and destinations::    From here to there
314 * Selecting files::             What files are part of the project?
315 * Publishing action::           Setting the function doing the publishing
316 * Publishing options::          Tweaking HTML export
317 * Publishing links::            Which links keep working after publishing?
318 * Project page index::          Publishing a list of project files
320 Sample configuration
322 * Simple example::              One-component publishing
323 * Complex example::             A multi-component publishing example
325 Miscellaneous
327 * Completion::                  M-TAB knows what you need
328 * Customization::               Adapting Org-mode to your taste
329 * In-buffer settings::          Overview of the #+KEYWORDS
330 * The very busy C-c C-c key::   When in doubt, press C-c C-c
331 * Clean view::                  Getting rid of leading stars in the outline
332 * TTY keys::                    Using Org-mode on a tty
333 * Interaction::                 Other Emacs packages
334 * Bugs::                        Things which do not work perfectly
336 Interaction with other packages
338 * Cooperation::                 Packages Org-mode cooperates with
339 * Conflicts::                   Packages that lead to conflicts
341 Extensions, Hooks and Hacking
343 * Extensions::                  Existing 3rd-part extensions
344 * Adding hyperlink types::      New custom link types
345 * Tables in arbitrary syntax::  Orgtbl for LaTeX and other programs
346 * Dynamic blocks::              Automatically filled blocks
347 * Special agenda views::        Customized views
348 * Using the property API::      Writing programs that use entry properties
350 Tables and Lists in arbitrary syntax
352 * Radio tables::                Sending and receiving
353 * A LaTeX example::             Step by step, almost a tutorial
354 * Translator functions::        Copy and modify
355 * Radio lists::                 Doing the same for lists.
357 @end detailmenu
358 @end menu
360 @node Introduction, Document structure, Top, Top
361 @chapter Introduction
362 @cindex introduction
364 @menu
365 * Summary::                     Brief summary of what Org-mode does
366 * Installation::                How to install a downloaded version of Org-mode
367 * Activation::                  How to activate Org-mode for certain buffers.
368 * Feedback::                    Bug reports, ideas, patches etc.
369 * Conventions::                 Type-setting conventions in the manual
370 @end menu
372 @node Summary, Installation, Introduction, Introduction
373 @section Summary
374 @cindex summary
376 Org-mode is a mode for keeping notes, maintaining TODO lists, and doing
377 project planning with a fast and effective plain-text system.
379 Org-mode develops organizational tasks around NOTES files that contain
380 lists or information about projects as plain text.  Org-mode is
381 implemented on top of outline-mode, which makes it possible to keep the
382 content of large files well structured.  Visibility cycling and
383 structure editing help to work with the tree.  Tables are easily created
384 with a built-in table editor.  Org-mode supports TODO items, deadlines,
385 time stamps, and scheduling.  It dynamically compiles entries into an
386 agenda that utilizes and smoothly integrates much of the Emacs calendar
387 and diary.  Plain text URL-like links connect to websites, emails,
388 Usenet messages, BBDB entries, and any files related to the projects.
389 For printing and sharing of notes, an Org-mode file can be exported as a
390 structured ASCII file, as HTML, or (todo and agenda items only) as an
391 iCalendar file.  It can also serve as a publishing tool for a set of
392 linked webpages.
394 An important design aspect that distinguishes Org-mode from for example
395 Planner/Muse is that it encourages to store every piece of information
396 only once.  In Planner, you have project pages, day pages and possibly
397 other files, duplicating some information such as tasks.  In Org-mode,
398 you only have notes files.  In your notes you mark entries as tasks,
399 label them with tags and timestamps.  All necessary lists like a
400 schedule for the day, the agenda for a meeting, tasks lists selected by
401 tags etc are created dynamically when you need them.
403 Org-mode keeps simple things simple.  When first fired up, it should
404 feel like a straightforward, easy to use outliner.  Complexity is not
405 imposed, but a large amount of functionality is available when you need
406 it.  Org-mode is a toolbox and can be used in different ways, for
407 example as:
409 @example
410 @r{@bullet{} outline extension with visibility cycling and structure editing}
411 @r{@bullet{} ASCII system and table editor for taking structured notes}
412 @r{@bullet{} ASCII table editor with spreadsheet-like capabilities}
413 @r{@bullet{} TODO list editor}
414 @r{@bullet{} full agenda and planner with deadlines and work scheduling}
415 @r{@bullet{} environment to implement David Allen's GTD system}
416 @r{@bullet{} a basic database application}
417 @r{@bullet{} simple hypertext system, with HTML and LaTeX export}
418 @r{@bullet{} publishing tool to create a set of interlinked webpages}
419 @end example
421 Org-mode's automatic, context sensitive table editor with spreadsheet
422 capabilities can be integrated into any major mode by activating the
423 minor Orgtbl-mode.  Using a translation step, it can be used to maintain
424 tables in arbitrary file types, for example in La@TeX{}.  The structure
425 editing and list creation capabilities can be used outside Org-mode with
426 the minor Orgstruct-mode.
428 @cindex FAQ
429 There is a website for Org-mode which provides links to the newest
430 version of Org-mode, as well as additional information, frequently asked
431 questions (FAQ), links to tutorials etc.  This page is located at
432 @uref{http://orgmode.org}.
434 @page
437 @node Installation, Activation, Summary, Introduction
438 @section Installation
439 @cindex installation
440 @cindex XEmacs
442 @b{Important:} @i{If Org-mode is part of the Emacs distribution or an
443 XEmacs package, please skip this section and go directly to
444 @ref{Activation}.}
446 If you have downloaded Org-mode from the Web, you must take the
447 following steps to install it: Go into the Org-mode distribution
448 directory and edit the top section of the file @file{Makefile}.  You
449 must set the name of the Emacs binary (likely either @file{emacs} or
450 @file{xemacs}), and the paths to the directories where local Lisp and
451 Info files are kept.  If you don't have access to the system-wide
452 directories, create your own two directories for these files, enter them
453 into the Makefile, and make sure Emacs finds the Lisp files by adding
454 the following line to @file{.emacs}:
456 @example
457 (setq load-path (cons "~/path/to/lispdir" load-path))
458 @end example
460 @b{XEmacs users now need to install the file @file{noutline.el} from
461 the @file{xemacs} subdirectory of the Org-mode distribution.  Use the
462 command:}
464 @example
465 @b{make install-noutline}
466 @end example
468 @noindent Now byte-compile and install the Lisp files with the shell
469 commands:
471 @example
472 make
473 make install
474 @end example
476 @noindent If you want to install the info documentation, use this command:
478 @example
479 make install-info
480 @end example
482 @noindent Then add to @file{.emacs}:
484 @lisp
485 ;; This line only if org-mode is not part of the X/Emacs distribution.
486 (require 'org-install)
487 @end lisp
489 @node Activation, Feedback, Installation, Introduction
490 @section Activation
491 @cindex activation
492 @cindex autoload
493 @cindex global keybindings
494 @cindex keybindings, global
496 @iftex
497 @b{Important:} @i{If you use copy-and-paste to copy lisp code from the
498 PDF documentation as viewed by Acrobat reader to your .emacs file, the
499 single quote character comes out incorrectly and the code will not work.
500 You need to fix the single quotes by hand, or copy from Info
501 documentation.}
502 @end iftex
504 Add the following lines to your @file{.emacs} file.  The last two lines
505 define @emph{global} keys for the commands @command{org-store-link} and
506 @command{org-agenda} - please choose suitable keys yourself.
508 @lisp
509 ;; The following lines are always needed.  Choose your own keys.
510 (add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
511 (global-set-key "\C-cl" 'org-store-link)
512 (global-set-key "\C-ca" 'org-agenda)
513 @end lisp
515 Furthermore, you must activate @code{font-lock-mode} in org-mode
516 buffers, because significant functionality depends on font-locking being
517 active.  You can do this with either one of the following two lines
518 (XEmacs user must use the second option):
519 @lisp
520 (global-font-lock-mode 1)                     ; for all buffers
521 (add-hook 'org-mode-hook 'turn-on-font-lock)  ; org-mode buffers only
522 @end lisp
524 @cindex org-mode, turning on
525 With this setup, all files with extension @samp{.org} will be put
526 into Org-mode.  As an alternative, make the first line of a file look
527 like this:
529 @example
530 MY PROJECTS    -*- mode: org; -*-
531 @end example
533 @noindent which will select Org-mode for this buffer no matter what
534 the file's name is.  See also the variable
535 @code{org-insert-mode-line-in-empty-file}.
537 @node Feedback, Conventions, Activation, Introduction
538 @section Feedback
539 @cindex feedback
540 @cindex bug reports
541 @cindex maintainer
542 @cindex author
544 If you find problems with Org-mode, or if you have questions, remarks,
545 or ideas about it, please contact the maintainer @value{MAINTAINER} at
546 @value{MAINTAINEREMAIL}.
548 For bug reports, please provide as much information as possible,
549 including the version information of Emacs (@kbd{C-h v emacs-version
550 @key{RET}}) and Org-mode (@kbd{C-h v org-version @key{RET}}), as well as
551 the Org-mode related setup in @file{.emacs}.  If an error occurs, a
552 backtrace can be very useful (see below on how to create one).  Often a
553 small example file helps, along with clear information about:
555 @enumerate
556 @item What exactly did you do?
557 @item What did you expect to happen?
558 @item What happened instead?
559 @end enumerate
560 @noindent Thank you for helping to improve this mode.
562 @subsubheading How to create a useful backtrace
564 @cindex backtrace of an error
565 If working with Org-mode produces an error with a message you don't
566 understand, you may have hit a bug.  The best way to report this is by
567 providing, in addition to what was mentioned above, a @emph{Backtrace}.
568 This is information from the built-in debugger about where and how the
569 error occurred.  Here is how to produce a useful backtrace:
571 @enumerate
572 @item
573 Start a fresh Emacs or XEmacs, and make sure that it will load the
574 original Lisp code in @file{org.el} instead of the compiled version in
575 @file{org.elc}.  The backtrace contains much more information if it is
576 produced with uncompiled code.  To do this, either rename @file{org.elc}
577 to something else before starting Emacs, or ask Emacs explicitly to load
578 @file{org.el} by using the command line
579 @example
580 emacs -l /path/to/org.el
581 @end example
582 @item
583 Go to the @code{Options} menu and select @code{Enter Debugger on Error}
584 (XEmacs has this option in the @code{Troubleshooting} sub-menu).
585 @item
586 Do whatever you have to do to hit the error.  Don't forget to
587 document the steps you take.
588 @item
589 When you hit the error, a @file{*Backtrace*} buffer will appear on the
590 screen.  Save this buffer to a file (for example using @kbd{C-x C-w}) and
591 attach it to your bug report.
592 @end enumerate
594 @node Conventions,  , Feedback, Introduction
595 @section Typesetting conventions used in this manual
597 Org-mode has 3 types of keywords that are being used.  TODO keywords,
598 tags, and property names.  For this manual we are using the following
599 conventions:
601 @table @code
602 @item TODO
603 @itemx WAITING
604 TODO keyword are written with all capitals, even if they are
605 user-defined.
606 @item boss
607 @itemx ARCHIVE
608 User-defined Tags are written in lowercase, built-in tags with special
609 meaning a all-caps.
610 @item Release
611 @itemx PRIORITY
612 User-defined properties are capitalized in all examples, while
613 built-in properties with special meaning are all-caps.
614 @end table
616 @node Document structure, Tables, Introduction, Top
617 @chapter Document Structure
618 @cindex document structure
619 @cindex structure of document
621 Org-mode is based on outline mode and provides flexible commands to
622 edit the structure of the document.
624 @menu
625 * Outlines::                    Org-mode is based on outline-mode
626 * Headlines::                   How to typeset org-tree headlines
627 * Visibility cycling::          Show and hide, much simplified
628 * Motion::                      Jumping to other headlines
629 * Structure editing::           Changing sequence and level of headlines
630 * Archiving::                   Move done task trees to a different place
631 * Sparse trees::                Matches embedded in context
632 * Plain lists::                 Additional structure within an entry
633 * Drawers::                     Tucking stuff away
634 * orgstruct-mode::              Structure editing outside Org-mode
635 @end menu
637 @node Outlines, Headlines, Document structure, Document structure
638 @section Outlines
639 @cindex outlines
640 @cindex outline-mode
642 Org-mode is implemented on top of outline-mode.  Outlines allow a
643 document to be organized in a hierarchical structure, which (at least
644 for me) is the best representation of notes and thoughts.  An overview
645 of this structure is achieved by folding (hiding) large parts of the
646 document to show only the general document structure and the parts
647 currently being worked on.  Org-mode greatly simplifies the use of
648 outlines by compressing the entire show/hide functionality into a single
649 command @command{org-cycle}, which is bound to the @key{TAB} key.
651 @node Headlines, Visibility cycling, Outlines, Document structure
652 @section Headlines
653 @cindex headlines
654 @cindex outline tree
656 Headlines define the structure of an outline tree.  The headlines in
657 Org-mode start with one or more stars, on the left margin@footnote{See
658 the variable @code{org-special-ctrl-a/e} to configure special behavior
659 of @kbd{C-a} and @kbd{C-e} in headlines.}.  For example:
661 @example
662 * Top level headline
663 ** Second level
664 *** 3rd level
665     some text
666 *** 3rd level
667     more text
669 * Another top level headline
670 @end example
672 @noindent Some people find the many stars too noisy and would prefer an
673 outline that has whitespace followed by a single star as headline
674 starters.  @ref{Clean view} describes a setup to realize this.
676 An empty line after the end of a subtree is considered part of it and
677 will be hidden when the subtree is folded.  However, if you leave at
678 least two empty lines, one empty line will remain visible after folding
679 the subtree, in order to structure the collapsed view.  See the
680 variable @code{org-cycle-separator-lines} to modify this behavior.
682 @node Visibility cycling, Motion, Headlines, Document structure
683 @section Visibility cycling
684 @cindex cycling, visibility
685 @cindex visibility cycling
686 @cindex trees, visibility
687 @cindex show hidden text
688 @cindex hide text
690 Outlines make it possible to hide parts of the text in the buffer.
691 Org-mode uses just two commands, bound to @key{TAB} and
692 @kbd{S-@key{TAB}} to change the visibility in the buffer.
694 @cindex subtree visibility states
695 @cindex subtree cycling
696 @cindex folded, subtree visibility state
697 @cindex children, subtree visibility state
698 @cindex subtree, subtree visibility state
699 @table @kbd
700 @kindex @key{TAB}
701 @item @key{TAB}
702 @emph{Subtree cycling}: Rotate current subtree among the states
704 @example
705 ,-> FOLDED -> CHILDREN -> SUBTREE --.
706 '-----------------------------------'
707 @end example
709 The cursor must be on a headline for this to work@footnote{see, however,
710 the option @code{org-cycle-emulate-tab}.}.  When the cursor is at the
711 beginning of the buffer and the first line is not a headline, then
712 @key{TAB} actually runs global cycling (see below)@footnote{see the
713 option @code{org-cycle-global-at-bob}.}.  Also when called with a prefix
714 argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
716 @cindex global visibility states
717 @cindex global cycling
718 @cindex overview, global visibility state
719 @cindex contents, global visibility state
720 @cindex show all, global visibility state
721 @kindex S-@key{TAB}
722 @item S-@key{TAB}
723 @itemx C-u @key{TAB}
724 @emph{Global cycling}: Rotate the entire buffer among the states
726 @example
727 ,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
728 '--------------------------------------'
729 @end example
731 When @kbd{S-@key{TAB}} is called with a numerical prefix N, the CONTENTS
732 view up to headlines of level N will be shown.
733 Note that inside tables, @kbd{S-@key{TAB}} jumps to the previous field.
735 @cindex show all, command
736 @kindex C-c C-a
737 @item C-c C-a
738 Show all.
739 @kindex C-c C-r
740 @item C-c C-r
741 Reveal context around point, showing the current entry, the following
742 heading and the hierarchy above.  Useful for working near a location
743 exposed by a sparse tree command (@pxref{Sparse trees}) or an agenda
744 command (@pxref{Agenda commands}).  With prefix arg show, on each
745 level, all sibling headings.
746 @kindex C-c C-x b
747 @item C-c C-x b
748 Show the current subtree in an indirect buffer@footnote{The indirect
749 buffer
750 @ifinfo
751 (@pxref{Indirect Buffers,,,emacs,GNU Emacs Manual})
752 @end ifinfo
753 @ifnotinfo
754 (see the Emacs manual for more information about indirect buffers)
755 @end ifnotinfo
756 will contain the entire buffer, but will be narrowed to the current
757 tree.  Editing the indirect buffer will also change the original buffer,
758 but without affecting visibility in that buffer.}.  With numerical
759 prefix ARG, go up to this level and then take that tree.  If ARG is
760 negative, go up that many levels.  With @kbd{C-u} prefix, do not remove
761 the previously used indirect buffer.
762 @end table
764 When Emacs first visits an Org-mode file, the global state is set to
765 OVERVIEW, i.e. only the top level headlines are visible.  This can be
766 configured through the variable @code{org-startup-folded}, or on a
767 per-file basis by adding one of the following lines anywhere in the
768 buffer:
770 @example
771 #+STARTUP: overview
772 #+STARTUP: content
773 #+STARTUP: showall
774 @end example
776 @node Motion, Structure editing, Visibility cycling, Document structure
777 @section Motion
778 @cindex motion, between headlines
779 @cindex jumping, to headlines
780 @cindex headline navigation
781 The following commands jump to other headlines in the buffer.
783 @table @kbd
784 @kindex C-c C-n
785 @item C-c C-n
786 Next heading.
787 @kindex C-c C-p
788 @item C-c C-p
789 Previous heading.
790 @kindex C-c C-f
791 @item C-c C-f
792 Next heading same level.
793 @kindex C-c C-b
794 @item C-c C-b
795 Previous heading same level.
796 @kindex C-c C-u
797 @item C-c C-u
798 Backward to higher level heading.
799 @kindex C-c C-j
800 @item C-c C-j
801 Jump to a different place without changing the current outline
802 visibility.  Shows the document structure in a temporary buffer, where
803 you can use the following keys to find your destination:
804 @example
805 @key{TAB}         @r{Cycle visibility.}
806 @key{down} / @key{up}   @r{Next/previous visible headline.}
807 n / p        @r{Next/previous visible headline.}
808 f / b        @r{Next/previous headline same level.}
809 u            @r{One level up.}
810 0-9          @r{Digit argument.}
811 @key{RET}         @r{Select this location.}
812 @end example
813 @end table
815 @node Structure editing, Archiving, Motion, Document structure
816 @section Structure editing
817 @cindex structure editing
818 @cindex headline, promotion and demotion
819 @cindex promotion, of subtrees
820 @cindex demotion, of subtrees
821 @cindex subtree, cut and paste
822 @cindex pasting, of subtrees
823 @cindex cutting, of subtrees
824 @cindex copying, of subtrees
825 @cindex subtrees, cut and paste
827 @table @kbd
828 @kindex M-@key{RET}
829 @item M-@key{RET}
830 Insert new heading with same level as current.  If the cursor is in a
831 plain list item, a new item is created (@pxref{Plain lists}).  To force
832 creation of a new headline, use a prefix arg, or first press @key{RET}
833 to get to the beginning of the next line.  When this command is used in
834 the middle of a line, the line is split and the rest of the line becomes
835 the new headline.  If the command is used at the beginning of a
836 headline, the new headline is created before the current line.  If at
837 the beginning of any other line, the content of that line is made the
838 new heading.  If the command is used at the end of a folded subtree
839 (i.e. behind the ellipses at the end of a headline), then a headline
840 like the current one will be inserted after the end of the subtree.
841 @kindex C-@key{RET}
842 @item C-@key{RET}
843 Insert a new heading after the current subtree, same level as the
844 current headline.  This command works from anywhere in the entry.
845 @kindex M-S-@key{RET}
846 @item M-S-@key{RET}
847 Insert new TODO entry with same level as current heading.
848 @kindex M-@key{left}
849 @item M-@key{left}
850 Promote current heading by one level.
851 @kindex M-@key{right}
852 @item M-@key{right}
853 Demote current heading by one level.
854 @kindex M-S-@key{left}
855 @item M-S-@key{left}
856 Promote the current subtree by one level.
857 @kindex M-S-@key{right}
858 @item M-S-@key{right}
859 Demote the current subtree by one level.
860 @kindex M-S-@key{up}
861 @item M-S-@key{up}
862 Move subtree up (swap with previous subtree of same
863 level).
864 @kindex M-S-@key{down}
865 @item M-S-@key{down}
866 Move subtree down (swap with next subtree of same level).
867 @kindex C-c C-x C-w
868 @kindex C-c C-x C-k
869 @item C-c C-x C-w
870 @itemx C-c C-x C-k
871 Kill subtree, i.e. remove it from buffer but save in kill ring.
872 With prefix arg, kill N sequential subtrees.
873 @kindex C-c C-x M-w
874 @item C-c C-x M-w
875 Copy subtree to kill ring.  With prefix arg, copy N sequential subtrees.
876 @kindex C-c C-x C-y
877 @item C-c C-x C-y
878 Yank subtree from kill ring.  This does modify the level of the subtree to
879 make sure the tree fits in nicely at the yank position.  The yank
880 level can also be specified with a prefix arg, or by yanking after a
881 headline marker like @samp{****}.
882 @kindex C-c C-w
883 @item C-c C-w
884 Refile entry to a different location.  @xref{Refiling notes}.
885 @kindex C-c ^
886 @item C-c ^
887 Sort same-level entries.  When there is an active region, all entries in
888 the region will be sorted.  Otherwise the children of the current
889 headline are sorted.  The command prompts for the sorting method, which
890 can be alphabetically, numerically, by time (using the first time stamp
891 in each entry), by priority, and each of these in reverse order.  You
892 can also supply your own function to extract the sorting key.  With a
893 @kbd{C-u} prefix, sorting will be case-sensitive.  With two @kbd{C-u
894 C-u} prefixes, duplicate entries will also be removed.
895 @end table
897 @cindex region, active
898 @cindex active region
899 @cindex transient-mark-mode
900 When there is an active region (transient-mark-mode), promotion and
901 demotion work on all headlines in the region.  To select a region of
902 headlines, it is best to place both point and mark at the beginning of a
903 line, mark at the beginning of the first headline, and point at the line
904 just after the last headline to change.  Note that when the cursor is
905 inside a table (@pxref{Tables}), the Meta-Cursor keys have different
906 functionality.
908 @node Archiving, Sparse trees, Structure editing, Document structure
909 @section Archiving
910 @cindex archiving
912 When a project represented by a (sub)tree is finished, you may want
913 to move the tree out of the way and to stop it from contributing to the
914 agenda.  Org-mode knows two ways of archiving.  You can mark a tree with
915 the ARCHIVE tag, or you can move an entire (sub)tree to a different
916 location.
918 @menu
919 * ARCHIVE tag::                 Marking a tree as inactive
920 * Moving subtrees::             Moving a tree to an archive file
921 @end menu
923 @node ARCHIVE tag, Moving subtrees, Archiving, Archiving
924 @subsection The ARCHIVE tag
925 @cindex internal archiving
927 A headline that is marked with the ARCHIVE tag (@pxref{Tags}) stays at
928 its location in the outline tree, but behaves in the following way:
929 @itemize @minus
930 @item
931 It does not open when you attempt to do so with a visibility cycling
932 command (@pxref{Visibility cycling}).  You can force cycling archived
933 subtrees with @kbd{C-@key{TAB}}, or by setting the option
934 @code{org-cycle-open-archived-trees}.  Also normal outline commands like
935 @code{show-all} will open archived subtrees.
936 @item
937 During sparse tree construction (@pxref{Sparse trees}), matches in
938 archived subtrees are not exposed, unless you configure the option
939 @code{org-sparse-tree-open-archived-trees}.
940 @item
941 During agenda view construction (@pxref{Agenda views}), the content of
942 archived trees is ignored unless you configure the option
943 @code{org-agenda-skip-archived-trees}.
944 @item
945 Archived trees are not exported (@pxref{Exporting}), only the headline
946 is.  Configure the details using the variable
947 @code{org-export-with-archived-trees}.
948 @end itemize
950 The following commands help managing the ARCHIVE tag:
952 @table @kbd
953 @kindex C-c C-x C-a
954 @item C-c C-x C-a
955 Toggle the ARCHIVE tag for the current headline.  When the tag is set,
956 the headline changes to a shadowish face, and the subtree below it is
957 hidden.
958 @kindex C-u C-c C-x C-a
959 @item C-u C-c C-x C-a
960 Check if any direct children of the current headline should be archived.
961 To do this, each subtree is checked for open TODO entries.  If none are
962 found, the command offers to set the ARCHIVE tag for the child.  If the
963 cursor is @emph{not} on a headline when this command is invoked, the
964 level 1 trees will be checked.
965 @kindex C-@kbd{TAB}
966 @item C-@kbd{TAB}
967 Cycle a tree even if it is tagged with ARCHIVE.
968 @end table
970 @node Moving subtrees,  , ARCHIVE tag, Archiving
971 @subsection Moving subtrees
972 @cindex external archiving
974 Once an entire project is finished, you may want to move it to a
975 different location, either in the current file, or even in a different
976 file, the archive file.
978 @table @kbd
979 @kindex C-c C-x C-s
980 @item C-c C-x C-s
981 Archive the subtree starting at the cursor position to the location
982 given by @code{org-archive-location}.  Context information that could be
983 lost like the file name, the category, inherited tags, and the todo
984 state will be store as properties in the entry.
985 @kindex C-u C-c C-x C-s
986 @item C-u C-c C-x C-s
987 Check if any direct children of the current headline could be moved to
988 the archive.  To do this, each subtree is checked for open TODO entries.
989 If none are found, the command offers to move it to the archive
990 location.  If the cursor is @emph{not} on a headline when this command
991 is invoked, the level 1 trees will be checked.
992 @end table
994 @cindex archive locations
995 The default archive location is a file in the same directory as the
996 current file, with the name derived by appending @file{_archive} to the
997 current file name.  For information and examples on how to change this,
998 see the documentation string of the variable
999 @code{org-archive-location}.  There is also an in-buffer option for
1000 setting this variable, for example@footnote{For backward compatibility,
1001 the following also works: If there are several such lines in a file,
1002 each specifies the archive location for the text below it.  The first
1003 such line also applies to any text before its definition.  However,
1004 using this method is @emph{strongly} deprecated as it is incompatible
1005 with the outline structure of the document.  The correct method for
1006 setting multiple archive locations in a buffer is using a property.}:
1008 @example
1009 #+ARCHIVE: %s_done::
1010 @end example
1012 @noindent
1013 If you would like to have a special ARCHIVE location for a single entry
1014 or a (sub)tree, give the entry an @code{:ARCHIVE:} property with the
1015 location as the value (@pxref{Properties and columns}).
1017 @node Sparse trees, Plain lists, Archiving, Document structure
1018 @section Sparse trees
1019 @cindex sparse trees
1020 @cindex trees, sparse
1021 @cindex folding, sparse trees
1022 @cindex occur, command
1024 An important feature of Org-mode is the ability to construct
1025 @emph{sparse trees} for selected information in an outline tree.  A
1026 sparse tree means that the entire document is folded as much as
1027 possible, but the selected information is made visible along with the
1028 headline structure above it@footnote{See also the variables
1029 @code{org-show-hierarchy-above}, @code{org-show-following-heading}, and
1030 @code{org-show-siblings} for detailed control on how much context is
1031 shown around each match.}.  Just try it out and you will see immediately
1032 how it works.
1034 Org-mode contains several commands creating such trees, all these
1035 commands can be accessed through a dispatcher:
1037 @table @kbd
1038 @kindex C-c /
1039 @item C-c /
1040 This prompts for an extra key to select a sparse-tree creating command.
1041 @kindex C-c / r
1042 @item C-c / r
1043 Occur.  Prompts for a regexp and shows a sparse tree with all matches.
1044 If the match is in a headline, the headline is made visible.  If the
1045 match is in the body of an entry, headline and body are made visible.
1046 In order to provide minimal context, also the full hierarchy of
1047 headlines above the match is shown, as well as the headline following
1048 the match.  Each match is also highlighted; the highlights disappear
1049 when the buffer is changed by an editing command, or by pressing
1050 @kbd{C-c C-c}.  When called with a @kbd{C-u} prefix argument, previous
1051 highlights are kept, so several calls to this command can be stacked.
1052 @end table
1053 @noindent
1054 For frequently used sparse trees of specific search strings, you can
1055 use the variable @code{org-agenda-custom-commands} to define fast
1056 keyboard access to specific sparse trees.  These commands will then be
1057 accessible through the agenda dispatcher (@pxref{Agenda dispatcher}).
1058 For example:
1060 @lisp
1061 (setq org-agenda-custom-commands
1062       '(("f" occur-tree "FIXME")))
1063 @end lisp
1065 @noindent will define the key @kbd{C-c a f} as a shortcut for creating
1066 a sparse tree matching the string @samp{FIXME}.
1068 The other sparse tree commands select headings based on TODO keywords,
1069 tags, or properties and will be discussed later in this manual.
1071 @kindex C-c C-e v
1072 @cindex printing sparse trees
1073 @cindex visible text, printing
1074 To print a sparse tree, you can use the Emacs command
1075 @code{ps-print-buffer-with-faces} which does not print invisible parts
1076 of the document @footnote{This does not work under XEmacs, because
1077 XEmacs uses selective display for outlining, not text properties.}.
1078 Or you can use the command @kbd{C-c C-e v} to export only the visible
1079 part of the document and print the resulting file.
1081 @node Plain lists, Drawers, Sparse trees, Document structure
1082 @section Plain lists
1083 @cindex plain lists
1084 @cindex lists, plain
1085 @cindex lists, ordered
1086 @cindex ordered lists
1088 Within an entry of the outline tree, hand-formatted lists can provide
1089 additional structure.  They also provide a way to create lists of
1090 checkboxes (@pxref{Checkboxes}).  Org-mode supports editing such lists,
1091 and the HTML exporter (@pxref{Exporting}) does parse and format them.
1093 Org-mode knows ordered and unordered lists.  Unordered list items start
1094 with @samp{-}, @samp{+}, or @samp{*}@footnote{When using @samp{*} as a
1095 bullet, lines must be indented or they will be seen as top-level
1096 headlines.  Also, when you are hiding leading stars to get a clean
1097 outline view, plain list items starting with a star are visually
1098 indistinguishable from true headlines.  In short: even though @samp{*}
1099 is supported, it may be better not to use it for plain list items.} as
1100 bullets.  Ordered list items start with @samp{1.} or @samp{1)}.  Items
1101 belonging to the same list must have the same indentation on the first
1102 line.  In particular, if an ordered list reaches number @samp{10.}, then
1103 the 2--digit numbers must be written left-aligned with the other numbers
1104 in the list.  Indentation also determines the end of a list item.  It
1105 ends before the next line that is indented like the bullet/number, or
1106 less.  Empty lines are part of the previous item, so you can have
1107 several paragraphs in one item.  If you would like an empty line to
1108 terminate all currently open plain lists, configure the variable
1109 @code{org-empty-line-terminates-plain-lists}.  Here is an example:
1111 @example
1112 @group
1113 ** Lord of the Rings
1114    My favorite scenes are (in this order)
1115    1. The attack of the Rohirrim
1116    2. Eowyns fight with the witch king
1117       + this was already my favorite scene in the book
1118       + I really like Miranda Otto.
1119    3. Peter Jackson being shot by Legolas
1120        - on DVD only
1121       He makes a really funny face when it happens.
1122    But in the end, not individual scenes matter but the film as a whole.
1123 @end group
1124 @end example
1126 Org-mode supports these lists by tuning filling and wrapping commands to
1127 deal with them correctly@footnote{Org-mode only changes the filling
1128 settings for Emacs.  For XEmacs, you should use Kyle E. Jones'
1129 @file{filladapt.el}.  To turn this on,  put into @file{.emacs}:
1130 @code{(require 'filladapt)}}. 
1132 The following commands act on items when the cursor is in the first line
1133 of an item (the line with the bullet or number).
1135 @table @kbd
1136 @kindex @key{TAB}
1137 @item @key{TAB}
1138 Items can be folded just like headline levels if you set the variable
1139 @code{org-cycle-include-plain-lists}.  The level of an item is then
1140 given by the indentation of the bullet/number.  Items are always
1141 subordinate to real headlines, however; the hierarchies remain
1142 completely separated.
1144 If @code{org-cycle-include-plain-lists} has not been set, @key{TAB}
1145 fixes the indentation of the curent line in a heuristic way.
1146 @kindex M-@key{RET}
1147 @item M-@key{RET}
1148 Insert new item at current level.  With prefix arg, force a new heading
1149 (@pxref{Structure editing}).  If this command is used in the middle of a
1150 line, the line is @emph{split} and the rest of the line becomes the new
1151 item.  If this command is executed in the @emph{whitespace before a bullet or
1152 number}, the new item is created @emph{before} the current item.  If the
1153 command is executed in the white space before the text that is part of
1154 an item but does not contain the bullet, a bullet is added to the
1155 current line.
1156 @kindex M-S-@key{RET}
1157 @item M-S-@key{RET}
1158 Insert a new item with a checkbox (@pxref{Checkboxes}).
1159 @kindex S-@key{up}
1160 @kindex S-@key{down}
1161 @item S-@key{up}
1162 @itemx S-@key{down}
1163 Jump to the previous/next item in the current list.
1164 @kindex M-S-@key{up}
1165 @kindex M-S-@key{down}
1166 @item M-S-@key{up}
1167 @itemx M-S-@key{down}
1168 Move the item including subitems up/down (swap with previous/next item
1169 of same indentation).  If the list is ordered, renumbering is
1170 automatic.
1171 @kindex M-S-@key{left}
1172 @kindex M-S-@key{right}
1173 @item M-S-@key{left}
1174 @itemx M-S-@key{right}
1175 Decrease/increase the indentation of the item, including subitems.
1176 Initially, the item tree is selected based on current indentation.
1177 When these commands are executed several times in direct succession,
1178 the initially selected region is used, even if the new indentation
1179 would imply a different hierarchy.  To use the new hierarchy, break
1180 the command chain with a cursor motion or so.
1181 @kindex C-c C-c
1182 @item C-c C-c
1183 If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the
1184 state of the checkbox.  If not, make this command makes sure that all
1185 the items on this list level use the same bullet.  Furthermore, if this
1186 is an ordered list, make sure the numbering is ok.
1187 @kindex C-c -
1188 @item C-c -
1189 Cycle the entire list level through the different itemize/enumerate
1190 bullets (@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}).
1191 With prefix arg, select the nth bullet from this list.
1192 @end table
1194 @node Drawers, orgstruct-mode, Plain lists, Document structure
1195 @section Drawers
1196 @cindex drawers
1197 @cindex visibility cycling, drawers
1199 Sometimes you want to keep information associated with an entry, but you
1200 normally don't want to see it.  For this, Org-mode has @emph{drawers}.
1201 Drawers need to be configured with the variable
1202 @code{org-drawers}@footnote{You can define drawers on a per-file basis
1203 with a line like @code{#+DRAWERS: HIDDEN PROPPERTIES STATE}}, and
1204 look like this:
1206 @example
1207 ** This is a headline
1208    Still outside the drawer
1209    :DRAWERNAME:
1210       This is inside the drawer.
1211    :END:
1212    After the drawer.
1213 @end example
1215 Visibility cycling (@pxref{Visibility cycling}) on the headline will
1216 hide and show the entry, but keep the drawer collapsed to a single line.
1217 In order to look inside the drawer, you need to move the cursor to the
1218 drawer line and press @key{TAB} there.  Org-mode uses a drawer for
1219 storing properties (@pxref{Properties and columns}).
1221 @node orgstruct-mode,  , Drawers, Document structure
1222 @section The Orgstruct minor mode
1223 @cindex orgstruct-mode
1224 @cindex minor mode for structure editing
1226 If you like the intuitive way the Org-mode structure editing and list
1227 formatting works, you might want to use these commands in other modes
1228 like text-mode or mail-mode as well.  The minor mode Orgstruct-mode
1229 makes this possible.  You can always toggle the mode with @kbd{M-x
1230 orgstruct-mode}.  To turn it on by default, for example in mail mode,
1233 @lisp
1234 (add-hook 'mail-mode-hook 'turn-on-orgstruct)
1235 @end lisp
1237 When this mode is active and the cursor is on a line that looks to
1238 Org-mode like a headline of the first line of a list item, most
1239 structure editing commands will work, even if the same keys normally
1240 have different functionality in the major mode you are using.  If the
1241 cursor is not in one of those special lines, Orgstruct-mode lurks
1242 silently in the shadow.
1244 @node Tables, Hyperlinks, Document structure, Top
1245 @chapter Tables
1246 @cindex tables
1247 @cindex editing tables
1249 Org-mode has a very fast and intuitive table editor built-in.
1250 Spreadsheet-like calculations are supported in connection with the
1251 Emacs @file{calc} package.
1253 @menu
1254 * Built-in table editor::       Simple tables
1255 * Narrow columns::              Stop wasting space in tables   
1256 * Column groups::               Grouping to trigger vertical lines
1257 * orgtbl-mode::                 The table editor as minor mode
1258 * The spreadsheet::             The table editor has spreadsheet capabilities.
1259 @end menu
1261 @node Built-in table editor, Narrow columns, Tables, Tables
1262 @section The built-in table editor
1263 @cindex table editor, built-in
1265 Org-mode makes it easy to format tables in plain ASCII.  Any line with
1266 @samp{|} as the first non-whitespace character is considered part of a
1267 table.  @samp{|} is also the column separator.  A table might look like
1268 this:
1270 @example
1271 | Name  | Phone | Age |
1272 |-------+-------+-----|
1273 | Peter |  1234 |  17 |
1274 | Anna  |  4321 |  25 |
1275 @end example
1277 A table is re-aligned automatically each time you press @key{TAB} or
1278 @key{RET} or @kbd{C-c C-c} inside the table.  @key{TAB} also moves to
1279 the next field (@key{RET} to the next row) and creates new table rows
1280 at the end of the table or before horizontal lines.  The indentation
1281 of the table is set by the first line.  Any line starting with
1282 @samp{|-} is considered as a horizontal separator line and will be
1283 expanded on the next re-align to span the whole table width.  So, to
1284 create the above table, you would only type
1286 @example
1287 |Name|Phone|Age|
1289 @end example
1291 @noindent and then press @key{TAB} to align the table and start filling in
1292 fields.
1294 When typing text into a field, Org-mode treats @key{DEL},
1295 @key{Backspace}, and all character keys in a special way, so that
1296 inserting and deleting avoids shifting other fields.  Also, when
1297 typing @emph{immediately after the cursor was moved into a new field
1298 with @kbd{@key{TAB}}, @kbd{S-@key{TAB}} or @kbd{@key{RET}}}, the
1299 field is automatically made blank.  If this behavior is too
1300 unpredictable for you, configure the variables
1301 @code{org-enable-table-editor} and @code{org-table-auto-blank-field}.
1303 @table @kbd
1304 @tsubheading{Creation and conversion}
1305 @kindex C-c |
1306 @item C-c |
1307 Convert the active region to table. If every line contains at least one
1308 TAB character, the function assumes that the material is tab separated.
1309 If every line contains a comma, comma-separated values (CSV) are assumed.
1310 If not, lines are split at whitespace into fields.  You can use a prefix
1311 argument to force a specific separator: @kbd{C-u} forces CSV, @kbd{C-u
1312 C-u} forces TAB, and a numeric argument N indicates that at least N
1313 consequtive spaces, or alternatively a TAB will be the separator.
1314 @* 
1315 If there is no active region, this command creates an empty Org-mode
1316 table.  But it's easier just to start typing, like
1317 @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
1319 @tsubheading{Re-aligning and field motion}
1320 @kindex C-c C-c
1321 @item C-c C-c
1322 Re-align the table without moving the cursor.
1324 @kindex @key{TAB}
1325 @item @key{TAB}
1326 Re-align the table, move to the next field.  Creates a new row if
1327 necessary.
1329 @kindex S-@key{TAB}
1330 @item S-@key{TAB}
1331 Re-align, move to previous field.
1333 @kindex @key{RET}
1334 @item @key{RET}
1335 Re-align the table and move down to next row.  Creates a new row if
1336 necessary.  At the beginning or end of a line, @key{RET} still does
1337 NEWLINE, so it can be used to split a table.
1339 @tsubheading{Column and row editing}
1340 @kindex M-@key{left}
1341 @kindex M-@key{right}
1342 @item M-@key{left}
1343 @itemx M-@key{right}
1344 Move the current column left/right.
1346 @kindex M-S-@key{left}
1347 @item M-S-@key{left}
1348 Kill the current column.
1350 @kindex M-S-@key{right}
1351 @item M-S-@key{right}
1352 Insert a new column to the left of the cursor position.
1354 @kindex M-@key{up}
1355 @kindex M-@key{down}
1356 @item M-@key{up}
1357 @itemx M-@key{down}
1358 Move the current row up/down.
1360 @kindex M-S-@key{up}
1361 @item M-S-@key{up}
1362 Kill the current row or horizontal line.
1364 @kindex M-S-@key{down}
1365 @item M-S-@key{down}
1366 Insert a new row above (with arg: below) the current row.
1368 @kindex C-c -
1369 @item C-c -
1370 Insert a horizontal line below current row. With prefix arg, the line
1371 is created above the current line.
1373 @kindex C-c ^
1374 @item C-c ^
1375 Sort the table lines in the region.  The position of point indicates the
1376 column to be used for sorting, and the range of lines is the range
1377 between the nearest horizontal separator lines, or the entire table.  If
1378 point is before the first column, you will be prompted for the sorting
1379 column.  If there is an active region, the mark specifies the first line
1380 and the sorting column, while point should be in the last line to be
1381 included into the sorting.  The command prompts for the sorting type
1382 (alphabetically, numerically, or by time).  When called with a prefix
1383 argument, alphabetic sorting will be case-sensitive.
1385 @tsubheading{Regions}
1386 @kindex C-c C-x M-w
1387 @item C-c C-x M-w
1388 Copy a rectangular region from a table to a special clipboard.  Point
1389 and mark determine edge fields of the rectangle.  The process ignores
1390 horizontal separator lines.
1392 @kindex C-c C-x C-w
1393 @item C-c C-x C-w
1394 Copy a rectangular region from a table to a special clipboard, and
1395 blank all fields in the rectangle.  So this is the ``cut'' operation.
1397 @kindex C-c C-x C-y
1398 @item C-c C-x C-y
1399 Paste a rectangular region into a table.
1400 The upper right corner ends up in the current field.  All involved fields
1401 will be overwritten.  If the rectangle does not fit into the present table,
1402 the table is enlarged as needed.  The process ignores horizontal separator
1403 lines.
1405 @kindex C-c C-q
1406 @item C-c C-q
1407 Wrap several fields in a column like a paragraph.  If there is an active
1408 region, and both point and mark are in the same column, the text in the
1409 column is wrapped to minimum width for the given number of lines.  A
1410 prefix ARG may be used to change the number of desired lines.  If there
1411 is no region, the current field is split at the cursor position and the
1412 text fragment to the right of the cursor is prepended to the field one
1413 line down. If there is no region, but you specify a prefix ARG, the
1414 current field is made blank, and the content is appended to the field
1415 above.
1417 @tsubheading{Calculations}
1418 @cindex formula, in tables
1419 @cindex calculations, in tables
1420 @cindex region, active
1421 @cindex active region
1422 @cindex transient-mark-mode
1423 @kindex C-c +
1424 @item C-c +
1425 Sum the numbers in the current column, or in the rectangle defined by
1426 the active region.  The result is shown in the echo area and can
1427 be inserted with @kbd{C-y}.
1429 @kindex S-@key{RET}
1430 @item S-@key{RET}
1431 When current field is empty, copy from first non-empty field above.
1432 When not empty, copy current field down to next row and move cursor
1433 along with it.  Depending on the variable
1434 @code{org-table-copy-increment}, integer field values will be
1435 incremented during copy.  This key is also used by CUA-mode
1436 (@pxref{Cooperation}).
1438 @tsubheading{Miscellaneous}
1439 @kindex C-c `
1440 @item C-c `
1441 Edit the current field in a separate window.  This is useful for fields
1442 that are not fully visible (@pxref{Narrow columns}).  When called with a
1443 @kbd{C-u} prefix, just make the full field visible, so that it can be
1444 edited in place.
1446 @kindex C-c @key{TAB}
1447 @item C-c @key{TAB}
1448 This is an alias for @kbd{C-u C-c `} to make the current field fully
1449 visible.
1451 @item M-x org-table-import
1452 Import a file as a table.  The table should be TAB- or whitespace
1453 separated.  Useful, for example, to import a spreadsheet table or data
1454 from a database, because these programs generally can write
1455 TAB-separated text files.  This command works by inserting the file into
1456 the buffer and then converting the region to a table.  Any prefix
1457 argument is passed on to the converter, which uses it to determine the
1458 separator.
1459 @item C-c |
1460 Tables can also be imported by pasting tabular text into the org-mode
1461 buffer, selecting the pasted text with @kbd{C-x C-x} and then using the
1462 @kbd{C-c |} command (see above under @i{Creation and conversion}.
1464 @item M-x org-table-export
1465 Export the table as a TAB-separated file.  Useful for data exchange with,
1466 for example, spreadsheet or database programs.
1467 @end table
1469 If you don't like the automatic table editor because it gets in your
1470 way on lines which you would like to start with @samp{|}, you can turn
1471 it off with
1473 @lisp
1474 (setq org-enable-table-editor nil)
1475 @end lisp
1477 @noindent Then the only table command that still works is
1478 @kbd{C-c C-c} to do a manual re-align.
1480 @node Narrow columns, Column groups, Built-in table editor, Tables
1481 @section Narrow columns
1482 @cindex narrow columns in tables
1484 The width of columns is automatically determined by the table editor.
1485 Sometimes a single field or a few fields need to carry more text,
1486 leading to inconveniently wide columns.  To limit@footnote{This feature
1487 does not work on XEmacs.} the width of a column, one field anywhere in
1488 the column may contain just the string @samp{<N>} where @samp{N} is an
1489 integer specifying the width of the column in characters.  The next
1490 re-align will then set the width of this column to no more than this
1491 value.
1493 @example
1494 @group
1495 |---+------------------------------|               |---+--------|
1496 |   |                              |               |   | <6>    |
1497 | 1 | one                          |               | 1 | one    |
1498 | 2 | two                          |     ----\     | 2 | two    |
1499 | 3 | This is a long chunk of text |     ----/     | 3 | This=> |
1500 | 4 | four                         |               | 4 | four   |
1501 |---+------------------------------|               |---+--------|
1502 @end group
1503 @end example
1505 @noindent
1506 Fields that are wider become clipped and end in the string @samp{=>}.
1507 Note that the full text is still in the buffer, it is only invisible.
1508 To see the full text, hold the mouse over the field - a tool-tip window
1509 will show the full content.  To edit such a field, use the command
1510 @kbd{C-c `} (that is @kbd{C-c} followed by the backquote).  This will
1511 open a new window with the full field.  Edit it and finish with @kbd{C-c
1512 C-c}.
1514 When visiting a file containing a table with narrowed columns, the
1515 necessary character hiding has not yet happened, and the table needs to
1516 be aligned before it looks nice.  Setting the option
1517 @code{org-startup-align-all-tables} will realign all tables in a file
1518 upon visiting, but also slow down startup.  You can also set this option
1519 on a per-file basis with:
1521 @example
1522 #+STARTUP: align
1523 #+STARTUP: noalign
1524 @end example
1526 @node Column groups, orgtbl-mode, Narrow columns, Tables
1527 @section Column groups
1528 @cindex grouping columns in tables
1530 When Org-mode exports tables, it does so by default without vertical
1531 lines because that is visually more satisfying in general.  Occasionally
1532 however, vertical lines can be useful to structure a table into groups
1533 of columns, much like horizontal lines can do for groups of rows.  In
1534 order to specify column groups, you can use a special row where the
1535 first field contains only @samp{/}.  The further fields can either
1536 contain @samp{<} to indicate that this column should start a group,
1537 @samp{>} to indicate the end of a column, or @samp{<>} to make a column
1538 a group of its own.  Boundaries between colum groups will upon export be
1539 marked with vertical lines.  Here is an example:
1541 @example
1542 |   |  N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
1543 |---+----+-----+-----+-----+---------+------------|
1544 | / | <> |   < |     |   > |       < |          > |
1545 | # |  1 |   1 |   1 |   1 |       1 |          1 |
1546 | # |  2 |   4 |   8 |  16 |  1.4142 |     1.1892 |
1547 | # |  3 |   9 |  27 |  81 |  1.7321 |     1.3161 |
1548 |---+----+-----+-----+-----+---------+------------|
1549 #+TBLFM: $3=$2^2::$4=$2^3::$5=$2^4::$6=sqrt($2)::$7=sqrt(sqrt(($2))
1550 @end example
1552 It is also sufficient to just insert the colum group starters after
1553 every vertical line you'd like to have:
1555 @example
1556 |  N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
1557 |----+-----+-----+-----+---------+------------|
1558 | /  | <   |     |     | <       |            |
1559 @end example
1561 @node orgtbl-mode, The spreadsheet, Column groups, Tables
1562 @section The Orgtbl minor mode
1563 @cindex orgtbl-mode
1564 @cindex minor mode for tables
1566 If you like the intuitive way the Org-mode table editor works, you
1567 might also want to use it in other modes like text-mode or mail-mode.
1568 The minor mode Orgtbl-mode makes this possible.  You can always toggle
1569 the mode with @kbd{M-x orgtbl-mode}.  To turn it on by default, for
1570 example in mail mode, use
1572 @lisp
1573 (add-hook 'mail-mode-hook 'turn-on-orgtbl)
1574 @end lisp
1576 Furthermore, with some special setup, it is possible to maintain tables
1577 in arbitrary syntax with Orgtbl-mode.  For example, it is possible to
1578 construct La@TeX{} tables with the underlying ease and power of
1579 Orgtbl-mode, including spreadsheet capabilities.  For details, see
1580 @ref{Tables in arbitrary syntax}.
1582 @node The spreadsheet,  , orgtbl-mode, Tables
1583 @section The spreadsheet
1584 @cindex calculations, in tables
1585 @cindex spreadsheet capabilities
1586 @cindex @file{calc} package
1588 The table editor makes use of the Emacs @file{calc} package to implement
1589 spreadsheet-like capabilities.  It can also evaluate Emacs Lisp forms to
1590 derive fields from other fields.  While fully featured, Org-mode's
1591 implementation is not identical to other spreadsheets.  For example,
1592 Org-mode knows the concept of a @emph{column formula} that will be
1593 applied to all non-header fields in a column without having to copy the
1594 formula to each relevant field.
1596 @menu
1597 * References::                  How to refer to another field or range
1598 * Formula syntax for Calc::     Using Calc to compute stuff
1599 * Formula syntax for Lisp::     Writing formulas in Emacs Lisp
1600 * Field formulas::              Formulas valid for a single field
1601 * Column formulas::             Formulas valid for an entire column
1602 * Editing and debugging formulas::  Fixing formulas
1603 * Updating the table::          Recomputing all dependent fields
1604 * Advanced features::           Field names, parameters and automatic recalc
1605 @end menu
1607 @node References, Formula syntax for Calc, The spreadsheet, The spreadsheet
1608 @subsection References
1609 @cindex references
1611 To compute fields in the table from other fields, formulas must
1612 reference other fields or ranges.  In Org-mode, fields can be referenced
1613 by name, by absolute coordinates, and by relative coordinates.  To find
1614 out what the coordinates of a field are, press @kbd{C-c ?} in that
1615 field, or press @kbd{C-c @}} to toggle the display of a grid.
1617 @subsubheading Field references
1618 @cindex field references
1619 @cindex references, to fields
1621 Formulas can reference the value of another field in two ways.  Like in
1622 any other spreadsheet, you may reference fields with a letter/number
1623 combination like @code{B3}, meaning the 2nd field in the 3rd row.
1624 @c Such references are always fixed to that field, they don't change
1625 @c when you copy and paste a formula to a different field.  So
1626 @c Org-mode's @code{B3} behaves like @code{$B$3} in other spreadsheets.
1628 @noindent
1629 Org-mode also uses another, more general operator that looks like this:
1630 @example
1631 @@row$column
1632 @end example
1634 @noindent
1635 Column references can be absolute like @samp{1}, @samp{2},...@samp{N},
1636 or relative to the current column like @samp{+1} or @samp{-2}.
1638 The row specification only counts data lines and ignores horizontal
1639 separator lines (hlines).  You can use absolute row numbers
1640 @samp{1}...@samp{N}, and row numbers relative to the current row like
1641 @samp{+3} or @samp{-1}.  Or specify the row relative to one of the
1642 hlines: @samp{I} refers to the first hline@footnote{Note that only
1643 hlines are counted that @emph{separate} table lines.  If the table
1644 starts with a hline above the header, it does not count.}, @samp{II} to
1645 the second etc.  @samp{-I} refers to the first such line above the
1646 current line, @samp{+I} to the first such line below the current line.
1647 You can also write @samp{III+2} which is the second data line after the
1648 third hline in the table.  Relative row numbers like @samp{-3} will not
1649 cross hlines if the current line is too close to the hline.  Instead,
1650 the value directly at the hline is used.
1652 @samp{0} refers to the current row and column.  Also, if you omit
1653 either the column or the row part of the reference, the current
1654 row/column is implied. 
1656 Org-mode's references with @emph{unsigned} numbers are fixed references
1657 in the sense that if you use the same reference in the formula for two
1658 different fields, the same field will be referenced each time.
1659 Org-mode's references with @emph{signed} numbers are floating
1660 references because the same reference operator can reference different
1661 fields depending on the field being calculated by the formula.
1663 Here are a few examples:
1665 @example
1666 @@2$3      @r{2nd row, 3rd column}
1667 C2        @r{same as previous}
1668 $5        @r{column 5 in the current row}
1669 E&        @r{same as previous}
1670 @@2        @r{current column, row 2}
1671 @@-1$-3    @r{the field one row up, three columns to the left}
1672 @@-I$2     @r{field just under hline above current row, column 2}
1673 @end example
1675 @subsubheading Range references
1676 @cindex range references
1677 @cindex references, to ranges
1679 You may reference a rectangular range of fields by specifying two field
1680 references connected by two dots @samp{..}.  If both fields are in the
1681 current row, you may simply use @samp{$2..$7}, but if at least one field
1682 is in a different row, you need to use the general @code{@@row$column}
1683 format at least for the first field (i.e the reference must start with
1684 @samp{@@} in order to be interpreted correctly).  Examples:
1686 @example
1687 $1..$3        @r{First three fields in the current row.}
1688 $P..$Q        @r{Range, using column names (see under Advanced)}
1689 @@2$1..@@4$3    @r{6 fields between these two fields.}
1690 A2..C4        @r{Same as above.}
1691 @@-1$-2..@@-1   @r{3 numbers from the column to the left, 2 up to current row}
1692 @end example
1694 @noindent Range references return a vector of values that can be fed
1695 into Calc vector functions.  Empty fields in ranges are normally
1696 suppressed, so that the vector contains only the non-empty fields (but
1697 see the @samp{E} mode switch below).  If there are no non-empty fields,
1698 @samp{[0]} is returned to avoid syntax errors in formulas.
1700 @subsubheading Named references
1701 @cindex named references
1702 @cindex references, named
1703 @cindex name, of column or field
1704 @cindex constants, in calculations
1706 @samp{$name} is interpreted as the name of a column, parameter or
1707 constant.  Constants are defined globally through the variable
1708 @code{org-table-formula-constants}, and locally (for the file) through a
1709 line like
1711 @example
1712 #+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6
1713 @end example
1715 @noindent
1716 Also properties (@pxref{Properties and columns}) can be used as
1717 constants in table formulas: For a property @samp{:XYZ:} use the name
1718 @samp{$PROP_XYZ}, and the property will be searched in the current
1719 outline entry and in the hierarchy above it.  If you have the
1720 @file{constants.el} package, it will also be used to resolve constants,
1721 including natural constants like @samp{$h} for Planck's constant, and
1722 units like @samp{$km} for kilometers@footnote{@file{Constant.el} can
1723 supply the values of constants in two different unit systems, @code{SI}
1724 and @code{cgs}.  Which one is used depends on the value of the variable
1725 @code{constants-unit-system}.  You can use the @code{#+STARTUP} options
1726 @code{constSI} and @code{constcgs} to set this value for the current
1727 buffer.}.  Column names and parameters can be specified in special table
1728 lines.  These are described below, see @ref{Advanced features}.  All
1729 names must start with a letter, and further consist of letters and
1730 numbers.
1732 @node Formula syntax for Calc, Formula syntax for Lisp, References, The spreadsheet
1733 @subsection Formula syntax for Calc
1734 @cindex formula syntax, Calc
1735 @cindex syntax, of formulas
1737 A formula can be any algebraic expression understood by the Emacs
1738 @file{Calc} package.  @b{Note that @file{calc} has the
1739 non-standard convention that @samp{/} has lower precedence than
1740 @samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.}  Before
1741 evaluation by @code{calc-eval} (@pxref{Calling Calc from
1742 Your Programs,calc-eval,Calling calc from Your Lisp Programs,calc,GNU
1743 Emacs Calc Manual}),
1744 @c FIXME:  The link to the calc manual in HTML does not work.
1745 variable substitution takes place according to the rules described above.
1746 @cindex vectors, in table calculations
1747 The range vectors can be directly fed into the calc vector functions
1748 like @samp{vmean} and @samp{vsum}.
1750 @cindex format specifier
1751 @cindex mode, for @file{calc}
1752 A formula can contain an optional mode string after a semicolon.  This
1753 string consists of flags to influence Calc and other modes during
1754 execution.  By default, Org-mode uses the standard calc modes (precision
1755 12, angular units degrees, fraction and symbolic modes off.  The display
1756 format, however, has been changed to @code{(float 5)} to keep tables
1757 compact.  The default settings can be configured using the variable
1758 @code{org-calc-default-modes}.
1760 @example
1761 p20           @r{switch the internal precision to 20 digits}
1762 n3 s3 e2 f4   @r{normal, scientific, engineering, or fixed display format}
1763 D R           @r{angle modes: degrees, radians}
1764 F S           @r{fraction and symbolic modes}
1765 N             @r{interpret all fields as numbers, use 0 for non-numbers}
1766 T             @r{force text interpretation}
1767 E             @r{keep empty fields in ranges}
1768 @end example
1770 @noindent
1771 In addition, you may provide a @code{printf} format specifier to
1772 reformat the final result.  A few examples:
1774 @example
1775 $1+$2                @r{Sum of first and second field}
1776 $1+$2;%.2f           @r{Same, format result to two decimals}
1777 exp($2)+exp($1)      @r{Math functions can be used}
1778 $0;%.1f              @r{Reformat current cell to 1 decimal}
1779 ($3-32)*5/9          @r{Degrees F -> C conversion}
1780 $c/$1/$cm            @r{Hz -> cm conversion, using @file{constants.el}}
1781 tan($1);Dp3s1        @r{Compute in degrees, precision 3, display SCI 1}
1782 sin($1);Dp3%.1e      @r{Same, but use printf specifier for display}
1783 vmean($2..$7)        @r{Compute column range mean, using vector function}
1784 vmean($2..$7);EN     @r{Same, but treat empty fields as 0}
1785 taylor($3,x=7,2)     @r{taylor series of $3, at x=7, second degree}
1786 @end example
1788 Calc also contains a complete set of logical operations.  For example
1790 @example
1791 if($1<20,teen,string(""))  @r{``teen'' if age $1 less than 20, else empty}
1792 @end example
1794 @node Formula syntax for Lisp, Field formulas, Formula syntax for Calc, The spreadsheet
1795 @subsection Emacs Lisp forms as formulas
1796 @cindex Lisp forms, as table formulas
1798 It is also possible to write a formula in Emacs Lisp; this can be useful
1799 for string manipulation and control structures, if the Calc's
1800 functionality is not enough.  If a formula starts with a single quote
1801 followed by an opening parenthesis, then it is evaluated as a lisp form.
1802 The evaluation should return either a string or a number.  Just as with
1803 @file{calc} formulas, you can specify modes and a printf format after a
1804 semicolon.  With Emacs Lisp forms, you need to be concious about the way
1805 field references are interpolated into the form.  By default, a
1806 reference will be interpolated as a Lisp string (in double quotes)
1807 containing the field.  If you provide the @samp{N} mode switch, all
1808 referenced elements will be numbers (non-number fields will be zero) and
1809 interpolated as Lisp numbers, without quotes.  If you provide the
1810 @samp{L} flag, all fields will be interpolated literally, without quotes.
1811 I.e., if you want a reference to be interpreted as a string by the Lisp
1812 form, enclode the reference operator itself in double quotes, like
1813 @code{"$3"}.  Ranges are inserted as space-separated fields, so you can
1814 embed them in list or vector syntax.  A few examples, note how the
1815 @samp{N} mode is used when we do computations in lisp.
1817 @example
1818 @r{Swap the first two characters of the content of column 1}
1819   '(concat (substring $1 1 2) (substring $1 0 1) (substring $1 2))
1820 @r{Add columns 1 and 2, equivalent to the Calc's @code{$1+$2}}
1821   '(+ $1 $2);N
1822 @r{Compute the sum of columns 1-4, like Calc's @code{vsum($1..$4)}}
1823   '(apply '+ '($1..$4));N
1824 @end example
1826 @node Field formulas, Column formulas, Formula syntax for Lisp, The spreadsheet
1827 @subsection Field formulas
1828 @cindex field formula
1829 @cindex formula, for individual table field
1831 To assign a formula to a particular field, type it directly into the
1832 field, preceded by @samp{:=}, for example @samp{:=$1+$2}.  When you
1833 press @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in
1834 the field, the formula will be stored as the formula for this field,
1835 evaluated, and the current field replaced with the result.
1837 Formulas are stored in a special line starting with @samp{#+TBLFM:}
1838 directly below the table.  If you typed the equation in the 4th field of
1839 the 3rd data line in the table, the formula will look like
1840 @samp{@@3$4=$1+$2}.  When inserting/deleting/swapping column and rows
1841 with the appropriate commands, @i{absolute references} (but not relative
1842 ones) in stored formulas are modified in order to still reference the
1843 same field.  Of cause this is not true if you edit the table structure
1844 with normal editing commands - then you must fix the equations yourself.
1846 Instead of typing an equation into the field, you may also use the
1847 following command
1849 @table @kbd
1850 @kindex C-u C-c =
1851 @item C-u C-c =
1852 Install a new formula for the current field.  The command prompts for a
1853 formula, with default taken from the @samp{#+TBLFM:} line, applies
1854 it to the current field and stores it.
1855 @end table
1857 @node Column formulas, Editing and debugging formulas, Field formulas, The spreadsheet
1858 @subsection Column formulas
1859 @cindex column formula
1860 @cindex formula, for table column
1862 Often in a table, the same formula should be used for all fields in a
1863 particular column.  Instead of having to copy the formula to all fields
1864 in that column, org-mode allows to assign a single formula to an entire
1865 column.  If the table contains horizontal separator hlines, everything
1866 before the first such line is considered part of the table @emph{header}
1867 and will not be modified by column formulas.
1869 To assign a formula to a column, type it directly into any field in the
1870 column, preceded by an equal sign, like @samp{=$1+$2}.  When you press
1871 @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the
1872 field, the formula will be stored as the formula for the current column,
1873 evaluated and the current field replaced with the result.  If the field
1874 contains only @samp{=}, the previously stored formula for this column is
1875 used.  For each column, Org-mode will only remember the most recently
1876 used formula.  In the @samp{TBLFM:} line, column formulas will look like
1877 @samp{$4=$1+$2}.
1879 Instead of typing an equation into the field, you may also use the
1880 following command:
1882 @table @kbd
1883 @kindex C-c =
1884 @item C-c =
1885 Install a new formula for the current column and replace current field
1886 with the result of the formula.  The command prompts for a formula, with
1887 default taken from the @samp{#+TBLFM} line, applies it to the current
1888 field and stores it.  With a numerical prefix (e.g. @kbd{C-5 C-c =})
1889 will apply it to that many consecutive fields in the current column.
1890 @end table
1893 @node Editing and debugging formulas, Updating the table, Column formulas, The spreadsheet
1894 @subsection Editing and Debugging formulas
1895 @cindex formula editing
1896 @cindex editing, of table formulas
1898 You can edit individual formulas in the minibuffer or directly in the
1899 field.  Org-mode can also prepare a special buffer with all active
1900 formulas of a table.  When offering a formula for editing, Org-mode
1901 converts references to the standard format (like @code{B3} or @code{D&})
1902 if possible.  If you prefer to only work with the internal format (like
1903 @code{@@3$2} or @code{$4}), configure the variable
1904 @code{org-table-use-standard-references}.
1906 @table @kbd
1907 @kindex C-c =
1908 @kindex C-u C-c =
1909 @item C-c =
1910 @itemx C-u C-c =
1911 Edit the formula associated with the current column/field in the
1912 minibuffer.  See @ref{Column formulas} and @ref{Field formulas}.
1913 @kindex C-u C-u C-c =
1914 @item C-u C-u C-c =
1915 Re-insert the active formula (either a
1916 field formula, or a column formula) into the current field, so that you
1917 can edit it directly in the field.  The advantage over editing in the
1918 minibuffer is that you can use the command @kbd{C-c ?}.
1919 @kindex C-c ?
1920 @item C-c ?
1921 While editing a formula in a table field, highlight the field(s)
1922 referenced by the reference at the cursor position in the formula.
1923 @kindex C-c @}
1924 @item C-c @}
1925 Toggle the display of row and column numbers for a table, using
1926 overlays.  These are updated each time the table is aligned, you can
1927 force it with @kbd{C-c C-c}.
1928 @kindex C-c @{
1929 @item C-c @{
1930 Toggle the formula debugger on and off.  See below.
1931 @kindex C-c '
1932 @item C-c '
1933 Edit all formulas for the current table in a special buffer, where the
1934 formulas will be displayed one per line.  If the current field has an
1935 active formula, the cursor in the formula editor will mark it.
1936 While inside the special buffer, Org-mode will automatically highlight
1937 any field or range reference at the cursor position.  You may edit,
1938 remove and add formulas, and use the following commands:
1939 @table @kbd
1940 @kindex C-c C-c
1941 @kindex C-x C-s
1942 @item C-c C-c
1943 @itemx C-x C-s
1944 Exit the formula editor and store the modified formulas.  With @kbd{C-u}
1945 prefix, also apply the new formulas to the entire table.
1946 @kindex C-c C-q
1947 @item C-c C-q
1948 Exit the formula editor without installing changes.
1949 @kindex C-c C-r
1950 @item C-c C-r
1951 Toggle all references in the formula editor between standard (like
1952 @code{B3}) and internal (like @code{@@3$2}).
1953 @kindex @key{TAB}
1954 @item @key{TAB}
1955 Pretty-print or indent lisp formula at point.  When in a line containing
1956 a lisp formula, format the formula according to Emacs Lisp rules.
1957 Another @key{TAB} collapses the formula back again.  In the open
1958 formula, @key{TAB} re-indents just like in Emacs-lisp-mode.
1959 @kindex M-@key{TAB}
1960 @item M-@key{TAB}
1961 Complete Lisp symbols, just like in Emacs-lisp-mode.
1962 @kindex S-@key{up}
1963 @kindex S-@key{down}
1964 @kindex S-@key{left}
1965 @kindex S-@key{right}
1966 @item S-@key{up}/@key{down}/@key{left}/@key{right}
1967 Shift the reference at point.  For example, if the reference is
1968 @code{B3} and you press @kbd{S-@key{right}}, it will become @code{C3}.
1969 This also works for relative references, and for hline references.
1970 @kindex M-S-@key{up}
1971 @kindex M-S-@key{down}
1972 @item M-S-@key{up}/@key{down}
1973 Move the test line for column formulas in the Org-mode buffer up and
1974 down.
1975 @kindex M-@key{up}
1976 @kindex M-@key{down}
1977 @item M-@key{up}/@key{down}
1978 Scroll the window displaying the table.
1979 @kindex C-c @}
1980 @item C-c @}
1981 Turn the coordinate grid in the table on and off.
1982 @end table
1983 @end table
1985 Making a table field blank does not remove the formula associated with
1986 the field, because that is stored in a different line (the @samp{TBLFM}
1987 line) - during the next recalculation the field will be filled again.
1988 To remove a formula from a field, you have to give an empty reply when
1989 prompted for the formula, or to edit the @samp{#+TBLFM} line.
1991 @kindex C-c C-c
1992 You may edit the @samp{#+TBLFM} directly and re-apply the changed
1993 equations with @kbd{C-c C-c} in that line, or with the normal
1994 recalculation commands in the table.
1996 @subsubheading Debugging formulas
1997 @cindex formula debugging
1998 @cindex debugging, of table formulas
1999 When the evaluation of a formula leads to an error, the field content
2000 becomes the string @samp{#ERROR}.  If you would like see what is going
2001 on during variable substitution and calculation in order to find a bug,
2002 turn on formula debugging in the @code{Tbl} menu and repeat the
2003 calculation, for example by pressing @kbd{C-u C-u C-c = @key{RET}} in a
2004 field.  Detailed information will be displayed.
2006 @node Updating the table, Advanced features, Editing and debugging formulas, The spreadsheet
2007 @subsection Updating the Table
2008 @cindex recomputing table fields
2009 @cindex updating, table
2011 Recalculation of a table is normally not automatic, but needs to be
2012 triggered by a command.  See @ref{Advanced features} for a way to make
2013 recalculation at least semi-automatically.
2015 In order to recalculate a line of a table or the entire table, use the
2016 following commands:
2018 @table @kbd
2019 @kindex C-c *
2020 @item C-c *
2021 Recalculate the current row by first applying the stored column formulas
2022 from left to right, and all field formulas in the current row.
2024 @kindex C-u C-c *
2025 @item C-u C-c *
2026 @kindex C-u C-c C-c
2027 @itemx C-u C-c C-c
2028 Recompute the entire table, line by line.  Any lines before the first
2029 hline are left alone, assuming that these are part of the table header.
2031 @kindex C-u C-u C-c *
2032 @kindex C-u C-u C-c C-c
2033 @item C-u C-u C-c *
2034 @itemx C-u C-u C-c C-c
2035 Iterate the table by recomputing it until no further changes occur.
2036 This may be necessary if some computed fields use the value of other
2037 fields that are computed @i{later} in the calculation sequence.
2038 @end table
2040 @node Advanced features,  , Updating the table, The spreadsheet
2041 @subsection Advanced features
2043 If you want the recalculation of fields to happen automatically, or if
2044 you want to be able to assign @i{names} to fields and columns, you need
2045 to reserve the first column of the table for special marking characters.
2046 @table @kbd
2047 @kindex C-#
2048 @item C-#
2049 Rotate the calculation mark in first column through the states @samp{},
2050 @samp{#}, @samp{*}, @samp{!}, @samp{$}.  The meaning of these characters
2051 is discussed below.  When there is an active region, change all marks in
2052 the region.
2053 @end table
2055 Here is an example of a table that collects exam results of students and
2056 makes use of these features:
2058 @example
2059 @group
2060 |---+---------+--------+--------+--------+-------+------|
2061 |   | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
2062 |---+---------+--------+--------+--------+-------+------|
2063 | ! |         |     P1 |     P2 |     P3 |   Tot |      |
2064 | # | Maximum |     10 |     15 |     25 |    50 | 10.0 |
2065 | ^ |         |     m1 |     m2 |     m3 |    mt |      |
2066 |---+---------+--------+--------+--------+-------+------|
2067 | # | Peter   |     10 |      8 |     23 |    41 |  8.2 |
2068 | # | Sara    |      6 |     14 |     19 |    39 |  7.8 |
2069 | # | Sam     |      2 |      4 |      3 |     9 |  1.8 |
2070 |---+---------+--------+--------+--------+-------+------|
2071 |   | Average |        |        |        |  29.7 |      |
2072 | ^ |         |        |        |        |    at |      |
2073 | $ | max=50  |        |        |        |       |      |
2074 |---+---------+--------+--------+--------+-------+------|
2075 #+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@@-II..@@-I);%.1f
2076 @end group
2077 @end example
2079 @noindent @b{Important}: Please note that for these special tables,
2080 recalculating the table with @kbd{C-u C-c *} will only affect rows that
2081 are marked @samp{#} or @samp{*}, and fields that have a formula assigned
2082 to the field itself.  The column formulas are not applied in rows with
2083 empty first field.
2085 @cindex marking characters, tables
2086 The marking characters have the following meaning:
2087 @table @samp
2088 @item !
2089 The fields in this line define names for the columns, so that you may
2090 refer to a column as @samp{$Tot} instead of @samp{$6}.
2091 @item ^
2092 This row defines names for the fields @emph{above} the row.  With such
2093 a definition, any formula in the table may use @samp{$m1} to refer to
2094 the value @samp{10}.  Also, if you assign a formula to a names field, it
2095 will be stored as @samp{$name=...}.
2096 @item _
2097 Similar to @samp{^}, but defines names for the fields in the row
2098 @emph{below}.
2099 @item $
2100 Fields in this row can define @emph{parameters} for formulas.  For
2101 example, if a field in a @samp{$} row contains @samp{max=50}, then
2102 formulas in this table can refer to the value 50 using @samp{$max}.
2103 Parameters work exactly like constants, only that they can be defined on
2104 a per-table basis.
2105 @item #
2106 Fields in this row are automatically recalculated when pressing
2107 @key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row.  Also, this row
2108 is selected for a global recalculation with @kbd{C-u C-c *}.  Unmarked
2109 lines will be left alone by this command.
2110 @item *
2111 Selects this line for global recalculation with @kbd{C-u C-c *}, but
2112 not for automatic recalculation.  Use this when automatic
2113 recalculation slows down editing too much.
2114 @item
2115 Unmarked lines are exempt from recalculation with @kbd{C-u C-c *}.
2116 All lines that should be recalculated should be marked with @samp{#}
2117 or @samp{*}.
2118 @item /
2119 Do not export this line.  Useful for lines that contain the narrowing
2120 @samp{<N>} markers.
2121 @end table
2123 Finally, just to whet your appetite on what can be done with the
2124 fantastic @file{calc} package, here is a table that computes the Taylor
2125 series of degree @code{n} at location @code{x} for a couple of functions
2126 (homework: try that with Excel :-)
2128 @example
2129 @group
2130 |---+-------------+---+-----+--------------------------------------|
2131 |   | Func        | n | x   | Result                               |
2132 |---+-------------+---+-----+--------------------------------------|
2133 | # | exp(x)      | 1 | x   | 1 + x                                |
2134 | # | exp(x)      | 2 | x   | 1 + x + x^2 / 2                      |
2135 | # | exp(x)      | 3 | x   | 1 + x + x^2 / 2 + x^3 / 6            |
2136 | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
2137 | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2    |
2138 | * | tan(x)      | 3 | x   | 0.0175 x + 1.77e-6 x^3               |
2139 |---+-------------+---+-----+--------------------------------------|
2140 #+TBLFM: $5=taylor($2,$4,$3);n3
2141 @end group
2142 @end example
2144 @node Hyperlinks, TODO items, Tables, Top
2145 @chapter Hyperlinks
2146 @cindex hyperlinks
2148 Just like HTML, Org-mode provides links inside a file, and external
2149 links to other files, Usenet articles, emails, and much more.
2151 @menu
2152 * Link format::                 How links in Org-mode are formatted
2153 * Internal links::              Links to other places in the current file
2154 * External links::              URL-like links to the world
2155 * Handling links::              Creating, inserting and following
2156 * Using links outside Org-mode::  Linking from my C source code?
2157 * Link abbreviations::          Shortcuts for writing complex links
2158 * Search options::              Linking to a specific location
2159 * Custom searches::             When the default search is not enough
2160 @end menu
2162 @node Link format, Internal links, Hyperlinks, Hyperlinks
2163 @section Link format
2164 @cindex link format
2165 @cindex format, of links
2167 Org-mode will recognize plain URL-like links and activate them as
2168 clickable links.  The general link format, however, looks like this:
2170 @example
2171 [[link][description]]       @r{or alternatively}           [[link]]  
2172 @end example
2174 Once a link in the buffer is complete (all brackets present), Org-mode
2175 will change the display so that @samp{description} is displayed instead
2176 of @samp{[[link][description]]} and @samp{link} is displayed instead of
2177 @samp{[[link]]}.  Links will be highlighted in the face @code{org-link},
2178 which by default is an underlined face.  You can directly edit the
2179 visible part of a link.  Note that this can be either the @samp{link}
2180 part (if there is no description) or the @samp{description} part.  To
2181 edit also the invisible @samp{link} part, use @kbd{C-c C-l} with the
2182 cursor on the link.
2184 If you place the cursor at the beginning or just behind the end of the
2185 displayed text and press @key{BACKSPACE}, you will remove the
2186 (invisible) bracket at that location.  This makes the link incomplete
2187 and the internals are again displayed as plain text.  Inserting the
2188 missing bracket hides the link internals again.  To show the
2189 internal structure of all links, use the menu entry
2190 @code{Org->Hyperlinks->Literal links}.
2192 @node Internal links, External links, Link format, Hyperlinks
2193 @section Internal links
2194 @cindex internal links
2195 @cindex links, internal
2196 @cindex targets, for links
2198 If the link does not look like a URL, it is considered to be internal in
2199 the current file.  Links such as @samp{[[My Target]]} or @samp{[[My
2200 Target][Find my target]]} lead to a text search in the current file.
2201 The link can be followed with @kbd{C-c C-o} when the cursor is on the
2202 link, or with a mouse click (@pxref{Handling links}).  The preferred
2203 match for such a link is a dedicated target: the same string in double
2204 angular brackets.  Targets may be located anywhere; sometimes it is
2205 convenient to put them into a comment line. For example
2207 @example
2208 # <<My Target>>
2209 @end example
2211 @noindent In HTML export (@pxref{HTML export}), such targets will become
2212 named anchors for direct access through @samp{http} links@footnote{Note
2213 that text before the first headline is usually not exported, so the
2214 first such target should be after the first headline.}.
2216 If no dedicated target exists, Org-mode will search for the words in the
2217 link.  In the above example the search would be for @samp{my target}.
2218 Links starting with a star like @samp{*My Target} restrict the search to
2219 headlines.  When searching, Org-mode will first try an exact match, but
2220 then move on to more and more lenient searches.  For example, the link
2221 @samp{[[*My Targets]]} will find any of the following:
2223 @example
2224 ** My targets
2225 ** TODO my targets are bright
2226 ** my 20 targets are
2227 @end example
2229 To insert a link targeting a headline, in-buffer completion can be used.
2230 Just type a star followed by a few optional letters into the buffer and
2231 press @kbd{M-@key{TAB}}.  All headlines in the current buffer will be
2232 offered as completions.  @xref{Handling links}, for more commands
2233 creating links.
2235 Following a link pushes a mark onto Org-mode's own mark ring.  You can
2236 return to the previous position with @kbd{C-c &}.  Using this command
2237 several times in direct succession goes back to positions recorded
2238 earlier.
2240 @menu
2241 * Radio targets::               Make targets trigger links in plain text.
2242 @end menu
2244 @node Radio targets,  , Internal links, Internal links
2245 @subsection Radio targets
2246 @cindex radio targets
2247 @cindex targets, radio
2248 @cindex links, radio targets
2250 Org-mode can automatically turn any occurrences of certain target names
2251 in normal text into a link.  So without explicitly creating a link, the
2252 text connects to the target radioing its position.  Radio targets are
2253 enclosed by triple angular brackets.  For example, a target @samp{<<<My
2254 Target>>>} causes each occurrence of @samp{my target} in normal text to
2255 become activated as a link.  The Org-mode file is scanned automatically
2256 for radio targets only when the file is first loaded into Emacs.  To
2257 update the target list during editing, press @kbd{C-c C-c} with the
2258 cursor on or at a target.
2260 @node External links, Handling links, Internal links, Hyperlinks
2261 @section External links
2262 @cindex links, external
2263 @cindex external links
2264 @cindex links, external
2265 @cindex GNUS links
2266 @cindex BBDB links
2267 @cindex URL links
2268 @cindex file links
2269 @cindex VM links
2270 @cindex RMAIL links
2271 @cindex WANDERLUST links
2272 @cindex MH-E links
2273 @cindex USENET links
2274 @cindex SHELL links
2275 @cindex Info links
2276 @cindex elisp links
2278 Org-mode supports links to files, websites, Usenet and email messages,
2279 and BBDB database entries.  External links are URL-like locators.  They
2280 start with a short identifying string followed by a colon.  There can be
2281 no space after the colon.  The following list shows examples for each
2282 link type.
2284 @example
2285 http://www.astro.uva.nl/~dominik          @r{on the web}
2286 file:/home/dominik/images/jupiter.jpg     @r{file, absolute path}
2287 file:papers/last.pdf                      @r{file, relative path}
2288 news:comp.emacs                           @r{Usenet link}
2289 mailto:adent@@galaxy.net                   @r{Mail link}
2290 vm:folder                                 @r{VM folder link}
2291 vm:folder#id                              @r{VM message link}
2292 vm://myself@@some.where.org/folder#id      @r{VM on remote machine}
2293 wl:folder                                 @r{WANDERLUST folder link}
2294 wl:folder#id                              @r{WANDERLUST message link}
2295 mhe:folder                                @r{MH-E folder link}
2296 mhe:folder#id                             @r{MH-E message link}
2297 rmail:folder                              @r{RMAIL folder link}
2298 rmail:folder#id                           @r{RMAIL message link}
2299 gnus:group                                @r{GNUS group link}
2300 gnus:group#id                             @r{GNUS article link}
2301 bbdb:Richard Stallman                     @r{BBDB link}
2302 shell:ls *.org                            @r{A shell command}
2303 elisp:(find-file-other-frame "Elisp.org") @r{An elisp form to evaluate}
2304 @end example
2306 A link should be enclosed in double brackets and may contain a
2307 descriptive text to be displayed instead of the url (@pxref{Link
2308 format}), for example:
2310 @example
2311 [[http://www.gnu.org/software/emacs/][GNU Emacs]]
2312 @end example
2314 @noindent
2315 If the description is a file name or URL that points to an image, HTML
2316 export (@pxref{HTML export}) will inline the image as a clickable
2317 button.  If there is no description at all and the link points to an
2318 image,
2319 that image will be inlined into the exported HTML file.
2321 @cindex angular brackets, around links
2322 @cindex plain text external links
2323 Org-mode also finds external links in the normal text and activates them
2324 as links.  If spaces must be part of the link (for example in
2325 @samp{bbdb:Richard Stallman}), or if you need to remove ambiguities
2326 about the end of the link, enclose them in angular brackets.
2328 @node Handling links, Using links outside Org-mode, External links, Hyperlinks
2329 @section Handling links
2330 @cindex links, handling
2332 Org-mode provides methods to create a link in the correct syntax, to
2333 insert it into an org-mode file, and to follow the link.
2335 @table @kbd
2336 @kindex C-c l
2337 @cindex storing links
2338 @item C-c l
2339 Store a link to the current location.  This is a @emph{global} command
2340 which can be used in any buffer to create a link.  The link will be
2341 stored for later insertion into an Org-mode buffer (see below).  For
2342 Org-mode files, if there is a @samp{<<target>>} at the cursor, the link
2343 points to the target.  Otherwise it points to the current headline.  For
2344 VM, RMAIL, WANDERLUST, MH-E, GNUS and BBDB buffers, the link will
2345 indicate the current article/entry.  For W3 and W3M buffers, the link
2346 goes to the current URL.  For any other files, the link will point to
2347 the file, with a search string (@pxref{Search options}) pointing to the
2348 contents of the current line.  If there is an active region, the
2349 selected words will form the basis of the search string.  If the
2350 automatically created link is not working correctly or accurately
2351 enough, you can write custom functions to select the search string and
2352 to do the search for particular file types - see @ref{Custom searches}.
2353 The key binding @kbd{C-c l} is only a suggestion - see @ref{Installation}.
2355 @kindex C-c C-l
2356 @cindex link completion
2357 @cindex completion, of links
2358 @cindex inserting links
2359 @item C-c C-l
2360 Insert a link.  This prompts for a link to be inserted into the buffer.
2361 You can just type a link, using text for an internal link, or one of the
2362 link type prefixes mentioned in the examples above.  All links stored
2363 during the current session are part of the history for this prompt, so
2364 you can access them with @key{up} and @key{down} (or @kbd{M-p/n}).
2365 Completion, on the other hand, will help you to insert valid link
2366 prefixes like @samp{http:} or @samp{ftp:}, including the prefixes
2367 defined through link abbreviations (@pxref{Link abbreviations}).  The
2368 link will be inserted into the buffer@footnote{After insertion of a
2369 stored link, the link will be removed from the list of stored links.  To
2370 keep it in the list later use, use a triple @kbd{C-u} prefix to @kbd{C-c
2371 C-l}, or configure the option
2372 @code{org-keep-stored-link-after-insertion}.}, along with a descriptive
2373 text.  If some text was selected when this command is called, the
2374 selected text becomes the default description.@* Note that you don't
2375 have to use this command to insert a link.  Links in Org-mode are plain
2376 text, and you can type or paste them straight into the buffer.  By using
2377 this command, the links are automatically enclosed in double brackets,
2378 and you will be asked for the optional descriptive text.
2380 @c  If the link is a @samp{file:} link and
2381 @c the linked file is located in the same directory as the current file or
2382 @c a subdirectory of it, the path of the file will be inserted relative to
2383 @c the current directory.
2385 @kindex C-u C-c C-l
2386 @cindex file name completion
2387 @cindex completion, of file names
2388 @item C-u C-c C-l
2389 When @kbd{C-c C-l} is called with a @kbd{C-u} prefix argument, a link to
2390 a file will be inserted and you may use file name completion to select
2391 the name of the file.  The path to the file is inserted relative to the
2392 directory of the current org file, if the linked file is in the current
2393 directory or in a subdirectory of it, or if the path is written relative
2394 to the current directory using @samp{../}.  Otherwise an absolute path
2395 is used, if possible with @samp{~/} for your home directory.  You can
2396 force an absolute path with two @kbd{C-u} prefixes.
2398 @item C-c C-l @r{(with cursor on existing link)}
2399 When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
2400 link and description parts of the link.
2402 @cindex following links
2403 @kindex C-c C-o
2404 @item C-c C-o
2405 Open link at point.  This will launch a web browser for URLs (using
2406 @command{browse-url-at-point}), run vm/mh-e/wanderlust/rmail/gnus/bbdb
2407 for the corresponding links, and execute the command in a shell link.
2408 When the cursor is on an internal link, this commands runs the
2409 corresponding search.  When the cursor is on a TAG list in a headline,
2410 it creates the corresponding TAGS view.  If the cursor is on a time
2411 stamp, it compiles the agenda for that date.  Furthermore, it will visit
2412 text and remote files in @samp{file:} links with Emacs and select a
2413 suitable application for local non-text files.  Classification of files
2414 is based on file extension only.  See option @code{org-file-apps}.  If
2415 you want to override the default application and visit the file with
2416 Emacs, use a @kbd{C-u} prefix.
2418 @kindex mouse-2
2419 @kindex mouse-1
2420 @item mouse-2
2421 @itemx mouse-1
2422 On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o}
2423 would.  Under Emacs 22, also @kbd{mouse-1} will follow a link.
2425 @kindex mouse-3
2426 @item mouse-3
2427 Like @kbd{mouse-2}, but force file links to be opened with Emacs, and
2428 internal links to be displayed in another window@footnote{See the
2429 variable @code{org-display-internal-link-with-indirect-buffer}}.
2431 @cindex mark ring
2432 @kindex C-c %
2433 @item C-c %
2434 Push the current position onto the mark ring, to be able to return
2435 easily. Commands following an internal link do this automatically.
2437 @cindex links, returning to
2438 @kindex C-c &
2439 @item C-c &
2440 Jump back to a recorded position.  A position is recorded by the
2441 commands following internal links, and by @kbd{C-c %}.  Using this
2442 command several times in direct succession moves through a ring of
2443 previously recorded positions.
2445 @kindex C-c C-x C-n
2446 @kindex C-c C-x C-p
2447 @cindex links, finding next/previous
2448 @item C-c C-x C-n
2449 @itemx C-c C-x C-p
2450 Move forward/backward to the next link in the buffer.  At the limit of
2451 the buffer, the search fails once, and then wraps around.  The key
2452 bindings for this are really too long, you might want to bind this also
2453 to @kbd{C-n} and @kbd{C-p}
2454 @lisp
2455 (add-hook 'org-load-hook
2456   (lambda ()
2457     (define-key 'org-mode-map "\C-n" 'org-next-link)
2458     (define-key 'org-mode-map "\C-p" 'org-previous-link)))
2459 @end lisp
2460 @end table
2462 @node Using links outside Org-mode, Link abbreviations, Handling links, Hyperlinks
2463 @section Using links outside Org-mode
2465 You can insert and follow links that have Org-mode syntax not only in
2466 Org-mode, but in any Emacs buffer.  For this, you should create two
2467 global commands, like this (please select suitable global keys
2468 yourself):
2470 @lisp
2471 (global-set-key "\C-c L" 'org-insert-link-global)
2472 (global-set-key "\C-c o" 'org-open-at-point-global)
2473 @end lisp
2475 @node Link abbreviations, Search options, Using links outside Org-mode, Hyperlinks
2476 @section Link abbreviations
2477 @cindex link abbreviations
2478 @cindex abbreviation, links
2480 Long URLs can be cumbersome to type, and often many similar links are
2481 needed in a document.  For this you can use link abbreviations.  An
2482 abbreviated link looks like this
2484 @example
2485 [[linkword:tag][description]]
2486 @end example
2488 @noindent
2489 where the tag is optional.  Such abbreviations are resolved according to
2490 the information in the variable @code{org-link-abbrev-alist} that
2491 relates the linkwords to replacement text.  Here is an example:
2493 @lisp
2494 @group
2495 (setq org-link-abbrev-alist
2496   '(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
2497     ("google"   . "http://www.google.com/search?q=")
2498     ("ads"      . "http://adsabs.harvard.edu/cgi-bin/
2499                    nph-abs_connect?author=%s&db_key=AST")))
2500 @end group
2501 @end lisp
2503 If the replacement text contains the string @samp{%s}, it will be
2504 replaced with the tag.  Otherwise the tag will be appended to the string
2505 in order to create the link.  You may also specify a function that will
2506 be called with the tag as the only argument to create the link.
2508 With the above setting, you could link to a specific bug with
2509 @code{[[bugzilla:129]]}, search the web for @samp{OrgMode} with
2510 @code{[[google:OrgMode]]} and find out what the Org-mode author is
2511 doing besides Emacs hacking with @code{[[ads:Dominik,C]]}.
2513 If you need special abbreviations just for a single Org-mode buffer, you
2514 can define them in the file with
2516 @example
2517 #+LINK: bugzilla  http://10.1.2.9/bugzilla/show_bug.cgi?id=
2518 #+LINK: google    http://www.google.com/search?q=%s
2519 @end example
2521 @noindent
2522 In-buffer completion @pxref{Completion} can be used after @samp{[} to
2523 complete link abbreviations.
2525 @node Search options, Custom searches, Link abbreviations, Hyperlinks
2526 @section Search options in file links
2527 @cindex search option in file links
2528 @cindex file links, searching
2530 File links can contain additional information to make Emacs jump to a
2531 particular location in the file when following a link.  This can be a
2532 line number or a search option after a double@footnote{For backward
2533 compatibility, line numbers can also follow a single colon.} colon. For
2534 example, when the command @kbd{C-c l} creates a link (@pxref{Handling
2535 links}) to a file, it encodes the words in the current line as a search
2536 string that can be used to find this line back later when following the
2537 link with @kbd{C-c C-o}. 
2539 Here is the syntax of the different ways to attach a search to a file
2540 link, together with an explanation:
2542 @example
2543 [[file:~/code/main.c::255]]
2544 [[file:~/xx.org::My Target]]
2545 [[file:~/xx.org::*My Target]]
2546 [[file:~/xx.org::/regexp/]]
2547 @end example
2549 @table @code
2550 @item 255
2551 Jump to line 255.
2552 @item My Target
2553 Search for a link target @samp{<<My Target>>}, or do a text search for
2554 @samp{my target}, similar to the search in internal links, see
2555 @ref{Internal links}.  In HTML export (@pxref{HTML export}), such a file
2556 link will become an HTML reference to the corresponding named anchor in
2557 the linked file.
2558 @item *My Target
2559 In an Org-mode file, restrict search to headlines.
2560 @item /regexp/
2561 Do a regular expression search for @code{regexp}.  This uses the Emacs
2562 command @code{occur} to list all matches in a separate window.  If the
2563 target file is in Org-mode, @code{org-occur} is used to create a
2564 sparse tree with the matches.
2565 @c If the target file is a directory,
2566 @c @code{grep} will be used to search all files in the directory.
2567 @end table
2569 As a degenerate case, a file link with an empty file name can be used
2570 to search the current file.  For example, @code{[[file:::find me]]} does
2571 a search for @samp{find me} in the current file, just as
2572 @samp{[[find me]]} would.
2574 @node Custom searches,  , Search options, Hyperlinks
2575 @section Custom Searches
2576 @cindex custom search strings
2577 @cindex search strings, custom
2579 The default mechanism for creating search strings and for doing the
2580 actual search related to a file link may not work correctly in all
2581 cases.  For example, BibTeX database files have many entries like
2582 @samp{year="1993"} which would not result in good search strings,
2583 because the only unique identification for a BibTeX entry is the
2584 citation key.
2586 If you come across such a problem, you can write custom functions to set
2587 the right search string for a particular file type, and to do the search
2588 for the string in the file.  Using @code{add-hook}, these functions need
2589 to be added to the hook variables
2590 @code{org-create-file-search-functions} and
2591 @code{org-execute-file-search-functions}.  See the docstring for these
2592 variables for more information.  Org-mode actually uses this mechanism
2593 for Bib@TeX{} database files, and you can use the corresponding code as
2594 an implementation example.  Search for @samp{BibTeX links} in the source
2595 file.
2599 @node TODO items, Tags, Hyperlinks, Top
2600 @chapter TODO items
2601 @cindex TODO items
2603 Org-mode does not maintain TODO lists as a separate document.  TODO
2604 items are an integral part of the notes file, because TODO items
2605 usually come up while taking notes!  With Org-mode, you simply mark
2606 any entry in a tree as being a TODO item.  In this way, the
2607 information is not duplicated, and the entire context from which the
2608 item emerged is always present when you check.
2610 Of course, this technique causes TODO items to be scattered throughout
2611 your file.  Org-mode provides methods to give you an overview over all
2612 things you have to do.
2614 @menu
2615 * TODO basics::                 Marking and displaying TODO entries
2616 * TODO extensions::             Workflow and assignments
2617 * Progress logging::            Dates and notes for progress
2618 * Priorities::                  Some things are more important than others
2619 * Breaking down tasks::         Splitting a task into manageable pieces
2620 * Checkboxes::                  Tick-off lists
2621 @end menu
2623 @node TODO basics, TODO extensions, TODO items, TODO items
2624 @section Basic TODO functionality
2626 Any headline can become a TODO item by starting it with the word TODO,
2627 for example:
2629 @example
2630 *** TODO Write letter to Sam Fortune
2631 @end example
2633 @noindent
2634 The most important commands to work with TODO entries are:
2636 @table @kbd
2637 @kindex C-c C-t
2638 @cindex cycling, of TODO states
2639 @item C-c C-t
2640 Rotate the TODO state of the current item among
2642 @example
2643 ,-> (unmarked) -> TODO -> DONE --.
2644 '--------------------------------'
2645 @end example
2647 The same rotation can also be done ``remotely'' from the timeline and
2648 agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
2650 @kindex C-u C-c C-t
2651 @item C-u C-c C-t
2652 Select a specific keyword using completion of (if it has been set up)
2653 the fast selection interface.
2655 @kindex S-@key{right}
2656 @kindex S-@key{left}
2657 @item S-@key{right}
2658 @itemx S-@key{left}
2659 Select the following/preceding TODO state, similar to cycling.  Mostly
2660 useful if more than two TODO states are possible (@pxref{TODO
2661 extensions}).
2662 @kindex C-c C-c
2663 @item C-c C-c
2664 Use the fast tag interface to quickly and directly select a specific
2665 TODO state.  For this you need to assign keys to TODO state, like this:
2666 @example
2667 #+SEQ_TODO: TODO(t) STARTED(s) WAITING(w) | DONE(d)
2668 @end example
2669 @noindent See @ref{Per file keywords} and @ref{Setting tags} for more
2670 information.
2671 @kindex C-c C-v
2672 @kindex C-c / t
2673 @cindex sparse tree, for TODO
2674 @item C-c C-v
2675 @itemx C-c / t
2676 View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}).  Folds
2677 the entire buffer, but shows all TODO items and the headings hierarchy
2678 above them.  With prefix arg, search for a specific TODO.  You will be
2679 prompted for the keyword, and you can also give a list of keywords like
2680 @code{kwd1|kwd2|...}.  With numerical prefix N, show the tree for the
2681 Nth keyword in the variable @code{org-todo-keywords}.  With two prefix
2682 args, find all TODO and DONE entries.
2683 @kindex C-c a t
2684 @item C-c a t
2685 Show the global TODO list.  This collects the TODO items from all
2686 agenda files (@pxref{Agenda views}) into a single buffer.  The buffer is in
2687 @code{agenda-mode}, so there are commands to examine and manipulate
2688 the TODO entries directly from that buffer (@pxref{Agenda commands}).
2689 @xref{Global TODO list}, for more information.
2690 @kindex S-M-@key{RET}
2691 @item S-M-@key{RET}
2692 Insert a new TODO entry below the current one.
2693 @end table
2695 @node TODO extensions, Progress logging, TODO basics, TODO items
2696 @section Extended use of TODO keywords
2697 @cindex extended TODO keywords
2699 The default implementation of TODO entries is just two states: TODO and
2700 DONE.  You can use the TODO feature for more complicated things by
2701 configuring the variable @code{org-todo-keywords}.  With special setup,
2702 the TODO keyword system can work differently in different files.
2704 Note that @i{tags} are another way to classify headlines in general and
2705 TODO items in particular (@pxref{Tags}).
2707 @menu
2708 * Workflow states::             From TODO to DONE in steps
2709 * TODO types::                  I do this, Fred the rest
2710 * Multiple sets in one file::   Mixing it all, and still finding your way
2711 * Fast access to TODO states::  Single letter selection of a state
2712 * Per file keywords::           Different files, different requirements
2713 * Faces for TODO keywords::     Highlighting states
2714 @end menu
2716 @node Workflow states, TODO types, TODO extensions, TODO extensions
2717 @subsection TODO keywords as workflow states
2718 @cindex TODO workflow
2719 @cindex workflow states as TODO keywords
2721 You can use TODO keywords to indicate different @emph{sequential} states
2722 in the process of working on an item, for example@footnote{Changing
2723 this variable only becomes effective after restarting Org-mode in a
2724 buffer.}:
2726 @lisp
2727 (setq org-todo-keywords
2728   '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
2729 @end lisp
2731 The vertical bar separates the TODO keywords (states that @emph{need
2732 action}) from the DONE states (which need @emph{no further action}.  If
2733 you don't provide the separator bar, the last state is used as the DONE
2734 state.
2735 @cindex completion, of TODO keywords
2736 With this setup, the command @kbd{C-c C-t} will cycle an entry from TODO
2737 to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED.  You may
2738 also use a prefix argument to quickly select a specific state.  For
2739 example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
2740 If you define many keywords, you can use in-buffer completion (see
2741 @ref{Completion}) to insert these words into the buffer.  Changing a
2742 todo state can be logged with a timestamp, see @ref{Tracking TODO state
2743 changes} for more information.
2745 @node TODO types, Multiple sets in one file, Workflow states, TODO extensions
2746 @subsection TODO keywords as types
2747 @cindex TODO types
2748 @cindex names as TODO keywords
2749 @cindex types as TODO keywords
2751 The second possibility is to use TODO keywords to indicate different
2752 @emph{types} of action items.  For example, you might want to indicate
2753 that items are for ``work'' or ``home''.  Or, when you work with several
2754 people on a single project, you might want to assign action items
2755 directly to persons, by using their names as TODO keywords.  This would
2756 be set up like this:
2758 @lisp
2759 (setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
2760 @end lisp
2762 In this case, different keywords do not indicate a sequence, but rather
2763 different types.  So the normal work flow would be to assign a task to a
2764 person, and later to mark it DONE.  Org-mode supports this style by
2765 adapting the workings of the command @kbd{C-c C-t}@footnote{This is also
2766 true for the @kbd{t} command in the timeline and agenda buffers.}.  When
2767 used several times in succession, it will still cycle through all names,
2768 in order to first select the right type for a task.  But when you return
2769 to the item after some time and execute @kbd{C-c C-t} again, it will
2770 switch from any name directly to DONE.  Use prefix arguments or
2771 completion to quickly select a specific name.  You can also review the
2772 items of a specific TODO type in a sparse tree by using a numeric prefix
2773 to @kbd{C-c C-v}.  For example, to see all things Lucy has to do, you
2774 would use @kbd{C-3 C-c C-v}.  To collect Lucy's items from all agenda
2775 files into a single buffer, you would use the prefix arg as well when
2776 creating the global todo list: @kbd{C-3 C-c t}.
2778 @node Multiple sets in one file, Fast access to TODO states, TODO types, TODO extensions
2779 @subsection Multiple keyword sets in one file
2780 @cindex todo keyword sets
2782 Sometimes you may want to use different sets of TODO keywords in
2783 parallel.  For example, you may want to have the basic
2784 @code{TODO}/@code{DONE}, but also a workflow for bug fixing, and a
2785 separate state indicating that an item has been canceled (so it is not
2786 DONE, but also does not require action).  Your setup would then look
2787 like this:
2789 @lisp
2790 (setq org-todo-keywords
2791       '((sequence "TODO" "|" "DONE")
2792         (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
2793         (sequence "|" "CANCELED")))
2794 @end lisp
2796 The keywords should all be different, this helps Org-mode to keep track
2797 of which subsequence should be used for a given entry.  In this setup,
2798 @kbd{C-c C-t} only operates within a subsequence, so it switches from
2799 @code{DONE} to (nothing) to @code{TODO}, and from @code{FIXED} to
2800 (nothing) to @code{REPORT}.  Therefore you need a mechanism to initially
2801 select the correct sequence.  Besides the obvious ways like typing a
2802 keyword or using completion, you may also apply the following commands:
2804 @table @kbd
2805 @kindex C-S-@key{right}
2806 @kindex C-S-@key{left}
2807 @item C-S-@key{right}
2808 @itemx C-S-@key{left}
2809 These keys jump from one TODO subset to the next.  In the above example,
2810 @kbd{C-S-@key{right}} would jump from @code{TODO} or @code{DONE} to
2811 @code{REPORT}, and any of the words in the second row to @code{CANCELED}.
2812 @kindex S-@key{right}
2813 @kindex S-@key{left}
2814 @item S-@key{right}
2815 @itemx S-@key{left}
2816 @kbd{S-@key{<left>}} and @kbd{S-@key{<right>}} and walk through
2817 @emph{all} keywords from all sets, so for example @kbd{S-@key{<right>}}
2818 would switch from @code{DONE} to @code{REPORT} in the example above.
2819 @end table
2821 @node Fast access to TODO states, Per file keywords, Multiple sets in one file, TODO extensions
2822 @subsection Fast access to TODO states
2824 If you would like to quickly change an entry to an arbitrary TODO state
2825 instead of cycling through the states, you can set up keys for
2826 single-letter access to the states.  This is done by adding the section
2827 key after each keyword, in parenthesis.  For example:
2829 @lisp
2830 (setq org-todo-keywords
2831       '((sequence "TODO(t)" "|" "DONE(d)")
2832         (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
2833         (sequence "|" "CANCELED(c)")))
2834 @end lisp
2836 If you then press @code{C-u C-c C-t} followed by the selection key, the
2837 entry will be switched to this state.  @key{SPC} can be used to remove
2838 any TODO keyword from an entry.  Should you like this way of selecting
2839 TODO states a lot, you might want to set the variable
2840 @code{org-use-fast-todo-selection} to @code{t} and make this behavior
2841 the default.  Check also the variable
2842 @code{org-fast-tag-selection-include-todo}, it allows to change the TODO
2843 state through the tags interface (@pxref{Setting tags}).
2845 @node Per file keywords, Faces for TODO keywords, Fast access to TODO states, TODO extensions
2846 @subsection Setting up keywords for individual files
2847 @cindex keyword options
2848 @cindex per file keywords
2850 It can be very useful to use different aspects of the TODO mechanism in
2851 different files.  For file-local settings, you need to add special lines
2852 to the file which set the keywords and interpretation for that file
2853 only.  For example, to set one of the two examples discussed above, you
2854 need one of the following lines, starting in column zero anywhere in the
2855 file:
2857 @example
2858 #+SEQ_TODO: TODO FEEDBACK VERIFY | DONE CANCELED
2859 @end example
2861 @example
2862 #+TYP_TODO: Fred Sara Lucy Mike | DONE
2863 @end example
2865 A setup for using several sets in parallel would be:
2867 @example
2868 #+SEQ_TODO: TODO | DONE
2869 #+SEQ_TODO: REPORT BUG KNOWNCAUSE | FIXED
2870 #+SEQ_TODO: | CANCELED
2871 @end example
2873 @cindex completion, of option keywords
2874 @kindex M-@key{TAB}
2875 @noindent To make sure you are using the correct keyword, type
2876 @samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
2878 @cindex DONE, final TODO keyword
2879 Remember that the keywords after the vertical bar (or the last keyword
2880 if no bar is there) must always mean that the item is DONE (although you
2881 may use a different word).  After changing one of these lines, use
2882 @kbd{C-c C-c} with the cursor still in the line to make the changes
2883 known to Org-mode@footnote{Org-mode parses these lines only when
2884 Org-mode is activated after visiting a file.  @kbd{C-c C-c} with the
2885 cursor in a line starting with @samp{#+} is simply restarting Org-mode
2886 for the current buffer.}.
2888 @node Faces for TODO keywords,  , Per file keywords, TODO extensions
2889 @subsection Faces for TODO keywords
2890 @cindex faces, for TODO keywords
2892 Org-mode highlights TODO keywords with special faces: @code{org-todo}
2893 for keywords indicating that an item still has to be acted upon, and
2894 @code{org-done} for keywords indicating that an item is finished.  If
2895 you are using more than 2 different states, you might want to use
2896 special faces for some of them.  This can be done using the variable
2897 @code{org-todo-keyword-faces}.  For example:
2899 @lisp
2900 (setq org-todo-keyword-faces
2901       '(("TODO"      . org-warning)
2902         ("DEFERRED"  . shadow)
2903         ("CANCELED"  . (:foreground "blue" :weight bold))))
2904 @end lisp
2906 @page
2907 @node Progress logging, Priorities, TODO extensions, TODO items
2908 @section Progress Logging
2909 @cindex progress logging
2910 @cindex logging, of progress
2912 Org-mode can automatically record a time stamp and even a note when you
2913 mark a TODO item as DONE, or even each time you change the state of
2914 a TODO item.
2916 @menu
2917 * Closing items::               When was this entry marked DONE?
2918 * Tracking TODO state changes::  When did the status change?
2919 @end menu
2921 @node Closing items, Tracking TODO state changes, Progress logging, Progress logging
2922 @subsection Closing items
2924 If you want to keep track of @emph{when} a certain TODO item was
2925 finished, turn on logging with@footnote{The corresponding in-buffer
2926 setting is: @code{#+STARTUP: logdone}.  You may also set this for the
2927 scope of a subtree by adding a @code{LOGGING} property with one or more
2928 of the logging keywords in the value.}
2930 @lisp
2931 (setq org-log-done t)
2932 @end lisp
2934 @noindent
2935 Then each time you turn a TODO entry into DONE using either @kbd{C-c
2936 C-t} in the Org-mode buffer or @kbd{t} in the agenda buffer, a line
2937 @samp{CLOSED: [timestamp]} will be inserted just after the headline.  If
2938 you turn the entry back into a TODO item through further state cycling,
2939 that line will be removed again.  In the timeline (@pxref{Timeline}) and
2940 in the agenda (@pxref{Weekly/Daily agenda}), you can then use the
2941 @kbd{l} key to display the TODO items closed on each day, giving you an
2942 overview of what has been done on a day.  If you want to record a note
2943 along with the timestamp, use@footnote{The corresponding in-buffer
2944 setting is: @code{#+STARTUP: lognotedone}}
2946 @lisp
2947 (setq org-log-done '(done))
2948 @end lisp
2950 @node Tracking TODO state changes,  , Closing items, Progress logging
2951 @subsection Tracking TODO state changes
2953 When TODO keywords are used as workflow states (@pxref{Workflow
2954 states}), you might want to keep track of when a state change occurred
2955 and record a note about this change.  With the setting@footnote{The
2956 corresponding in-buffer setting is: @code{#+STARTUP: lognotestate}.}
2958 @lisp
2959 (setq org-log-done '(state))
2960 @end lisp
2962 @noindent
2963 each state change will prompt you for a note that will be attached to
2964 the current headline.  If you press @kbd{C-c C-c} without typing
2965 anything into the note buffer, only the time of the state change will be
2966 noted.  Very likely you do not want this verbose tracking all the time,
2967 so it is probably better to configure this behavior with in-buffer
2968 options.  For example, if you are tracking purchases, put these into a
2969 separate file that contains:
2971 @example
2972 #+SEQ_TODO: TODO(t) ORDERED(o) INVOICE(i) PAYED(p) | RECEIVED(r)
2973 #+STARTUP: lognotestate
2974 @end example
2976 If you only need to take a note for some of the states, mark those
2977 states with an additional @samp{@@}, like this:
2979 @example
2980 #+SEQ_TODO: TODO(t) ORDERED(o@@) INVOICE(i@@) PAYED(p) | RECEIVED(r)
2981 #+STARTUP: lognotestate
2982 @end example
2984 @node Priorities, Breaking down tasks, Progress logging, TODO items
2985 @section Priorities
2986 @cindex priorities
2988 If you use Org-mode extensively to organize your work, you may end up
2989 with a number of TODO entries so large that you'd like to prioritize
2990 them.  This can be done by placing a @emph{priority cookie} into the
2991 headline, like this
2993 @example
2994 *** TODO [#A] Write letter to Sam Fortune
2995 @end example
2997 @noindent
2998 With its standard setup, Org-mode supports priorities @samp{A},
2999 @samp{B}, and @samp{C}.  @samp{A} is the highest priority.  An entry
3000 without a cookie is treated as priority @samp{B}.  Priorities make a
3001 difference only in the agenda (@pxref{Weekly/Daily agenda}).
3003 @table @kbd
3004 @kindex @kbd{C-c ,}
3005 @item @kbd{C-c ,}
3006 Set the priority of the current headline.  The command prompts for a
3007 priority character @samp{A}, @samp{B} or @samp{C}.  When you press
3008 @key{SPC} instead, the priority cookie is removed from the headline.
3009 The priorities can also be changed ``remotely'' from the timeline and
3010 agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
3012 @kindex S-@key{up}
3013 @kindex S-@key{down}
3014 @item S-@key{up}
3015 @itemx S-@key{down}
3016 Increase/decrease priority of current headline@footnote{See also the
3017 option @code{org-priority-start-cycle-with-default'}.}.  Note that these
3018 keys are also used to modify time stamps (@pxref{Creating timestamps}).
3019 Furthermore, these keys are also used by CUA-mode (@pxref{Conflicts}).
3020 @end table
3022 You can change the range of allowed priorities by setting the variables
3023 @code{org-highest-priority}, @code{org-lowest-priority}, and
3024 @code{org-default-priority}.  For an individual buffer, you may set
3025 these values (highest, lowest, default) like this (please make sure that
3026 the highest priority is earlier in the alphabet than the lowest
3027 priority):
3029 @example
3030 #+PRIORITIES: A C B
3031 @end example
3033 @node Breaking down tasks, Checkboxes, Priorities, TODO items
3034 @section Breaking tasks down into subtasks
3035 @cindex tasks, breaking down
3037 It is often advisable to break down large tasks into smaller, manageable
3038 subtasks.  You can do this by creating an outline tree below a TODO
3039 item, with detailed subtasks on the tree@footnote{To keep subtasks out
3040 of the global TODO list, see the
3041 @code{org-agenda-todo-list-sublevels}.}.  Another possibility is the use
3042 of checkboxes to identify (a hierarchy of) a large number of subtasks
3043 (@pxref{Checkboxes}).
3046 @node Checkboxes,  , Breaking down tasks, TODO items
3047 @section Checkboxes
3048 @cindex checkboxes
3050 Every item in a plain list (@pxref{Plain lists}) can be made a checkbox
3051 by starting it with the string @samp{[ ]}.  This feature is similar to
3052 TODO items (@pxref{TODO items}), but more lightweight.  Checkboxes are
3053 not included into the global TODO list, so they are often great to split
3054 a task into a number of simple steps.  Or you can use them in a shopping
3055 list.  To toggle a checkbox, use @kbd{C-c C-c}, or try Piotr Zielinski's
3056 @file{org-mouse.el}.  Here is an example of a checkbox list.
3058 @example
3059 * TODO Organize party [3/6]
3060   - call people [1/3]
3061     - [ ] Peter
3062     - [X] Sarah
3063     - [ ] Sam
3064   - [X] order food
3065   - [ ] think about what music to play
3066   - [X] talk to the neighbors
3067 @end example
3069 @cindex statistics, for checkboxes
3070 @cindex checkbox statistics
3071 The @samp{[3/6]} and @samp{[1/3]} in the first and second line are
3072 cookies indicating how many checkboxes are present in this entry, and
3073 how many of them have been checked off.  This can give you an idea on
3074 how many checkboxes remain, even without opening a folded entry.  The
3075 cookies can be placed into a headline or into (the first line of) a
3076 plain list item. Each cookie covers all checkboxes structurally below
3077 that headline/item.  You have to insert the cookie yourself by typing
3078 either @samp{[/]} or @samp{[%]}.  In the first case you get an @samp{n
3079 out of m} result, in the second case you get information about the
3080 percentage of checkboxes checked (in the above example, this would be
3081 @samp{[50%]} and @samp{[33%], respectively}).
3083 @noindent The following commands work with checkboxes:
3085 @table @kbd
3086 @kindex C-c C-c
3087 @item C-c C-c
3088 Toggle checkbox at point.  With prefix argument, set it to @samp{[-]},
3089 which is considered to be an intermediate state.
3090 @kindex C-c C-x C-b
3091 @item C-c C-x C-b
3092 Toggle checkbox at point.
3093 @itemize @minus
3094 @item
3095 If there is an active region, toggle the first checkbox in the region
3096 and set all remaining boxes to the same status as the first.  If you
3097 want to toggle all boxes in the region independently, use a prefix
3098 argument.
3099 @item
3100 If the cursor is in a headline, toggle checkboxes in the region between
3101 this headline and the next (so @emph{not} the entire subtree).
3102 @item
3103 If there is no active region, just toggle the checkbox at point.
3104 @end itemize
3105 @kindex M-S-@key{RET}
3106 @item M-S-@key{RET}
3107 Insert a new item with a checkbox.
3108 This works only if the cursor is already in a plain list item
3109 (@pxref{Plain lists}).
3110 @kindex C-c #
3111 @item C-c #
3112 Update the checkbox statistics in the current outline entry.  When
3113 called with a @kbd{C-u} prefix, update the entire file.  Checkbox
3114 statistic cookies are updated automatically if you toggle checkboxes
3115 with @kbd{C-c C-c} and make new ones with @kbd{M-S-@key{RET}}.  If you
3116 delete boxes or add/change them by hand, use this command to get things
3117 back into synch.  Or simply toggle any checkbox twice with @kbd{C-c C-c}.
3118 @end table
3121 @node Tags, Properties and columns, TODO items, Top
3122 @chapter Tags
3123 @cindex tags
3124 @cindex headline tagging
3125 @cindex matching, tags
3126 @cindex sparse tree, tag based
3128 If you wish to implement a system of labels and contexts for
3129 cross-correlating information, an excellent way is to assign @i{tags} to
3130 headlines.  Org-mode has extensive support for using tags.
3132 Every headline can contain a list of tags, at the end of the headline.
3133 Tags are normal words containing letters, numbers, @samp{_}, and
3134 @samp{@@}.  Tags must be preceded and followed by a single colon; like
3135 @samp{:WORK:}.  Several tags can be specified like @samp{:work:URGENT:}.
3137 @menu
3138 * Tag inheritance::             Tags use the tree structure of the outline
3139 * Setting tags::                How to assign tags to a headline
3140 * Tag searches::                Searching for combinations of tags
3141 @end menu
3143 @node Tag inheritance, Setting tags, Tags, Tags
3144 @section Tag inheritance
3145 @cindex tag inheritance
3146 @cindex inheritance, of tags
3147 @cindex sublevels, inclusion into tags match
3149 @i{Tags} make use of the hierarchical structure of outline trees.  If a
3150 heading has a certain tag, all subheadings will inherit the tag as
3151 well.  For example, in the list
3153 @example
3154 * Meeting with the French group      :work:
3155 ** Summary by Frank                  :boss:notes:
3156 *** TODO Prepare slides for him      :action:
3157 @end example
3159 @noindent
3160 the final heading will have the tags @samp{:work:}, @samp{:boss:},
3161 @samp{:notes:}, and @samp{:action:}.  When executing tag searches and
3162 Org-mode finds that a certain headline matches the search criterion, it
3163 will not check any sublevel headline, assuming that these likely also
3164 match, and that the list of matches can become very long.  This may
3165 not be what you want, however, and you can influence inheritance and
3166 searching using the variables @code{org-use-tag-inheritance} and
3167 @code{org-tags-match-list-sublevels}.
3169 @node Setting tags, Tag searches, Tag inheritance, Tags
3170 @section Setting tags
3171 @cindex setting tags
3172 @cindex tags, setting
3174 @kindex M-@key{TAB}
3175 Tags can simply be typed into the buffer at the end of a headline.
3176 After a colon, @kbd{M-@key{TAB}} offers completion on tags.  There is
3177 also a special command for inserting tags:
3179 @table @kbd
3180 @kindex C-c C-c
3181 @item C-c C-c
3182 @cindex completion, of tags
3183 Enter new tags for the current headline.  Org-mode will either offer
3184 completion or a special single-key interface for setting tags, see
3185 below.  After pressing @key{RET}, the tags will be inserted and aligned
3186 to @code{org-tags-column}.  When called with a @kbd{C-u} prefix, all
3187 tags in the current buffer will be aligned to that column, just to make
3188 things look nice.  TAGS are automatically realigned after promotion,
3189 demotion, and TODO state changes (@pxref{TODO basics}).
3190 @end table
3192 Org will support tag insertion based on a @emph{list of tags}.  By
3193 default this list is constructed dynamically, containing all tags
3194 currently used in the buffer.  You may also globally specify a hard list
3195 of tags with the variable @code{org-tag-alist}.  Finally you can set
3196 the default tags for a given file with lines like
3198 @example
3199 #+TAGS: @@work @@home @@tennisclub
3200 #+TAGS: laptop car pc sailboat
3201 @end example
3203 If you have globally defined your preferred set of tags using the
3204 variable @code{org-tag-alist}, but would like to use a dynamic tag list
3205 in a specific file: Just add an empty TAGS option line to that file:
3207 @example
3208 #+TAGS:
3209 @end example
3211 The default support method for entering tags is minibuffer completion.
3212 However, Org-mode also implements a much better method: @emph{fast tag
3213 selection}.  This method allows to select and deselect tags with a
3214 single key per tag.  To function efficiently, you should assign unique
3215 keys to most tags.  This can be done globally with
3217 @lisp
3218 (setq org-tag-alist '(("@@work" . ?w) ("@@home" . ?h) ("laptop" . ?l)))
3219 @end lisp
3221 @noindent or on a per-file basis with
3223 @example
3224 #+TAGS: @@work(w)  @@home(h)  @@tennisclub(t)  laptop(l)  pc(p)
3225 @end example
3227 @noindent
3228 You can also group together tags that are mutually exclusive.  With
3229 curly braces@footnote{In @code{org-mode-alist} use
3230 @code{'(:startgroup)} and @code{'(:endgroup)}, respectively.  Several
3231 groups are allowed.}
3233 @example
3234 #+TAGS: @{ @@work(w)  @@home(h)  @@tennisclub(t) @}  laptop(l)  pc(p)
3235 @end example
3237 @noindent you indicate that at most one of @samp{@@work}, @samp{@@home},
3238 and @samp{@@tennisclub} should be selected.
3240 @noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
3241 these lines to activate any changes.
3243 If at least one tag has a selection key, pressing @kbd{C-c C-c} will
3244 automatically present you with a special interface, listing inherited
3245 tags, the tags of the current headline, and a list of all legal tags
3246 with corresponding keys@footnote{Keys will automatically be assigned to
3247 tags which have no configured keys.}.  In this interface, you can use
3248 the following keys:
3250 @table @kbd
3251 @item a-z...
3252 Pressing keys assigned to tags will add or remove them from the list of
3253 tags in the current line.  Selecting a tag in a group of mutually
3254 exclusive tags will turn off any other tags from that group.
3255 @kindex @key{TAB}
3256 @item @key{TAB}
3257 Enter a tag in the minibuffer, even if the tag is not in the predefined
3258 list.  You will be able to complete on all tags present in the buffer.
3259 @kindex @key{SPC}
3260 @item @key{SPC}
3261 Clear all tags for this line.
3262 @kindex @key{RET}
3263 @item @key{RET}
3264 Accept the modified set.
3265 @item C-g
3266 Abort without installing changes.
3267 @item q
3268 If @kbd{q} is not assigned to a tag, it aborts like @kbd{C-g}.
3269 @item !
3270 Turn off groups of mutually exclusive tags.  Use this to (as an
3271 exception) assign several tags from such a group.
3272 @item C-c
3273 Toggle auto-exit after the next change (see below).
3274 If you are using expert mode, the first @kbd{C-c} will display the
3275 selection window.
3276 @end table
3278 @noindent
3279 This method lets you assign tags to a headline with very few keys.  With
3280 the above setup, you could clear the current tags and set @samp{@@home},
3281 @samp{laptop} and @samp{pc} tags with just the following keys: @kbd{C-c
3282 C-c @key{SPC} h l p @key{RET}}.  Switching from @samp{@@home} to
3283 @samp{@@work} would be done with @kbd{C-c C-c w @key{RET}} or
3284 alternatively with @kbd{C-c C-c C-c w}.  Adding the non-predefined tag
3285 @samp{Sarah} could be done with @kbd{C-c C-c @key{TAB} S a r a h
3286 @key{RET} @key{RET}}.
3288 If you find that most of the time, you need only a single keypress to
3289 modify your list of tags, set the variable
3290 @code{org-fast-tag-selection-single-key}.  Then you no longer have to
3291 press @key{RET} to exit fast tag selection - it will immediately exit
3292 after the first change.  If you then occasionally need more keys, press
3293 @kbd{C-c} to turn off auto-exit for the current tag selection process
3294 (in effect: start selection with @kbd{C-c C-c C-c} instead of @kbd{C-c
3295 C-c}).  If you set the variable to the value @code{expert}, the special
3296 window is not even shown for single-key tag selection, it comes up only
3297 when you press an extra @kbd{C-c}.
3299 @node Tag searches,  , Setting tags, Tags
3300 @section Tag searches
3301 @cindex tag searches
3302 @cindex searching for tags
3304 Once a tags system has been set up, it can be used to collect related
3305 information into special lists.
3307 @table @kbd
3308 @kindex C-c \
3309 @kindex C-c / T
3310 @item C-c \
3311 @itemx C-c / T
3312 Create a sparse tree with all headlines matching a tags search.  With a
3313 @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
3314 @kindex C-c a m
3315 @item C-c a m
3316 Create a global list of tag matches from all agenda files.
3317 @xref{Matching tags and properties}.
3318 @kindex C-c a M
3319 @item C-c a M
3320 Create a global list of tag matches from all agenda files, but check
3321 only TODO items and force checking subitems (see variable
3322 @code{org-tags-match-list-sublevels}).
3323 @end table
3325 @cindex Boolean logic, for tag searches
3326 A @i{tags} search string can use Boolean operators @samp{&} for AND and
3327 @samp{|} for OR.  @samp{&} binds more strongly than @samp{|}.
3328 Parenthesis are currently not implemented.  A tag may also be preceded
3329 by @samp{-}, to select against it, and @samp{+} is syntactic sugar for
3330 positive selection.  The AND operator @samp{&} is optional when @samp{+}
3331 or @samp{-} is present.  Examples:
3333 @table @samp
3334 @item +work-boss
3335 Select headlines tagged @samp{:work:}, but discard those also tagged
3336 @samp{:boss:}.
3337 @item work|laptop
3338 Selects lines tagged @samp{:work:} or @samp{:laptop:}.
3339 @item work|laptop&night
3340 Like before, but require the @samp{:laptop:} lines to be tagged also
3341 @samp{night}.
3342 @end table
3344 @cindex TODO keyword matching, with tags search
3345 If you are using multi-state TODO keywords (@pxref{TODO extensions}), it
3346 can be useful to also match on the TODO keyword.  This can be done by
3347 adding a condition after a slash to a tags match.  The syntax is similar
3348 to the tag matches, but should be applied with consideration: For
3349 example, a positive selection on several TODO keywords can not
3350 meaningfully be combined with boolean AND.  However, @emph{negative
3351 selection} combined with AND can be meaningful.  To make sure that only
3352 lines are checked that actually have any TODO keyword, use @kbd{C-c a
3353 M}, or equivalently start the todo part after the slash with @samp{!}.
3354 Examples:
3356 @table @samp
3357 @item work/WAITING
3358 Select @samp{:work:}-tagged TODO lines with the specific TODO
3359 keyword @samp{WAITING}.
3360 @item work/!-WAITING-NEXT
3361 Select @samp{:work:}-tagged TODO lines that are neither @samp{WAITING}
3362 nor @samp{NEXT}
3363 @item work/+WAITING|+NEXT
3364 Select @samp{:work:}-tagged TODO lines that are either @samp{WAITING} or
3365 @samp{NEXT}.
3366 @end table
3368 @cindex regular expressions, with tags search
3369 Any element of the tag/todo match can be a regular expression - in this
3370 case it must be enclosed in curly braces.  For example,
3371 @samp{work+@{^boss.*@}} matches headlines that contain the tag
3372 @samp{work} and any tag @i{starting} with @samp{boss}.
3374 @cindex level, require for tags/property match
3375 @cindex category, require for tags/property match
3376 You can also require a headline to be of a certain level or category, by
3377 writing instead of any TAG an expression like @samp{LEVEL=3} or
3378 @samp{CATEGORY="work"}, respectively.  For example, a search
3379 @samp{+LEVEL=3+boss/-DONE} lists all level three headlines that have the
3380 tag @samp{boss} and are @emph{not} marked with the todo keyword DONE.
3382 @node Properties and columns, Dates and times, Tags, Top
3383 @chapter Properties and Columns
3384 @cindex properties
3386 Properties are a set of key-value pairs associated with an entry.  There
3387 are two main applications for properties in Org-mode.  First, properties
3388 are like tags, but with a value.  For example, in a file where you
3389 document bugs and plan releases of a piece of software, instead of using
3390 tags like @code{:release_1:}, @code{:release_2:}, it can be more
3391 efficient to use a property @code{Release} with a value @code{1.0} or
3392 @code{2.0}.  Second, you can use properties to implement (very basic)
3393 database capabilities in an Org-mode buffer, for example to create a
3394 list of Music CD's you own.  You can edit and view properties
3395 conveniently in column view (@pxref{Column view}).
3397 @menu
3398 * Property syntax::             How properties are spelled out
3399 * Special properties::          Access to other Org-mode features
3400 * Property searches::           Matching property values
3401 * Property inheritance::        Passing values down the tree
3402 * Column view::                 Tabular viewing and editing
3403 * Property API::                Properties for Lisp programmers
3404 @end menu
3406 @node Property syntax, Special properties, Properties and columns, Properties and columns
3407 @section Property Syntax
3408 @cindex property syntax
3409 @cindex drawer, for properties
3411 Properties are key-value pairs.  They need to be inserted into a special
3412 drawer (@pxref{Drawers}) with the name @code{PROPERTIES}.  Each property
3413 is specified on a single line, with the key (surrounded by colons)
3414 first, and the value after it.  Here is an example:
3416 @example
3417 * CD collection
3418 ** Classic
3419 *** Goldberg Variations
3420     :PROPERTIES:
3421     :Title:     Goldberg Variations
3422     :Composer:  J.S. Bach
3423     :Artist:    Glen Gould 
3424     :Publisher: Deutsche Grammphon
3425     :NDisks:    1
3426     :END:       
3427 @end example
3429 You may define the allowed values for a particular property @samp{Xyz}
3430 by setting a property @samp{Xyz_ALL}.  This special property is
3431 @emph{inherited}, so if you set it in a level 1 entry, it will apply to
3432 the entire tree.  When allowed values are defined, setting the
3433 corresponding property becomes easier and is less prone to typing
3434 errors.  For the example with the CD collection, we can predefine
3435 publishers and the number of disks in a box like this:
3437 @example
3438 * CD collection
3439   :PROPERTIES:
3440   :NDisks_ALL:  1 2 3 4
3441   :Publisher_ALL: "Deutsche Grammophon" Phillips EMI
3442   :END:
3443 @end example
3445 If you want to set properties that can be inherited by any entry in a
3446 file, use a line like
3448 @example
3449 #+PROPERTY: NDisks_ALL 1 2 3 4
3450 @end example
3452 Property values set with the global variable
3453 @code{org-global-properties} can be inherited by all entries in all
3454 Org-mode files.
3456 @noindent
3457 The following commands help to work with properties:
3459 @table @kbd
3460 @kindex M-@key{TAB}
3461 @item M-@key{TAB}
3462 After an initial colon in a line, complete property keys.  All keys used
3463 in the current file will be offered as possible completions.
3464 @kindex C-c C-x p
3465 @item C-c C-x p
3466 Set a property.  This prompts for a property name and a value.  If
3467 necessary, the property drawer is created as well.
3468 @item M-x org-insert-property-drawer
3469 Insert a property drawer into the current entry.  The drawer will be
3470 inserted early in the entry, but after the lines with planning
3471 information like deadlines.
3472 @kindex C-c C-c
3473 @item C-c C-c
3474 With the cursor in a property drawer, this executes property commands.
3475 @item C-c C-c s
3476 Set a property in the current entry.  Both the property and the value
3477 can be inserted using completion.
3478 @kindex S-@key{right}
3479 @kindex S-@key{left}
3480 @item S-@key{left}/@key{right}
3481 Switch property at point to the next/previous allowed value.
3482 @item C-c C-c d
3483 Remove a property from the current entry.
3484 @item C-c C-c D
3485 Globally remove a property, from all entries in the current file.
3486 @item C-c C-c c
3487 Compute the property at point, using the operator and scope from the
3488 nearest column format definition.
3489 @end table
3491 @node Special properties, Property searches, Property syntax, Properties and columns
3492 @section Special Properties
3493 @cindex properties, special
3495 Special properties provide alternative access method to Org-mode
3496 features discussed in the previous chapters, like the TODO state or the
3497 priority of an entry.  This interface exists so that you can include
3498 these states into columns view (@pxref{Column view}), or to use them in
3499 queries.  The following property names are special and should not be
3500 used as keys in the properties drawer:
3502 @example
3503 TODO         @r{The TODO keyword of the entry.}
3504 TAGS         @r{The tags defined directly in the headline.}
3505 ALLTAGS      @r{All tags, including inherited ones.}
3506 PRIORITY     @r{The priority of the entry, a string with a single letter.}
3507 DEADLINE     @r{The deadline time string, without the angular brackets.}
3508 SCHEDULED    @r{The scheduling time stamp, without the angular brackets.}
3509 TIMESTAMP    @r{The first keyword-less time stamp in the entry.}
3510 TIMESTAMP_IA @r{The first inactive time stamp in the entry.}
3511 @end example
3513 @node Property searches, Property inheritance, Special properties, Properties and columns
3514 @section Property searches
3515 @cindex properties, searching
3516 @cindex properties, inheritance
3517 @cindex searching, of properties
3518 @cindex inheritance, of properties
3520 To create sparse trees and special lists with selection based on
3521 properties, the same commands are used as for tag searches (@pxref{Tag
3522 searches}), and the same logic applies.  For example, a search string
3524 @example
3525 +work-boss+PRIORITY="A"+Coffee="unlimited"+With=@{Sarah\|Denny@}
3526 @end example
3528 @noindent
3529 finds entries tagged @samp{:work:} but not @samp{:boss:}, which
3530 also have a priority value @samp{A}, a @samp{:Coffee:} property with the
3531 value @samp{unlimited}, and a @samp{:With:} property that is matched by
3532 the regular expression @samp{Sarah\|Denny}.
3534 You can configure Org-mode to use property inheritance during a search,
3535 see @ref{Property inheritance} for details.
3537 There is also a special command for creating sparse trees based on a
3538 single property:
3540 @table @kbd
3541 @kindex C-c / p
3542 @item C-c / p
3543 Create a sparse tree based on the value of a property.  This first
3544 prompts for the name of a property, and then for a value.  A sparse tree
3545 is created with all entries that define this property with the given
3546 value.  If you enclose the value into curly braces, it is interpreted as
3547 a regular expression and matched against the property values.
3548 @end table
3550 @node Property inheritance, Column view, Property searches, Properties and columns
3551 @section Property Inheritance
3553 The outline structure of Org-mode documents lends itself for an
3554 inheritance model of properties: If the parent in a tree has a certain
3555 property, the children can inherit this property.  Org-mode does not
3556 turn this on by default, because it can slow down property searches
3557 significantly and is often not needed.  However, if you find inheritance
3558 useful, you can turn it on by setting the variable
3559 @code{org-use-property-inheritance}.  It may be set to @code{t}, to make
3560 all properties inherited from the parent, or to a list of properties
3561 that should be inherited.
3563 Org-mode has a few properties for which inheritance is hard-coded, at
3564 least for the special applications for which they are used:
3566 @table @code
3567 @item COLUMNS
3568 The column property defines the format of column view (@pxref{Column
3569 view}).  It is inherited in the sense that the level where a
3570 @code{COLUMNS} property is defined is used as the starting point for a
3571 column view table, independently of the location in the subtree from
3572 where columns view is turned on.
3573 @item CATEGORY
3574 For agenda view, a category set through a @code{CATEGORY} property
3575 applies to the entire subtree.
3576 @item ARCHIVE
3577 For archiving, the @code{ARCHIVE} property may define the archive
3578 location for the entire subtree (@pxref{Moving subtrees}).
3579 @end table
3581 @node Column view, Property API, Property inheritance, Properties and columns
3582 @section Column View
3584 A great way to view and edit properties in an outline tree is
3585 @emph{column view}.  In column view, each outline item is turned into a
3586 table row.  Columns in this table provide access to properties of the
3587 entries.  Org-mode implements columns by overlaying a tabular structure
3588 over the headline of each item.  While the headlines have been turned
3589 into a table row, you can still change the visibility of the outline
3590 tree.  For example, you get a compact table by switching to CONTENTS
3591 view (@kbd{S-@key{TAB} S-@key{TAB}}, or simply @kbd{c} while column view
3592 is active), but you can still open, read, and edit the entry below each
3593 headline.  Or, you can switch to column view after executing a sparse
3594 tree command and in this way get a table only for the selected items.
3595 Column view also works in agenda buffers (@pxref{Agenda views}) where
3596 queries have collected selected items, possibly from a number of files.
3598 @menu
3599 * Defining columns::            The COLUMNS format property
3600 * Using column view::           How to create and use column view
3601 * Capturing Column View::       A dynamic block for column view
3602 @end menu
3604 @node Defining columns, Using column view, Column view, Column view
3605 @subsection Defining Columns
3606 @cindex column view, for properties
3607 @cindex properties, column view
3609 Setting up a column view first requires defining the columns.  This is
3610 done by defining a column format line.
3612 @menu
3613 * Scope of column definitions::  Where defined, where valid?
3614 * Column attributes::           Appearance and content of a column
3615 @end menu
3617 @node Scope of column definitions, Column attributes, Defining columns, Defining columns
3618 @subsubsection Scope of column definitions
3620 To define a column format for an entire file, use a line like
3622 @example
3623 #+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
3624 @end example
3626 To specify a format that only applies to a specific tree, add a COLUMNS
3627 property to the top node of that tree, for example
3628 @example
3629 ** Top node for columns view
3630    :PROPERTIES:
3631    :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
3632    :END:
3633 @end example
3635 If a @code{COLUMNS} property is present in an entry, it defines columns
3636 for the entry itself, and for the entire subtree below it.  Since the
3637 column definition is part of the hierarchical structure of the document,
3638 you can define columns on level 1 that are general enough for all
3639 sublevels, and more specific columns further down, when you edit a
3640 deeper part of the tree.
3642 @node Column attributes,  , Scope of column definitions, Defining columns
3643 @subsubsection Column attributes
3644 A column definition sets the attributes of a column.  The general
3645 definition looks like this:
3647 @example
3648  %[width]property[(title)][@{summary-type@}]
3649 @end example
3651 @noindent
3652 Except for the percent sign and the property name, all items are
3653 optional.  The individual parts have the following meaning:
3655 @example
3656 width           @r{An integer specifying the width of the column in characters.}
3657                 @r{If omitted, the width will be determined automatically.}
3658 property        @r{The property that should be edited in this column.}
3659 (title)         @r{The header text for the column. If omitted, the}
3660                 @r{property name is used.}
3661 @{summary-type@}  @r{The summary type.  If specified, the column values for}
3662                 @r{parent nodes are computed from the children.}
3663                 @r{Supported summary types are:}
3664                 @{+@}       @r{Sum numbers in this column.}
3665                 @{+;%.1f@}  @r{Like @samp{+}, but format result with @samp{%.1f}.}
3666                 @{$@}       @r{Currency, short for @samp{+;%.2f}.}
3667                 @{:@}       @r{Sum times, HH:MM:SS, plain numbers are hours.}
3668                 @{X@}       @r{Checkbox status, [X] if all children are [X].}
3669 @end example
3671 @noindent
3672 Here is an example for a complete columns definition, along with allowed
3673 values.
3675 @example
3676 :COLUMNS:  %20ITEM %9Approved(Approved?)@{X@} %Owner %11Status %10Time_Spent@{:@}
3677 :Owner_ALL:    Tammy Mark Karl Lisa Don
3678 :Status_ALL:   "In progress" "Not started yet" "Finished" ""
3679 :Approved_ALL: "[ ]" "[X]"
3680 @end example
3682 The first column, @samp{%25ITEM}, means the first 25 characters of the
3683 item itself, i.e. of the headline.  You probably always should start the
3684 column definition with the ITEM specifier.  The other specifiers create
3685 columns @samp{Owner} with a list of names as allowed values, for
3686 @samp{Status} with four different possible values, and for a checkbox
3687 field @samp{Approved}.  When no width is given after the @samp{%}
3688 character, the column will be exactly as wide as it needs to be in order
3689 to fully display all values.  The @samp{Approved} column does have a
3690 modified title (@samp{Approved?}, with a question mark).  Summaries will
3691 be created for the @samp{Time_Spent} column by adding time duration
3692 expressions like HH:MM, and for the @samp{Approved} column, by providing
3693 an @samp{[X]} status if all children have been checked.
3695 @node Using column view, Capturing Column View, Defining columns, Column view
3696 @subsection Using Column View
3698 @table @kbd
3699 @tsubheading{Turning column view on and off}
3700 @kindex C-c C-x C-c
3701 @item C-c C-x C-c
3702 Create the column view for the local environment.  This command searches
3703 the hierarchy, up from point, for a @code{COLUMNS} property that defines
3704 a format.  When one is found, the column view table is established for
3705 the entire tree, starting from the entry that contains the @code{COLUMNS}
3706 property.  If none is found, the format is taken from the @code{#+COLUMNS}
3707 line or from the variable @code{org-columns-default-format}, and column
3708 view is established for the current entry and its subtree.
3709 @kindex q
3710 @item q
3711 Exit column view.
3712 @tsubheading{Editing values}
3713 @item @key{left} @key{right} @key{up} @key{down}
3714 Move through the column view from field to field.
3715 @kindex S-@key{left}
3716 @kindex S-@key{right}
3717 @item  S-@key{left}/@key{right}
3718 Switch to the next/previous allowed value of the field.  For this, you
3719 have to have specified allowed values for a property.
3720 @kindex n
3721 @kindex p
3722 @itemx  n / p
3723 Same as @kbd{S-@key{left}/@key{right}}
3724 @kindex e
3725 @item e
3726 Edit the property at point.  For the special properties, this will
3727 invoke the same interface that you normally use to change that
3728 property.  For example, when editing a TAGS property, the tag completion
3729 or fast selection interface will pop up.
3730 @kindex C-c C-c
3731 @item C-c C-c
3732 When there is a checkbox at point, toggle it.
3733 @kindex v
3734 @item v
3735 View the full value of this property.  This is useful if the width of
3736 the column is smaller than that of the value.
3737 @kindex a
3738 @item a
3739 Edit the list of allowed values for this property.  If the list is found
3740 in the hierarchy, the modified values is stored there.  If no list is
3741 found, the new value is stored in the first entry that is part of the
3742 current column view.
3743 @tsubheading{Modifying the table structure}
3744 @kindex <
3745 @kindex >
3746 @item < / >
3747 Make the column narrower/wider by one character.
3748 @kindex S-M-@key{right}
3749 @item S-M-@key{right}
3750 Insert a new column, to the right of the current column.
3751 @kindex S-M-@key{left}
3752 @item S-M-@key{left}
3753 Delete the current column.
3754 @end table
3756 @node Capturing Column View,  , Using column view, Column view
3757 @subsection Capturing Column View
3759 Since column view is just an overlay over a buffer, it cannot be
3760 exported or printed directly.  If you want to capture a column view, use
3761 the dynamic block (@pxref{Dynamic blocks}).  The frame of this block
3762 looks like this:
3764 @example
3765 * The column view
3766 #+BEGIN: columnview :hlines 1 :id "label"
3768 #+END:
3769 @end example
3771 @noindent This dynamic block has the following parameters:
3773 @table @code
3774 @item :id
3775 This is most important parameter.  Column view is a feature that is
3776 often localized to a certain (sub)tree, and the capture block might be
3777 in a different location in the file.  To identify the tree whose view to
3778 capture, you can use 3 values:
3779 @example
3780 local     @r{use the tree in which the capture block is located}
3781 global    @r{make a global view, including all headings in the file}
3782 "label"   @r{call column view in the tree that has and @code{:ID:}}
3783           @r{property with the value @i{label}}
3784 @end example
3785 @item :hlines
3786 When @code{t}, insert a hline after every line.  When a number N, insert
3787 a hline before each headline with level @code{<= N}.
3788 @item :vlines
3789 When set to @code{t}, enforce column groups to get vertical lines.
3790 @end table
3792 @noindent
3793 The following commands insert or update the dynamic block:
3795 @table @kbd
3796 @kindex C-c C-x r
3797 @item C-c C-x r
3798 Insert a dynamic block capturing a column view.  You will be prompted
3799 for the scope or id of the view.
3800 @kindex C-c C-c
3801 @item C-c C-c
3802 @kindex C-c C-x C-u
3803 @itemx C-c C-x C-u
3804 Update dynamical block at point.  The cursor needs to be in the
3805 @code{#+BEGIN} line of the dynamic block.
3806 @kindex C-u C-c C-x C-u
3807 @item C-u C-c C-x C-u
3808 Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
3809 you have several clocktable blocks in a buffer.
3810 @end table
3812 @node Property API,  , Column view, Properties and columns
3813 @section The Property API
3814 @cindex properties, API
3815 @cindex API, for properties
3817 There is a full API for accessing and changing properties.  This API can
3818 be used by Emacs Lisp programs to work with properties and to implement
3819 features based on them.  For more information see @ref{Using the
3820 property API}.
3822 @node Dates and times, Remember, Properties and columns, Top
3823 @chapter Dates and Times
3824 @cindex dates
3825 @cindex times
3826 @cindex time stamps
3827 @cindex date stamps
3829 Items can be labeled with a date and/or a time to make them useful for
3830 project planning.  The specially formatted string carrying the date and
3831 time information is called a @emph{timestamp} in Org-mode.  This may be
3832 a little confusing because timestamp is often used as indicating when
3833 something was created or last changed.  However, in Org-mode this term
3834 is used in a much wider sense.
3836 @menu
3837 * Time stamps::                 Assigning a time to a tree entry
3838 * Creating timestamps::         Commands which insert timestamps
3839 * Deadlines and scheduling::    Planning your work
3840 * Clocking work time::          
3841 @end menu
3844 @node Time stamps, Creating timestamps, Dates and times, Dates and times
3845 @section Time stamps, deadlines and scheduling
3846 @cindex time stamps
3847 @cindex ranges, time
3848 @cindex date stamps
3849 @cindex deadlines
3850 @cindex scheduling
3852 A time stamp is a specification of a date (possibly with time or a range
3853 of times) in a special format, either @samp{<2003-09-16 Tue>} or
3854 @samp{<2003-09-16 Tue 09:39>} or @samp{<2003-09-16 Tue
3855 12:00-12:30>}@footnote{This is the standard ISO date/time format.  If
3856 you cannot get used to these, see @ref{Custom time format}}.  A time
3857 stamp can appear anywhere in the headline or body of an org-tree entry.
3858 Its presence causes entries to be shown on specific dates in the agenda
3859 (@pxref{Weekly/Daily agenda}).  We distinguish:
3861 @table @var
3862 @item Plain time stamp; Event; Appointment
3863 @cindex timestamp
3864 A simple time stamp just assigns a date/time to an item.  This is just
3865 like writing down an appointment or event in a paper agenda.  In the
3866 timeline and agenda displays, the headline of an entry associated with a
3867 plain time stamp will be shown exactly on that date.
3869 @example
3870 * Meet Peter at the movies <2006-11-01 Wed 19:15>
3871 * Discussion on climate change <2006-11-02 Thu 20:00-22:00>
3872 @end example
3874 @item Time stamp with repeater interval
3875 @cindex timestamp, with repeater interval
3876 A time stamp may contain a @emph{repeater interval}, indicating that it
3877 applies not only on the given date, but again and again after a certain
3878 interval of N days (d), weeks (w), months(m), or years(y).  The
3879 following will show up in the agenda every Wednesday:
3881 @example
3882 * Pick up Sam at school <2007-05-16 Wed 12:30 +1w>
3883 @end example
3885 @item Diary-style sexp entries
3886 For more complex date specifications, Org-mode supports using the
3887 special sexp diary entries implemented in the Emacs calendar/diary
3888 package.  For example
3890 @example
3891 * The nerd meeting on every 2nd Thursday of the month
3892   <%%(diary-float t 4 2)>
3893 @end example
3895 @item Time/Date range
3896 @cindex timerange
3897 @cindex date range
3898 Two time stamps connected by @samp{--} denote a range.  The headline
3899 will be shown on the first and last day of the range, and on any dates
3900 that are displayed and fall in the range.  Here is an example:
3902 @example
3903 ** Meeting in Amsterdam
3904    <2004-08-23 Mon>--<2004-08-26 Thu>
3905 @end example
3907 @item Inactive time stamp
3908 @cindex timestamp, inactive
3909 @cindex inactive timestamp
3910 Just like a plain time stamp, but with square brackets instead of
3911 angular ones.  These time stamps are inactive in the sense that they do
3912 @emph{not} trigger an entry to show up in the agenda.
3914 @example
3915 * Gillian comes late for the fifth time [2006-11-01 Wed]
3916 @end example
3918 @end table
3920 @node Creating timestamps, Deadlines and scheduling, Time stamps, Dates and times
3921 @section Creating timestamps
3922 @cindex creating timestamps
3923 @cindex timestamps, creating
3925 For Org-mode to recognize time stamps, they need to be in the specific
3926 format.  All commands listed below produce time stamps in the correct
3927 format.
3929 @table @kbd
3930 @kindex C-c .
3931 @item C-c .
3932 Prompt for a date and insert a corresponding time stamp.  When the
3933 cursor is at a previously used time stamp, it is updated to NOW.  When
3934 this command is used twice in succession, a time range is inserted.
3936 @kindex C-u C-c .
3937 @item C-u C-c .
3938 Like @kbd{C-c .}, but use the alternative format which contains date
3939 and time.  The default time can be rounded to multiples of 5 minutes,
3940 see the option @code{org-time-stamp-rounding-minutes}.
3942 @kindex C-c !
3943 @item C-c !
3944 Like @kbd{C-c .}, but insert an inactive time stamp that will not cause
3945 an agenda entry.
3947 @kindex C-c <
3948 @item C-c <
3949 Insert a time stamp corresponding to the cursor date in the Calendar.
3951 @kindex C-c >
3952 @item C-c >
3953 Access the Emacs calendar for the current date.  If there is a
3954 timestamp in the current line, goto the corresponding date
3955 instead.
3957 @kindex C-c C-o
3958 @item C-c C-o
3959 Access the agenda for the date given by the time stamp or -range at
3960 point (@pxref{Weekly/Daily agenda}).
3962 @kindex S-@key{left}
3963 @kindex S-@key{right}
3964 @item S-@key{left}
3965 @itemx S-@key{right}
3966 Change date at cursor by one day.  These key bindings conflict with
3967 CUA-mode (@pxref{Conflicts}).
3969 @kindex S-@key{up}
3970 @kindex S-@key{down}
3971 @item S-@key{up}
3972 @itemx S-@key{down}
3973 Change the item under the cursor in a timestamp.  The cursor can be on a
3974 year, month, day, hour or minute.  Note that if the cursor is in a
3975 headline and not at a time stamp, these same keys modify the priority of
3976 an item.  (@pxref{Priorities}). The key bindings also conflict with
3977 CUA-mode (@pxref{Conflicts}).
3979 @kindex C-c C-y
3980 @cindex evaluate time range
3981 @item C-c C-y
3982 Evaluate a time range by computing the difference between start and
3983 end.  With prefix arg, insert result after the time range (in a table:
3984 into the following column).
3985 @end table
3988 @menu
3989 * The date/time prompt::        How org-mode helps you entering date and time
3990 * Custom time format::          Making dates look differently
3991 @end menu
3993 @node The date/time prompt, Custom time format, Creating timestamps, Creating timestamps
3994 @subsection The date/time prompt
3995 @cindex date, reading in minibuffer
3996 @cindex time, reading in minibuffer
3998 When Org-mode prompts for a date/time, the default is shown as an ISO
3999 date, and the prompt therefore seems to ask for an ISO date.  But it
4000 will in fact accept any string containing some date and/or time
4001 information, and it is really smart about interpreting your input.  You
4002 can, for example, use @kbd{C-y} to paste a (possibly multi-line) string
4003 copied from an email message.  Org-mode will find whatever information
4004 is in there and derive anything you have not specified from the
4005 @emph{default date and time}.  The default is usually the current date
4006 and time, but when modifying an existing time stamp, or when entering
4007 the second stamp of a range, it is taken from the stamp in the buffer.
4008 When filling in information, Org-mode assumes that most of the time you
4009 will want to enter a date in the future: If you omit the month/year and
4010 the given day/month is @i{before} today, it will assume that you mean a
4011 future date@footnote{See the variable
4012 @code{org-read-date-prefer-future}.}.
4014 For example, lets assume that today is @b{June 13, 2006}.  Here is how
4015 various inputs will be interpreted, the items filled in by Org-mode are
4016 in @b{bold}.
4018 @example
4019 3-2-5         --> 2003-02-05
4020 14            --> @b{2006}-@b{06}-14
4021 12            --> @b{2006}-@b{07}-12
4022 Fri           --> nearest Friday (defaultdate or later)
4023 sep 15        --> @b{2006}-11-15
4024 feb 15        --> @b{2007}-02-15
4025 sep 12 9      --> 2009-09-12
4026 12:45         --> @b{2006}-@b{06}-@b{13} 12:45
4027 22 sept 0:34  --> @b{2006}-09-22 0:34
4028 @end example
4030 Furthermore you can specify a relative date by giving, as the
4031 @emph{first} thing in the input: a plus/minus sign, a number and a
4032 letter [dwmy] to indicate change in days weeks, months, years.  With a
4033 single plus or minus, the date is always relative to today.  With a
4034 double plus or minus, it is relative to the default date.  If instead of
4035 a single letter, you use the abbreviation of day name, the date will be
4036 the nth such day.  E.g.
4038 @example
4039 +4d           --> four days from today
4040 +4            --> same as above
4041 +2w           --> two weeks from today
4042 ++5           --> five days from default date
4043 +2tue         --> second tuesday from now.
4044 @end example
4046 The function understands English month and weekday abbreviations.  If
4047 you want to use unabbreviated names and/or other languages, configure
4048 the variables @code{parse-time-months} and @code{parse-time-weekdays}.
4050 @cindex calendar, for selecting date
4051 Parallel to the minibuffer prompt, a calendar is popped up@footnote{If
4052 you don't need/want the calendar, configure the variable
4053 @code{org-popup-calendar-for-date-prompt}.}.  When you exit the date
4054 prompt, either by clicking on a date in the calendar, or by pressing
4055 @key{RET}, the date selected in the calendar will be combined with the
4056 information entered at the prompt.  You can control the calendar fully
4057 from the minibuffer:
4059 @kindex <
4060 @kindex >
4061 @kindex mouse-1
4062 @kindex S-@key{right}
4063 @kindex S-@key{left}
4064 @kindex S-@key{down}
4065 @kindex S-@key{up}
4066 @kindex M-S-@key{right}
4067 @kindex M-S-@key{left}
4068 @kindex @key{RET}
4069 @example
4070 > / <          @r{Scroll calendar forward/backward by one month.}
4071 mouse-1        @r{Select date by clicking on it.}
4072 S-@key{right}/@key{left}     @r{One day forward/backward.}
4073 S-@key{down}/@key{up}     @r{One week forward/backward.}
4074 M-S-@key{right}/@key{left}   @r{One month forward/backward.}
4075 @key{RET}           @r{Choose date in calendar.}
4076 @end example
4078 The actions of the date/time prompt may seem complex, but I asure you
4079 they will grow on you.  To help you understand what is going on, the
4080 current interpretation of your input will be displayed live in the
4081 minibuffer@footnote{If you find this distracting, turn the display of
4082 with @code{org-read-date-display-live}.}.
4084 @node Custom time format,  , The date/time prompt, Creating timestamps
4085 @subsection Custom time format
4086 @cindex custom date/time format
4087 @cindex time format, custom
4088 @cindex date format, custom
4090 Org-mode uses the standard ISO notation for dates and times as it is
4091 defined in ISO 8601.  If you cannot get used to this and require another
4092 representation of date and time to keep you happy, you can get it by
4093 customizing the variables @code{org-display-custom-times} and
4094 @code{org-time-stamp-custom-formats}.
4096 @table @kbd
4097 @kindex C-c C-x C-t
4098 @item C-c C-x C-t
4099 Toggle the display of custom formats for dates and times.
4100 @end table
4102 @noindent
4103 Org-mode needs the default format for scanning, so the custom date/time
4104 format does not @emph{replace} the default format - instead it is put
4105 @emph{over} the default format using text properties.  This has the
4106 following consequences:
4107 @itemize @bullet
4108 @item 
4109 You cannot place the cursor onto a time stamp anymore, only before or
4110 after.
4111 @item
4112 The @kbd{S-@key{up}/@key{down}} keys can no longer be used to adjust
4113 each component of a time stamp.  If the cursor is at the beginning of
4114 the stamp, @kbd{S-@key{up}/@key{down}} will change the stamp by one day,
4115 just like @kbd{S-@key{left}/@key{right}}.  At the end of the stamp, the
4116 time will be changed by one minute.
4117 @item
4118 If the time stamp contains a range of clock times or a repeater, these
4119 will not be overlayed, but remain in the buffer as they were.
4120 @item
4121 When you delete a time stamp character-by-character, it will only
4122 disappear from the buffer after @emph{all} (invisible) characters
4123 belonging to the ISO timestamp have been removed.
4124 @item
4125 If the custom time stamp format is longer than the default and you are
4126 using dates in tables, table alignment will be messed up.  If the custom
4127 format is shorter, things do work as expected.
4128 @end itemize
4131 @node Deadlines and scheduling, Clocking work time, Creating timestamps, Dates and times
4132 @section Deadlines and Scheduling
4134 A time stamp may be preceded by special keywords to facilitate planning
4135 of work:
4137 @table @var
4138 @item DEADLINE
4139 @cindex DEADLINE keyword
4140 The task (most likely a TODO item) is supposed to be finished on that
4141 date, and it will be listed then.  In addition, the compilation for
4142 @emph{today} will carry a warning about the approaching or missed
4143 deadline, starting @code{org-deadline-warning-days} before the due date,
4144 and continuing until the entry is marked DONE.  An example:
4146 @example
4147 *** TODO write article about the Earth for the Guide
4148     The editor in charge is [[bbdb:Ford Prefect]]
4149     DEADLINE: <2004-02-29 Sun>
4150 @end example
4152 You can specify a different lead time for warnings for a specific
4153 deadlines using the following syntax.  Here is an example with a warning
4154 period of 5 days @code{DEADLINE: <2004-02-29 Sun -5d>}.
4156 @item SCHEDULED
4157 @cindex SCHEDULED keyword
4158 You are planning to start working on that task on the given date. The
4159 headline will be listed under the given date@footnote{It will still be
4160 listed on that date after it has been marked DONE.  If you don't like
4161 this, set the variable @code{org-agenda-skip-scheduled-if-done}.}.  In
4162 addition, a reminder that the scheduled date has passed will be present
4163 in the compilation for @emph{today}, until the entry is marked DONE.
4164 I.e., the task will automatically be forwarded until completed.
4166 @example
4167 *** TODO Call Trillian for a date on New Years Eve.
4168     SCHEDULED: <2004-12-25 Sat>
4169 @end example
4171 @noindent
4172 @b{Important:} Scheduling an item in Org-mode should @i{not} be
4173 understood like @i{Scheduling a meeting}.  Setting a date for a meeting
4174 is just a simple appointment, you should mark this entry with a simple
4175 plain time stamp, to get this item shown on the date where it applies.
4176 This is a frequent mis-understanding from Org-users.  In Org-mode,
4177 @i{Scheduling} means setting a date when you want to start working on an
4178 action item.
4179 @end table
4181 @menu
4182 * Inserting deadline/schedule::  Planning items
4183 * Repeated tasks::              Items that show up again and again
4184 @end menu
4186 @node Inserting deadline/schedule, Repeated tasks, Deadlines and scheduling, Deadlines and scheduling
4187 @subsection Inserting deadline/schedule
4189 The following commands allow to quickly insert a deadline or to schedule
4190 an item:
4192 @table @kbd
4194 @kindex C-c C-d
4195 @item C-c C-d
4196 Insert @samp{DEADLINE} keyword along with a stamp.  The insertion will
4197 happen in the line directly following the headline.  When called with a
4198 prefix arg, an existing deadline will be removed from the entry.
4199 @c FIXME Any CLOSED timestamp will be removed.????????
4201 @kindex C-c / d
4202 @cindex sparse tree, for deadlines
4203 @item C-c / d
4204 Create a sparse tree with all deadlines that are either past-due, or
4205 which will become due within @code{org-deadline-warning-days}.
4206 With @kbd{C-u} prefix, show all deadlines in the file.  With a numeric
4207 prefix, check that many days.  For example, @kbd{C-1 C-c / d} shows
4208 all deadlines due tomorrow.
4210 @kindex C-c C-s
4211 @item C-c C-s
4212 Insert @samp{SCHEDULED} keyword along with a stamp.  The insertion will
4213 happen in the line directly following the headline.  Any CLOSED
4214 timestamp will be removed.  When called with a prefix argument, remove
4215 the scheduling date from the entry.
4216 @end table
4218 @node Repeated tasks,  , Inserting deadline/schedule, Deadlines and scheduling
4219 @subsection Repeated Tasks
4221 Some tasks need to be repeated again and again, and Org-mode therefore
4222 allows to use a repeater in a DEADLINE or SCHEDULED time stamp, for
4223 example:
4224 @example
4225 ** TODO Pay the rent
4226    DEADLINE: <2005-10-01 Sat +1m>
4227 @end example
4229 Deadlines and scheduled items produce entries in the agenda when they
4230 are over-due, so it is important to be able to mark such an entry as
4231 completed once you have done so.  When you mark a DEADLINE or a SCHEDULE
4232 with the todo keyword DONE, it will no longer produce entries in the
4233 agenda. The problem with this is, however, that then also the
4234 @emph{next} instance of the repeated entry will not be active.  Org-mode
4235 deals with this in the following way: When you try to mark such an entry
4236 DONE (using @kbd{C-c C-t}), it will shift the base date of the repeating
4237 time stamp by the repeater interval, and immediately set the entry state
4238 back to TODO.  In the example above, setting the state to DONE would
4239 actually switch the date like this:
4241 @example
4242 ** TODO Pay the rent
4243    DEADLINE: <2005-11-01 Tue +1m>
4244 @end example
4246 You will also be prompted for a note@footnote{You can change this using
4247 the option @code{org-log-repeat}, or the @code{#+STARTUP} options
4248 @code{logrepeat} and @code{nologrepeat}.} that will be put under the
4249 DEADLINE line to keep a record that you actually acted on the previous
4250 instance of this deadline.
4252 As a consequence of shifting the base date, this entry will no longer be
4253 visible in the agenda when checking past dates, but all future instances
4254 will be visible.
4256 You may have both scheduling and deadline information for a specific
4257 task - just make sure that the repeater intervals on both are the same.
4259 @node Clocking work time,  , Deadlines and scheduling, Dates and times
4260 @section Clocking work time
4262 Org-mode allows you to clock the time you spent on specific tasks in a
4263 project.  When you start working on an item, you can start the clock.
4264 When you stop working on that task, or when you mark the task done, the
4265 clock is stopped and the corresponding time interval is recorded.  It
4266 also computes the total time spent on each subtree of a project.
4268 @table @kbd
4269 @kindex C-c C-x C-i
4270 @item C-c C-x C-i
4271 Start the clock on the current item (clock-in).  This inserts the CLOCK
4272 keyword together with a timestamp.  If this is not the first clocking of
4273 this item, the multiple CLOCK lines will be wrapped into a
4274 @code{:CLOCK:} drawer (see also the variable
4275 @code{org-clock-into-drawer}.
4276 @kindex C-c C-x C-o
4277 @item C-c C-x C-o
4278 Stop the clock (clock-out).  The inserts another timestamp at the same
4279 location where the clock was last started.  It also directly computes
4280 the resulting time in inserts it after the time range as @samp{=>
4281 HH:MM}.  See the variable @code{org-log-done} for the possibility to
4282 record an additional note together with the clock-out time
4283 stamp@footnote{The corresponding in-buffer setting is: @code{#+STARTUP:
4284 lognoteclock-out}}.
4285 @kindex C-c C-y
4286 @item C-c C-y
4287 Recompute the time interval after changing one of the time stamps.  This
4288 is only necessary if you edit the time stamps directly.  If you change
4289 them with @kbd{S-@key{cursor}} keys, the update is automatic.
4290 @kindex C-c C-t
4291 @item C-c C-t
4292 Changing the TODO state of an item to DONE automatically stops the clock
4293 if it is running in this same item.
4294 @kindex C-c C-x C-x
4295 @item C-c C-x C-x
4296 Cancel the current clock.  This is useful if a clock was started by
4297 mistake, or if you ended up working on something else.
4298 @kindex C-c C-x C-j
4299 @item C-c C-x C-j
4300 Jump to the entry that contains the currently running clock, an another
4301 window.
4302 @kindex C-c C-x C-d
4303 @item C-c C-x C-d
4304 Display time summaries for each subtree in the current buffer.  This
4305 puts overlays at the end of each headline, showing the total time
4306 recorded under that heading, including the time of any subheadings. You
4307 can use visibility cycling to study the tree, but the overlays disappear
4308 when you change the buffer (see variable
4309 @code{org-remove-highlights-with-change}) or press @kbd{C-c C-c}.
4310 @kindex C-c C-x C-r
4311 @item C-c C-x C-r
4312 Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
4313 report as an org-mode table into the current file.  When the cursor is
4314 at an existing clock table, just update it.  When called with a prefix
4315 argument, jump to the first clock report in the current document and
4316 update it.
4317 @example
4318 #+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
4320 #+END: clocktable
4321 @end example
4322 @noindent
4323 If such a block already exists at point, its content is replaced by the
4324 new table.  The @samp{BEGIN} line can specify options:
4325 @example
4326 :maxlevel    @r{Maximum level depth to which times are listed in the table.}
4327 :emphasize   @r{When @code{t}, emphasize level one and level two items}
4328 :scope       @r{The scope to consider.  This can be any of the following:}
4329              nil        @r{the current buffer or narrowed region}
4330              file       @r{the full current buffer}
4331              subtree    @r{the subtree where the clocktable is located}
4332              treeN      @r{the surrounding level N tree, for example @code{tree3}}
4333              tree       @r{the surrounding level 1 tree}
4334              agenda     @r{all agenda files}
4335              ("file"..) @r{scan these files}
4336 :block       @r{The time block to consider.  This block is specified relative}
4337              @r{to the current time and may be any of these keywords:}
4338              @r{@code{today}, @code{yesterday}, @code{thisweek}, @code{lastweek},}
4339              @r{@code{thismonth}, @code{lastmonth}, @code{thisyear}, or @code{lastyear}}.
4340 :tstart      @r{A time string specifying when to start considering times}
4341 :tend        @r{A time string specifying when to stop considering times}
4342 @end example
4343 So to get a clock summary of the current level 1 tree, for the current
4344 day, you could write
4345 @example
4346 #+BEGIN: clocktable :maxlevel 2 :block today :scope tree1
4348 #+END: clocktable
4349 @end example
4350 and to use a specific time range you could write@footnote{Note that all
4351 parameters must be specified in a single line - the line is broken here
4352 only to fit it onto the manual.}
4353 @example
4354 #+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>" 
4355                     :tend "<2006-08-10 Thu 12:00>"
4357 #+END: clocktable
4358 @end example
4359 @kindex C-c C-c
4360 @item C-c C-c
4361 @kindex C-c C-x C-u
4362 @itemx C-c C-x C-u
4363 Update dynamical block at point.  The cursor needs to be in the
4364 @code{#+BEGIN} line of the dynamic block.
4365 @kindex C-u C-c C-x C-u
4366 @item C-u C-c C-x C-u
4367 Update all dynamic blocks (@pxref{Dynamic blocks}).  This is useful if
4368 you have several clocktable blocks in a buffer.
4369 @end table
4371 The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
4372 the agenda (@pxref{Weekly/Daily agenda}) to show which tasks have been
4373 worked on or closed during a day.
4375 @node Remember, Agenda views, Dates and times, Top
4376 @chapter Remember
4377 @cindex @file{remember.el}
4379 The @i{Remember} package by John Wiegley lets you store quick notes with
4380 little interruption of your work flow.  See
4381 @uref{http://www.emacswiki.org/cgi-bin/wiki/RememberMode} for more
4382 information.  It is an excellent way to add new notes and tasks to
4383 Org-mode files.  Org-mode significantly expands the possibilities of
4384 @i{remember}: You may define templates for different note types, and
4385 associate target files and headlines with specific templates.  It also
4386 allows you to select the location where a note should be stored
4387 interactively, on the fly.
4389 @menu
4390 * Setting up remember::         Some code for .emacs to get things going
4391 * Remember templates::          Define the outline of different note types
4392 * Storing notes::               Directly get the note to where it belongs
4393 * Refiling notes::              Moving a note or task to a project
4394 @end menu
4396 @node Setting up remember, Remember templates, Remember, Remember
4397 @section Setting up remember
4399 The following customization will tell @i{remember} to use org files as
4400 target, and to create annotations compatible with Org-mode links.
4402 @example
4403 (org-remember-insinuate)
4404 (setq org-directory "~/path/to/my/orgfiles/")
4405 (setq org-default-notes-file (concat org-directory "/notes.org"))
4406 (define-key global-map "\C-cr" 'org-remember)
4407 @end example
4409 The last line binds the command @code{org-remember} to a global
4410 key@footnote{Please select your own key, @kbd{C-c r} is only a
4411 suggestion.}.  @code{org-remember} basically just calls @code{remember},
4412 but it makes a few things easier: If there is an active region, it will
4413 automatically copy the region into the remember buffer.  It also allows
4414 to jump to the buffer and location where remember notes are being
4415 stored: Just call @code{org-remember} with a prefix argument.
4417 @node Remember templates, Storing notes, Setting up remember, Remember
4418 @section Remember templates
4419 @cindex templates, for remember
4421 In combination with Org-mode, you can use templates to generate
4422 different types of @i{remember} notes.  For example, if you would like
4423 to use one template to create general TODO entries, another one for
4424 journal entries, and a third one for collecting random ideas, you could
4425 use:
4427 @example
4428 (setq org-remember-templates
4429  '(("Todo" ?t "* TODO %?\n  %i\n  %a" "~/org/TODO.org" "Tasks")
4430    ("Journal" ?j "* %U %?\n\n  %i\n  %a" "~/org/JOURNAL.org")
4431    ("Idea" ?i "* %^@{Title@}\n  %i\n  %a" "~/org/JOURNAL.org" "New Ideas")))
4432 @end example
4434 @noindent In these entries, the first string is just a name, and the
4435 character specifies how to select the template.  It is useful if the
4436 character is also the first letter of the name.  The next string
4437 specifies the template.  Two more (optional) strings give the file in
4438 which, and the headline under which the new note should be stored.  The
4439 file (if not present or @code{nil}) defaults to
4440 @code{org-default-notes-file}, the heading to
4441 @code{org-remember-default-headline}.
4443 When you call @kbd{M-x remember} (or @kbd{M-x org-remember}) to remember
4444 something, org will prompt for a key to select the template (if you have
4445 more than one template) and then prepare the buffer like
4446 @example
4447 * TODO
4448   [[file:link to where you called remember]]
4449 @end example
4451 @noindent
4452 During expansion of the template, special @kbd{%}-escapes allow dynamic
4453 insertion of content:
4454 @example
4455 %^@{prompt@}  @r{prompt the user for a string and replace this sequence with it.}
4456 %t          @r{time stamp, date only}
4457 %T          @r{time stamp with date and time}
4458 %u, %U      @r{like the above, but inactive time stamps}
4459 %^t         @r{like @code{%t}, but prompt for date.  Similarly @code{%^T}, @code{%^u}, @code{%^U}}
4460             @r{You may define a prompt like @code{%^@{Birthday@}t}}
4461 %n          @r{user name (taken from @code{user-full-name})}
4462 %a          @r{annotation, normally the link created with @code{org-store-link}}
4463 %A          @r{like @code{%a}, but prompt for the description part}
4464 %i          @r{initial content, the region when remember is called with C-u.}
4465             @r{The entire text will be indented like @code{%i} itself.}
4466 %c          @r{Content of the clipboard, or current kill ring head.}
4467 %^g         @r{prompt for tags, with completion on tags in target file.}
4468 %^G         @r{prompt for tags, with completion all tags in all agenda files.}
4469 %:keyword   @r{specific information for certain link types, see below}
4470 %[pathname] @r{insert the contents of the file given by @code{pathname}}
4471 %(sexp)     @r{evaluate elisp @code{(sexp)} and replace with the result}
4472 @end example
4474 @noindent
4475 For specific link types, the following keywords will be
4476 defined@footnote{If you define your own link types (@pxref{Adding
4477 hyperlink types}), any property you store with
4478 @code{org-store-link-props} can be accessed in remember templates in a
4479 similar way.}:
4481 @example
4482 Link type          |  Available keywords
4483 -------------------+----------------------------------------------
4484 bbdb               |  %:name %:company
4485 vm, wl, mh, rmail  |  %:type %:subject %:message-id
4486                    |  %:from %:fromname %:fromaddress
4487                    |  %:to   %:toname   %:toaddress
4488                    |  %: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}.}}       
4489 gnus               |  %:group, @r{for messages also all email fields}
4490 w3, w3m            |  %:url
4491 info               |  %:file %:node
4492 calendar           |  %:date"
4493 @end example
4495 @noindent
4496 To place the cursor after template expansion use:
4498 @example
4499 %?          @r{After completing the template, position cursor here.}
4500 @end example
4502 @noindent
4503 If you change you mind about which template to use, call
4504 @code{org-remember} in the remember buffer.  You may then select a new
4505 template that will be filled with the previous context information.
4507 @node Storing notes, Refiling notes, Remember templates, Remember
4508 @section Storing notes
4510 When you are finished preparing a note with @i{remember}, you have to press
4511 @kbd{C-c C-c} to file the note away.  The handler will store the note in
4512 the file and under the headline specified in the template, or it will
4513 use the default file and headlines.  The window configuration will be
4514 restored, and you are back in the working context before the call to
4515 @code{remember}.  To re-use the location found during the last call to
4516 @code{remember}, exit the remember buffer with @kbd{C-u C-u C-c C-c},
4517 i.e. specify a double prefix argument to @kbd{C-c C-c}.
4519 If you want to store the note directly to a different place, use
4520 @kbd{C-u C-c C-c} instead to exit remember@footnote{Configure the
4521 variable @code{org-remember-store-without-prompt} to make this behavior
4522 the default.}.  The handler will then first prompt for a target file -
4523 if you press @key{RET}, the value specified for the template is used.
4524 Then the command offers the headings tree of the selected file, with the
4525 cursor position at the default headline (if you had specified one in the
4526 template).  You can either immediately press @key{RET} to get the note
4527 placed there.  Or you can use the following keys to find a different
4528 location:
4529 @example
4530 @key{TAB}         @r{Cycle visibility.}
4531 @key{down} / @key{up}   @r{Next/previous visible headline.}
4532 n / p        @r{Next/previous visible headline.}
4533 f / b        @r{Next/previous headline same level.}
4534 u            @r{One level up.}
4535 @c 0-9          @r{Digit argument.}
4536 @end example
4537 @noindent
4538 Pressing @key{RET} or @key{left} or @key{right}
4539 then leads to the following result.
4541 @multitable @columnfractions 0.2 0.15 0.65
4542 @item @b{Cursor position} @tab @b{Key} @tab @b{Note gets inserted}
4543 @item on headline     @tab @key{RET}              @tab as sublevel of the heading at cursor, first or last
4544 @item                 @tab                        @tab depending on @code{org-reverse-note-order}.
4545 @item                 @tab @key{left}/@key{right} @tab as same level, before/after current heading
4546 @item buffer-start    @tab @key{RET} @tab as level 2 heading at end of file or level 1 at beginning
4547 @item                 @tab @tab depending on @code{org-reverse-note-order}.
4548 @item not on headline @tab @key{RET}
4549       @tab at cursor position, level taken from context.
4550 @end multitable
4552 Before inserting the text into a tree, the function ensures that the
4553 text has a headline, i.e. a first line that starts with a @samp{*}.  If
4554 not, a headline is constructed from the current date and some additional
4555 data.  If you have indented the text of the note below the headline, the
4556 indentation will be adapted if inserting the note into the tree requires
4557 demotion from level 1.
4559 @node Refiling notes,  , Storing notes, Remember
4560 @section Refiling notes
4561 @cindex refiling notes
4563 Remember is usually used to quickly capture notes and tasks into one or
4564 a few capture lists.  When reviewing the captured data, you may want to
4565 refile some of the entries into a different list, for example into a
4566 project.  Cutting, finding the right location and then pasting the note
4567 is cumbersome.  To simplify this process, you can use the following
4568 special command:
4570 @table @kbd
4571 @kindex C-c C-w
4572 @item C-c C-w
4573 Refile the entry at point.  This command offers possible locations for
4574 refiling the entry and lets you select one with completion.  The item is
4575 filed below the target heading as a subitem.  Depending on
4576 @code{org-reverse-note-order}, it will be either the first of last
4577 subitem, and you can toggle the value of this variable for the duration
4578 of the command by using a @kbd{C-u} prefix.@* By default, all level 1
4579 headlines in the current buffer are considered to be targets, but you
4580 can have more complex definitions across a number of files.  See the
4581 variable @code{org-refile-targets} for details.  The list of targets is
4582 compiled upon first use, you can update it by using a double prefix
4583 argument (@kbd{C-u C-u}) to this command.
4584 @end table
4586 @node Agenda views, Embedded LaTeX, Remember, Top
4587 @chapter Agenda Views
4588 @cindex agenda views
4590 Due to the way Org-mode works, TODO items, time-stamped items, and
4591 tagged headlines can be scattered throughout a file or even a number of
4592 files.  To get an overview over open action items, or over events that
4593 are important for a particular date, this information must be collected,
4594 sorted and displayed in an organized way.
4596 Org-mode can select items based on various criteria, and display them
4597 in a separate buffer.  Six different view types are provided:
4599 @itemize @bullet
4600 @item
4601 an @emph{agenda} that is like a calendar and shows information
4602 for specific dates,
4603 @item
4604 a @emph{TODO list} that covers all unfinished
4605 action items,
4606 @item
4607 a @emph{tags view}, showings headlines based on
4608 the tags associated with them,
4609 @item
4610 a @emph{timeline view} that shows all events in a single Org-mode file,
4611 in time-sorted view,
4612 @item
4613 a @emph{stuck projects view} showing projects that currently don't move
4614 along, and
4615 @item
4616 @emph{custom views} that are special tag/keyword searches and
4617 combinations of different views.
4618 @end itemize
4620 @noindent
4621 The extracted information is displayed in a special @emph{agenda
4622 buffer}.  This buffer is read-only, but provides commands to visit the
4623 corresponding locations in the original Org-mode files, and even to
4624 edit these files remotely.  
4626 Two variables control how the agenda buffer is displayed and whether the
4627 window configuration is restored when the agenda exits:
4628 @code{org-agenda-window-setup} and
4629 @code{org-agenda-restore-windows-after-quit}.
4631 @menu
4632 * Agenda files::                Files being searched for agenda information
4633 * Agenda dispatcher::           Keyboard access to agenda views
4634 * Built-in agenda views::       What is available out of the box?
4635 * Presentation and sorting::    How agenda items are prepared for display
4636 * Agenda commands::             Remote editing of org trees
4637 * Custom agenda views::         Defining special searches and views
4638 @end menu
4640 @node Agenda files, Agenda dispatcher, Agenda views, Agenda views
4641 @section Agenda files
4642 @cindex agenda files
4643 @cindex files for agenda
4645 The information to be shown is normally collected from all @emph{agenda
4646 files}, the files listed in the variable
4647 @code{org-agenda-files}@footnote{If the value of that variable is not a
4648 list, but a single file name, then the list of agenda files will be
4649 maintained in that external file.}. If a directory is part of this list,
4650 all files with the extension @file{.org} in this directory will be part
4651 of the list.
4653 Thus even if you only work with a single Org-mode file, this file should
4654 be put into that list@footnote{When using the dispatcher, pressing
4655 @kbd{<} before selecting a command will actually limit the command to
4656 the current file, and ignore @code{org-agenda-files} until the next
4657 dispatcher command.}.  You can customize @code{org-agenda-files}, but
4658 the easiest way to maintain it is through the following commands
4660 @cindex files, adding to agenda list
4661 @table @kbd
4662 @kindex C-c [
4663 @item C-c [
4664 Add current file to the list of agenda files.  The file is added to
4665 the front of the list.  If it was already in the list, it is moved to
4666 the front.  With prefix arg, file is added/moved to the end.
4667 @kindex C-c ]
4668 @item C-c ]
4669 Remove current file from the list of agenda files.
4670 @kindex C-,
4671 @kindex C-'
4672 @item C-,
4673 @itemx C-'
4674 Cycle through agenda file list, visiting one file after the other.
4675 @end table
4677 @noindent
4678 The Org menu contains the current list of files and can be used
4679 to visit any of them.
4681 If you would like to focus the agenda temporarily onto a file not in
4682 this list, or onto just one file in the list or even only a subtree in a
4683 file, this can be done in different ways.  For a single agenda command,
4684 you may press @kbd{<} once or several times in the dispatcher
4685 (@pxref{Agenda dispatcher}).  To restrict the agenda scope for an
4686 extended period, use the following commands:
4688 @table @kbd
4689 @kindex C-c C-x <
4690 @item C-c C-x <
4691 Permanently restrict the agenda to the current subtree.  When with a
4692 prefix argument, or with the cursor before the first headline in a file,
4693 the agenda scope is set to the entire file.  This restriction remains in
4694 effect until removed with @kbd{C-c C-x >}, or by typing either @kbd{<}
4695 or @kbd{>} in the agenda dispatcher.  If there is a window displaying an
4696 agenda view, the new restriction takes effect immediately.
4697 @kindex C-c C-x <
4698 @item C-c C-x <
4699 Remove the permanent restriction created by @kbd{C-c C-x <}.
4700 @end table
4702 @noindent
4703 When working with @file{Speedbar}, you can use the following commands in
4704 the speedbar frame:
4705 @table @kbd
4706 @kindex <
4707 @item < @r{in the speedbar frame}
4708 Permanently restrict the agenda to the item at the cursor in the
4709 speedbar frame, either an Org-mode file or a subtree in such a file.
4710 If there is a window displaying an agenda view, the new restriction takes
4711 effect immediately.
4712 @kindex <
4713 @item > @r{in the speedbar frame}
4714 Lift the restriction again.
4715 @end table
4717 @node Agenda dispatcher, Built-in agenda views, Agenda files, Agenda views
4718 @section The agenda dispatcher
4719 @cindex agenda dispatcher
4720 @cindex dispatching agenda commands
4721 The views are created through a dispatcher that should be bound to a
4722 global key, for example @kbd{C-c a} (@pxref{Installation}).  In the
4723 following we will assume that @kbd{C-c a} is indeed how the dispatcher
4724 is accessed and list keyboard access to commands accordingly.  After
4725 pressing @kbd{C-c a}, an additional letter is required to execute a
4726 command.  The dispatcher offers the following default commands:
4727 @table @kbd
4728 @item a
4729 Create the calendar-like agenda (@pxref{Weekly/Daily agenda}).
4730 @item t @r{/} T
4731 Create a list of all TODO items (@pxref{Global TODO list}).
4732 @item m @r{/} M
4733 Create a list of headlines matching a TAGS expression (@pxref{Matching
4734 tags and properties}).
4735 @item L
4736 Create the timeline view for the current buffer (@pxref{Timeline}).
4737 @item # @r{/} !
4738 Create a list of stuck projects (@pxref{Stuck projects}).
4739 @item /
4740 Search for a regular expression in all agenda files and additionally in
4741 the files listed in @code{org-agenda-multi-occur-extra-files}.  This
4742 uses the Emacs command @code{multi-occur}.  A prefix argument can be
4743 used to specify the number of context lines for each match, default is
4745 @item <
4746 Restrict an agenda command to the current buffer@footnote{For backward
4747 compatibility, you can also press @kbd{1} to restrict to the current
4748 buffer.}.  After pressing @kbd{<}, you still need to press the character
4749 selecting the command.
4750 @item < <
4751 If there is an active region, restrict the following agenda command to
4752 the region.  Otherwise, restrict it to the current subtree@footnote{For
4753 backward compatibility, you can also press @kbd{0} to restrict to the
4754 current buffer.}.  After pressing @kbd{< <}, you still need to press the
4755 character selecting the command.
4756 @end table
4758 You can also define custom commands that will be accessible through the
4759 dispatcher, just like the default commands.  This includes the
4760 possibility to create extended agenda buffers that contain several
4761 blocks together, for example the weekly agenda, the global TODO list and
4762 a number of special tags matches.  @xref{Custom agenda views}.
4764 @node Built-in agenda views, Presentation and sorting, Agenda dispatcher, Agenda views
4765 @section The built-in agenda views
4767 In this section we describe the built-in views.
4769 @menu
4770 * Weekly/Daily agenda::         The calendar page with current tasks
4771 * Global TODO list::            All unfinished action items
4772 * Matching tags and properties::  Structured information with fine-tuned search
4773 * Timeline::                    Time-sorted view for single file
4774 * Stuck projects::              Find projects you need to review
4775 @end menu
4777 @node Weekly/Daily agenda, Global TODO list, Built-in agenda views, Built-in agenda views
4778 @subsection The weekly/daily agenda
4779 @cindex agenda
4780 @cindex weekly agenda
4781 @cindex daily agenda
4783 The purpose of the weekly/daily @emph{agenda} is to act like a page of a
4784 paper agenda, showing all the tasks for the current week or day.
4786 @table @kbd
4787 @cindex org-agenda, command
4788 @kindex C-c a a
4789 @item C-c a a
4790 Compile an agenda for the current week from a list of org files.  The
4791 agenda shows the entries for each day.  With a numeric
4792 prefix@footnote{For backward compatibility, the universal prefix
4793 @kbd{C-u} causes all TODO entries to be listed before the agenda.  This
4794 feature is deprecated, use the dedicated TODO list, or a block agenda
4795 instead.}  (like @kbd{C-u 2 1 C-c a a}) you may set the number of days
4796 to be displayed (see also the variable @code{org-agenda-ndays})
4797 @end table
4799 Remote editing from the agenda buffer means, for example, that you can
4800 change the dates of deadlines and appointments from the agenda buffer.
4801 The commands available in the Agenda buffer are listed in @ref{Agenda
4802 commands}.
4804 @subsubheading Calendar/Diary integration
4805 @cindex calendar integration
4806 @cindex diary integration
4808 Emacs contains the calendar and diary by Edward M. Reingold.  The
4809 calendar displays a three-month calendar with holidays from different
4810 countries and cultures.  The diary allows you to keep track of
4811 anniversaries, lunar phases, sunrise/set, recurrent appointments
4812 (weekly, monthly) and more.  In this way, it is quite complementary to
4813 Org-mode.  It can be very useful to combine output from Org-mode with
4814 the diary.
4816 In order to include entries from the Emacs diary into Org-mode's
4817 agenda, you only need to customize the variable
4819 @lisp
4820 (setq org-agenda-include-diary t)
4821 @end lisp
4823 @noindent After that, everything will happen automatically.  All diary
4824 entries including holidays, anniversaries etc will be included in the
4825 agenda buffer created by Org-mode.  @key{SPC}, @key{TAB}, and
4826 @key{RET} can be used from the agenda buffer to jump to the diary
4827 file in order to edit existing diary entries.  The @kbd{i} command to
4828 insert new entries for the current date works in the agenda buffer, as
4829 well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
4830 Sunrise/Sunset times, show lunar phases and to convert to other
4831 calendars, respectively.  @kbd{c} can be used to switch back and forth
4832 between calendar and agenda.
4834 If you are using the diary only for sexp entries and holidays, it is
4835 faster to not use the above setting, but instead to copy or even move
4836 the entries into an Org-mode file. Org-mode evaluates diary-style sexp
4837 entries, and does it faster because there is no overhead for first
4838 creating the diary display.  Note that the sexp entries must start at
4839 the left margin, no white space is allowed before them.  For example,
4840 the following segment of an Org-mode file will be processed and entries
4841 will be made in the agenda:
4843 @example
4844 * Birthdays and similar stuff
4845 #+CATEGORY: Holiday
4846 %%(org-calendar-holiday)   ; special function for holiday names
4847 #+CATEGORY: Ann
4848 %%(diary-anniversary 14  5 1956) Arthur Dent is %d years old
4849 %%(diary-anniversary  2 10 1869) Mahatma Gandhi would be %d years old
4850 @end example
4852 @subsubheading Appointment reminders
4853 @cindex @file{appt.el}
4854 @cindex appointment reminders
4856 Org can interact with Emacs appointments notification facility.
4858 To add all the appointments of your agenda files, use the command
4859 @code{org-agenda-to-appt}.  This commands also lets you filter through
4860 the list of your appointments and add only those belonging to a specific
4861 category or matching a regular expression. See the docstring for
4862 details.
4864 @node Global TODO list, Matching tags and properties, Weekly/Daily agenda, Built-in agenda views
4865 @subsection The global TODO list
4866 @cindex global TODO list
4867 @cindex TODO list, global
4869 The global TODO list contains all unfinished TODO items, formatted and
4870 collected into a single place.
4872 @table @kbd
4873 @kindex C-c a t
4874 @item C-c a t
4875 Show the global TODO list.  This collects the TODO items from all
4876 agenda files (@pxref{Agenda views}) into a single buffer.  The buffer is in
4877 @code{agenda-mode}, so there are commands to examine and manipulate
4878 the TODO entries directly from that buffer (@pxref{Agenda commands}).
4879 @kindex C-c a T
4880 @item C-c a T
4881 @cindex TODO keyword matching
4882 Like the above, but allows selection of a specific TODO keyword.  You
4883 can also do this by specifying a prefix argument to @kbd{C-c a t}.  With
4884 a @kbd{C-u} prefix you are prompted for a keyword, and you may also
4885 specify several keywords by separating them with @samp{|} as boolean OR
4886 operator.  With a numeric prefix, the Nth keyword in
4887 @code{org-todo-keywords} is selected.
4888 @kindex r
4889 The @kbd{r} key in the agenda buffer regenerates it, and you can give
4890 a prefix argument to this command to change the selected TODO keyword,
4891 for example @kbd{3 r}.  If you often need a search for a specific
4892 keyword, define a custom command for it (@pxref{Agenda dispatcher}).@*
4893 Matching specific TODO keywords can also be done as part of a tags
4894 search (@pxref{Tag searches}).
4895 @end table
4897 Remote editing of TODO items means that you can change the state of a
4898 TODO entry with a single key press.  The commands available in the
4899 TODO list are described in @ref{Agenda commands}.
4901 @cindex sublevels, inclusion into todo list
4902 Normally the global todo list simply shows all headlines with TODO
4903 keywords.  This list can become very long.  There are two ways to keep
4904 it more compact:
4905 @itemize @minus
4906 @item
4907 Some people view a TODO item that has been @emph{scheduled} for
4908 execution (@pxref{Time stamps}) as no longer @emph{open}.  Configure the
4909 variable @code{org-agenda-todo-ignore-scheduled} to exclude scheduled
4910 items from the global TODO list.
4911 @item
4912 TODO items may have sublevels to break up the task into subtasks.  In
4913 such cases it may be enough to list only the highest level TODO headline
4914 and omit the sublevels from the global list.  Configure the variable
4915 @code{org-agenda-todo-list-sublevels} to get this behavior.
4916 @end itemize
4918 @node Matching tags and properties, Timeline, Global TODO list, Built-in agenda views
4919 @subsection Matching Tags and Properties
4920 @cindex matching, of tags
4921 @cindex matching, of properties
4922 @cindex tags view
4924 If headlines in the agenda files are marked with @emph{tags}
4925 (@pxref{Tags}), you can select headlines based on the tags that apply
4926 to them and collect them into an agenda buffer.
4928 @table @kbd
4929 @kindex C-c a m
4930 @item C-c a m
4931 Produce a list of all headlines that match a given set of tags.  The
4932 command prompts for a selection criterion, which is a boolean logic
4933 expression with tags, like @samp{+work+urgent-withboss} or
4934 @samp{work|home} (@pxref{Tags}).  If you often need a specific search,
4935 define a custom command for it (@pxref{Agenda dispatcher}).
4936 @kindex C-c a M
4937 @item C-c a M
4938 Like @kbd{C-c a m}, but only select headlines that are also TODO items
4939 and force checking subitems (see variable
4940 @code{org-tags-match-list-sublevels}).  Matching specific todo keywords
4941 together with a tags match is also possible, see @ref{Tag searches}.
4942 @end table
4944 The commands available in the tags list are described in @ref{Agenda
4945 commands}.
4947 @node Timeline, Stuck projects, Matching tags and properties, Built-in agenda views
4948 @subsection Timeline for a single file
4949 @cindex timeline, single file
4950 @cindex time-sorted view
4952 The timeline summarizes all time-stamped items from a single Org-mode
4953 file in a @emph{time-sorted view}.  The main purpose of this command is
4954 to give an overview over events in a project.
4956 @table @kbd
4957 @kindex C-c a L
4958 @item C-c a L
4959 Show a time-sorted view of the org file, with all time-stamped items.
4960 When called with a @kbd{C-u} prefix, all unfinished TODO entries
4961 (scheduled or not) are also listed under the current date.
4962 @end table
4964 @noindent
4965 The commands available in the timeline buffer are listed in
4966 @ref{Agenda commands}.
4969 @node Stuck projects,  , Timeline, Built-in agenda views
4970 @subsection Stuck projects
4972 If you are following a system like David Allen's GTD to organize your
4973 work, one of the ``duties'' you have is a regular review to make sure
4974 that all projects move along.  A @emph{stuck} project is a project that
4975 has no defined next actions, so it will never show up in the TODO lists
4976 Org-mode produces.  During the review, you need to identify such
4977 projects and define next actions for them.
4979 @table @kbd
4980 @kindex C-c a #
4981 @item C-c a #
4982 List projects that are stuck.
4983 @kindex C-c a !
4984 @item C-c a !
4985 Customize the variable @code{org-stuck-projects} to define what a stuck
4986 project is and how to find it.
4987 @end table
4989 You almost certainly will have to configure this view before it will
4990 work for you.  The built-in default assumes that all your projects are
4991 level-2 headlines, and that a project is not stuck if it has at least
4992 one entry marked with a todo keyword TODO or NEXT or NEXTACTION.
4994 Lets assume that you, in your own way of using Org-mode, identify
4995 projects with a tag PROJECT, and that you use a todo keyword MAYBE to
4996 indicate a project that should not be considered yet.  Lets further
4997 assume that the todo keyword DONE marks finished projects, and that NEXT
4998 and TODO indicate next actions.  The tag @@SHOP indicates shopping and
4999 is a next action even without the NEXT tag.  Finally, if the project
5000 contains the special word IGNORE anywhere, it should not be listed
5001 either.  In this case you would start by identifying eligible projects
5002 with a tags/todo match @samp{+PROJECT/-MAYBE-DONE}, and then check for
5003 TODO, NEXT, @@SHOP, and IGNORE in the subtree to identify projects that
5004 are not stuck.  The correct customization for this is
5006 @lisp
5007 (setq org-stuck-projects
5008       '("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP")
5009                                "\\<IGNORE\\>"))
5010 @end lisp
5013 @node Presentation and sorting, Agenda commands, Built-in agenda views, Agenda views
5014 @section Presentation and sorting
5015 @cindex presentation, of agenda items
5017 Before displaying items in an agenda view, Org-mode visually prepares
5018 the items and sorts them.  Each item occupies a single line.  The line
5019 starts with a @emph{prefix} that contains the @emph{category}
5020 (@pxref{Categories}) of the item and other important information.  You can
5021 customize the prefix using the option @code{org-agenda-prefix-format}.
5022 The prefix is followed by a cleaned-up version of the outline headline
5023 associated with the item.
5025 @menu
5026 * Categories::                  Not all tasks are equal
5027 * Time-of-day specifications::  How the agenda knows the time
5028 * Sorting of agenda items::     The order of things
5029 @end menu
5031 @node Categories, Time-of-day specifications, Presentation and sorting, Presentation and sorting
5032 @subsection Categories
5034 @cindex category
5035 The category is a broad label assigned to each agenda item.  By default,
5036 the category is simply derived from the file name, but you can also
5037 specify it with a special line in the buffer, like this@footnote{For
5038 backward compatibility, the following also works: If there are several
5039 such lines in a file, each specifies the category for the text below it.
5040 The first category also applies to any text before the first CATEGORY
5041 line.  However, using this method is @emph{strongly} deprecated as it is
5042 incompatible with the outline structure of the document.  The correct
5043 method for setting multiple categories in a buffer is using a
5044 property.}:
5046 @example
5047 #+CATEGORY: Thesis
5048 @end example
5050 @noindent
5051 If you would like to have a special CATEGORY for a single entry or a
5052 (sub)tree, give the entry a @code{:CATEGORY:} property with the location
5053 as the value (@pxref{Properties and columns}).
5055 @noindent
5056 The display in the agenda buffer looks best if the category is not
5057 longer than 10 characters.
5059 @node Time-of-day specifications, Sorting of agenda items, Categories, Presentation and sorting
5060 @subsection Time-of-Day Specifications
5061 @cindex time-of-day specification
5063 Org-mode checks each agenda item for a time-of-day specification.  The
5064 time can be part of the time stamp that triggered inclusion into the
5065 agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}.  Time
5066 ranges can be specified with two time stamps, like
5068 @w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
5070 In the headline of the entry itself, a time(range) may also appear as
5071 plain text (like @samp{12:45} or a @samp{8:30-1pm}.  If the agenda
5072 integrates the Emacs diary (@pxref{Weekly/Daily agenda}), time
5073 specifications in diary entries are recognized as well.
5075 For agenda display, Org-mode extracts the time and displays it in a
5076 standard 24 hour format as part of the prefix.  The example times in
5077 the previous paragraphs would end up in the agenda like this:
5079 @example
5080     8:30-13:00 Arthur Dent lies in front of the bulldozer
5081    12:45...... Ford Prefect arrives and takes Arthur to the pub
5082    19:00...... The Vogon reads his poem
5083    20:30-22:15 Marwin escorts the Hitchhikers to the bridge
5084 @end example
5086 @cindex time grid
5087 If the agenda is in single-day mode, or for the display of today, the
5088 timed entries are embedded in a time grid, like
5090 @example
5091     8:00...... ------------------
5092     8:30-13:00 Arthur Dent lies in front of the bulldozer
5093    10:00...... ------------------
5094    12:00...... ------------------
5095    12:45...... Ford Prefect arrives and takes Arthur to the pub
5096    14:00...... ------------------
5097    16:00...... ------------------
5098    18:00...... ------------------
5099    19:00...... The Vogon reads his poem
5100    20:00...... ------------------
5101    20:30-22:15 Marwin escorts the Hitchhikers to the bridge
5102 @end example
5104 The time grid can be turned on and off with the variable
5105 @code{org-agenda-use-time-grid}, and can be configured with
5106 @code{org-agenda-time-grid}.
5108 @node Sorting of agenda items,  , Time-of-day specifications, Presentation and sorting
5109 @subsection Sorting of agenda items
5110 @cindex sorting, of agenda items
5111 @cindex priorities, of agenda items
5112 Before being inserted into a view, the items are sorted.  How this is
5113 done depends on the type of view.
5114 @itemize @bullet
5115 @item
5116 For the daily/weekly agenda, the items for each day are sorted.  The
5117 default order is to first collect all items containing an explicit
5118 time-of-day specification.  These entries will be shown at the beginning
5119 of the list, as a @emph{schedule} for the day.  After that, items remain
5120 grouped in categories, in the sequence given by @code{org-agenda-files}.
5121 Within each category, items are sorted by priority (@pxref{Priorities}),
5122 which is composed of the base priority (2000 for priority @samp{A}, 1000
5123 for @samp{B}, and 0 for @samp{C}), plus additional increments for
5124 overdue scheduled or deadline items.
5125 @item 
5126 For the TODO list, items remain in the order of categories, but within
5127 each category, sorting takes place according to priority
5128 (@pxref{Priorities}).
5129 @item
5130 For tags matches, items are not sorted at all, but just appear in the
5131 sequence in which they are found in the agenda files.
5132 @end itemize
5134 Sorting can be customized using the variable
5135 @code{org-agenda-sorting-strategy}.
5138 @node Agenda commands, Custom agenda views, Presentation and sorting, Agenda views
5139 @section Commands in the agenda buffer
5140 @cindex commands, in agenda buffer
5142 Entries in the agenda buffer are linked back to the org file or diary
5143 file where they originate.  You are not allowed to edit the agenda
5144 buffer itself, but commands are provided to show and jump to the
5145 original entry location, and to edit the org-files ``remotely'' from
5146 the agenda buffer.  In this way, all information is stored only once,
5147 removing the risk that your agenda and note files may diverge.
5149 Some commands can be executed with mouse clicks on agenda lines.  For
5150 the other commands, the cursor needs to be in the desired line.
5152 @table @kbd
5153 @tsubheading{Motion}
5154 @cindex motion commands in agenda
5155 @kindex n
5156 @item n
5157 Next line (same as @key{up} and @kbd{C-p}).
5158 @kindex p
5159 @item p
5160 Previous line (same as @key{down} and @kbd{C-n}).
5161 @tsubheading{View/GoTo org file}
5162 @kindex mouse-3
5163 @kindex @key{SPC}
5164 @item mouse-3
5165 @itemx @key{SPC}
5166 Display the original location of the item in another window.
5168 @kindex L
5169 @item L
5170 Display original location and recenter that window.
5172 @kindex mouse-2
5173 @kindex mouse-1
5174 @kindex @key{TAB}
5175 @item mouse-2
5176 @itemx mouse-1
5177 @itemx @key{TAB}
5178 Go to the original location of the item in another window.  Under Emacs
5179 22, @kbd{mouse-1} will also works for this.
5181 @kindex @key{RET}
5182 @itemx @key{RET}
5183 Go to the original location of the item and delete other windows.
5185 @kindex f
5186 @item f
5187 Toggle Follow mode.  In Follow mode, as you move the cursor through
5188 the agenda buffer, the other window always shows the corresponding
5189 location in the org file.  The initial setting for this mode in new
5190 agenda buffers can be set with the variable
5191 @code{org-agenda-start-with-follow-mode}.
5193 @kindex b
5194 @item b
5195 Display the entire subtree of the current item in an indirect buffer.
5196 With numerical prefix ARG, go up to this level and then take that tree.
5197 If ARG is negative, go up that many levels.  With @kbd{C-u} prefix, do
5198 not remove the previously used indirect buffer.
5200 @kindex l
5201 @item l
5202 Toggle Logbook mode.  In Logbook mode, entries that where marked DONE while
5203 logging was on (variable @code{org-log-done}) are shown in the agenda,
5204 as are entries that have been clocked on that day.
5206 @tsubheading{Change display}
5207 @cindex display changing, in agenda
5208 @kindex o
5209 @item o
5210 Delete other windows.
5212 @kindex d
5213 @kindex w
5214 @kindex m
5215 @kindex y
5216 @item d w m y
5217 Switch to day/week/month/year view.  When switching to day or week view,
5218 this setting becomes the default for subseqent agenda commands.  Since
5219 month and year views are slow to create, the do not become the default.
5221 @kindex D
5222 @item D
5223 Toggle the inclusion of diary entries.  See @ref{Weekly/Daily agenda}.
5225 @kindex g
5226 @item g
5227 Toggle the time grid on and off.  See also the variables
5228 @code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
5230 @kindex r
5231 @item r
5232 Recreate the agenda buffer, for example to reflect the changes
5233 after modification of the time stamps of items with S-@key{left} and
5234 S-@key{right}.  When the buffer is the global todo list, a prefix
5235 argument is interpreted to create a selective list for a specific TODO
5236 keyword.
5238 @kindex s
5239 @kindex C-x C-s
5240 @item s
5241 @itemx C-x C-s
5242 Save all Org-mode buffers in the current Emacs session.
5244 @kindex @key{right}
5245 @item @key{right}
5246 Display the following @code{org-agenda-ndays} days.  For example, if
5247 the display covers a week, switch to the following week.  With prefix
5248 arg, go forward that many times @code{org-agenda-ndays} days.
5250 @kindex @key{left}
5251 @item @key{left}
5252 Display the previous dates.
5254 @kindex .
5255 @item .
5256 Goto today.
5258 @tsubheading{Remote editing}
5259 @cindex remote editing, from agenda
5261 @item 0-9
5262 Digit argument.
5264 @cindex undoing remote-editing events
5265 @cindex remote editing, undo
5266 @kindex C-_
5267 @item C-_
5268 Undo a change due to a remote editing command.  The change is undone
5269 both in the agenda buffer and in the remote buffer.
5271 @kindex t
5272 @item t
5273 Change the TODO state of the item, both in the agenda and in the
5274 original org file.
5276 @kindex C-k
5277 @item C-k
5278 Delete the current agenda item along with the entire subtree belonging
5279 to it in the original Org-mode file.  If the text to be deleted remotely
5280 is longer than one line, the kill needs to be confirmed by the user.  See
5281 variable @code{org-agenda-confirm-kill}.
5283 @kindex $
5284 @item $
5285 Archive the subtree corresponding to the current headline.
5287 @kindex T
5288 @item T
5289 Show all tags associated with the current item.  Because of
5290 inheritance, this may be more than the tags listed in the line itself.
5292 @kindex :
5293 @item :
5294 Set tags for the current headline.  If there is an active region in the
5295 agenda, change a tag for all headings in the region.
5297 @kindex a
5298 @item a
5299 Toggle the ARCHIVE tag for the current headline.
5301 @kindex ,
5302 @item ,
5303 Set the priority for the current item.  Org-mode prompts for the
5304 priority character. If you reply with @key{SPC}, the priority cookie
5305 is removed from the entry.
5307 @kindex P
5308 @item P
5309 Display weighted priority of current item.
5311 @kindex +
5312 @kindex S-@key{up}
5313 @item +
5314 @itemx S-@key{up}
5315 Increase the priority of the current item.  The priority is changed in
5316 the original buffer, but the agenda is not resorted.  Use the @kbd{r}
5317 key for this.
5319 @kindex -
5320 @kindex S-@key{down}
5321 @item -
5322 @itemx S-@key{down}
5323 Decrease the priority of the current item.
5325 @kindex C-c C-s
5326 @item C-c C-s
5327 Schedule this item
5329 @kindex C-c C-d
5330 @item C-c C-d
5331 Set a deadline for this item.
5333 @kindex S-@key{right}
5334 @item S-@key{right}
5335 Change the time stamp associated with the current line by one day into
5336 the future.  With prefix argument, change it by that many days.  For
5337 example, @kbd{3 6 5 S-@key{right}} will change it by a year.  The
5338 stamp is changed in the original org file, but the change is not
5339 directly reflected in the agenda buffer.  Use the
5340 @kbd{r} key to update the buffer.
5342 @kindex S-@key{left}
5343 @item S-@key{left}
5344 Change the time stamp associated with the current line by one day
5345 into the past.
5347 @kindex >
5348 @item >
5349 Change the time stamp associated with the current line to today.
5350 The key @kbd{>} has been chosen, because it is the same as @kbd{S-.}
5351 on my keyboard.
5353 @kindex I
5354 @item I
5355 Start the clock on the current item.  If a clock is running already, it
5356 is stopped first.
5358 @kindex O
5359 @item O
5360 Stop the previously started clock.
5362 @kindex X
5363 @item X
5364 Cancel the currently running clock.
5366 @kindex J
5367 @item J
5368 Jump to the running clock in another window.
5370 @tsubheading{Calendar commands}
5371 @cindex calendar commands, from agenda
5372 @kindex c
5373 @item c
5374 Open the Emacs calendar and move to the date at the agenda cursor.
5376 @item c
5377 When in the calendar, compute and show the Org-mode agenda for the
5378 date at the cursor.
5380 @cindex diary entries, creating from agenda
5381 @kindex i
5382 @item i
5383 Insert a new entry into the diary.  Prompts for the type of entry
5384 (day, weekly, monthly, yearly, anniversary, cyclic) and creates a new
5385 entry in the diary, just as @kbd{i d} etc. would do in the calendar.
5386 The date is taken from the cursor position.
5388 @kindex M
5389 @item M
5390 Show the phases of the moon for the three months around current date.
5392 @kindex S
5393 @item S
5394 Show sunrise and sunset times.  The geographical location must be set
5395 with calendar variables, see documentation of the Emacs calendar.
5397 @kindex C
5398 @item C
5399 Convert the date at cursor into many other cultural and historic
5400 calendars.
5402 @kindex H
5403 @item H
5404 Show holidays for three month around the cursor date.
5406 @c FIXME:  This should be a different key.
5407 @kindex C-c C-x C-c
5408 @item C-c C-x C-c
5409 Export a single iCalendar file containing entries from all agenda files.
5411 @tsubheading{Exporting to a file}
5412 @kindex C-x C-w
5413 @item C-x C-w
5414 @cindex exporting agenda views
5415 @cindex agenda views, exporting
5416 Write the agenda view to a file.  Depending on the extension of the
5417 selected file name, the view will be exported as HTML (extension
5418 @file{.html} or @file{.htm}), Postscript (extension @file{.ps}), or
5419 plain text (any other extension).  Use the variable
5420 @code{org-agenda-exporter-settings} to set options for @file{ps-print}
5421 and for @file{htmlize} to be used during export.
5423 @tsubheading{Quit and Exit}
5424 @kindex q
5425 @item q
5426 Quit agenda, remove the agenda buffer.
5428 @kindex x
5429 @cindex agenda files, removing buffers
5430 @item x
5431 Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
5432 for the compilation of the agenda.  Buffers created by the user to
5433 visit org files will not be removed.
5434 @end table
5437 @node Custom agenda views,  , Agenda commands, Agenda views
5438 @section Custom agenda views
5439 @cindex custom agenda views
5440 @cindex agenda views, custom
5442 Custom agenda commands serve two purposes: to store and quickly access
5443 frequently used TODO and tags searches, and to create special composite
5444 agenda buffers.  Custom agenda commands will be accessible through the
5445 dispatcher (@pxref{Agenda dispatcher}), just like the default commands.
5447 @menu
5448 * Storing searches::            Type once, use often
5449 * Block agenda::                All the stuff you need in a single buffer
5450 * Setting Options::             Changing the rules
5451 * Exporting Agenda Views::      Writing agendas to files.
5452 * Extracting Agenda Information for other programs::  
5453 @end menu
5455 @node Storing searches, Block agenda, Custom agenda views, Custom agenda views
5456 @subsection Storing searches
5458 The first application of custom searches is the definition of keyboard
5459 shortcuts for frequently used searches, either creating an agenda
5460 buffer, or a sparse tree (the latter covering of course only the current
5461 buffer).
5462 @kindex C-c a C
5463 Custom commands are configured in the variable
5464 @code{org-agenda-custom-commands}.  You can customize this variable, for
5465 example by pressing @kbd{C-c a C}.  You can also directly set it with
5466 Emacs Lisp in @file{.emacs}.  The following example contains all valid
5467 search types:
5469 @lisp
5470 @group
5471 (setq org-agenda-custom-commands
5472       '(("w" todo "WAITING")
5473         ("W" todo-tree "WAITING")
5474         ("u" tags "+BOSS-URGENT")
5475         ("v" tags-todo "+BOSS-URGENT")
5476         ("U" tags-tree "+BOSS-URGENT")
5477         ("f" occur-tree "\\<FIXME\\>")
5478         ("h" . "HOME+Name tags searches") ; description for "h" prefix
5479         ("hl" tags "+HOME+Lisa")
5480         ("hp" tags "+HOME+Peter")
5481         ("hk" tags "+HOME+Kim")))
5482 @end group
5483 @end lisp
5485 @noindent
5486 The initial string in each entry defines the keys you have to press
5487 after the dispatcher command @kbd{C-c a} in order to access the command.
5488 Usually this will be just a single character, but if you have many
5489 similar commands, you can also define two-letter combinations where the
5490 first character is the same in several combinations and serves as a
5491 prefix key@footnote{You can provide a description for a prefix key by
5492 inserting a cons cell with the prefix and the description.}.  The second
5493 parameter is the search type, followed by the string or regular
5494 expression to be used for the matching.  The example above will
5495 therefore define:
5497 @table @kbd
5498 @item C-c a w
5499 as a global search for TODO entries with @samp{WAITING} as the TODO
5500 keyword
5501 @item C-c a W
5502 as the same search, but only in the current buffer and displaying the
5503 results as a sparse tree
5504 @item C-c a u
5505 as a global tags search for headlines marked @samp{:BOSS:} but not
5506 @samp{:URGENT:}
5507 @item C-c a v
5508 as the same search as @kbd{C-c a u}, but limiting the search to
5509 headlines that are also TODO items
5510 @item C-c a U
5511 as the same search as @kbd{C-c a u}, but only in the current buffer and
5512 displaying the result as a sparse tree
5513 @item C-c a f
5514 to create a sparse tree (again: current buffer only) with all entries
5515 containing the word @samp{FIXME}
5516 @item C-c a h
5517 as a prefix command for a HOME tags search where you have to press an
5518 additional key (@kbd{l}, @kbd{p} or @kbd{k}) to select a name (Lisa,
5519 Peter, or Kim) as additional tag to match.
5520 @end table
5522 @node Block agenda, Setting Options, Storing searches, Custom agenda views
5523 @subsection Block agenda
5524 @cindex block agenda
5525 @cindex agenda, with block views
5527 Another possibility is the construction of agenda views that comprise
5528 the results of @emph{several} commands, each of which creates a block in
5529 the agenda buffer.  The available commands include @code{agenda} for the
5530 daily or weekly agenda (as created with @kbd{C-c a a}), @code{alltodo}
5531 for the global todo list (as constructed with @kbd{C-c a t}), and the
5532 matching commands discussed above: @code{todo}, @code{tags}, and
5533 @code{tags-todo}.  Here are two examples:
5535 @lisp
5536 @group
5537 (setq org-agenda-custom-commands
5538       '(("h" "Agenda and Home-related tasks"
5539          ((agenda)
5540           (tags-todo "HOME")
5541           (tags "GARDEN")))
5542         ("o" "Agenda and Office-related tasks"
5543          ((agenda)
5544           (tags-todo "WORK")
5545           (tags "OFFICE")))))
5546 @end group
5547 @end lisp
5549 @noindent
5550 This will define @kbd{C-c a h} to create a multi-block view for stuff
5551 you need to attend to at home.  The resulting agenda buffer will contain
5552 your agenda for the current week, all TODO items that carry the tag
5553 @samp{HOME}, and also all lines tagged with @samp{GARDEN}.  Finally the
5554 command @kbd{C-c a o} provides a similar view for office tasks.
5557 @node Setting Options, Exporting Agenda Views, Block agenda, Custom agenda views
5558 @subsection Setting Options for custom commands
5559 @cindex options, for custom agenda views
5561 Org-mode contains a number of variables regulating agenda construction
5562 and display.  The global variables define the behavior for all agenda
5563 commands, including the custom commands.  However, if you want to change
5564 some settings just for a single custom view, you can do so.  Setting
5565 options requires inserting a list of variable names and values at the
5566 right spot in @code{org-agenda-custom-commands}.  For example:
5568 @lisp
5569 @group
5570 (setq org-agenda-custom-commands
5571       '(("w" todo "WAITING"
5572          ((org-agenda-sorting-strategy '(priority-down))
5573           (org-agenda-prefix-format "  Mixed: ")))
5574         ("U" tags-tree "+BOSS-URGENT"
5575          ((org-show-following-heading nil)
5576           (org-show-hierarchy-above nil)))))
5577 @end group
5578 @end lisp
5580 @noindent
5581 Now the @kbd{C-c a w} command will sort the collected entries only by
5582 priority, and the prefix format is modified to just say @samp{  Mixed:}
5583 instead of giving the category of the entry.  The sparse tags tree of
5584 @kbd{C-c a U} will now turn out ultra-compact, because neither the
5585 headline hierarchy above the match, nor the headline following the match
5586 will be shown.
5588 For command sets creating a block agenda,
5589 @code{org-agenda-custom-commands} has two separate spots for setting
5590 options.  You can add options that should be valid for just a single
5591 command in the set, and options that should be valid for all commands in
5592 the set.  The former are just added to the command entry, the latter
5593 must come after the list of command entries.  Going back to the block
5594 agenda example (@pxref{Block agenda}), let's change the sorting strategy
5595 for the @kbd{C-c a h} commands to @code{priority-down}, but let's sort
5596 the results for GARDEN tags query in the opposite order,
5597 @code{priority-up}.  This would look like this:
5599 @lisp
5600 @group
5601 (setq org-agenda-custom-commands
5602       '(("h" "Agenda and Home-related tasks"
5603          ((agenda)
5604           (tags-todo "HOME")
5605           (tags "GARDEN"
5606                 ((org-agenda-sorting-strategy '(priority-up)))))
5607          ((org-agenda-sorting-strategy '(priority-down))))
5608         ("o" "Agenda and Office-related tasks"
5609          ((agenda)
5610           (tags-todo "WORK")
5611           (tags "OFFICE")))))
5612 @end group
5613 @end lisp
5615 As you see, the values and parenthesis setting is a little complex.
5616 When in doubt, use the customize interface to set this variable - it
5617 fully supports its structure.  Just one caveat: When setting options in
5618 this interface, the @emph{values} are just lisp expressions.  So if the
5619 value is a string, you need to add the double quotes around the value
5620 yourself.
5623 @node Exporting Agenda Views, Extracting Agenda Information for other programs, Setting Options, Custom agenda views
5624 @subsection Exporting Agenda Views
5625 @cindex agenda views, exporting
5627 If you are away from your computer, it can be very useful to have a
5628 printed version of some agenda views to carry around.  Org-mode can
5629 export custom agenda views as plain text, HTML@footnote{You need to
5630 install Hrvoje Niksic' @file{htmlize.el}.} and postscript.  If you want
5631 to do this only occasionally, use the command
5633 @table @kbd
5634 @kindex C-x C-w
5635 @item C-x C-w
5636 @cindex exporting agenda views
5637 @cindex agenda views, exporting
5638 Write the agenda view to a file.  Depending on the extension of the
5639 selected file name, the view will be exported as HTML (extension
5640 @file{.html} or @file{.htm}), Postscript (extension @file{.ps}), or
5641 plain text (any other extension).  Use the variable
5642 @code{org-agenda-exporter-settings} to set options for @file{ps-print}
5643 and for @file{htmlize} to be used during export, for example
5644 @lisp
5645 (setq org-agenda-exporter-settings
5646       '((ps-number-of-columns 2)
5647         (ps-landscape-mode t)
5648         (htmlize-output-type 'css)))
5649 @end lisp
5650 @end table
5652 If you need to export certain agenda views frequently, you can associate
5653 any custom agenda command with a list of output file names
5654 @footnote{If you want to store standard views like the weekly agenda
5655 or the global TODO list as well, you need to define custom commands for
5656 them in order to be able to specify filenames.}.  Here is an example
5657 that first does define custom commands for the agenda and the global
5658 todo list, together with a number of files to which to export them.
5659 Then we define two block agenda commands and specify filenames for them
5660 as well.  File names can be relative to the current working directory,
5661 or absolute.
5663 @lisp
5664 @group
5665 (setq org-agenda-custom-commands
5666       '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
5667         ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
5668         ("h" "Agenda and Home-related tasks"
5669          ((agenda)
5670           (tags-todo "HOME")
5671           (tags "GARDEN"))
5672          nil
5673          ("~/views/home.html"))
5674         ("o" "Agenda and Office-related tasks"
5675          ((agenda)
5676           (tags-todo "WORK")
5677           (tags "OFFICE"))
5678          nil
5679          ("~/views/office.ps"))))
5680 @end group
5681 @end lisp
5683 The extension of the file name determines the type of export.  If it is
5684 @file{.html}, Org-mode will use the @file{htmlize.el} package to convert
5685 the buffer to HTML and save it to this file name.  If the extension is
5686 @file{.ps}, @code{ps-print-buffer-with-faces} is used to produce
5687 postscript output.  Any other extension produces a plain ASCII file.
5689 The export files are @emph{not} created when you use one of those
5690 commands interactively.  Instead, there is a special command to produce
5691 @emph{all} specified files in one step:
5693 @table @kbd
5694 @kindex C-c a e
5695 @item C-c a e
5696 Export all agenda views that have export filenames associated with
5697 them.
5698 @end table
5700 You can use the options section of the custom agenda commands to also
5701 set options for the export commands.  For example:
5703 @lisp
5704 (setq org-agenda-custom-commands
5705       '(("X" agenda ""
5706          ((ps-number-of-columns 2)
5707           (ps-landscape-mode t)
5708           (org-agenda-prefix-format " [ ] ")
5709           (org-agenda-with-colors nil)
5710           (org-agenda-remove-tags t))
5711          ("theagenda.ps"))))
5712 @end lisp
5714 @noindent
5715 This command sets two options for the postscript exporter, to make it
5716 print in two columns in landscape format - the resulting page can be cut
5717 in two and then used in a paper agenda.  The remaining settings modify
5718 the agenda prefix to omit category and scheduling information, and
5719 instead include a checkbox to check off items.  We also remove the tags
5720 to make the lines compact, and we don't want to use colors for the
5721 black-and-white printer.  Settings specified in
5722 @code{org-agenda-exporter-settings} will also apply, but the settings
5723 in @code{org-agenda-custom-commands} take precedence.
5725 @noindent
5726 From the command line you may also use
5727 @example
5728 emacs -f org-batch-store-agenda-views -kill
5729 @end example
5730 @noindent
5731 or, if you need to modify some parameters
5732 @example
5733 emacs -eval '(org-batch-store-agenda-views                      \
5734               org-agenda-ndays 30                               \
5735               org-agenda-start-day "2007-11-01"                 \
5736               org-agenda-include-diary nil                      \
5737               org-agenda-files (quote ("~/org/project.org")))'  \
5738       -kill
5739 @end example
5740 @noindent
5741 which will create the agenda views restricted to the file
5742 @file{~/org/project.org}, without diary entries and with 30 days
5743 extent. 
5745 @node Extracting Agenda Information for other programs,  , Exporting Agenda Views, Custom agenda views
5746 @subsection Extracting Agenda Information for other programs
5747 @cindex agenda, pipe
5748 @cindex Scripts, for agenda processing
5750 Org-mode provides commands to access agenda information for the command
5751 line in emacs batch mode.  This extracted information can be sent
5752 directly to a printer, or it can be read by a program that does further
5753 processing of the data.  The first of these commands is the function
5754 @code{org-batch-agenda}, that produces an agenda view and sends it as
5755 ASCII text to STDOUT.  The command takes a single string as parameter.
5756 If the string has length 1, it is used as a key to one of the commands
5757 you have configured in @code{org-agenda-custom-commands}, basically any
5758 key you can use after @kbd{C-c a}.  For example, to directly print the
5759 current TODO list, you could use
5761 @example
5762 emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
5763 @end example
5765 If the parameter is a string with 2 or more characters, it is used as a
5766 tags/todo match string.  For example, to print your local shopping list
5767 (all items with the tag @samp{shop}, but excluding the tag
5768 @samp{NewYork}), you could use
5770 @example
5771 emacs -batch -l ~/.emacs                                      \       
5772       -eval '(org-batch-agenda "+shop-NewYork")' | lpr
5773 @end example
5775 @noindent
5776 You may also modify parameters on the fly like this:
5778 @example
5779 emacs -batch -l ~/.emacs                                      \
5780    -eval '(org-batch-agenda "a"                               \
5781             org-agenda-ndays 30                               \
5782             org-agenda-include-diary nil                      \
5783             org-agenda-files (quote ("~/org/project.org")))'  \
5784    | lpr
5785 @end example
5787 @noindent
5788 which will produce a 30 day agenda, fully restricted to the Org file
5789 @file{~/org/projects.org}, not even including the diary.
5791 If you want to process the agenda data in more sophisticated ways, you
5792 can use the command @code{org-batch-agenda-csv} to get a comma-separated
5793 list of values for each agenda item.  Each line in the output will
5794 contain a number of fields separated by commas.  The fields in a line
5795 are:
5797 @example
5798 category     @r{The category of the item}
5799 head         @r{The headline, without TODO kwd, TAGS and PRIORITY}
5800 type         @r{The type of the agenda entry, can be}
5801                 todo               @r{selected in TODO match}
5802                 tagsmatch          @r{selected in tags match}
5803                 diary              @r{imported from diary}
5804                 deadline           @r{a deadline}
5805                 scheduled          @r{scheduled}
5806                 timestamp          @r{appointment, selected by timestamp}
5807                 closed             @r{entry was closed on date}
5808                 upcoming-deadline  @r{warning about nearing deadline}
5809                 past-scheduled     @r{forwarded scheduled item}
5810                 block              @r{entry has date block including date}
5811 todo         @r{The todo keyword, if any}
5812 tags         @r{All tags including inherited ones, separated by colons}
5813 date         @r{The relevant date, like 2007-2-14}
5814 time         @r{The time, like 15:00-16:50}
5815 extra        @r{String with extra planning info}
5816 priority-l   @r{The priority letter if any was given}
5817 priority-n   @r{The computed numerical priority}
5818 @end example
5820 @noindent
5821 Time and date will only be given if a timestamp (or deadline/scheduled)
5822 lead to the selection of the item.
5824 A CSV list like this is very easy to use in a post processing script.
5825 For example, here is a Perl program that gets the TODO list from
5826 Emacs/org-mode and prints all the items, preceded by a checkbox:
5828 @example
5829 @group
5830 #!/usr/bin/perl
5832 # define the Emacs command to run
5833 $cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'";
5835 # run it and capture the output
5836 $agenda = qx@{$cmd 2>/dev/null@};
5838 # loop over all lines
5839 foreach $line (split(/\n/,$agenda)) @{
5841   # get the individual values
5842   ($category,$head,$type,$todo,$tags,$date,$time,$extra,
5843    $priority_l,$priority_n) = split(/,/,$line);
5845   # proccess and print
5846   print "[ ] $head\n";
5848 @end group
5849 @end example
5851 @node Embedded LaTeX, Exporting, Agenda views, Top
5852 @chapter Embedded LaTeX
5853 @cindex @TeX{} interpretation
5854 @cindex La@TeX{} interpretation
5856 Plain ASCII is normally sufficient for almost all note taking.  One
5857 exception, however, are scientific notes which need to be able to
5858 contain mathematical symbols and the occasional formula.
5859 La@TeX{}@footnote{La@TeX{} is a macro system based on Donald E. Knuth's
5860 @TeX{} system.  Many of the features described here as ``La@TeX{}'' are
5861 really from @TeX{}, but for simplicity I am blurring this distinction.}
5862 is widely used to typeset scientific documents. Org-mode supports
5863 embedding La@TeX{} code into its files, because many academics are used
5864 to read La@TeX{} source code, and because it can be readily processed
5865 into images for HTML production.
5867 It is not necessary to mark La@TeX{} macros and code in any special way.
5868 If you observe a few conventions, Org-mode knows how to find it and what
5869 to do with it.
5871 @menu
5872 * Math symbols::                TeX macros for symbols and Greek letters
5873 * Subscripts and Superscripts::  Simple syntax for raising/lowering text
5874 * LaTeX fragments::             Complex formulas made easy
5875 * Processing LaTeX fragments::  Previewing LaTeX processing
5876 * CDLaTeX mode::                Speed up entering of formulas
5877 @end menu
5879 @node Math symbols, Subscripts and Superscripts, Embedded LaTeX, Embedded LaTeX
5880 @section Math symbols
5881 @cindex math symbols
5882 @cindex TeX macros
5884 You can use La@TeX{} macros to insert special symbols like @samp{\alpha}
5885 to indicate the Greek letter, or @samp{\to} to indicate an arrow.
5886 Completion for these macros is available, just type @samp{\} and maybe a
5887 few letters, and press @kbd{M-@key{TAB}} to see possible completions.
5888 Unlike La@TeX{} code, Org-mode allows these macros to be present
5889 without surrounding math delimiters, for example:
5891 @example
5892 Angles are written as Greek letters \alpha, \beta and \gamma.
5893 @end example
5895 During HTML export (@pxref{HTML export}), these symbols are translated
5896 into the proper syntax for HTML, for the above examples this is
5897 @samp{&alpha;} and @samp{&rarr;}, respectively.
5899 @node Subscripts and Superscripts, LaTeX fragments, Math symbols, Embedded LaTeX
5900 @section Subscripts and Superscripts
5901 @cindex subscript
5902 @cindex superscript
5904 Just like in La@TeX{}, @samp{^} and @samp{_} are used to indicate super-
5905 and subscripts.  Again, these can be used without embedding them in
5906 math-mode delimiters.  To increase the readability of ASCII text, it is
5907 not necessary (but OK) to surround multi-character sub- and superscripts
5908 with curly braces.  For example
5910 @example
5911 The mass if the sun is M_sun = 1.989 x 10^30 kg.  The radius of
5912 the sun is R_@{sun@} = 6.96 x 10^8 m.
5913 @end example
5915 To avoid interpretation as raised or lowered text, you can quote
5916 @samp{^} and @samp{_} with a backslash: @samp{\_} and @samp{\^}.
5918 During HTML export (@pxref{HTML export}), subscript and superscripts
5919 are surrounded with @code{<sub>} and @code{<sup>} tags, respectively.
5921 @node LaTeX fragments, Processing LaTeX fragments, Subscripts and Superscripts, Embedded LaTeX
5922 @section LaTeX fragments
5923 @cindex LaTeX fragments
5925 With symbols, sub- and superscripts, HTML is pretty much at its end when
5926 it comes to representing mathematical formulas@footnote{Yes, there is
5927 MathML, but that is not yet fully supported by many browsers, and there
5928 is no decent converter for turning La@TeX{} or ASCII representations of
5929 formulas into MathML. So for the time being, converting formulas into
5930 images seems the way to go.}. More complex expressions need a dedicated
5931 formula processor. To this end, Org-mode can contain arbitrary La@TeX{}
5932 fragments. It provides commands to preview the typeset result of these
5933 fragments, and upon export to HTML, all fragments will be converted to
5934 images and inlined into the HTML document@footnote{The La@TeX{} export
5935 will not use images for displaying La@TeX{} fragments but include these
5936 fragments directly into the La@TeX{} code.}. For this to work you
5937 need to be on a system with a working La@TeX{} installation. You also
5938 need the @file{dvipng} program, available at
5939 @url{http://sourceforge.net/projects/dvipng/}. The La@TeX{} header that
5940 will be used when processing a fragment can be configured with the
5941 variable @code{org-format-latex-header}.
5943 La@TeX{} fragments don't need any special marking at all.  The following
5944 snippets will be identified as La@TeX{} source code:
5945 @itemize @bullet
5946 @item
5947 Environments of any kind.  The only requirement is that the
5948 @code{\begin} statement appears on a new line, preceded by only
5949 whitespace.
5950 @item
5951 Text within the usual La@TeX{} math delimiters.  To avoid conflicts with
5952 currency specifications, single @samp{$} characters are only recognized
5953 as math delimiters if the enclosed text contains at most two line breaks,
5954 is directly attached to the @samp{$} characters with no whitespace in
5955 between, and if the closing @samp{$} is followed by whitespace or
5956 punctuation.  For the other delimiters, there is no such restriction, so
5957 when in doubt, use @samp{\(...\)} as inline math delimiters.
5958 @end itemize
5960 @noindent For example:
5962 @example
5963 \begin@{equation@}                          % arbitrary environments,
5964 x=\sqrt@{b@}                                % even tables, figures
5965 \end@{equation@}                            % etc
5967 If $a^2=b$ and \( b=2 \), then the solution must be
5968 either $$ a=+\sqrt@{2@} $$ or \[ a=-\sqrt@{2@} \].
5969 @end example
5971 @noindent
5972 If you need any of the delimiter ASCII sequences for other purposes, you
5973 can configure the option @code{org-format-latex-options} to deselect the
5974 ones you do not wish to have interpreted by the La@TeX{} converter.
5976 @node Processing LaTeX fragments, CDLaTeX mode, LaTeX fragments, Embedded LaTeX
5977 @section Processing LaTeX fragments
5978 @cindex LaTeX fragments, preview
5980 La@TeX{} fragments can be processed to produce a preview images of the
5981 typeset expressions:
5983 @table @kbd
5984 @kindex C-c C-x C-l
5985 @item C-c C-x C-l
5986 Produce a preview image of the La@TeX{} fragment at point and overlay it
5987 over the source code.  If there is no fragment at point, process all
5988 fragments in the current entry (between two headlines).  When called
5989 with a prefix argument, process the entire subtree.  When called with
5990 two prefix arguments, or when the cursor is before the first headline,
5991 process the entire buffer.
5992 @kindex C-c C-c
5993 @item C-c C-c
5994 Remove the overlay preview images.
5995 @end table
5997 During HTML export (@pxref{HTML export}), all La@TeX{} fragments are
5998 converted into images and inlined into the document if the following
5999 setting is active:
6001 @lisp
6002 (setq org-export-with-LaTeX-fragments t)
6003 @end lisp
6005 @node CDLaTeX mode,  , Processing LaTeX fragments, Embedded LaTeX
6006 @section Using CDLaTeX to enter math
6007 @cindex CDLaTeX
6009 CDLaTeX-mode is a minor mode that is normally used in combination with a
6010 major La@TeX{} mode like AUCTeX in order to speed-up insertion of
6011 environments and math templates.  Inside Org-mode, you can make use of
6012 some of the features of cdlatex-mode.  You need to install
6013 @file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
6014 AUCTeX) from @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
6015 Don't turn cdlatex-mode itself under Org-mode, but use the light
6016 version @code{org-cdlatex-mode} that comes as part of Org-mode.  Turn it
6017 on for the current buffer with @code{M-x org-cdlatex-mode}, or for all
6018 Org-mode files with
6020 @lisp
6021 (add-hook 'org-mode-hook 'turn-on-org-cdlatex)
6022 @end lisp
6024 When this mode is enabled, the following features are present (for more
6025 details see the documentation of cdlatex-mode):
6026 @itemize @bullet
6027 @kindex C-c @{
6028 @item
6029 Environment templates can be inserted with @kbd{C-c @{}.
6030 @item
6031 @kindex @key{TAB}
6032 The @key{TAB} key will do template expansion if the cursor is inside a
6033 La@TeX{} fragment@footnote{Org-mode has a method to test if the cursor is
6034 inside such a fragment, see the documentation of the function
6035 @code{org-inside-LaTeX-fragment-p}.}.  For example, @key{TAB} will
6036 expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
6037 correctly inside the first brace.  Another @key{TAB} will get you into
6038 the second brace.  Even outside fragments, @key{TAB} will expand
6039 environment abbreviations at the beginning of a line.  For example, if
6040 you write @samp{equ} at the beginning of a line and press @key{TAB},
6041 this abbreviation will be expanded to an @code{equation} environment.
6042 To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help}.
6043 @item
6044 @kindex _
6045 @kindex ^
6046 Pressing @kbd{_} and @kbd{^} inside a La@TeX{} fragment will insert these
6047 characters together with a pair of braces.  If you use @key{TAB} to move
6048 out of the braces, and if the braces surround only a single character or
6049 macro, they are removed again (depending on the variable
6050 @code{cdlatex-simplify-sub-super-scripts}).
6051 @item
6052 @kindex `
6053 Pressing the backquote @kbd{`} followed by a character inserts math
6054 macros, also outside La@TeX{} fragments.  If you wait more than 1.5 seconds
6055 after the backquote, a help window will pop up.
6056 @item
6057 @kindex '
6058 Pressing the normal quote @kbd{'} followed by another character modifies
6059 the symbol before point with an accent or a font.  If you wait more than
6060 1.5 seconds after the backquote, a help window will pop up.  Character
6061 modification will work only inside La@TeX{} fragments, outside the quote
6062 is normal.
6063 @end itemize
6065 @node Exporting, Publishing, Embedded LaTeX, Top
6066 @chapter Exporting
6067 @cindex exporting
6069 Org-mode documents can be exported into a variety of other formats.  For
6070 printing and sharing of notes, ASCII export produces a readable and
6071 simple version of an Org-mode file.  HTML export allows you to publish a
6072 notes file on the web, while the XOXO format provides a solid base for
6073 exchange with a broad range of other applications. La@TeX{} export lets
6074 you use Org-mode and its structured editing functions to easily create
6075 La@TeX{} files.  To incorporate entries with associated times like
6076 deadlines or appointments into a desktop calendar program like iCal,
6077 Org-mode can also produce extracts in the iCalendar format.  Currently
6078 Org-mode only supports export, not import of these different formats.
6080 When exporting, Org-mode uses special conventions to enrich the output
6081 produced.  @xref{Text interpretation}, for more details.
6083 @table @kbd
6084 @kindex C-c C-e
6085 @item C-c C-e
6086 Dispatcher for export and publishing commands.  Displays a help-window
6087 listing the additional key(s) needed to launch an export or publishing
6088 command.
6089 @end table
6091 @menu
6092 * ASCII export::                Exporting to plain ASCII
6093 * HTML export::                 Exporting to HTML
6094 * LaTeX export::                Exporting to LaTeX
6095 * XOXO export::                 Exporting to XOXO
6096 * iCalendar export::            Exporting in iCalendar format
6097 * Text interpretation::         How the exporter looks at the file
6098 @end menu
6100 @node ASCII export, HTML export, Exporting, Exporting
6101 @section ASCII export
6102 @cindex ASCII export
6104 ASCII export produces a simple and very readable version of an Org-mode
6105 file.
6107 @cindex region, active
6108 @cindex active region
6109 @cindex transient-mark-mode
6110 @table @kbd
6111 @kindex C-c C-e a
6112 @item C-c C-e a
6113 Export as ASCII file.  For an org file @file{myfile.org}, the ASCII file
6114 will be @file{myfile.txt}.  The file will be overwritten without
6115 warning.  If there is an active region, only the region will be
6116 exported. If the selected region is a single tree, the tree head will
6117 become the document title.  If the tree head entry has or inherits an
6118 EXPORT_FILE_NAME property, that name will be used for the export.
6119 @kindex C-c C-e v a
6120 @item C-c C-e v a
6121 Export only the visible part of the document.
6122 @end table
6124 @cindex headline levels, for exporting
6125 In the exported version, the first 3 outline levels will become
6126 headlines, defining a general document structure.  Additional levels
6127 will be exported as itemized lists.  If you want that transition to occur
6128 at a different level, specify it with a prefix argument.  For example,
6130 @example
6131 @kbd{C-1 C-c C-e a}
6132 @end example
6134 @noindent
6135 creates only top level headlines and does the rest as items.  When
6136 headlines are converted to items, the indentation of the text following
6137 the headline is changed to fit nicely under the item.  This is done with
6138 the assumption that the first bodyline indicates the base indentation of
6139 the body text.  Any indentation larger than this is adjusted to preserve
6140 the layout relative to the first line.  Should there be lines with less
6141 indentation than the first, these are left alone.
6143 @node HTML export, LaTeX export, ASCII export, Exporting
6144 @section HTML export
6145 @cindex HTML export
6147 Org-mode contains an HTML (XHTML 1.0 strict) exporter with extensive
6148 HTML formatting, in ways similar to John Grubers @emph{markdown}
6149 language, but with additional support for tables.
6151 @menu
6152 * HTML Export commands::        How to invoke LaTeX export
6153 * Quoting HTML tags::           Using direct HTML in Org-mode
6154 * Links::                       Transformation of links for HTML
6155 * Images::                      How to include images
6156 * CSS support::                 Changing the appearence of the output
6157 @end menu
6159 @node HTML Export commands, Quoting HTML tags, HTML export, HTML export
6160 @subsection HTML export commands
6162 @cindex region, active
6163 @cindex active region
6164 @cindex transient-mark-mode
6165 @table @kbd
6166 @kindex C-c C-e h
6167 @item C-c C-e h
6168 Export as HTML file @file{myfile.html}.  For an org file
6169 @file{myfile.org}, the ASCII file will be @file{myfile.html}.  The file
6170 will be overwritten without warning.  If there is an active region, only
6171 the region will be exported. If the selected region is a single tree,
6172 the tree head will become the document title.  If the tree head entry
6173 has or inherits an EXPORT_FILE_NAME property, that name will be used for
6174 the export.
6175 @kindex C-c C-e b
6176 @item C-c C-e b
6177 Export as HTML file and immediately open it with a browser.
6178 @kindex C-c C-e H
6179 @item C-c C-e H
6180 Export to a temporary buffer, do not create a file.
6181 @kindex C-c C-e R
6182 @item C-c C-e R
6183 Export the active region to a temporary buffer.  With prefix arg, do not
6184 produce file header and foot, but just the plain HTML section for the
6185 region.  This is good for cut-and-paste operations.
6186 @kindex C-c C-e v h
6187 @kindex C-c C-e v b
6188 @kindex C-c C-e v H
6189 @kindex C-c C-e v R
6190 @item C-c C-e v h
6191 @item C-c C-e v b
6192 @item C-c C-e v H
6193 @item C-c C-e v R
6194 Export only the visible part of the document.
6195 @item M-x org-export-region-as-html
6196 Convert the region to HTML under the assumption that it was org-mode
6197 syntax before.  This is a global command that can be invoked in any
6198 buffer.
6199 @item M-x org-replace-region-by-HTML
6200 Replace the active region (assumed to be in Org-mode syntax) by HTML
6201 code.
6202 @end table
6204 @cindex headline levels, for exporting
6205 In the exported version, the first 3 outline levels will become
6206 headlines, defining a general document structure.  Additional levels
6207 will be exported as itemized lists.  If you want that transition to occur
6208 at a different level, specify it with a prefix argument.  For example,
6210 @example
6211 @kbd{C-2 C-c C-e b}
6212 @end example
6214 @noindent
6215 creates two levels of headings and does the rest as items.
6217 @node Quoting HTML tags, Links, HTML Export commands, HTML export
6218 @subsection Quoting HTML tags
6220 Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
6221 @samp{&gt;} in HTML export.  If you want to include simple HTML tags
6222 which should be interpreted as such, mark them with @samp{@@} as in
6223 @samp{@@<b>bold text@@</b>}.  Note that this really works only for
6224 simple tags.  For more extensive HTML that should be copied verbatim to
6225 the exported file use either
6227 @example
6228 #+HTML: Literal HTML code for export
6229 @end example
6231 @noindent or
6233 @example
6234 #+BEGIN_HTML
6235 All lines between these markers are exported literally
6236 #+END_HTML
6237 @end example
6240 @node Links, Images, Quoting HTML tags, HTML export
6241 @subsection Links
6243 @cindex links, in HTML export
6244 @cindex internal links, in HTML export
6245 @cindex external links, in HTML export
6246 Internal links (@pxref{Internal links}) will continue to work in HTML
6247 files only if they match a dedicated @samp{<<target>>}.  Automatic links
6248 created by radio targets (@pxref{Radio targets}) will also work in the
6249 HTML file.  Links to external files will still work if the HTML file is
6250 in the same directory as the Org-mode file.  Links to other @file{.org}
6251 files will be translated into HTML links under the assumption that an
6252 HTML version also exists of the linked file.  For information related to
6253 linking files while publishing them to a publishing directory see
6254 @ref{Publishing links}.
6256 @node Images, CSS support, Links, HTML export
6257 @subsection Images
6259 @cindex images, inline in HTML
6260 @cindex inlining images in HTML
6261 HTML export can inline images given as links in the Org-mode file, and
6262 it can make an image the clickable part of a link.  By
6263 default@footnote{but see the variable
6264 @code{org-export-html-inline-images}}, images are inlined if a link does
6265 not have a description.  So @samp{[[file:myimg.jpg]]} will be inlined,
6266 while @samp{[[file:myimg.jpg][the image]]} will just produce a link
6267 @samp{the image} that points to the image.  If the description part
6268 itself is a @code{file:} link or a @code{http:} URL pointing to an
6269 image, this image will be inlined and activated so that clicking on the
6270 image will activate the link.  For example, to include a thumbnail that
6271 will link to a high resolution version of the image, you could use:
6273 @example
6274 [[file:highres.jpg][file:thumb.jpg]]
6275 @end example
6277 @noindent
6278 and you could use @code{http} addresses just as well.
6280 @node CSS support,  , Images, HTML export
6281 @subsection CSS support
6283 You can also give style information for the exported file.  The HTML
6284 exporter assigns the following CSS classes to appropriate parts of the
6285 document - your style specifications may change these:
6286 @example
6287 .todo           @r{TODO keywords}
6288 .done           @r{the DONE keyword}
6289 .timestamp      @r{time stamp}
6290 .timestamp-kwd  @r{keyword associated with a time stamp, like SCHEDULED}
6291 .tag            @r{tag in a headline}
6292 .target         @r{target for links}
6293 @end example
6295 The default style specification can be configured through the option
6296 @code{org-export-html-style}.  If you want to use a file-local style,
6297 you may use file variables, best wrapped into a COMMENT section at the
6298 end of the outline tree.  For example@footnote{Under Emacs 21, the
6299 continuation lines for a variable value should have no @samp{#} at the
6300 start of the line.}:
6302 @example
6303 * COMMENT html style specifications
6305 # Local Variables:
6306 # org-export-html-style: "   <style type=\"text/css\">
6307 #       p @{font-weight: normal; color: gray; @}
6308 #       h1 @{color: black; @}
6309 #   </style>"
6310 # End:
6311 @end example
6313 Remember to execute @kbd{M-x normal-mode} after changing this to make
6314 the new style visible to Emacs.  This command restarts org-mode for the
6315 current buffer and forces Emacs to re-evaluate the local variables
6316 section in the buffer.
6318 @c FIXME: More about header and footer styles
6319 @c FIXME: Talk about links and targets.
6321 @node LaTeX export, XOXO export, HTML export, Exporting
6322 @section LaTeX export
6323 @cindex LaTeX export
6325 Org-mode contains a La@TeX{} exporter written by Bastien Guerry.
6327 @menu
6328 * LaTeX export commands::       How to invoke LaTeX export
6329 * Quoting LaTeX code::          Incorporating literal LaTeX code
6330 * Sectioning structure::        
6331 @end menu
6333 @node LaTeX export commands, Quoting LaTeX code, LaTeX export, LaTeX export
6334 @subsection LaTeX export commands
6336 @table @kbd
6337 @kindex C-c C-e l
6338 @item C-c C-e l
6339 Export as La@TeX{} file @file{myfile.tex}.
6340 @kindex C-c C-e L
6341 @item C-c C-e L
6342 Export to a temporary buffer, do not create a file.
6343 @kindex C-c C-e v l
6344 @kindex C-c C-e v L
6345 @item C-c C-e v l
6346 @item C-c C-e v L
6347 Export only the visible part of the document.
6348 @item M-x org-export-region-as-latex
6349 Convert the region to La@TeX{} under the assumption that it was org-mode
6350 syntax before.  This is a global command that can be invoked in any
6351 buffer.
6352 @item M-x org-replace-region-by-latex
6353 Replace the active region (assumed to be in Org-mode syntax) by La@TeX{}
6354 code.
6355 @end table
6357 @cindex headline levels, for exporting
6358 In the exported version, the first 3 outline levels will become
6359 headlines, defining a general document structure.  Additional levels
6360 will be exported as description lists.  The exporter can ignore them or
6361 convert them to a custom string depending on
6362 @code{org-latex-low-levels}.
6364 If you want that transition to occur at a different level, specify it
6365 with a prefix argument. For example,
6367 @example
6368 @kbd{C-2 C-c C-e l}
6369 @end example
6371 @noindent
6372 creates two levels of headings and does the rest as items.
6374 @node Quoting LaTeX code, Sectioning structure, LaTeX export commands, LaTeX export
6375 @subsection Quoting LaTeX code
6377 Embedded La@TeX{} as described in @ref{Embedded LaTeX} will be correctly
6378 inserted into the La@TeX{} file.  Forthermore, you can add special code
6379 that should only be present in La@TeX{} export with the following
6380 constructs:
6382 @example
6383 #+LaTeX: Literal LaTeX code for export
6384 @end example
6386 @noindent or
6388 @example
6389 #+BEGIN_LaTeX
6390 All lines between these markers are exported literally
6391 #+END_LaTeX
6392 @end example
6396 @node   Sectioning structure,  , Quoting LaTeX code, LaTeX export
6397 @subsection Sectioning structure
6398 @cindex LaTeX class
6399 @cindex LaTeX sectioning structure
6401 By default, the La@TeX{} output uses the class @code{article}.
6403 You can change this globally by setting a different value for
6404 @code{org-export-latex-default-class} or locally by adding an option
6405 like @code{#+LaTeX_CLASS: myclass} in your file.  The class should be
6406 listed in @code{org-export-latex-classes}, where you can also define the
6407 sectioning structure for each class.
6410 @node XOXO export, iCalendar export, LaTeX export, Exporting
6411 @section XOXO export
6412 @cindex XOXO export
6414 Org-mode contains an exporter that produces XOXO-style output.
6415 Currently, this exporter only handles the general outline structure and
6416 does not interpret any additional Org-mode features.
6418 @table @kbd
6419 @kindex C-c C-e x
6420 @item C-c C-e x
6421 Export as XOXO file @file{myfile.html}.
6422 @kindex C-c C-e v
6423 @item C-c C-e v x
6424 Export only the visible part of the document.
6425 @end table
6427 @node iCalendar export, Text interpretation, XOXO export, Exporting
6428 @section iCalendar export
6429 @cindex iCalendar export
6431 Some people like to use Org-mode for keeping track of projects, but
6432 still prefer a standard calendar application for anniversaries and
6433 appointments.  In this case it can be useful to have deadlines and
6434 other time-stamped items in Org-mode files show up in the calendar
6435 application.  Org-mode can export calendar information in the standard
6436 iCalendar format.  If you also want to have TODO entries included in the
6437 export, configure the variable @code{org-icalendar-include-todo}.
6439 @table @kbd
6440 @kindex C-c C-e i
6441 @item C-c C-e i
6442 Create iCalendar entries for the current file and store them in the same
6443 directory, using a file extension @file{.ics}.
6444 @kindex C-c C-e I
6445 @item C-c C-e I
6446 Like @kbd{C-c C-e i}, but do this for all files in
6447 @code{org-agenda-files}.  For each of these files, a separate iCalendar
6448 file will be written.
6449 @kindex C-c C-e c
6450 @item C-c C-e c
6451 Create a single large iCalendar file from all files in
6452 @code{org-agenda-files} and write it to the file given by
6453 @code{org-combined-agenda-icalendar-file}.
6454 @end table
6456 The export will honor SUMMARY, DESCRIPTION and LOCATION properties if
6457 the selected entries have them.  If not, the summary will be derived
6458 from the headline, and the description from the body (limited to
6459 @code{org-icalendar-include-body} characters).  
6461 How this calendar is best read and updated, depends on the application
6462 you are using.  The FAQ covers this issue.
6465 @node Text interpretation,  , iCalendar export, Exporting
6466 @section Text interpretation by the exporter
6468 The exporter backends interpret additional structure in the Org-mode file
6469 in order to produce better output.
6471 @menu
6472 * Comment lines::               Some lines will not be exported
6473 * Initial text::                Text before the first headline
6474 * Footnotes::                   Numbers like [1]
6475 * Quoted examples::             Inserting quoted chnuks of text            
6476 * Enhancing text::              Subscripts, symbols and more
6477 * Export options::              How to influence the export settings
6478 @end menu
6480 @node Comment lines, Initial text, Text interpretation, Text interpretation
6481 @subsection Comment lines
6482 @cindex comment lines
6483 @cindex exporting, not
6485 Lines starting with @samp{#} in column zero are treated as comments
6486 and will never be exported.  Also entire subtrees starting with the
6487 word @samp{COMMENT} will never be exported.
6489 @table @kbd
6490 @kindex C-c ;
6491 @item C-c ;
6492 Toggle the COMMENT keyword at the beginning of an entry.
6493 @end table
6495 @node Initial text, Footnotes, Comment lines, Text interpretation
6496 @subsection Text before the first headline
6498 Org-mode normally ignores any text before the first headline when
6499 exporting, leaving this region for internal links to speed up navigation
6500 etc.  However, in publishing-oriented files, you might want to have some
6501 text before the first headline, like a small introduction, special HTML
6502 code with a navigation bar, etc.  You can ask to have this part of the
6503 file exported as well by setting the variable
6504 @code{org-export-skip-text-before-1st-heading} to @code{nil}.  On a
6505 per-file basis, you can get the same effect with
6507 @example
6508 #+OPTIONS: skip:nil
6509 @end example
6511 The text before the first headline will be fully processed
6512 (@pxref{Enhancing text}), and the first non-comment line becomes the
6513 title of the exported document.  If you need to include literal HTML,
6514 use the special constructs described in @ref{Quoting HTML tags}.  The
6515 table of contents is normally inserted directly before the first
6516 headline of the file.  If you would like to get it to a different
6517 location, insert the string @code{[TABLE-OF-CONTENTS]} on a line by
6518 itself at the desired location.
6520 Finally, if you want to use the space before the first headline for
6521 internal purposes, but @emph{still} want to place something before the
6522 first headline when exporting the file, you can use the @code{#+TEXT}
6523 construct:
6525 @example
6526 #+OPTIONS: skip:t
6527 #+TEXT: This text will go before the *first* headline.
6528 #+TEXT: We place the table of contents here:
6529 #+TEXT: [TABLE-OF-CONTENTS]
6530 #+TEXT: This goes between the table of contents and the first headline
6531 @end example
6533 @node Footnotes, Quoted examples, Initial text, Text interpretation
6534 @subsection Footnotes
6535 @cindex footnotes
6536 @cindex @file{footnote.el}
6538 Numbers in square brackets are treated as footnotes, so that you can use
6539 the Emacs package @file{footnote.el} to create footnotes.  For example:
6541 @example
6542 The org-mode homepage[1] clearly needs help from
6543 a good web designer.
6545 [1] The link is: http://orgmode.org
6546 @end example
6548 @noindent
6549 @kindex C-c !
6550 Note that the @file{footnote} package uses @kbd{C-c !} to invoke its
6551 commands.  This binding conflicts with the org-mode command for
6552 inserting inactive time stamps.  You could use the variable
6553 @code{footnote-prefix} to switch footnotes commands to another key.  Or,
6554 if you are too used to this binding, you could use
6555 @code{org-replace-disputed-keys} and @code{org-disputed-keys} to change
6556 the settings in Org-mode.
6558 @node Quoted examples, Enhancing text, Footnotes, Text interpretation
6559 @subsection Quoted examples
6560 @cindex quoted examples
6561 @cindex examples, quoted
6562 @cindex text, fixed width
6563 @cindex fixed width text
6565 When writing technical documents, you often need to insert examples that
6566 are not further interpreted by Org-mode.  For historical reasons, there
6567 are several ways to do this:
6569 @itemize @bullet
6570 @item
6571 If a headline starts with the word @samp{QUOTE}, the text below the
6572 headline will be typeset as fixed-width, to allow quoting of computer
6573 codes etc.
6574 @item
6575 Lines starting with @samp{:} are also typeset in fixed-width font. 
6576 @table @kbd
6577 @kindex C-c :
6578 @item C-c :
6579 Toggle fixed-width for entry (QUOTE) or region, see below.
6580 @end table
6581 @item
6582 Finally, text between
6583 @example
6584 #+BEGIN_EXAMPLE
6585 quoted text
6586 #+END_EXAMPLE
6587 @end example
6588 will also be exported in this way.
6589 @end itemize
6592 @node Enhancing text, Export options, Quoted examples, Text interpretation
6593 @subsection Enhancing text for export
6594 @cindex enhancing text
6595 @cindex richer text
6597 Some of the export backends of Org-mode allow for sophisticated text
6598 formatting, this is true in particular for the HTML and La@TeX{}
6599 backends.  Org-mode has a number of typing conventions that allow to
6600 produce a richly formatted output.
6602 @itemize @bullet
6604 @cindex hand-formatted lists
6605 @cindex lists, hand-formatted
6606 @item
6607 Plain lists @samp{-}, @samp{*} or @samp{+} as bullet, or with @samp{1.}
6608 or @samp{2)} as enumerator will be recognized and transformed if the
6609 backend supports lists.  See @xref{Plain lists}.
6611 @cindex underlined text
6612 @cindex bold text
6613 @cindex italic text
6614 @cindex verbatim text
6615 @item
6616 You can make words @b{*bold*}, @i{/italic/}, _underlined_, @code{=code=}
6617 and @code{~verbatim~}, and, if you must, @samp{+strikethrough+}.  Text
6618 in the code and verbatim string is not processed for org-mode specific
6619 syntax, it is exported verbatim.
6621 @cindex horizontal rules, in exported files
6622 @item
6623 A line consisting of only dashes, and at least 5 of them, will be
6624 exported as a horizontal line (@samp{<hr/>} in HTML).
6626 @cindex LaTeX fragments, export
6627 @cindex TeX macros, export
6628 @item
6629 Many @TeX{} macros and entire La@TeX{} fragments are converted into HTML
6630 entities or images (@pxref{Embedded LaTeX}).
6632 @cindex tables, export
6633 @item
6634 Tables are transformed into native tables under the exporter, if the
6635 export backend supports this. Data fields before the first horizontal
6636 separator line will be formatted as table header fields.
6638 @cindex fixed width
6639 @item
6640 If a headline starts with the word @samp{QUOTE}, the text below the
6641 headline will be typeset as fixed-width, to allow quoting of computer
6642 codes etc.  Lines starting with @samp{:} are also typeset in fixed-width
6643 font. 
6644 @table @kbd
6645 @kindex C-c :
6646 @item C-c :
6647 Toggle fixed-width for entry (QUOTE) or region, see below.
6648 @end table
6649 Finally, text between
6650 @example
6651 #+BEGIN_EXAMPLE
6652 quoted text
6653 #+END_EXAMPLE
6654 @end example
6655 will also be exported in this way.
6657 @cindex linebreak, forced
6658 @item 
6659 A double backslash @emph{at the end of a line} enforces a line break at
6660 this position.
6662 @cindex HTML entities, LaTeX entities
6663 @item
6664 Strings like @code{\alpha} will be exported as @code{&alpha;}, in the
6665 HTML output.  These strings are exported as @code{$\alpha$} in the
6666 La@TeX{} output.  Similarly, @code{\nbsp} will become @code{&nbsp;} in
6667 HTML and in La@TeX{}.  This applies for a long list of entities, see
6668 the variable @code{org-html-entities} for the complete list.
6669 @c FIXME
6670 @end itemize
6672 If these conversions conflict with your habits of typing ASCII text,
6673 they can all be turned off with corresponding variables.  See the
6674 customization group @code{org-export-general}, and the following section
6675 which explains how to set export options with special lines in a
6676 buffer.
6679 @node Export options,  , Enhancing text, Text interpretation
6680 @subsection Export options
6681 @cindex options, for export
6683 @cindex completion, of option keywords
6684 The exporter recognizes special lines in the buffer which provide
6685 additional information.  These lines may be put anywhere in the file.
6686 The whole set of lines can be inserted into the buffer with @kbd{C-c
6687 C-e t}.  For individual lines, a good way to make sure the keyword is
6688 correct is to type @samp{#+} and then use @kbd{M-@key{TAB}} completion
6689 (@pxref{Completion}).
6691 @table @kbd
6692 @kindex C-c C-e t
6693 @item C-c C-e t
6694 Insert template with export options, see example below.
6695 @end table
6697 @example
6698 #+TITLE:     the title to be shown (default is the buffer name)
6699 #+AUTHOR:    the author (default taken from @code{user-full-name})
6700 #+DATE:      A date, fixed, of a format string for @code{format-time-string}
6701 #+EMAIL:     his/her email address (default from @code{user-mail-address})
6702 #+LANGUAGE:  language for HTML, e.g. @samp{en} (@code{org-export-default-language})
6703 #+TEXT:      Some descriptive text to be inserted at the beginning.
6704 #+TEXT:      Several lines may be given.
6705 #+OPTIONS:   H:2 num:t toc:t \n:nil @@:t ::t |:t ^:t f:t TeX:t ...
6706 @end example
6708 @noindent
6709 The OPTIONS line is a compact form to specify export settings.  Here
6710 you can:
6711 @cindex headline levels
6712 @cindex section-numbers
6713 @cindex table of contents
6714 @cindex linebreak preservation
6715 @cindex quoted HTML tags
6716 @cindex fixed-width sections
6717 @cindex tables
6718 @cindex @TeX{}-like syntax for sub- and superscripts
6719 @cindex footnotes
6720 @cindex special strings
6721 @cindex emphasized text
6722 @cindex @TeX{} macros
6723 @cindex La@TeX{} fragments
6724 @cindex author info, in export
6725 @cindex time info, in export
6726 @example
6727 H:         @r{set the number of headline levels for export}
6728 num:       @r{turn on/off section-numbers}
6729 toc:       @r{turn on/off table of contents, or set level limit (integer)}
6730 \n:        @r{turn on/off linebreak-preservation}
6731 @@:         @r{turn on/off quoted HTML tags}
6732 ::         @r{turn on/off fixed-width sections}
6733 |:         @r{turn on/off tables}
6734 ^:         @r{turn on/off @TeX{}-like syntax for sub- and superscripts.  If}
6735            @r{you write "^:@{@}", @code{a_@{b@}} will be interpreted, but}
6736            @r{the simple @code{a_b} will be left as it is.}
6737 -:         @r{turn on/off conversion of special strings.}
6738 f:         @r{turn on/off foototes like this[1].}
6739 *:         @r{turn on/off emphasized text (bold, italic, underlined)}
6740 TeX:       @r{turn on/off simple @TeX{} macros in plain text}
6741 LaTeX:     @r{turn on/off La@TeX{} fragments}
6742 skip:      @r{turn on/off skipping the text before the first heading}
6743 author:    @r{turn on/off inclusion of author name/email into exported file}
6744 timestamp: @r{turn on/off inclusion creation time into exported file}
6745 d:         @r{turn on/off inclusion of drawers}
6746 @end example
6748 These options take effect in both the HTML and La@TeX{} export, except
6749 for @code{TeX} and @code{LaTeX}, which are respectively @code{t} and
6750 @code{nil} for the La@TeX{} export.
6752 @node Publishing, Miscellaneous, Exporting, Top
6753 @chapter Publishing
6754 @cindex publishing
6756 Org-mode includes@footnote{@file{org-publish.el} is not distributed with
6757 Emacs 21, if you are still using Emacs 21, you need you need to download
6758 this file separately.} a publishing management system that allows you to
6759 configure automatic HTML conversion of @emph{projects} composed of
6760 interlinked org files.  This system is called @emph{org-publish}.  You can
6761 also configure org-publish to automatically upload your exported HTML
6762 pages and related attachments, such as images and source code files, to
6763 a web server. Org-publish turns org-mode into a web-site authoring tool.
6765 You can also use Org-publish to convert files into La@TeX{}, or even
6766 combine HTML and La@TeX{} conversion so that files are available in both
6767 formats on the server@footnote{Since La@TeX{} files on a server are not
6768 that helpful, you surely want to perform further conversion on them --
6769 e.g. convert them to @code{PDF} format.}.
6771 Org-publish has been contributed to Org-mode by David O'Toole.
6773 @menu
6774 * Configuration::               Defining projects
6775 * Sample configuration::        Example projects
6776 * Triggering publication::      Publication commands
6777 @end menu
6779 @node Configuration, Sample configuration, Publishing, Publishing
6780 @section Configuration
6782 Publishing needs significant configuration to specify files, destination
6783 and many other properties of a project.
6785 @menu
6786 * Project alist::               The central configuration variable
6787 * Sources and destinations::    From here to there
6788 * Selecting files::             What files are part of the project?
6789 * Publishing action::           Setting the function doing the publishing
6790 * Publishing options::          Tweaking HTML export
6791 * Publishing links::            Which links keep working after publishing?
6792 * Project page index::          Publishing a list of project files
6793 @end menu
6795 @node Project alist, Sources and destinations, Configuration, Configuration
6796 @subsection The variable @code{org-publish-project-alist}
6797 @cindex org-publish-project-alist
6798 @cindex projects, for publishing
6800 Org-publish is configured almost entirely through setting the value of
6801 one variable, called @code{org-publish-project-alist}.
6802 Each element of the list configures one project, and may be in one of
6803 the two following forms:
6805 @lisp
6806 ("project-name"  :property value :property value ...)
6808 @r{or} 
6810 ("project-name"  :components ("project-name" "project-name" ...))
6812 @end lisp
6814 In both cases, projects are configured by specifying property values.
6815 A project defines the set of files that will be published, as well as
6816 the publishing configuration to use when publishing those files.  When
6817 a project takes the second form listed above, the individual members
6818 of the ``components'' property are taken to be components of the
6819 project, which group together files requiring different publishing
6820 options. When you publish such a ``meta-project'' all the components
6821 will also publish.
6823 @node Sources and destinations, Selecting files, Project alist, Configuration
6824 @subsection Sources and destinations for files
6825 @cindex directories, for publishing
6827 Most properties are optional, but some should always be set. In
6828 particular, org-publish needs to know where to look for source files,
6829 and where to put published files.
6831 @multitable @columnfractions 0.3 0.7
6832 @item @code{:base-directory}
6833 @tab Directory containing publishing source files
6834 @item @code{:publishing-directory}
6835 @tab Directory (possibly remote) where output files will be published.
6836 @item @code{:preparation-function}
6837 @tab Function called before starting publishing process, for example to
6838 run @code{make} for updating files to be published.
6839 @end multitable
6840 @noindent
6842 @node Selecting files, Publishing action, Sources and destinations, Configuration
6843 @subsection Selecting files
6844 @cindex files, selecting for publishing
6846 By default, all files with extension @file{.org} in the base directory
6847 are considered part of the project.  This can be modified by setting the
6848 properties 
6849 @multitable @columnfractions 0.25 0.75
6850 @item @code{:base-extension}
6851 @tab Extension (without the dot!) of source files.  This actually is a
6852 regular expression.
6854 @item @code{:exclude} 
6855 @tab Regular expression to match file names that should not be
6856 published, even though they have been selected on the basis of their
6857 extension.
6859 @item @code{:include}
6860 @tab List of files to be included regardless of @code{:base-extension}
6861 and @code{:exclude}.
6862 @end multitable
6864 @node Publishing action, Publishing options, Selecting files, Configuration
6865 @subsection Publishing Action
6866 @cindex action, for publishing
6868 Publishing means that a file is copied to the destination directory and
6869 possibly transformed in the process.  The default transformation is to
6870 export Org-mode files as HTML files, and this is done by the function
6871 @code{org-publish-org-to-html} which calls the HTML exporter
6872 (@pxref{HTML export}). But you also can publish your files in La@TeX{} by
6873 using the function @code{org-publish-org-to-latex} instead. Other files
6874 like images only need to be copied to the publishing destination. For
6875 non-Org-mode files, you need to specify the publishing function.
6878 @multitable @columnfractions 0.3 0.7
6879 @item @code{:publishing-function}
6880 @tab Function executing the publication of a file.  This may also be a
6881 list of functions, which will all be called in turn.
6882 @end multitable
6884 The function must accept two arguments: a property list containing at
6885 least a @code{:publishing-directory} property, and the name of the file
6886 to be published.  It should take the specified file, make the necessary
6887 transformation (if any) and place the result into the destination folder.
6888 You can write your own publishing function, but @code{org-publish}
6889 provides one for attachments (files that only need to be copied):
6890 @code{org-publish-attachment}.
6892 @node Publishing options, Publishing links, Publishing action, Configuration
6893 @subsection Options for the HTML/LaTeX exporters
6894 @cindex options, for publishing
6896 The property list can be used to set many export options for the HTML
6897 and La@TeX{} exporters.  In most cases, these properties correspond to user
6898 variables in Org-mode.  The table below lists these properties along
6899 with the variable they belong to.  See the documentation string for the
6900 respective variable for details.
6902 @multitable @columnfractions 0.3 0.7
6903 @item @code{:language}              @tab @code{org-export-default-language}
6904 @item @code{:headline-levels}       @tab @code{org-export-headline-levels}
6905 @item @code{:section-numbers}       @tab @code{org-export-with-section-numbers}
6906 @item @code{:table-of-contents}     @tab @code{org-export-with-toc}
6907 @item @code{:archived-trees}        @tab @code{org-export-with-archived-trees}
6908 @item @code{:emphasize}             @tab @code{org-export-with-emphasize}
6909 @item @code{:sub-superscript}       @tab @code{org-export-with-sub-superscripts}
6910 @item @code{:special-strings}       @tab @code{org-export-with-special-strings}
6911 @item @code{:TeX-macros}            @tab @code{org-export-with-TeX-macros}
6912 @item @code{:LaTeX-fragments}       @tab @code{org-export-with-LaTeX-fragments}
6913 @item @code{:fixed-width}           @tab @code{org-export-with-fixed-width}
6914 @item @code{:timestamps}           .@tab @code{org-export-with-timestamps}
6915 @item @code{:tags}                 .@tab @code{org-export-with-tags}
6916 @item @code{:tables}                @tab @code{org-export-with-tables}
6917 @item @code{:table-auto-headline}   @tab @code{org-export-highlight-first-table-line}
6918 @item @code{:style}                 @tab @code{org-export-html-style}
6919 @item @code{:convert-org-links}     @tab @code{org-export-html-link-org-files-as-html}
6920 @item @code{:inline-images}         @tab @code{org-export-html-inline-images}
6921 @item @code{:expand-quoted-html}    @tab @code{org-export-html-expand}
6922 @item @code{:timestamp}             @tab @code{org-export-html-with-timestamp}
6923 @item @code{:publishing-directory}  @tab @code{org-export-publishing-directory}
6924 @item @code{:preamble}              @tab @code{org-export-html-preamble}
6925 @item @code{:postamble}             @tab @code{org-export-html-postamble}
6926 @item @code{:auto-preamble}         @tab @code{org-export-html-auto-preamble}
6927 @item @code{:auto-postamble}        @tab @code{org-export-html-auto-postamble}
6928 @item @code{:author}                @tab @code{user-full-name}
6929 @item @code{:email}                 @tab @code{user-mail-address}
6930 @end multitable
6932 If you use several email addresses, separate them by a semi-column.
6934 Most of the @code{org-export-with-*} variables have the same effect in
6935 both HTML and La@TeX{} exporters, except for @code{:TeX-macros} and
6936 @code{:LaTeX-fragments}, respectively @code{nil} and @code{t} in the
6937 La@TeX{} export.
6939 When a property is given a value in @code{org-publish-project-alist},
6940 its setting overrides the value of the corresponding user variable (if
6941 any) during publishing.  Options set within a file (@pxref{Export
6942 options}), however, override everything.
6944 @node Publishing links, Project page index, Publishing options, Configuration
6945 @subsection Links between published files
6946 @cindex links, publishing
6948 To create a link from one Org-mode file to another, you would use
6949 something like @samp{[[file:foo.org][The foo]]} or simply
6950 @samp{file:foo.org.} (@pxref{Hyperlinks}).  Upon publishing this link
6951 becomes a link to @file{foo.html}.  In this way, you can interlink the
6952 pages of your "org web" project and the links will work as expected when
6953 you publish them to HTML.
6955 You may also link to related files, such as images. Provided you are
6956 careful with relative pathnames, and provided you have also configured
6957 @code{org-publish} to upload the related files, these links will work
6958 too. @ref{Complex example} for an example of this usage.
6960 Sometime an Org-mode file to be published may contain links that are
6961 only valid in your production environment, but not in the publishing
6962 location.  In this case, use the property 
6964 @multitable @columnfractions 0.4 0.6
6965 @item @code{:link-validation-function}
6966 @tab Function to validate links
6967 @end multitable
6969 @noindent
6970 to define a function for checking link validity.  This function must
6971 accept two arguments, the file name and a directory relative to which
6972 the file name is interpreted in the production environment.  If this
6973 function returns @code{nil}, then the HTML generator will only insert a
6974 description into the HTML file, but no link.  One option for this
6975 function is @code{org-publish-validate-link} which checks if the given
6976 file is part of any project in @code{org-publish-project-alist}.
6978 @node Project page index,  , Publishing links, Configuration
6979 @subsection Project page index
6980 @cindex index, of published pages
6982 The following properties may be used to control publishing of an
6983 index of files or summary page for a given project.
6985 @multitable @columnfractions 0.25 0.75
6986 @item @code{:auto-index}
6987 @tab When non-nil, publish an index during org-publish-current-project or
6988 org-publish-all.
6990 @item @code{:index-filename}
6991 @tab Filename for output of index. Defaults to @file{index.org} (which
6992 becomes @file{index.html}).
6994 @item @code{:index-title}
6995 @tab Title of index page. Defaults to name of file.
6997 @item @code{:index-function}
6998 @tab Plugin function to use for generation of index.
6999 Defaults to @code{org-publish-org-index}, which generates a plain list
7000 of links to all files in the project.
7001 @end multitable
7003 @node Sample configuration, Triggering publication, Configuration, Publishing
7004 @section Sample configuration
7006 Below we provide two example configurations.  The first one is a simple
7007 project publishing only a set of Org-mode files.  The second example is
7008 more complex, with a multi-component project.
7010 @menu
7011 * Simple example::              One-component publishing
7012 * Complex example::             A multi-component publishing example
7013 @end menu
7015 @node Simple example, Complex example, Sample configuration, Sample configuration
7016 @subsection Example: simple publishing configuration
7018 This example publishes a set of Org-mode files to the @file{public_html}
7019 directory on the local machine.
7021 @lisp
7022 (setq org-publish-project-alist
7023       '(("org" 
7024          :base-directory "~/org/"
7025          :publishing-directory "~/public_html"
7026          :section-numbers nil
7027          :table-of-contents nil
7028          :style "<link rel=stylesheet 
7029                 href=\"../other/mystyle.css\"
7030                 type=\"text/css\">")))
7031 @end lisp
7033 @node Complex example,  , Simple example, Sample configuration
7034 @subsection Example: complex publishing configuration
7036 This more complicated example publishes an entire website, including
7037 org files converted to HTML, image files, emacs lisp source code, and
7038 stylesheets. The publishing-directory is remote and private files are
7039 excluded.
7041 To ensure that links are preserved, care should be taken to replicate
7042 your directory structure on the web server, and to use relative file
7043 paths. For example, if your org files are kept in @file{~/org} and your
7044 publishable images in @file{~/images}, you'd link to an image with
7046 @example
7047 file:../images/myimage.png
7048 @end example
7050 On the web server, the relative path to the image should be the
7051 same. You can accomplish this by setting up an "images" folder in the
7052 right place on the webserver, and publishing images to it.
7054 @lisp
7055 (setq org-publish-project-alist
7056       '(("orgfiles"
7057           :base-directory "~/org/"
7058           :base-extension "org"
7059           :publishing-directory "/ssh:user@@host:~/html/notebook/"
7060           :publishing-function org-publish-org-to-html
7061           :exclude "PrivatePage.org"   ;; regexp
7062           :headline-levels 3
7063           :section-numbers nil
7064           :table-of-contents nil
7065           :style "<link rel=stylesheet 
7066                   href=\"../other/mystyle.css\" type=\"text/css\">"
7067           :auto-preamble t
7068           :auto-postamble nil)
7069          
7070          ("images"
7071           :base-directory "~/images/"
7072           :base-extension "jpg\\|gif\\|png"
7073           :publishing-directory "/ssh:user@@host:~/html/images/"
7074           :publishing-function org-publish-attachment)
7076          ("other"
7077           :base-directory "~/other/"
7078           :base-extension "css\\|el"
7079           :publishing-directory "/ssh:user@@host:~/html/other/"
7080           :publishing-function org-publish-attachment)
7081          ("website" :components ("orgfiles" "images" "other"))))
7082 @end lisp
7084 @node Triggering publication,  , Sample configuration, Publishing
7085 @section Triggering publication
7087 Once org-publish is properly configured, you can publish with the
7088 following functions: 
7090 @table @kbd
7091 @item C-c C-e C
7092 Prompt for a specific project and publish all files that belong to it.
7093 @item C-c C-e P
7094 Publish the project containing the current file.
7095 @item C-c C-e F
7096 Publish only the current file.
7097 @item C-c C-e A
7098 Publish all projects.
7099 @end table
7101 Org uses timestamps to track when a file has changed. The above
7102 functions normally only publish changed files. You can override this and
7103 force publishing of all files by giving a prefix argument.
7105 @node Miscellaneous, Extensions and Hacking, Publishing, Top
7106 @chapter Miscellaneous
7108 @menu
7109 * Completion::                  M-TAB knows what you need
7110 * Customization::               Adapting Org-mode to your taste
7111 * In-buffer settings::          Overview of the #+KEYWORDS
7112 * The very busy C-c C-c key::   When in doubt, press C-c C-c
7113 * Clean view::                  Getting rid of leading stars in the outline
7114 * TTY keys::                    Using Org-mode on a tty
7115 * Interaction::                 Other Emacs packages
7116 * Bugs::                        Things which do not work perfectly
7117 @end menu
7119 @node Completion, Customization, Miscellaneous, Miscellaneous
7120 @section Completion
7121 @cindex completion, of @TeX{} symbols
7122 @cindex completion, of TODO keywords
7123 @cindex completion, of dictionary words
7124 @cindex completion, of option keywords
7125 @cindex completion, of tags
7126 @cindex completion, of property keys
7127 @cindex completion, of link abbreviations
7128 @cindex @TeX{} symbol completion
7129 @cindex TODO keywords completion
7130 @cindex dictionary word completion
7131 @cindex option keyword completion
7132 @cindex tag completion
7133 @cindex link abbreviations, completion of
7135 Org-mode supports in-buffer completion.  This type of completion does
7136 not make use of the minibuffer.  You simply type a few letters into
7137 the buffer and use the key to complete text right there.
7139 @table @kbd
7140 @kindex M-@key{TAB}
7141 @item M-@key{TAB}
7142 Complete word at point
7143 @itemize @bullet
7144 @item
7145 At the beginning of a headline, complete TODO keywords.
7146 @item
7147 After @samp{\}, complete @TeX{} symbols supported by the exporter.
7148 @item
7149 After @samp{*}, complete headlines in the current buffer so that they
7150 can be used in search links like @samp{[[*find this headline]]}.
7151 @item
7152 After @samp{:} in a headline, complete tags.  The list of tags is taken
7153 from the variable @code{org-tag-alist} (possibly set through the
7154 @samp{#+TAGS} in-buffer option, @pxref{Setting tags}), or it is created
7155 dynamically from all tags used in the current buffer.
7156 @item
7157 After @samp{:} and not in a headline, complete property keys.  The list
7158 of keys is constructed dynamically from all keys used in the current
7159 buffer.
7160 @item
7161 After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
7162 @item
7163 After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
7164 @samp{OPTIONS} which set file-specific options for Org-mode.  When the
7165 option keyword is already complete, pressing @kbd{M-@key{TAB}} again
7166 will insert example settings for this keyword.
7167 @item
7168 In the line after @samp{#+STARTUP: }, complete startup keywords,
7169 i.e. valid keys for this line.
7170 @item
7171 Elsewhere, complete dictionary words using ispell.
7172 @end itemize
7173 @end table
7175 @node Customization, In-buffer settings, Completion, Miscellaneous
7176 @section Customization
7177 @cindex customization
7178 @cindex options, for customization
7179 @cindex variables, for customization
7181 There are more than 180 variables that can be used to customize
7182 Org-mode.  For the sake of compactness of the manual, I am not
7183 describing the variables here.  A structured overview of customization
7184 variables is available with @kbd{M-x org-customize}.  Or select
7185 @code{Browse Org Group} from the @code{Org->Customization} menu.  Many
7186 settings can also be activated on a per-file basis, by putting special
7187 lines into the buffer (@pxref{In-buffer settings}).
7189 @node In-buffer settings, The very busy C-c C-c key, Customization, Miscellaneous
7190 @section Summary of in-buffer settings
7191 @cindex in-buffer settings
7192 @cindex special keywords
7194 Org-mode uses special lines in the buffer to define settings on a
7195 per-file basis.  These lines start with a @samp{#+} followed by a
7196 keyword, a colon, and then individual words defining a setting.  Several
7197 setting words can be in the same line, but you can also have multiple
7198 lines for the keyword.  While these settings are described throughout
7199 the manual, here is a summary.  After changing any of those lines in the
7200 buffer, press @kbd{C-c C-c} with the cursor still in the line to
7201 activate the changes immediately.  Otherwise they become effective only
7202 when the file is visited again in a new Emacs session.
7204 @table @kbd
7205 @item #+ARCHIVE: %s_done::
7206 This line sets the archive location for the agenda file.  It applies for
7207 all subsequent lines until the next @samp{#+ARCHIVE} line, or the end
7208 of the file.  The first such line also applies to any entries before it.
7209 The corresponding variable is @code{org-archive-location}.
7210 @item #+CATEGORY:
7211 This line sets the category for the agenda file.  The category applies
7212 for all subsequent lines until the next @samp{#+CATEGORY} line, or the
7213 end of the file.  The first such line also applies to any entries before it.
7214 @item #+COLUMNS: %25ITEM .....
7215 Set the default format for columns view.  This format applies when
7216 columns view is invoked in location where no COLUMNS property applies.
7217 @item #+CONSTANTS: name1=value1 ...
7218 Set file-local values for constants to be used in table formulas.  This
7219 line set the local variable @code{org-table-formula-constants-local}.
7220 The global version of this variable is
7221 @code{org-table-formula-constants}.
7222 @item #+DRAWERS: NAME1 .....
7223 Set the file-local set of drawers.  The corresponding global variable is
7224 @code{org-drawers}.
7225 @item #+LINK:  linkword replace
7226 These lines (several are allowed) specify link abbreviations.
7227 @xref{Link abbreviations}.  The corresponding variable is
7228 @code{org-link-abbrev-alist}.
7229 @item #+PRIORITIES: highest lowest default
7230 This line sets the limits and the default for the priorities.  All three
7231 must be either letters A-Z or numbers 0-9.  The highest priority must
7232 have a lower ASCII number that the lowest priority.
7233 @item #+PROPERTY: Property_Name Value
7234 This line sets a default inheritance value for entries in the current
7235 buffer, most useful for specifying the allowed values of a property.
7236 @item #+STARTUP:
7237 This line sets options to be used at startup of Org-mode, when an
7238 Org-mode file is being visited.  The first set of options deals with the
7239 initial visibility of the outline tree.  The corresponding variable for
7240 global default settings is @code{org-startup-folded}, with a default
7241 value @code{t}, which means @code{overview}.
7242 @cindex @code{overview}, STARTUP keyword
7243 @cindex @code{content}, STARTUP keyword
7244 @cindex @code{showall}, STARTUP keyword
7245 @example
7246 overview   @r{top-level headlines only}
7247 content    @r{all headlines}
7248 showall    @r{no folding at all, show everything}
7249 @end example
7250 Then there are options for aligning tables upon visiting a file.  This
7251 is useful in files containing narrowed table columns.  The corresponding
7252 variable is @code{org-startup-align-all-tables}, with a default value
7253 @code{nil}. 
7254 @cindex @code{align}, STARTUP keyword
7255 @cindex @code{noalign}, STARTUP keyword
7256 @example
7257 align      @r{align all tables}
7258 noalign    @r{don't align tables on startup}
7259 @end example
7260 Logging TODO state changes and clock intervals (variables
7261 @code{org-log-done} and @code{org-log-repeat}) can be configured using
7262 these options.
7263 @cindex @code{logdone}, STARTUP keyword
7264 @cindex @code{nologging}, STARTUP keyword
7265 @cindex @code{lognotedone}, STARTUP keyword
7266 @cindex @code{lognoteclock-out}, STARTUP keyword
7267 @cindex @code{lognotestate}, STARTUP keyword
7268 @cindex @code{logrepeat}, STARTUP keyword
7269 @cindex @code{nologrepeat}, STARTUP keyword
7270 @example
7271 logging          @r{record a timestamp when an item is marked DONE}
7272 nologging        @r{don't record when items are marked DONE}
7273 lognotedone      @r{record timestamp and a note when DONE}
7274 lognotestate     @r{record timestamp and a note when TODO state changes}
7275 logrepeat        @r{record a note when re-instating a repeating item}
7276 nologrepeat      @r{do not record when re-instating repeating item}
7277 lognoteclock-out @r{record timestamp and a note when clocking out}
7278 @end example
7279 Here are the options for hiding leading stars in outline headings.  The
7280 corresponding variables are @code{org-hide-leading-stars} and
7281 @code{org-odd-levels-only}, both with a default setting @code{nil}
7282 (meaning @code{showstars} and @code{oddeven}).
7283 @cindex @code{hidestars}, STARTUP keyword
7284 @cindex @code{showstars}, STARTUP keyword
7285 @cindex @code{odd}, STARTUP keyword
7286 @cindex @code{even}, STARTUP keyword
7287 @example
7288 hidestars  @r{make all but one of the stars starting a headline invisible.}
7289 showstars  @r{show all stars starting a headline}
7290 odd        @r{allow only odd outline levels (1,3,...)}
7291 oddeven    @r{allow all outline levels}
7292 @end example
7293 To turn on custom format overlays over time stamps (variables
7294 @code{org-put-time-stamp-overlays} and
7295 @code{org-time-stamp-overlay-formats}), use
7296 @cindex @code{customtime}, STARTUP keyword
7297 @example
7298 customtime @r{overlay custom time format}
7299 @end example
7300 The following options influence the table spreadsheet (variable
7301 @code{constants-unit-system}).
7302 @cindex @code{constcgs}, STARTUP keyword
7303 @cindex @code{constSI}, STARTUP keyword
7304 @example
7305 constcgs   @r{@file{constants.el} should use the c-g-s unit system}
7306 constSI    @r{@file{constants.el} should use the SI unit system}
7307 @end example
7308 @item #+TAGS:  TAG1(c1) TAG2(c2)
7309 These lines (several such lines are allowed) specify the legal tags in
7310 this file, and (potentially) the corresponding @emph{fast tag selection}
7311 keys.  The corresponding variable is @code{org-tag-alist}.
7312 @item #+TBLFM:
7313 This line contains the formulas for the table directly above the line.
7314 @item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS, #+DATE:
7315 These lines provide settings for exporting files.  For more details see
7316 @ref{Export options}.
7317 @item #+SEQ_TODO:   #+TYP_TODO:
7318 These lines set the TODO keywords and their interpretation in the
7319 current file.  The corresponding variables are @code{org-todo-keywords}
7320 and @code{org-todo-interpretation}.
7321 @end table
7323 @node The very busy C-c C-c key, Clean view, In-buffer settings, Miscellaneous
7324 @section The very busy C-c C-c key
7325 @kindex C-c C-c
7326 @cindex C-c C-c, overview
7328 The key @kbd{C-c C-c} has many purposes in org-mode, which are all
7329 mentioned scattered throughout this manual.  One specific function of
7330 this key is to add @emph{tags} to a headline (@pxref{Tags}).  In many
7331 other circumstances it means something like @emph{Hey Org-mode, look
7332 here and update according to what you see here}.  Here is a summary of
7333 what this means in different contexts.
7335 @itemize @minus
7336 @item
7337 If there are highlights in the buffer from the creation of a sparse
7338 tree, or from clock display, remove these highlights.
7339 @item
7340 If the cursor is in one of the special @code{#+KEYWORD} lines, this
7341 triggers scanning the buffer for these lines and updating the
7342 information. 
7343 @item
7344 If the cursor is inside a table, realign the table.  This command
7345 works even if the automatic table editor has been turned off.
7346 @item
7347 If the cursor is on a @code{#+TBLFM} line, re-apply the formulas to
7348 the entire table.
7349 @item
7350 If the cursor is inside a table created by the @file{table.el} package,
7351 activate that table.
7352 @item
7353 If the current buffer is a remember buffer, close the note and file it.
7354 With a prefix argument, file it, without further interaction, to the
7355 default location.
7356 @item
7357 If the cursor is on a @code{<<<target>>>}, update radio targets and
7358 corresponding links in this buffer.
7359 @item
7360 If the cursor is in a property line or at the start or end of a property
7361 drawer, offer property commands.
7362 @item
7363 If the cursor is in a plain list item with a checkbox, toggle the status
7364 of the checkbox.
7365 @item
7366 If the cursor is on a numbered item in a plain list, renumber the
7367 ordered list.
7368 @item
7369 If the cursor is on the @code{#+BEGIN} line of a dynamical block, the
7370 block is updated.
7371 @end itemize
7373 @node Clean view, TTY keys, The very busy C-c C-c key, Miscellaneous
7374 @section A cleaner outline view
7375 @cindex hiding leading stars
7376 @cindex clean outline view
7378 Some people find it noisy and distracting that the Org-mode headlines
7379 are starting with a potentially large number of stars.  For example
7380 the tree from @ref{Headlines}:
7382 @example
7383 * Top level headline
7384 ** Second level
7385 *** 3rd level
7386     some text
7387 *** 3rd level
7388     more text
7389 * Another top level headline
7390 @end example
7392 @noindent
7393 Unfortunately this is deeply ingrained into the code of Org-mode and
7394 cannot be easily changed.  You can, however, modify the display in such
7395 a way that all leading stars become invisible and the outline more easy
7396 to read.  To do this, customize the variable
7397 @code{org-hide-leading-stars} like this:
7399 @lisp
7400 (setq org-hide-leading-stars t)
7401 @end lisp
7403 @noindent
7404 or change this on a per-file basis with one of the lines (anywhere in
7405 the buffer)
7407 @example
7408 #+STARTUP: showstars
7409 #+STARTUP: hidestars
7410 @end example
7412 @noindent
7413 Press @kbd{C-c C-c} with the cursor in a @samp{STARTUP} line to activate
7414 the modifications.
7416 With stars hidden, the tree becomes:
7418 @example
7419 * Top level headline
7420  * Second level
7421   * 3rd level
7422     some text
7423   * 3rd level
7424     more text
7425 * Another top level headline
7426 @end example
7428 @noindent
7429 Note that the leading stars are not truly replaced by whitespace, they
7430 are only fontified with the face @code{org-hide} that uses the
7431 background color as font color.  If you are not using either white or
7432 black background, you may have to customize this face to get the wanted
7433 effect.  Another possibility is to set this font such that the extra
7434 stars are @i{almost} invisible, for example using the color
7435 @code{grey90} on a white background.
7437 Things become cleaner still if you skip all the even levels and use only
7438 odd levels 1, 3, 5..., effectively adding two stars to go from one
7439 outline level to the next:
7441 @example
7442 * Top level headline
7443   * Second level
7444     * 3rd level
7445       some text
7446     * 3rd level
7447       more text
7448 * Another top level headline
7449 @end example
7451 @noindent
7452 In order to make the structure editing and export commands handle this
7453 convention correctly, use
7455 @lisp
7456 (setq org-odd-levels-only t)
7457 @end lisp
7459 @noindent
7460 or set this on a per-file basis with one of the following lines (don't
7461 forget to press @kbd{C-c C-c} with the cursor in the startup line to
7462 activate changes immediately).
7464 @example
7465 #+STARTUP: odd
7466 #+STARTUP: oddeven
7467 @end example
7469 You can convert an Org-mode file from single-star-per-level to the
7470 double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
7471 RET} in that file.  The reverse operation is @kbd{M-x
7472 org-convert-to-oddeven-levels}.
7474 @node TTY keys, Interaction, Clean view, Miscellaneous
7475 @section Using org-mode on a tty
7476 @cindex tty keybindings
7478 Org-mode uses a number of keys that are not accessible on a tty.  This
7479 applies to most special keys like cursor keys, @key{TAB} and
7480 @key{RET}, when these are combined with modifier keys like @key{Meta}
7481 and/or @key{Shift}.  Org-mode uses these bindings because it needs to
7482 provide keys for a large number of commands, and because these keys
7483 appeared particularly easy to remember.  In order to still be able to
7484 access the core functionality of Org-mode on a tty, alternative
7485 bindings are provided.  Here is a complete list of these bindings,
7486 which are obviously more cumbersome to use.  Note that sometimes a
7487 work-around can be better.  For example changing a time stamp is
7488 really only fun with @kbd{S-@key{cursor}} keys.  On a tty you would
7489 rather use @kbd{C-c .}  to re-insert the timestamp.
7491 @multitable @columnfractions 0.15 0.2 0.2
7492 @item @b{Default} @tab @b{Alternative 1} @tab @b{Alternative 2}
7493 @item @kbd{S-@key{TAB}}     @tab @kbd{C-u @key{TAB}}       @tab
7494 @item @kbd{M-@key{left}}    @tab @kbd{C-c C-x l}           @tab @kbd{@key{Esc} @key{left}}
7495 @item @kbd{M-S-@key{left}}  @tab @kbd{C-c C-x L}           @tab
7496 @item @kbd{M-@key{right}}   @tab @kbd{C-c C-x r}           @tab @kbd{@key{Esc} @key{right}}
7497 @item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R}           @tab
7498 @item @kbd{M-@key{up}}      @tab @kbd{C-c C-x u}           @tab @kbd{@key{Esc} @key{up}}
7499 @item @kbd{M-S-@key{up}}    @tab @kbd{C-c C-x U}           @tab
7500 @item @kbd{M-@key{down}}    @tab @kbd{C-c C-x d}           @tab @kbd{@key{Esc} @key{down}}
7501 @item @kbd{M-S-@key{down}}  @tab @kbd{C-c C-x D}           @tab
7502 @item @kbd{S-@key{RET}}     @tab @kbd{C-c C-x c}           @tab
7503 @item @kbd{M-@key{RET}}     @tab @kbd{C-c C-x m}           @tab @kbd{@key{Esc} @key{RET}}
7504 @item @kbd{M-S-@key{RET}}   @tab @kbd{C-c C-x M}           @tab
7505 @item @kbd{S-@key{left}}    @tab @kbd{C-c @key{left}}      @tab
7506 @item @kbd{S-@key{right}}   @tab @kbd{C-c @key{right}}     @tab
7507 @item @kbd{S-@key{up}}      @tab @kbd{C-c @key{up}}        @tab
7508 @item @kbd{S-@key{down}}    @tab @kbd{C-c @key{down}}      @tab
7509 @item @kbd{C-S-@key{left}}  @tab @kbd{C-c C-x @key{left}}  @tab
7510 @item @kbd{C-S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab
7511 @end multitable
7513 @node Interaction, Bugs, TTY keys, Miscellaneous
7514 @section Interaction with other packages
7515 @cindex packages, interaction with other
7516 Org-mode lives in the world of GNU Emacs and interacts in various ways
7517 with other code out there.
7519 @menu
7520 * Cooperation::                 Packages Org-mode cooperates with
7521 * Conflicts::                   Packages that lead to conflicts
7522 @end menu
7524 @node Cooperation, Conflicts, Interaction, Interaction
7525 @subsection Packages that Org-mode cooperates with
7527 @table @asis
7528 @cindex @file{calc.el}
7529 @item @file{calc.el} by Dave Gillespie
7530 Org-mode uses the calc package for implementing spreadsheet
7531 functionality in its tables (@pxref{The spreadsheet}).  Org-mode
7532 checks for the availability of calc by looking for the function
7533 @code{calc-eval} which should be autoloaded in your setup if calc has
7534 been installed properly.  As of Emacs 22, calc is part of the Emacs
7535 distribution.  Another possibility for interaction between the two
7536 packages is using calc for embedded calculations. @xref{Embedded Mode,
7537 , Embedded Mode, calc, GNU Emacs Calc Manual}.
7538 @cindex @file{constants.el}
7539 @item @file{constants.el} by Carsten Dominik
7540 In a table formula (@pxref{The spreadsheet}), it is possible to use
7541 names for natural constants or units.  Instead of defining your own
7542 constants in the variable @code{org-table-formula-constants}, install
7543 the @file{constants} package which defines a large number of constants
7544 and units, and lets you use unit prefixes like @samp{M} for
7545 @samp{Mega} etc.  You will need version 2.0 of this package, available
7546 at @url{http://www.astro.uva.nl/~dominik/Tools}. Org-mode checks for
7547 the function @code{constants-get}, which has to be autoloaded in your
7548 setup.  See the installation instructions in the file
7549 @file{constants.el}.
7550 @item @file{cdlatex.el} by Carsten Dominik
7551 @cindex @file{cdlatex.el}
7552 Org-mode can make use of the cdlatex package to efficiently enter
7553 La@TeX{} fragments into Org-mode files. See @ref{CDLaTeX mode}.
7554 @item @file{imenu.el} by Ake Stenhoff and Lars Lindberg
7555 @cindex @file{imenu.el}
7556 Imenu allows menu access to an index of items in a file.  Org-mode
7557 supports imenu - all you need to do to get the index is the following:
7558 @lisp
7559 (add-hook 'org-mode-hook 
7560           (lambda () 'imenu-add-to-menubar "Imenu"))
7561 @end lisp
7562 By default the index is two levels deep - you can modify the depth using
7563 the option @code{org-imenu-depth}.
7564 @item @file{remember.el} by John Wiegley
7565 @cindex @file{remember.el}
7566 Org mode cooperates with remember, see @ref{Remember}.
7567 @file{Remember.el} is not part of Emacs, find it on the web.
7568 @item @file{speedbar.el} by Eric M. Ludlam
7569 @cindex @file{speedbar.el}
7570 Speedbar is a package that creates a special frame displaying files and
7571 index items in files.  Org-mode supports speedbar and allows you to
7572 drill into Org-mode files directly from the speedbar.  It also allows to
7573 restrict the scope of agenda commands to a file or a subtree by using
7574 the command @kbd{<} in the speedbar frame.
7575 @cindex @file{table.el}
7576 @item @file{table.el} by Takaaki Ota
7577 @kindex C-c C-c
7578 @cindex table editor, @file{table.el}
7579 @cindex @file{table.el}
7581 Complex ASCII tables with automatic line wrapping, column- and
7582 row-spanning, and alignment can be created using the Emacs table
7583 package by Takaaki Ota (@uref{http://sourceforge.net/projects/table},
7584 and also part of Emacs 22).
7585 When @key{TAB} or @kbd{C-c C-c} is pressed in such a table, Org-mode
7586 will call @command{table-recognize-table} and move the cursor into the
7587 table.  Inside a table, the keymap of Org-mode is inactive.  In order
7588 to execute Org-mode-related commands, leave the table.
7590 @table @kbd
7591 @kindex C-c C-c
7592 @item C-c C-c
7593 Recognize @file{table.el} table.  Works when the cursor is in a
7594 table.el table.
7596 @kindex C-c ~
7597 @item C-c ~
7598 Insert a table.el table.  If there is already a table at point, this
7599 command converts it between the table.el format and the Org-mode
7600 format.  See the documentation string of the command
7601 @code{org-convert-table} for the restrictions under which this is
7602 possible.
7603 @end table
7604 @file{table.el} is part of Emacs 22.
7605 @cindex @file{footnote.el}
7606 @item @file{footnote.el} by Steven L. Baur
7607 Org-mode recognizes numerical footnotes as provided by this package
7608 (@pxref{Footnotes}).
7609 @end table
7611 @node Conflicts,  , Cooperation, Interaction
7612 @subsection Packages that lead to conflicts with Org-mode
7614 @table @asis
7616 @cindex @file{allout.el}
7617 @item @file{allout.el} by Ken Manheimer
7618 Startup of Org-mode may fail with the error message
7619 @code{(wrong-type-argument keymapp nil)} when there is an outdated
7620 version @file{allout.el} on the load path, for example the version
7621 distributed with Emacs 21.x.  Upgrade to Emacs 22 and this problem will
7622 disappear.  If for some reason you cannot do this, make sure that org.el
7623 is loaded @emph{before} @file{allout.el}, for example by putting
7624 @code{(require 'org)} early enough into your @file{.emacs} file.
7626 @cindex @file{CUA.el}
7627 @item @file{CUA.el} by Kim. F. Storm
7628 Keybindings in Org-mode conflict with the @kbd{S-<cursor>} keys used by
7629 CUA-mode (as well as pc-select-mode and s-region-mode) to select and
7630 extend the region.  If you want to use one of these packages along with
7631 Org-mode, configure the variable @code{org-replace-disputed-keys}.  When
7632 set, Org-mode will move the following keybindings in Org-mode files, and
7633 in the agenda buffer (but not during date selection).
7635 @example
7636 S-UP    -> M-p             S-DOWN  -> M-n
7637 S-LEFT  -> M--             S-RIGHT -> M-+
7638 @end example
7640 Yes, these are unfortunately more difficult to remember.  If you want
7641 to have other replacement keys, look at the variable
7642 @code{org-disputed-keys}.
7643 @item @file{windmove.el} by Hovav Shacham
7644 @cindex @file{windmove.el}
7645 Also this package uses the @kbd{S-<cursor>} keys, so everything written
7646 in the paragraph above about CUA mode also applies here.
7648 @cindex @file{footnote.el}
7649 @item @file{footnote.el} by Steven L. Baur
7650 Org-mode supports the syntax of the footnote package, but only the
7651 numerical footnote markers.  Also, the default key for footnote
7652 commands, @kbd{C-c !} is already used by Org-mode.  You could use the
7653 variable @code{footnote-prefix} to switch footnotes commands to another
7654 key.  Or, you could use @code{org-replace-disputed-keys} and
7655 @code{org-disputed-keys} to change the settings in Org-mode.
7657 @end table
7660 @node Bugs,  , Interaction, Miscellaneous
7661 @section Bugs
7662 @cindex bugs
7664 Here is a list of things that should work differently, but which I
7665 have found too hard to fix.
7667 @itemize @bullet
7668 @item
7669 If a table field starts with a link, and if the corresponding table
7670 column is narrowed (@pxref{Narrow columns}) to a width too small to
7671 display the link, the field would look entirely empty even though it is
7672 not.  To prevent this, Org-mode throws an error.  The work-around is to
7673 make the column wide enough to fit the link, or to add some text (at
7674 least 2 characters) before the link in the same field.
7675 @item
7676 Narrowing table columns does not work on XEmacs, because the
7677 @code{format} function does not transport text properties.
7678 @item
7679 Text in an entry protected with the @samp{QUOTE} keyword should not
7680 autowrap.
7681 @item
7682 When the application called by @kbd{C-c C-o} to open a file link fails
7683 (for example because the application does not exist or refuses to open
7684 the file), it does so silently.  No error message is displayed.
7685 @item
7686 Recalculating a table line applies the formulas from left to right.
7687 If a formula uses @emph{calculated} fields further down the row,
7688 multiple recalculation may be needed to get all fields consistent.  You
7689 may use the command @code{org-table-iterate} (@kbd{C-u C-c *}) to
7690 recalculate until convergence.
7691 @item
7692 A single letter cannot be made bold, for example @samp{*a*}.
7693 @item
7694 The exporters work well, but could be made more efficient.
7695 @end itemize
7698 @node Extensions and Hacking, History and Acknowledgments, Miscellaneous, Top
7699 @appendix Extensions, Hooks and Hacking
7701 This appendix lists extensions for Org-mode written by other authors.
7702 It also covers some aspects where users can extend the functionality of
7703 Org-mode.
7705 @menu
7706 * Extensions::                  Existing 3rd-part extensions
7707 * Adding hyperlink types::      New custom link types
7708 * Tables in arbitrary syntax::  Orgtbl for LaTeX and other programs
7709 * Dynamic blocks::              Automatically filled blocks
7710 * Special agenda views::        Customized views
7711 * Using the property API::      Writing programs that use entry properties
7712 @end menu
7714 @node Extensions, Adding hyperlink types, Extensions and Hacking, Extensions and Hacking
7715 @section Third-party extensions for Org-mode
7716 @cindex extension, third-party
7718 The following extensions for Org-mode have been written by other people:
7720 @table @asis
7721 @cindex @file{org-publish.el}
7722 @item @file{org-publish.el} by David O'Toole
7723 This package provides facilities for publishing related sets of Org-mode
7724 files together with linked files like images as webpages.  It is
7725 highly configurable and can be used for other publishing purposes as
7726 well.  As of Org-mode version 4.30, @file{org-publish.el} is part of the
7727 Org-mode distribution.  It is not yet part of Emacs, however, a delay
7728 caused by the preparations for the 22.1 release.  In the mean time,
7729 @file{org-publish.el} can be downloaded from David's site:
7730 @url{http://dto.freeshell.org/e/org-publish.el}.
7731 @cindex @file{org-mouse.el}
7732 @item @file{org-mouse.el} by Piotr Zielinski
7733 This package implements extended mouse functionality for Org-mode.  It
7734 allows you to cycle visibility and to edit the document structure with
7735 the mouse.  Best of all, it provides a context-sensitive menu on
7736 @key{mouse-3} that changes depending on the context of a mouse-click.
7737 As of Org-mode version 4.53, @file{org-mouse.el} is part of the
7738 Org-mode distribution.  It is not yet part of Emacs, however, a delay
7739 caused by the preparations for the 22.1 release.  In the mean time,
7740 @file{org-mouse.el} can be downloaded from Piotr's site:
7741 @url{http://www.cl.cam.ac.uk/~pz215/files/org-mouse.el}.
7742 @cindex @file{org-blog.el}
7743 @item @file{org-blog.el} by David O'Toole
7744 A blogging plug-in for @file{org-publish.el}.@*
7745 @url{http://dto.freeshell.org/notebook/OrgMode.html}.
7746 @cindex @file{blorg.el}
7747 @item @file{blorg.el} by Bastien Guerry
7748 Publish Org-mode files as
7749 blogs. @url{http://www.cognition.ens.fr/~guerry/blorg.html}.
7750 @cindex @file{org2rem.el}
7751 @item @file{org2rem.el} by Bastien Guerry
7752 Translates Org-mode files into something readable by
7753 Remind. @url{http://www.cognition.ens.fr/~guerry/u/org2rem.el}.
7754 @item @file{org-toc.el} by Bastien Guerry
7755 Produces a simple table of contents of an Org-mode file, for easy
7756 navigation. @url{http://www.cognition.ens.fr/~guerry/u/org2rem.el}.
7757 @item @file{org-registry.el} by Bastien Guerry
7758 Find which Org-file link to a certain document.
7759 @url{http://www.cognition.ens.fr/~guerry/u/org2rem.el}.
7760 @end table
7762 @page
7764 @node Adding hyperlink types, Tables in arbitrary syntax, Extensions, Extensions and Hacking
7765 @section Adding hyperlink types
7766 @cindex hyperlinks, adding new types
7768 Org-mode has a large number of hyperlink types built-in
7769 (@pxref{Hyperlinks}).  If you would like to add new link types, it
7770 provides an interface for doing so.  Lets look at an example file
7771 @file{org-man.el} that will add support for creating links like
7772 @samp{[[man:printf][The printf manpage]]} to show unix manual pages inside
7773 emacs:
7775 @lisp
7776 ;;; org-man.el - Support for links to manpages in Org-mode
7778 (require 'org)
7780 (org-add-link-type "man" 'org-man-open)
7781 (add-hook 'org-store-link-functions 'org-man-store-link)
7783 (defcustom org-man-command 'man
7784   "The Emacs command to be used to display a man page."
7785   :group 'org-link
7786   :type '(choice (const man) (const woman)))
7788 (defun org-man-open (path)
7789   "Visit the manpage on PATH.
7790 PATH should be a topic that can be thrown at the man command."
7791   (funcall org-man-command path))
7793 (defun org-man-store-link ()
7794   "Store a link to a manpage."
7795   (when (memq major-mode '(Man-mode woman-mode))
7796     ;; This is a man page, we do make this link
7797     (let* ((page (org-man-get-page-name))
7798            (link (concat "man:" page))
7799            (description (format "Manpage for %s" page)))
7800       (org-store-link-props
7801        :type "man"
7802        :link link
7803        :description description))))
7805 (defun org-man-get-page-name ()
7806   "Extract the page name from the buffer name."
7807   ;; This works for both `Man-mode' and `woman-mode'.
7808   (if (string-match " \\(\\S-+\\)\\*" (buffer-name))
7809       (match-string 1 (buffer-name))
7810     (error "Cannot create link to this man page")))
7812 (provide 'org-man)
7814 ;;; org-man.el ends here
7815 @end lisp
7817 @noindent
7818 You would activate this new link type in @file{.emacs} with
7820 @lisp
7821 (require 'org-man)
7822 @end lisp
7824 @noindent
7825 Lets go through the file and see what it does.
7826 @enumerate
7827 @item 
7828 It does @code{(require 'org)} to make sure that @file{org.el} has been
7829 loaded.
7830 @item
7831 The next line calls @code{org-add-link-type} to define a new link type
7832 with prefix @samp{man}.  The call also contains the name of a function
7833 that will be called to follow such a link.
7834 @item
7835 The next line adds a function to @code{org-store-link-functions}, in
7836 order to allow the command @kbd{C-c l} to record a useful link in a
7837 buffer displaying a man page.
7838 @end enumerate
7840 The rest of the file defines the necessary variables and functions.
7841 First there is a customization variable that determines which emacs
7842 command should be used to display manpages.  There are two options,
7843 @code{man} and @code{woman}.  Then the function to follow a link is
7844 defined.  It gets the link path as an argument - in this case the link
7845 path is just a topic for the manual command.  The function calls the
7846 value of @code{org-man-command} to display the man page.
7848 Finally the function @code{org-man-store-link} is defined.  When you try
7849 to store a link with @kbd{C-c l}, also this function will be called to
7850 try to make a link.  The function must first decide if it is supposed to
7851 create the link for this buffer type, we do this by checking the value
7852 of the variable @code{major-mode}.  If not, the function must exit and
7853 retunr the value @code{nil}.  If yes, the link is created by getting the
7854 manual tpoic from the buffer name and prefixing it with the string
7855 @samp{man:}.  Then it must call the command @code{org-store-link-props}
7856 and set the @code{:type} and @code{:link} properties.  Optionally you
7857 can also set the @code{:description} property to provide a default for
7858 the link description when the link is later inserted into tan Org-mode
7859 buffer with @kbd{C-c C-l}.
7861 @node Tables in arbitrary syntax, Dynamic blocks, Adding hyperlink types, Extensions and Hacking
7862 @section Tables and Lists in arbitrary syntax
7863 @cindex tables, in other modes
7864 @cindex lists, in other modes
7865 @cindex orgtbl-mode
7867 Since Orgtbl-mode can be used as a minor mode in arbitrary buffers, a
7868 frequent feature request has been to make it work with native tables in
7869 specific languages, for example La@TeX{}.  However, this is extremely
7870 hard to do in a general way, would lead to a customization nightmare,
7871 and would take away much of the simplicity of the Orgtbl-mode table
7872 editor.
7875 This appendix describes a different approach.  We keep the Orgtbl-mode
7876 table in its native format (the @i{source table}), and use a custom
7877 function to @i{translate} the table to the correct syntax, and to
7878 @i{install} it in the right location (the @i{target table}).  This puts
7879 the burden of writing conversion functions on the user, but it allows
7880 for a very flexible system.
7882 Bastien added the ability to do the same with lists.  You can use Org's
7883 facilities to edit and structure lists by turning @code{orgstruct-mode}
7884 on, then locally exporting such lists in another format (HTML, La@TeX{}
7885 or TeXInfo.)
7888 @menu
7889 * Radio tables::                Sending and receiving
7890 * A LaTeX example::             Step by step, almost a tutorial
7891 * Translator functions::        Copy and modify
7892 * Radio lists::                 Doing the same for lists.
7893 @end menu
7895 @node Radio tables, A LaTeX example, Tables in arbitrary syntax, Tables in arbitrary syntax
7896 @subsection Radio tables
7897 @cindex radio tables
7899 To define the location of the target table, you first need to create two
7900 lines that are comments in the current mode, but contain magic words for
7901 Orgtbl-mode to find.  Orgtbl-mode will insert the translated table
7902 between these lines, replacing whatever was there before.  For example:
7904 @example
7905 /* BEGIN RECEIVE ORGTBL table_name */
7906 /* END RECEIVE ORGTBL table_name */
7907 @end example
7909 @noindent
7910 Just above the source table, we put a special line that tells
7911 Orgtbl-mode how to translate this table and where to install it.  For
7912 example:
7913 @example
7914 #+ORGTBL: SEND table_name translation_function arguments....
7915 @end example
7917 @noindent
7918 @code{table_name} is the reference name for the table that is also used
7919 in the receiver lines. @code{translation_function} is the Lisp function
7920 that does the translation.  Furthermore, the line can contain a list of
7921 arguments (alternating key and value) at the end.  The arguments will be
7922 passed as a property list to the translation function for
7923 interpretation.  A few standard parameters are already recognized and
7924 acted upon before the translation function is called:
7926 @table @code
7927 @item :skip N
7928 Skip the first N lines of the table. Hlines do count!
7929 @item :skipcols (n1 n2 ...)
7930 List of columns that should be skipped.  If the table has a column with
7931 calculation marks, that column is automatically discarded as well.
7932 Please note that the translator function sees the table @emph{after} the
7933 removal of these columns, the function never knows that there have been
7934 additional columns.
7935 @end table
7937 @noindent
7938 The one problem remaining is how to keep the source table in the buffer
7939 without disturbing the normal workings of the file, for example during
7940 compilation of a C file or processing of a La@TeX{} file.  There are a
7941 number of different solutions:
7943 @itemize @bullet
7944 @item
7945 The table could be placed in a block comment if that is supported by the
7946 language.  For example, in C-mode you could wrap the table between
7947 @samp{/*} and @samp{*/} lines.
7948 @item 
7949 Sometimes it is possible to put the table after some kind of @i{END}
7950 statement, for example @samp{\bye} in TeX and @samp{\end@{document@}}
7951 in La@TeX{}.
7952 @item
7953 You can just comment the table line by line whenever you want to process
7954 the file, and uncomment it whenever you need to edit the table.  This
7955 only sounds tedious - the command @kbd{M-x orgtbl-toggle-comment} does
7956 make this comment-toggling very easy, in particular if you bind it to a
7957 key.
7958 @end itemize
7960 @node A LaTeX example, Translator functions, Radio tables, Tables in arbitrary syntax
7961 @subsection A LaTeX example of radio tables
7962 @cindex LaTeX, and orgtbl-mode
7964 The best way to wrap the source table in La@TeX{} is to use the
7965 @code{comment} environment provided by @file{comment.sty}.  It has to be
7966 activated by placing @code{\usepackage@{comment@}} into the document
7967 header.  Orgtbl-mode can insert a radio table skeleton@footnote{By
7968 default this works only for La@TeX{}, HTML, and TeXInfo.  Configure the
7969 variable @code{orgtbl-radio-tables} to install templates for other
7970 modes.}  with the command @kbd{M-x orgtbl-insert-radio-table}.  You will
7971 be prompted for a table name, lets say we use @samp{salesfigures}.  You
7972 will then get the following template:
7974 @example
7975 % BEGIN RECEIVE ORGTBL salesfigures
7976 % END RECEIVE ORGTBL salesfigures
7977 \begin@{comment@}
7978 #+ORGTBL: SEND salesfigures orgtbl-to-latex
7979 | | |
7980 \end@{comment@}
7981 @end example
7983 @noindent
7984 The @code{#+ORGTBL: SEND} line tells orgtbl-mode to use the function
7985 @code{orgtbl-to-latex} to convert the table into La@TeX{} and to put it
7986 into the receiver location with name @code{salesfigures}.  You may now
7987 fill in the table, feel free to use the spreadsheet features@footnote{If
7988 the @samp{#+TBLFM} line contains an odd number of dollar characters,
7989 this may cause problems with font-lock in latex-mode.  As shown in the
7990 example you can fix this by adding an extra line inside the
7991 @code{comment} environment that is used to balance the dollar
7992 expressions.  If you are using AUCTeX with the font-latex library, a
7993 much better solution is to add the @code{comment} environment to the
7994 variable @code{LaTeX-verbatim-environments}.}:
7996 @example
7997 % BEGIN RECEIVE ORGTBL salesfigures
7998 % END RECEIVE ORGTBL salesfigures
7999 \begin@{comment@}
8000 #+ORGTBL: SEND salesfigures orgtbl-to-latex
8001 | Month | Days | Nr sold | per day |
8002 |-------+------+---------+---------|
8003 | Jan   |   23 |      55 |     2.4 |
8004 | Feb   |   21 |      16 |     0.8 |
8005 | March |   22 |     278 |    12.6 |
8006 #+TBLFM: $4=$3/$2;%.1f
8007 % $ (optional extra dollar to keep font-lock happy, see footnote)
8008 \end@{comment@}
8009 @end example
8011 @noindent
8012 When you are done, press @kbd{C-c C-c} in the table to get the converted
8013 table inserted between the two marker lines.
8015 Now lets assume you want to make the table header by hand, because you
8016 want to control how columns are aligned etc.  In this case we make sure
8017 that the table translator does skip the first 2 lines of the source
8018 table, and tell the command to work as a @i{splice}, i.e. to not produce
8019 header and footer commands of the target table:
8021 @example
8022 \begin@{tabular@}@{lrrr@}
8023 Month & \multicolumn@{1@}@{c@}@{Days@} & Nr.\ sold & per day\\
8024 % BEGIN RECEIVE ORGTBL salesfigures
8025 % END RECEIVE ORGTBL salesfigures
8026 \end@{tabular@}
8028 \begin@{comment@}
8029 #+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2
8030 | Month | Days | Nr sold | per day |
8031 |-------+------+---------+---------|
8032 | Jan   |   23 |      55 |     2.4 |
8033 | Feb   |   21 |      16 |     0.8 |
8034 | March |   22 |     278 |    12.6 |
8035 #+TBLFM: $4=$3/$2;%.1f
8036 \end@{comment@}
8037 @end example
8039 The La@TeX{} translator function @code{orgtbl-to-latex} is already part of
8040 Orgtbl-mode.  It uses a @code{tabular} environment to typeset the table
8041 and marks horizontal lines with @code{\hline}.  Furthermore, it
8042 interprets the following parameters:
8044 @table @code
8045 @item :splice nil/t
8046 When set to t, return only table body lines, don't wrap them into a
8047 tabular environment.  Default is nil.
8049 @item :fmt fmt
8050 A format to be used to wrap each field, should contain @code{%s} for the
8051 original field value.  For example, to wrap each field value in dollars,
8052 you could use @code{:fmt "$%s$"}.  This may also be a property list with
8053 column numbers and formats. for example @code{:fmt (2 "$%s$" 4 "%s\\%%")}.
8055 @item :efmt efmt
8056 Use this format to print numbers with exponentials.  The format should
8057 have @code{%s} twice for inserting mantissa and exponent, for example
8058 @code{"%s\\times10^@{%s@}"}.  The default is @code{"%s\\,(%s)"}.  This
8059 may also be a property list with column numbers and formats, for example
8060 @code{:efmt (2 "$%s\\times10^@{%s@}$" 4 "$%s\\cdot10^@{%s@}$")}.  After
8061 @code{efmt} has been applied to a value, @code{fmt} will also be
8062 applied.
8063 @end table
8065 @node Translator functions, Radio lists, A LaTeX example, Tables in arbitrary syntax
8066 @subsection Translator functions
8067 @cindex HTML, and orgtbl-mode
8068 @cindex translator function
8070 Orgtbl-mode has several translator functions built-in:
8071 @code{orgtbl-to-latex}, @code{orgtbl-to-html}, and
8072 @code{orgtbl-to-texinfo}.  Except for @code{orgtbl-to-html}@footnote{The
8073 HTML translator uses the same code that produces tables during HTML
8074 export.}, these all use a generic translator, @code{orgtbl-to-generic}.
8075 For example, @code{orgtbl-to-latex} itself is a very short function that
8076 computes the column definitions for the @code{tabular} environment,
8077 defines a few field and line separators and then hands over to the
8078 generic translator.  Here is the entire code:
8080 @lisp
8081 @group
8082 (defun orgtbl-to-latex (table params)
8083   "Convert the orgtbl-mode TABLE to LaTeX."
8084   (let* ((alignment (mapconcat (lambda (x) (if x "r" "l"))
8085                                org-table-last-alignment ""))
8086          (params2
8087           (list
8088            :tstart (concat "\\begin@{tabular@}@{" alignment "@}")
8089            :tend "\\end@{tabular@}"
8090            :lstart "" :lend " \\\\" :sep " & "
8091            :efmt "%s\\,(%s)" :hline "\\hline")))
8092     (orgtbl-to-generic table (org-combine-plists params2 params))))
8093 @end group
8094 @end lisp
8096 As you can see, the properties passed into the function (variable
8097 @var{PARAMS}) are combined with the ones newly defined in the function
8098 (variable @var{PARAMS2}).  The ones passed into the function (i.e. the
8099 ones set by the @samp{ORGTBL SEND} line) take precedence.  So if you
8100 would like to use the La@TeX{} translator, but wanted the line endings to
8101 be @samp{\\[2mm]} instead of the default @samp{\\}, you could just
8102 overrule the default with
8104 @example
8105 #+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]"
8106 @end example
8108 For a new language, you can either write your own converter function in
8109 analogy with the La@TeX{} translator, or you can use the generic function
8110 directly.  For example, if you have a language where a table is started
8111 with @samp{!BTBL!}, ended with @samp{!ETBL!}, and where table lines are
8112 started with @samp{!BL!}, ended with @samp{!EL!} and where the field
8113 separator is a TAB, you could call the generic translator like this (on
8114 a single line!):
8116 @example
8117 #+ORGTBL: SEND test orgtbl-to-generic :tstart "!BTBL!" :tend "!ETBL!"
8118                               :lstart "!BL! " :lend " !EL!" :sep "\t"
8119 @end example
8121 @noindent
8122 Please check the documentation string of the function
8123 @code{orgtbl-to-generic} for a full list of parameters understood by
8124 that function and remember that you can pass each of them into
8125 @code{orgtbl-to-latex}, @code{orgtbl-to-texinfo}, and any other function
8126 using the generic function.
8128 Of course you can also write a completely new function doing complicated
8129 things the generic translator cannot do.  A translator function takes
8130 two arguments.  The first argument is the table, a list of lines, each
8131 line either the symbol @code{hline} or a list of fields.  The second
8132 argument is the property list containing all parameters specified in the
8133 @samp{#+ORGTBL: SEND} line.  The function must return a single string
8134 containing the formatted table.  If you write a generally useful
8135 translator, please post it on @code{emacs-orgmode@@gnu.org} so that
8136 others can benefit from your work.
8138 @node  Radio lists,  , Translator functions, Tables in arbitrary syntax
8139 @subsection Radio lists
8140 @cindex radio lists
8141 @cindex org-list-insert-radio-list
8143 Sending and receiving radio lists works exactly the same way than
8144 sending and receiving radio tables (@pxref{Radio tables}) @footnote{You
8145 need to load the @code{org-export-latex.el} package to use radio lists
8146 since the relevant code is there for now.}.  As for radio tables, you
8147 can insert radio lists templates in HTML, La@TeX{} and TeXInfo modes by
8148 calling @code{org-list-insert-radio-list}.
8150 Here are the differences with radio tables:
8152 @itemize @minus
8153 @item
8154 Use @code{ORGLST} instead of @code{ORGTBL}.
8155 @item
8156 The available translation functions for radio lists don't take
8157 parameters.
8158 @item 
8159 `C-c C-c' will work when pressed on the first item of the list.
8160 @end itemize
8162 Here is a La@TeX{} example.  Let's say that you have this in your
8163 La@TeX{} file:
8165 @example
8166 % BEGIN RECEIVE ORGLST to-buy
8167 % END RECEIVE ORGLST to-buy
8168 \begin@{comment@}
8169 #+ORGLIST: SEND to-buy orgtbl-to-latex
8170 - a new house
8171 - a new computer
8172   + a new keyboard
8173   + a new mouse
8174 - a new life
8175 \end@{comment@}
8176 @end example
8178 Pressing `C-c C-c' on @code{a new house} and will insert the converted
8179 La@TeX{} list between the two marker lines.
8181 @node Dynamic blocks, Special agenda views, Tables in arbitrary syntax, Extensions and Hacking
8182 @section Dynamic blocks
8183 @cindex dynamic blocks
8185 Org-mode documents can contain @emph{dynamic blocks}.  These are
8186 specially marked regions that are updated by some user-written function.
8187 A good example for such a block is the clock table inserted by the
8188 command @kbd{C-c C-x C-r} (@pxref{Clocking work time}).
8190 Dynamic block are enclosed by a BEGIN-END structure that assigns a name
8191 to the block and can also specify parameters for the function producing
8192 the content of the block.
8194 @example
8195 #+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
8197 #+END:
8198 @end example
8200 Dynamic blocks are updated with the following commands
8202 @table @kbd
8203 @kindex C-c C-x C-u
8204 @item C-c C-x C-u
8205 Update dynamic block at point.
8206 @kindex C-u C-c C-x C-u
8207 @item C-u C-c C-x C-u
8208 Update all dynamic blocks in the current file.
8209 @end table
8211 Updating a dynamic block means to remove all the text between BEGIN and
8212 END, parse the BEGIN line for parameters and then call the specific
8213 writer function for this block to insert the new content.  For a block
8214 with name @code{myblock}, the writer function is
8215 @code{org-dblock-write:myblock} with as only parameter a property list
8216 with the parameters given in the begin line.  Here is a trivial example
8217 of a block that keeps track of when the block update function was last
8218 run:
8220 @example
8221 #+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M"
8223 #+END:
8224 @end example
8226 @noindent
8227 The corresponding block writer function could look like this:
8229 @lisp
8230 (defun org-dblock-write:block-update-time (params)
8231    (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
8232      (insert "Last block update at: "
8233              (format-time-string fmt (current-time)))))
8234 @end lisp
8236 If you want to make sure that all dynamic blocks are always up-to-date,
8237 you could add the function @code{org-update-all-dblocks} to a hook, for
8238 example @code{before-save-hook}.  @code{org-update-all-dblocks} is
8239 written in a way that is does nothing in buffers that are not in Org-mode.
8241 @node Special agenda views, Using the property API, Dynamic blocks, Extensions and Hacking
8242 @section Special Agenda Views
8243 @cindex agenda views, user-defined
8245 Org-mode provides a special hook that can be used to narrow down the
8246 selection made by any of the agenda views.  You may specify a function
8247 that is used at each match to verify if the match should indeed be part
8248 of the agenda view, and if not, how much should be skipped.
8250 Let's say you want to produce a list of projects that contain a WAITING
8251 tag anywhere in the project tree.  Let's further assume that you have
8252 marked all tree headings that define a project with the todo keyword
8253 PROJECT.  In this case you would run a todo search for the keyword
8254 PROJECT, but skip the match unless there is a WAITING tag anywhere in
8255 the subtree belonging to the project line.
8257 To achieve this, you must write a function that searches the subtree for
8258 the tag.  If the tag is found, the function must return @code{nil} to
8259 indicate that this match should not be skipped.  If there is no such
8260 tag, return the location of the end of the subtree, to indicate that
8261 search should continue from there.
8263 @lisp
8264 (defun my-skip-unless-waiting ()
8265   "Skip trees that are not waiting"
8266   (let ((subtree-end (save-excursion (org-end-of-subtree t))))
8267     (if (re-search-forward ":WAITING:" subtree-end t)
8268         nil          ; tag found, do not skip
8269       subtree-end))) ; tag not found, continue after end of subtree
8270 @end lisp
8272 Now you may use this function in an agenda custom command, for example
8273 like this:
8275 @lisp
8276 (org-add-agenda-custom-command
8277  '("b" todo "PROJECT"
8278    ((org-agenda-skip-function 'my-org-waiting-projects)
8279     (org-agenda-overriding-header "Projects waiting for something: "))))
8280 @end lisp
8282 Note that this also binds @code{org-agenda-overriding-header} to get a
8283 meaningful header in the agenda view.
8285 You may also put a Lisp form into @code{org-agenda-skip-function}.  In
8286 particular, you may use the functions @code{org-agenda-skip-entry-if}
8287 and @code{org-agenda-skip-subtree-if} in this form, for example:
8289 @table @code
8290 @item '(org-agenda-skip-entry-if 'scheduled)
8291 Skip current entry if it has been scheduled.
8292 @item '(org-agenda-skip-entry-if 'notscheduled)
8293 Skip current entry if it has not been scheduled.
8294 @item '(org-agenda-skip-entry-if 'deadline)
8295 Skip current entry if it has a deadline.
8296 @item '(org-agenda-skip-entry-if 'scheduled 'deadline)
8297 Skip current entry if it has a deadline, or if it is scheduled.
8298 @item '(org-agenda-skip-entry 'regexp "regular expression")
8299 Skip current entry if the regular expression matches in the entry.
8300 @item '(org-agenda-skip-entry 'notregexp "regular expression")
8301 Skip current entry unless the regular expression matches.
8302 @item '(org-agenda-skip-subtree-if 'regexp "regular expression")
8303 Same as above, but check and skip the entire subtree.
8304 @end table
8306 Therefore we could also have written the search for WAITING projects
8307 like this, even without defining a special function:
8309 @lisp
8310 (org-add-agenda-custom-command
8311  '("b" todo "PROJECT"
8312    ((org-agenda-skip-function '(org-agenda-skip-subtree-if
8313                                 'regexp ":WAITING:"))
8314     (org-agenda-overriding-header "Projects waiting for something: "))))
8315 @end lisp
8318 @node Using the property API,  , Special agenda views, Extensions and Hacking
8319 @section Using the property API
8320 @cindex API, for properties
8321 @cindex properties, API
8323 Here is a description of the functions that can be used to work with
8324 properties.
8326 @defun org-entry-properties &optional pom which
8327 Get all properties of the entry at point-or-marker POM.
8328 This includes the TODO keyword, the tags, time strings for deadline,
8329 scheduled, and clocking, and any additional properties defined in the
8330 entry.  The return value is an alist, keys may occur multiple times
8331 if the property key was used several times.
8332 POM may also be nil, in which case the current entry is used.
8333 If WHICH is nil or `all', get all properties.  If WHICH is
8334 `special' or `standard', only get that subclass.
8335 @end defun
8336 @defun org-entry-get pom property &optional inherit
8337 Get value of PROPERTY for entry at point-or-marker POM.
8338 If INHERIT is non-nil and the entry does not have the property,
8339 then also check higher levels of the hierarchy.  This function ignores
8340 the value of @code{org-use-property-inheritance} and requires the
8341 explicit INHERIT flag.
8342 @end defun
8344 @defun org-entry-delete pom property
8345 Delete the property PROPERTY from entry at point-or-marker POM.
8346 @end defun
8348 @defun org-entry-put pom property value
8349 Set PROPERTY to VALUE for entry at point-or-marker POM.
8350 @end defun
8352 @defun org-buffer-property-keys &optional include-specials
8353 Get all property keys in the current buffer.
8354 @end defun
8356 @defun org-insert-property-drawer
8357 Insert a property drawer at point.
8358 @end defun
8360 @node History and Acknowledgments, Index, Extensions and Hacking, Top
8361 @appendix History and Acknowledgments
8362 @cindex acknowledgments
8363 @cindex history
8364 @cindex thanks
8366 Org-mode was borne in 2003, out of frustration over the user interface
8367 of the Emacs outline-mode.  I was trying to organize my notes and
8368 projects, and using Emacs seemed to be the natural way to go.  However,
8369 having to remember eleven different commands with two or three keys per
8370 command, only to hide and unhide parts of the outline tree, that seemed
8371 entirely unacceptable to me.  Also, when using outlines to take notes, I
8372 constantly want to restructure the tree, organizing it parallel to my
8373 thoughts and plans.  @emph{Visibility cycling} and @emph{structure
8374 editing} were originally implemented in the package
8375 @file{outline-magic.el}, but quickly moved to the more general
8376 @file{org.el}.  As this environment became comfortable for project
8377 planning, the next step was adding @emph{TODO entries}, basic @emph{time
8378 stamps}, and @emph{table support}.  These areas highlight the two main
8379 goals that Org-mode still has today: To create a new, outline-based,
8380 plain text mode with innovative and intuitive editing features, and to
8381 incorporate project planning functionality directly into a notes file.
8383 Since the first release, literally thousands of emails to me or on
8384 @code{emacs-orgmode@@gnu.org} have provided a constant stream of bug
8385 reports, feedback, new ideas, and sometimes patches and add-on code.
8386 Many thanks to everyone who has helped to improve this package.  I am
8387 trying to keep here a list of the people who had significant influence
8388 in shaping one or more aspects of Org-mode.  The list may not be
8389 complete, if I have forgotten someone, please accept my apologies and
8390 let me know.
8392 @itemize @bullet
8394 @item
8395 @i{Russel Adams} came up with the idea for drawers.
8396 @item
8397 @i{Thomas Baumann} contributed the code for links to the MH-E email
8398 system.
8399 @item
8400 @i{Alex Bochannek} provided a patch for rounding time stamps.
8401 @item
8402 @i{Charles Cave}'s suggestion sparked the implementation of templates
8403 for Remember.
8404 @item
8405 @i{Pavel Chalmoviansky} influenced the agenda treatment of items with
8406 specified time.
8407 @item
8408 @i{Gregory Chernov} patched support for lisp forms into table
8409 calculations and improved XEmacs compatibility, in particular by porting
8410 @file{nouline.el} to XEmacs.
8411 @item
8412 @i{Sacha Chua} suggested to copy some linking code from Planner.
8413 @item
8414 @i{Eddward DeVilla} proposed and tested checkbox statistics.  He also
8415 came up with the idea of properties, and that there should be an API for
8416 them.
8417 @item
8418 @i{Kees Dullemond} used to edit projects lists directly in HTML and so
8419 inspired some of the early development, including HTML export.  He also
8420 asked for a way to narrow wide table columns.
8421 @item
8422 @i{Christian Egli} converted the documentation into TeXInfo format,
8423 patched CSS formatting into the HTML exporter, and inspired the agenda.
8424 @item
8425 @i{David Emery} provided a patch for custom CSS support in exported
8426 HTML agendas.
8427 @item
8428 @i{Nic Ferrier} contributed mailcap and XOXO support.
8429 @item
8430 @i{John Foerch} figured out how to make incremental search show context
8431 around a match in a hidden outline tree.
8432 @item
8433 @i{Niels Giesen} had the idea to automatically archive DONE trees.
8434 @item
8435 @i{Bastien Guerry} wrote the La@TeX{} exporter and has been prolific
8436 with patches, ideas, and bug reports.
8437 @item
8438 @i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
8439 @item
8440 @i{Scott Jaderholm} proposed footnotes, control over whitespace between
8441 folded entries, and column view for properties.
8442 @item
8443 @i{Shidai Liu} ("Leo") asked for embedded La@TeX{} and tested it.  He also
8444 provided frequent feedback and some patches.
8445 @item
8446 @i{Jason F. McBrayer} suggested agenda export to CSV format.
8447 @item
8448 @i{Max Mikhanosha} came up with the idea of refiling.
8449 @item
8450 @i{Dmitri Minaev} sent a patch to set priority limits on a per-file
8451 basis.
8452 @item
8453 @i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
8454 happy.
8455 @item
8456 @i{Rick Moynihan} proposed to allow multiple TODO sequences in a file
8457 and to be able to quickly restrict the agenda to a subtree.
8458 @item
8459 @i{Todd Neal} provided patches for links to Info files and elisp forms.
8460 @item
8461 @i{Tim O'Callaghan} suggested in-file links, search options for general
8462 file links, and TAGS.
8463 @item
8464 @i{Takeshi Okano} translated the manual and David O'Toole's tutorial
8465 into Japanese.
8466 @item
8467 @i{Oliver Oppitz} suggested multi-state TODO items.
8468 @item
8469 @i{Scott Otterson} sparked the introduction of descriptive text for
8470 links, among other things.
8471 @item
8472 @i{Pete Phillips} helped during the development of the TAGS feature, and
8473 provided frequent feedback.
8474 @item
8475 @i{T.V. Raman} reported bugs and suggested improvements.
8476 @item
8477 @i{Matthias Rempe} (Oelde) provided ideas, Windows support, and quality
8478 control.
8479 @item
8480 @i{Kevin Rogers} contributed code to access VM files on remote hosts.
8481 @item
8482 @i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a
8483 conflict with @file{allout.el}.
8484 @item
8485 @i{Jason Riedy} sent a patch to fix a bug with export of TODO keywords.
8486 @item
8487 @i{Philip Rooke} created the Org-mode reference card and provided lots
8488 of feedback.
8489 @item
8490 @i{Christian Schlauer} proposed angular brackets around links, among
8491 other things.
8492 @item
8493 Linking to VM/BBDB/GNUS was inspired by @i{Tom Shannon}'s
8494 @file{organizer-mode.el}.
8495 @item
8496 @i{Daniel Sinder} came up with the idea of internal archiving by locking
8497 subtrees.
8498 @item
8499 @i{Dale Smith} proposed link abbreviations.
8500 @item
8501 @i{Adam Spiers} asked for global linking commands and inspired the link
8502 extension system.  support mairix.
8503 @item
8504 @i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
8505 chapter about publishing.
8506 @item
8507 @i{J@"urgen Vollmer} contributed code generating the table of contents
8508 in HTML output.
8509 @item
8510 @i{Chris Wallace} provided a patch implementing the @samp{QUOTE}
8511 keyword.
8512 @item
8513 @i{David Wainberg} suggested archiving, and improvements to the linking
8514 system.
8515 @item
8516 @i{John Wiegley} wrote @file{emacs-wiki.el} and @file{planner.el}.  The
8517 development of Org-mode was fully independent, and both systems are
8518 really different beasts in their basic ideas and implementation details.
8519 I later looked at John's code, however, and learned from his
8520 implementation of (i) links where the link itself is hidden and only a
8521 description is shown, and (ii) popping up a calendar to select a date.
8522 John has also contributed a number of great ideas directly to Org-mode.
8523 @item
8524 @i{Carsten Wimmer} suggested some changes and helped fix a bug in
8525 linking to GNUS.
8526 @item
8527 @i{Roland Winkler} requested additional keybindings to make Org-mode
8528 work on a tty.
8529 @item
8530 @i{Piotr Zielinski} wrote @file{org-mouse.el}, proposed agenda blocks
8531 and contributed various ideas and code snippets.
8532 @end itemize
8535 @node Index, Key Index, History and Acknowledgments, Top
8536 @unnumbered Index
8538 @printindex cp
8540 @node Key Index,  , Index, Top
8541 @unnumbered Key Index
8543 @printindex ky
8545 @bye
8547 @ignore
8548    arch-tag: 7893d1fe-cc57-4d13-b5e5-f494a1bcc7ac
8549 @end ignore