Relicense all texi files under FDL 1.3 or later.
[bpt/emacs.git] / doc / misc / org.texi
CommitLineData
4009494e
GM
1\input texinfo
2@c %**start of header
db78a8cb 3@setfilename ../../info/org
a7808fba 4@settitle The Org Manual
4009494e 5
e45e3595
CD
6@set VERSION 6.12a
7@set DATE November 2008
4009494e
GM
8
9@dircategory Emacs
10@direntry
11* Org Mode: (org). Outline-based notes management and organizer
12@end direntry
13
14@c Version and Contact Info
dbc28aaa 15@set MAINTAINERSITE @uref{http://orgmode.org,maintainers webpage}
4009494e
GM
16@set AUTHOR Carsten Dominik
17@set MAINTAINER Carsten Dominik
dbc28aaa
CD
18@set MAINTAINEREMAIL @email{carsten at orgmode dot org}
19@set MAINTAINERCONTACT @uref{mailto:carsten at orgmode dot org,contact the maintainer}
4009494e
GM
20@c %**end of header
21@finalout
22
23@c Macro definitions
24
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
34
35@copying
a7808fba 36This manual is for Org (version @value{VERSION}).
4009494e 37
dbc28aaa 38Copyright @copyright{} 2004, 2005, 2006, 2007, 2008 Free Software Foundation
4009494e
GM
39
40@quotation
41Permission is granted to copy, distribute and/or modify this document
6a2c4aec 42under the terms of the GNU Free Documentation License, Version 1.3 or
4009494e
GM
43any later version published by the Free Software Foundation; with no
44Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
47271179
GM
45and with the Back-Cover Texts as in (a) below. A copy of the license
46is included in the section entitled ``GNU Free Documentation License.''
4009494e 47
6f093307
GM
48(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
49modify this GNU manual. Buying copies from the FSF supports it in
50developing GNU and promoting software freedom.''
5b14aca9
GM
51
52This document is part of a collection distributed under the GNU Free
53Documentation License. If you want to distribute this document
54separately from the collection, you can do so by adding a copy of the
55license to the document, as described in section 6 of the license.
4009494e
GM
56@end quotation
57@end copying
58
59@titlepage
a7808fba 60@title The Org Manual
4009494e
GM
61
62@subtitle Release @value{VERSION}
63@author by Carsten Dominik
64
65@c The following two commands start the copyright page.
66@page
67@vskip 0pt plus 1filll
68@insertcopying
69@end titlepage
70
71@c Output the table of contents at the beginning.
72@contents
73
74@ifnottex
75@node Top, Introduction, (dir), (dir)
76@top Org Mode Manual
77
78@insertcopying
79@end ifnottex
80
81@menu
82* Introduction:: Getting started
a7808fba 83* Document Structure:: A tree works like your brain
4009494e
GM
84* Tables:: Pure magic for quick formatting
85* Hyperlinks:: Notes in context
a7808fba 86* TODO Items:: Every tree branch can be a TODO item
4009494e 87* Tags:: Tagging headlines and matching sets of tags
a7808fba
CD
88* Properties and Columns:: Storing information about an entry
89* Dates and Times:: Making items useful for planning
864c9740 90* Capture:: Creating tasks and attaching files
a7808fba 91* Agenda Views:: Collecting information into views
4009494e
GM
92* Embedded LaTeX:: LaTeX fragments and formulas
93* Exporting:: Sharing and publishing of notes
a7808fba 94* Publishing:: Create a web site of linked Org files
4009494e 95* Miscellaneous:: All the rest which did not fit elsewhere
44ce9197
CD
96* Extensions:: Add-ons for Org mode
97* Hacking:: How hack your way around
a7808fba
CD
98* History and Acknowledgments:: How Org came into being
99* Main Index:: An index of Org's concepts and features
4009494e
GM
100* Key Index:: Key bindings and where they are described
101
102@detailmenu
103 --- The Detailed Node Listing ---
104
105Introduction
106
a7808fba
CD
107* Summary:: Brief summary of what Org does
108* Installation:: How to install a downloaded version of Org
109* Activation:: How to activate Org for certain buffers
4009494e 110* Feedback:: Bug reports, ideas, patches etc.
dbc28aaa 111* Conventions:: Type-setting conventions in the manual
4009494e
GM
112
113Document Structure
114
a7808fba
CD
115* Outlines:: Org is based on Outline mode
116* Headlines:: How to typeset Org tree headlines
4009494e
GM
117* Visibility cycling:: Show and hide, much simplified
118* Motion:: Jumping to other headlines
119* Structure editing:: Changing sequence and level of headlines
120* Archiving:: Move done task trees to a different place
121* Sparse trees:: Matches embedded in context
122* Plain lists:: Additional structure within an entry
123* Drawers:: Tucking stuff away
a7808fba 124* Orgstruct mode:: Structure editing outside Org
4009494e
GM
125
126Archiving
127
128* ARCHIVE tag:: Marking a tree as inactive
129* Moving subtrees:: Moving a tree to an archive file
130
131Tables
132
133* Built-in table editor:: Simple tables
28a16a1b 134* Narrow columns:: Stop wasting space in tables
4009494e 135* Column groups:: Grouping to trigger vertical lines
a7808fba
CD
136* Orgtbl mode:: The table editor as minor mode
137* The spreadsheet:: The table editor has spreadsheet capabilities
864c9740 138* Org Plot:: Plotting from org tables
4009494e
GM
139
140The spreadsheet
141
142* References:: How to refer to another field or range
143* Formula syntax for Calc:: Using Calc to compute stuff
144* Formula syntax for Lisp:: Writing formulas in Emacs Lisp
145* Field formulas:: Formulas valid for a single field
146* Column formulas:: Formulas valid for an entire column
147* Editing and debugging formulas:: Fixing formulas
148* Updating the table:: Recomputing all dependent fields
149* Advanced features:: Field names, parameters and automatic recalc
150
151Hyperlinks
152
a7808fba 153* Link format:: How links in Org are formatted
4009494e
GM
154* Internal links:: Links to other places in the current file
155* External links:: URL-like links to the world
156* Handling links:: Creating, inserting and following
a7808fba 157* Using links outside Org:: Linking from my C source code?
4009494e
GM
158* Link abbreviations:: Shortcuts for writing complex links
159* Search options:: Linking to a specific location
160* Custom searches:: When the default search is not enough
4009494e
GM
161
162Internal links
163
a7808fba 164* Radio targets:: Make targets trigger links in plain text
4009494e 165
a7808fba 166TODO Items
4009494e
GM
167
168* TODO basics:: Marking and displaying TODO entries
169* TODO extensions:: Workflow and assignments
dbc28aaa 170* Progress logging:: Dates and notes for progress
4009494e
GM
171* Priorities:: Some things are more important than others
172* Breaking down tasks:: Splitting a task into manageable pieces
173* Checkboxes:: Tick-off lists
174
175Extended use of TODO keywords
176
177* Workflow states:: From TODO to DONE in steps
dbc28aaa 178* TODO types:: I do this, Fred does the rest
4009494e 179* Multiple sets in one file:: Mixing it all, and still finding your way
dbc28aaa
CD
180* Fast access to TODO states:: Single letter selection of a state
181* Per-file keywords:: Different files, different requirements
182* Faces for TODO keywords:: Highlighting states
183
a7808fba 184Progress logging
dbc28aaa
CD
185
186* Closing items:: When was this entry marked DONE?
187* Tracking TODO state changes:: When did the status change?
4009494e
GM
188
189Tags
190
191* Tag inheritance:: Tags use the tree structure of the outline
192* Setting tags:: How to assign tags to a headline
193* Tag searches:: Searching for combinations of tags
194
195Properties and Columns
196
197* Property syntax:: How properties are spelled out
a7808fba 198* Special properties:: Access to other Org mode features
4009494e 199* Property searches:: Matching property values
dbc28aaa 200* Property inheritance:: Passing values down the tree
4009494e
GM
201* Column view:: Tabular viewing and editing
202* Property API:: Properties for Lisp programmers
203
a7808fba 204Column view
4009494e
GM
205
206* Defining columns:: The COLUMNS format property
207* Using column view:: How to create and use column view
a7808fba 208* Capturing column view:: A dynamic block for column view
4009494e 209
a7808fba 210Defining columns
4009494e
GM
211
212* Scope of column definitions:: Where defined, where valid?
213* Column attributes:: Appearance and content of a column
214
dbc28aaa 215Dates and Times
4009494e 216
a7808fba 217* Timestamps:: Assigning a time to a tree entry
4009494e
GM
218* Creating timestamps:: Commands which insert timestamps
219* Deadlines and scheduling:: Planning your work
a7808fba
CD
220* Clocking work time:: Tracking how long you spend on a task
221* Effort estimates:: Planning work effort in advance
4009494e
GM
222
223Creating timestamps
224
a7808fba
CD
225* The date/time prompt:: How Org mode helps you entering date and time
226* Custom time format:: Making dates look different
4009494e 227
a7808fba 228Deadlines and scheduling
4009494e
GM
229
230* Inserting deadline/schedule:: Planning items
231* Repeated tasks:: Items that show up again and again
232
864c9740
CD
233Capture
234
235* Remember:: Capture new tasks/ideas with little interruption
236* Attachments:: Add files to tasks.
237
dbc28aaa 238Remember
4009494e 239
a7808fba 240* Setting up Remember:: Some code for .emacs to get things going
dbc28aaa
CD
241* Remember templates:: Define the outline of different note types
242* Storing notes:: Directly get the note to where it belongs
243* Refiling notes:: Moving a note or task to a project
4009494e
GM
244
245Agenda Views
246
247* Agenda files:: Files being searched for agenda information
248* Agenda dispatcher:: Keyboard access to agenda views
249* Built-in agenda views:: What is available out of the box?
250* Presentation and sorting:: How agenda items are prepared for display
a7808fba 251* Agenda commands:: Remote editing of Org trees
4009494e 252* Custom agenda views:: Defining special searches and views
a7808fba 253* Agenda column view:: Using column view for collected entries
4009494e
GM
254
255The built-in agenda views
256
a7808fba 257* Weekly/daily agenda:: The calendar page with current tasks
4009494e
GM
258* Global TODO list:: All unfinished action items
259* Matching tags and properties:: Structured information with fine-tuned search
260* Timeline:: Time-sorted view for single file
28a16a1b 261* Keyword search:: Finding entries by keyword
4009494e
GM
262* Stuck projects:: Find projects you need to review
263
264Presentation and sorting
265
266* Categories:: Not all tasks are equal
267* Time-of-day specifications:: How the agenda knows the time
268* Sorting of agenda items:: The order of things
269
270Custom agenda views
271
272* Storing searches:: Type once, use often
273* Block agenda:: All the stuff you need in a single buffer
274* Setting Options:: Changing the rules
a7808fba
CD
275* Exporting Agenda Views:: Writing agendas to files
276* Using the agenda elsewhere:: Using agenda information in other programs
4009494e
GM
277
278Embedded LaTeX
279
280* Math symbols:: TeX macros for symbols and Greek letters
a7808fba 281* Subscripts and superscripts:: Simple syntax for raising/lowering text
4009494e
GM
282* LaTeX fragments:: Complex formulas made easy
283* Processing LaTeX fragments:: Previewing LaTeX processing
284* CDLaTeX mode:: Speed up entering of formulas
285
286Exporting
287
b349f79f 288* Markup rules:: Which structures are recognized?
864c9740 289* Selective export:: Using tags to select and exclude trees
b349f79f
CD
290* Export options:: Per-file export settings
291* The export dispatcher:: How to access exporter commands
4009494e
GM
292* ASCII export:: Exporting to plain ASCII
293* HTML export:: Exporting to HTML
71d35b24 294* LaTeX and PDF export:: Exporting to LaTeX, and processing to PDF
4009494e
GM
295* XOXO export:: Exporting to XOXO
296* iCalendar export:: Exporting in iCalendar format
b349f79f
CD
297
298Markup rules
299
300* Document title:: How the document title is determined
301* Headings and sections:: The main structure of the exported document
302* Table of contents:: If, where, how to create a table of contents
303* Initial text:: Text before the first headline
304* Lists:: Plain lists are exported
305* Paragraphs:: What determines beginning and ending
306* Literal examples:: Source code and other examples
307* Include files:: Include the contents of a file during export
308* Tables exported:: Tables are exported richly
309* Footnotes:: Numbers like [1]
310* Emphasis and monospace:: To bold or not to bold
311* TeX macros and LaTeX fragments:: Create special, rich export.
312* Horizontal rules:: A line across the page
313* Comment lines:: Some lines will not be exported
4009494e
GM
314
315HTML export
316
b349f79f 317* HTML Export commands:: How to invoke HTML export
a7808fba 318* Quoting HTML tags:: Using direct HTML in Org mode
4009494e
GM
319* Links:: Transformation of links for HTML
320* Images:: How to include images
a7808fba
CD
321* CSS support:: Changing the appearance of the output
322* Javascript support:: Info and Folding in a web browser
4009494e 323
71d35b24 324LaTeX and PDF export
4009494e 325
71d35b24 326* LaTeX/PDF export commands::
4009494e 327* Quoting LaTeX code:: Incorporating literal LaTeX code
a7808fba 328* Sectioning structure:: Changing sectioning in LaTeX output
4009494e 329
4009494e
GM
330Publishing
331
332* Configuration:: Defining projects
333* Sample configuration:: Example projects
334* Triggering publication:: Publication commands
335
336Configuration
337
338* Project alist:: The central configuration variable
339* Sources and destinations:: From here to there
340* Selecting files:: What files are part of the project?
341* Publishing action:: Setting the function doing the publishing
342* Publishing options:: Tweaking HTML export
343* Publishing links:: Which links keep working after publishing?
344* Project page index:: Publishing a list of project files
345
346Sample configuration
347
348* Simple example:: One-component publishing
349* Complex example:: A multi-component publishing example
350
351Miscellaneous
352
353* Completion:: M-TAB knows what you need
a7808fba 354* Customization:: Adapting Org to your taste
4009494e
GM
355* In-buffer settings:: Overview of the #+KEYWORDS
356* The very busy C-c C-c key:: When in doubt, press C-c C-c
357* Clean view:: Getting rid of leading stars in the outline
a7808fba 358* TTY keys:: Using Org on a tty
4009494e
GM
359* Interaction:: Other Emacs packages
360* Bugs:: Things which do not work perfectly
361
362Interaction with other packages
363
a7808fba 364* Cooperation:: Packages Org cooperates with
4009494e
GM
365* Conflicts:: Packages that lead to conflicts
366
b349f79f
CD
367Extensions
368
369* Extensions in the contrib directory:: These come with the Org distro
370* Other extensions:: These you have to find on the web.
371
372Hacking
4009494e 373
4009494e
GM
374* Adding hyperlink types:: New custom link types
375* Tables in arbitrary syntax:: Orgtbl for LaTeX and other programs
376* Dynamic blocks:: Automatically filled blocks
377* Special agenda views:: Customized views
378* Using the property API:: Writing programs that use entry properties
b349f79f 379* Using the mapping API:: Mapping over all or selected entries
4009494e 380
a7808fba 381Tables and lists in arbitrary syntax
4009494e
GM
382
383* Radio tables:: Sending and receiving
384* A LaTeX example:: Step by step, almost a tutorial
385* Translator functions:: Copy and modify
a7808fba 386* Radio lists:: Doing the same for lists
4009494e
GM
387
388@end detailmenu
389@end menu
390
a7808fba 391@node Introduction, Document Structure, Top, Top
4009494e
GM
392@chapter Introduction
393@cindex introduction
394
395@menu
a7808fba
CD
396* Summary:: Brief summary of what Org does
397* Installation:: How to install a downloaded version of Org
398* Activation:: How to activate Org for certain buffers
4009494e 399* Feedback:: Bug reports, ideas, patches etc.
dbc28aaa 400* Conventions:: Type-setting conventions in the manual
4009494e
GM
401@end menu
402
403@node Summary, Installation, Introduction, Introduction
404@section Summary
405@cindex summary
406
a7808fba 407Org is a mode for keeping notes, maintaining TODO lists, and doing
4009494e
GM
408project planning with a fast and effective plain-text system.
409
a7808fba
CD
410Org develops organizational tasks around NOTES files that contain
411lists or information about projects as plain text. Org is
412implemented on top of Outline mode, which makes it possible to keep the
4009494e
GM
413content of large files well structured. Visibility cycling and
414structure editing help to work with the tree. Tables are easily created
a7808fba 415with a built-in table editor. Org supports TODO items, deadlines,
4009494e
GM
416time stamps, and scheduling. It dynamically compiles entries into an
417agenda that utilizes and smoothly integrates much of the Emacs calendar
418and diary. Plain text URL-like links connect to websites, emails,
419Usenet messages, BBDB entries, and any files related to the projects.
a7808fba 420For printing and sharing of notes, an Org file can be exported as a
dbc28aaa 421structured ASCII file, as HTML, or (TODO and agenda items only) as an
4009494e 422iCalendar file. It can also serve as a publishing tool for a set of
a7808fba 423linked web pages.
4009494e 424
a7808fba 425An important design aspect that distinguishes Org from for example
4009494e
GM
426Planner/Muse is that it encourages to store every piece of information
427only once. In Planner, you have project pages, day pages and possibly
a7808fba 428other files, duplicating some information such as tasks. In Org,
4009494e
GM
429you only have notes files. In your notes you mark entries as tasks,
430label them with tags and timestamps. All necessary lists like a
431schedule for the day, the agenda for a meeting, tasks lists selected by
432tags etc are created dynamically when you need them.
433
a7808fba 434Org keeps simple things simple. When first fired up, it should
4009494e
GM
435feel like a straightforward, easy to use outliner. Complexity is not
436imposed, but a large amount of functionality is available when you need
a7808fba 437it. Org is a toolbox and can be used in different ways, for
4009494e
GM
438example as:
439
440@example
441@r{@bullet{} outline extension with visibility cycling and structure editing}
442@r{@bullet{} ASCII system and table editor for taking structured notes}
443@r{@bullet{} ASCII table editor with spreadsheet-like capabilities}
444@r{@bullet{} TODO list editor}
445@r{@bullet{} full agenda and planner with deadlines and work scheduling}
446@r{@bullet{} environment to implement David Allen's GTD system}
447@r{@bullet{} a basic database application}
dbc28aaa 448@r{@bullet{} simple hypertext system, with HTML and LaTeX export}
4009494e
GM
449@r{@bullet{} publishing tool to create a set of interlinked webpages}
450@end example
451
a7808fba 452Org's automatic, context sensitive table editor with spreadsheet
4009494e 453capabilities can be integrated into any major mode by activating the
a7808fba 454minor Orgtbl mode. Using a translation step, it can be used to maintain
4009494e 455tables in arbitrary file types, for example in La@TeX{}. The structure
a7808fba
CD
456editing and list creation capabilities can be used outside Org with
457the minor Orgstruct mode.
4009494e
GM
458
459@cindex FAQ
a7808fba
CD
460There is a website for Org which provides links to the newest
461version of Org, as well as additional information, frequently asked
4009494e 462questions (FAQ), links to tutorials etc. This page is located at
dbc28aaa 463@uref{http://orgmode.org}.
4009494e
GM
464
465@page
466
467
468@node Installation, Activation, Summary, Introduction
469@section Installation
470@cindex installation
471@cindex XEmacs
472
a7808fba 473@b{Important:} @i{If Org is part of the Emacs distribution or an
4009494e
GM
474XEmacs package, please skip this section and go directly to
475@ref{Activation}.}
476
a7808fba
CD
477If you have downloaded Org from the Web, either as a distribution @file{.zip}
478or @file{.tar} file, or as a GIT archive, you must take the following steps
479to install it: Go into the unpacked Org distribution directory and edit the
480top section of the file @file{Makefile}. You must set the name of the Emacs
481binary (likely either @file{emacs} or @file{xemacs}), and the paths to the
482directories where local Lisp and Info files are kept. If you don't have
483access to the system-wide directories, you can simply run Org directly from
484the distribution directory by adding the @file{lisp} subdirectory to the
485Emacs load path. To do this, add the following line to @file{.emacs}:
4009494e
GM
486
487@example
a7808fba
CD
488(setq load-path (cons "~/path/to/orgdir/lisp" load-path))
489@end example
490
491@noindent
492If you plan to use code from the @file{contrib} subdirectory, do a similar
493step for this directory:
494
495@example
496(setq load-path (cons "~/path/to/orgdir/contrib/lisp" load-path))
4009494e
GM
497@end example
498
499@b{XEmacs users now need to install the file @file{noutline.el} from
a7808fba 500the @file{xemacs} sub-directory of the Org distribution. Use the
4009494e
GM
501command:}
502
503@example
504@b{make install-noutline}
505@end example
506
a7808fba 507@noindent Now byte-compile the Lisp files with the shell command:
4009494e
GM
508
509@example
510make
4009494e
GM
511@end example
512
a7808fba
CD
513@noindent If you are running Org from the distribution directory, this is
514all. If you want to install into the system directories, use
4009494e
GM
515
516@example
a7808fba 517make install
4009494e
GM
518make install-info
519@end example
520
521@noindent Then add to @file{.emacs}:
522
523@lisp
a7808fba 524;; This line only if Org is not part of the X/Emacs distribution.
4009494e
GM
525(require 'org-install)
526@end lisp
527
a7808fba 528
4009494e
GM
529@node Activation, Feedback, Installation, Introduction
530@section Activation
531@cindex activation
532@cindex autoload
a7808fba
CD
533@cindex global key bindings
534@cindex key bindings, global
4009494e
GM
535
536@iftex
537@b{Important:} @i{If you use copy-and-paste to copy lisp code from the
44ce9197 538PDF documentation as viewed by some PDF viewers to your .emacs file, the
4009494e
GM
539single quote character comes out incorrectly and the code will not work.
540You need to fix the single quotes by hand, or copy from Info
541documentation.}
542@end iftex
543
71d35b24 544Add the following lines to your @file{.emacs} file. The last three lines
a7808fba
CD
545define @emph{global} keys for the commands @command{org-store-link},
546@command{org-agenda}, and @command{org-iswitchb} - please choose suitable
547keys yourself.
4009494e
GM
548
549@lisp
550;; The following lines are always needed. Choose your own keys.
551(add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
552(global-set-key "\C-cl" 'org-store-link)
553(global-set-key "\C-ca" 'org-agenda)
a7808fba 554(global-set-key "\C-cb" 'org-iswitchb)
4009494e
GM
555@end lisp
556
a7808fba 557Furthermore, you must activate @code{font-lock-mode} in Org
4009494e
GM
558buffers, because significant functionality depends on font-locking being
559active. You can do this with either one of the following two lines
560(XEmacs user must use the second option):
561@lisp
562(global-font-lock-mode 1) ; for all buffers
a7808fba 563(add-hook 'org-mode-hook 'turn-on-font-lock) ; Org buffers only
4009494e
GM
564@end lisp
565
a7808fba 566@cindex Org mode, turning on
4009494e 567With this setup, all files with extension @samp{.org} will be put
a7808fba 568into Org mode. As an alternative, make the first line of a file look
4009494e
GM
569like this:
570
571@example
572MY PROJECTS -*- mode: org; -*-
573@end example
574
a7808fba 575@noindent which will select Org mode for this buffer no matter what
4009494e
GM
576the file's name is. See also the variable
577@code{org-insert-mode-line-in-empty-file}.
578
dbc28aaa 579@node Feedback, Conventions, Activation, Introduction
4009494e
GM
580@section Feedback
581@cindex feedback
582@cindex bug reports
583@cindex maintainer
584@cindex author
585
b349f79f
CD
586If you find problems with Org, or if you have questions, remarks, or ideas
587about it, please mail to the Org mailing list @code{emacs-orgmode@@gnu.org}.
588If you are not a member of the mailing list, your mail will be reviewed by a
589moderator and then passed through to the list.
4009494e
GM
590
591For bug reports, please provide as much information as possible,
592including the version information of Emacs (@kbd{C-h v emacs-version
a7808fba
CD
593@key{RET}}) and Org (@kbd{C-h v org-version @key{RET}}), as well as
594the Org related setup in @file{.emacs}. If an error occurs, a
4009494e
GM
595backtrace can be very useful (see below on how to create one). Often a
596small example file helps, along with clear information about:
597
598@enumerate
599@item What exactly did you do?
600@item What did you expect to happen?
601@item What happened instead?
602@end enumerate
603@noindent Thank you for helping to improve this mode.
604
605@subsubheading How to create a useful backtrace
606
607@cindex backtrace of an error
a7808fba 608If working with Org produces an error with a message you don't
4009494e
GM
609understand, you may have hit a bug. The best way to report this is by
610providing, in addition to what was mentioned above, a @emph{Backtrace}.
611This is information from the built-in debugger about where and how the
612error occurred. Here is how to produce a useful backtrace:
613
614@enumerate
615@item
616Start a fresh Emacs or XEmacs, and make sure that it will load the
617original Lisp code in @file{org.el} instead of the compiled version in
618@file{org.elc}. The backtrace contains much more information if it is
619produced with uncompiled code. To do this, either rename @file{org.elc}
620to something else before starting Emacs, or ask Emacs explicitly to load
621@file{org.el} by using the command line
622@example
623emacs -l /path/to/org.el
624@end example
625@item
626Go to the @code{Options} menu and select @code{Enter Debugger on Error}
627(XEmacs has this option in the @code{Troubleshooting} sub-menu).
628@item
629Do whatever you have to do to hit the error. Don't forget to
630document the steps you take.
631@item
632When you hit the error, a @file{*Backtrace*} buffer will appear on the
633screen. Save this buffer to a file (for example using @kbd{C-x C-w}) and
634attach it to your bug report.
635@end enumerate
636
dbc28aaa
CD
637@node Conventions, , Feedback, Introduction
638@section Typesetting conventions used in this manual
639
a7808fba 640Org uses three types of keywords: TODO keywords, tags, and property
dbc28aaa
CD
641names. In this manual we use the following conventions:
642
643@table @code
644@item TODO
645@itemx WAITING
646TODO keywords are written with all capitals, even if they are
647user-defined.
648@item boss
649@itemx ARCHIVE
650User-defined tags are written in lowercase; built-in tags with special
651meaning are written with all capitals.
652@item Release
653@itemx PRIORITY
654User-defined properties are capitalized; built-in properties with
655special meaning are written with all capitals.
656@end table
657
a7808fba 658@node Document Structure, Tables, Introduction, Top
4009494e
GM
659@chapter Document Structure
660@cindex document structure
661@cindex structure of document
662
a7808fba 663Org is based on outline mode and provides flexible commands to
4009494e
GM
664edit the structure of the document.
665
666@menu
a7808fba
CD
667* Outlines:: Org is based on Outline mode
668* Headlines:: How to typeset Org tree headlines
4009494e
GM
669* Visibility cycling:: Show and hide, much simplified
670* Motion:: Jumping to other headlines
671* Structure editing:: Changing sequence and level of headlines
672* Archiving:: Move done task trees to a different place
673* Sparse trees:: Matches embedded in context
674* Plain lists:: Additional structure within an entry
675* Drawers:: Tucking stuff away
a7808fba 676* Orgstruct mode:: Structure editing outside Org
4009494e
GM
677@end menu
678
a7808fba 679@node Outlines, Headlines, Document Structure, Document Structure
4009494e
GM
680@section Outlines
681@cindex outlines
a7808fba 682@cindex Outline mode
4009494e 683
a7808fba 684Org is implemented on top of Outline mode. Outlines allow a
4009494e
GM
685document to be organized in a hierarchical structure, which (at least
686for me) is the best representation of notes and thoughts. An overview
687of this structure is achieved by folding (hiding) large parts of the
688document to show only the general document structure and the parts
a7808fba 689currently being worked on. Org greatly simplifies the use of
4009494e
GM
690outlines by compressing the entire show/hide functionality into a single
691command @command{org-cycle}, which is bound to the @key{TAB} key.
692
a7808fba 693@node Headlines, Visibility cycling, Outlines, Document Structure
4009494e
GM
694@section Headlines
695@cindex headlines
696@cindex outline tree
697
698Headlines define the structure of an outline tree. The headlines in
a7808fba 699Org start with one or more stars, on the left margin@footnote{See
4009494e
GM
700the variable @code{org-special-ctrl-a/e} to configure special behavior
701of @kbd{C-a} and @kbd{C-e} in headlines.}. For example:
702
703@example
704* Top level headline
705** Second level
706*** 3rd level
707 some text
708*** 3rd level
709 more text
710
711* Another top level headline
712@end example
713
714@noindent Some people find the many stars too noisy and would prefer an
715outline that has whitespace followed by a single star as headline
716starters. @ref{Clean view} describes a setup to realize this.
717
718An empty line after the end of a subtree is considered part of it and
719will be hidden when the subtree is folded. However, if you leave at
720least two empty lines, one empty line will remain visible after folding
721the subtree, in order to structure the collapsed view. See the
722variable @code{org-cycle-separator-lines} to modify this behavior.
723
a7808fba 724@node Visibility cycling, Motion, Headlines, Document Structure
4009494e
GM
725@section Visibility cycling
726@cindex cycling, visibility
727@cindex visibility cycling
728@cindex trees, visibility
729@cindex show hidden text
730@cindex hide text
731
732Outlines make it possible to hide parts of the text in the buffer.
a7808fba 733Org uses just two commands, bound to @key{TAB} and
4009494e
GM
734@kbd{S-@key{TAB}} to change the visibility in the buffer.
735
736@cindex subtree visibility states
737@cindex subtree cycling
738@cindex folded, subtree visibility state
739@cindex children, subtree visibility state
740@cindex subtree, subtree visibility state
741@table @kbd
742@kindex @key{TAB}
743@item @key{TAB}
744@emph{Subtree cycling}: Rotate current subtree among the states
745
746@example
747,-> FOLDED -> CHILDREN -> SUBTREE --.
748'-----------------------------------'
749@end example
750
751The cursor must be on a headline for this to work@footnote{see, however,
752the option @code{org-cycle-emulate-tab}.}. When the cursor is at the
753beginning of the buffer and the first line is not a headline, then
754@key{TAB} actually runs global cycling (see below)@footnote{see the
755option @code{org-cycle-global-at-bob}.}. Also when called with a prefix
756argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
757
758@cindex global visibility states
759@cindex global cycling
760@cindex overview, global visibility state
761@cindex contents, global visibility state
762@cindex show all, global visibility state
763@kindex S-@key{TAB}
764@item S-@key{TAB}
765@itemx C-u @key{TAB}
766@emph{Global cycling}: Rotate the entire buffer among the states
767
768@example
769,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
770'--------------------------------------'
771@end example
772
a7808fba
CD
773When @kbd{S-@key{TAB}} is called with a numeric prefix argument N, the
774CONTENTS view up to headlines of level N will be shown. Note that inside
775tables, @kbd{S-@key{TAB}} jumps to the previous field.
4009494e
GM
776
777@cindex show all, command
864c9740
CD
778@kindex C-u C-u C-u @key{TAB}
779@item C-u C-u C-u @key{TAB}
780Show all, including drawers.
4009494e
GM
781@kindex C-c C-r
782@item C-c C-r
a7808fba
CD
783Reveal context around point, showing the current entry, the following heading
784and the hierarchy above. Useful for working near a location that has been
785exposed by a sparse tree command (@pxref{Sparse trees}) or an agenda command
786(@pxref{Agenda commands}). With a prefix argument show, on each
4009494e
GM
787level, all sibling headings.
788@kindex C-c C-x b
789@item C-c C-x b
790Show the current subtree in an indirect buffer@footnote{The indirect
791buffer
792@ifinfo
793(@pxref{Indirect Buffers,,,emacs,GNU Emacs Manual})
794@end ifinfo
795@ifnotinfo
796(see the Emacs manual for more information about indirect buffers)
797@end ifnotinfo
798will contain the entire buffer, but will be narrowed to the current
799tree. Editing the indirect buffer will also change the original buffer,
a7808fba
CD
800but without affecting visibility in that buffer.}. With a numeric
801prefix argument N, go up to level N and then take that tree. If N is
802negative then go up that many levels. With a @kbd{C-u} prefix, do not remove
4009494e
GM
803the previously used indirect buffer.
804@end table
805
a7808fba 806When Emacs first visits an Org file, the global state is set to
4009494e
GM
807OVERVIEW, i.e. only the top level headlines are visible. This can be
808configured through the variable @code{org-startup-folded}, or on a
809per-file basis by adding one of the following lines anywhere in the
810buffer:
811
812@example
813#+STARTUP: overview
814#+STARTUP: content
815#+STARTUP: showall
816@end example
817
b349f79f
CD
818@noindent
819Forthermore, any entries with a @samp{VISIBILITY} property (@pxref{Properties
820and Columns}) will get their visibility adapted accordingly. Allowed values
821for this property are @code{folded}, @code{children}, @code{content}, and
822@code{all}.
823@table @kbd
824@kindex C-u C-u @key{TAB}
825@item C-u C-u @key{TAB}
826Switch back to the startup visibility of the buffer, i.e. whatever is
827requested by startup options and @samp{VISIBILITY} properties in individual
828entries.
829@end table
830
a7808fba 831@node Motion, Structure editing, Visibility cycling, Document Structure
4009494e
GM
832@section Motion
833@cindex motion, between headlines
834@cindex jumping, to headlines
835@cindex headline navigation
836The following commands jump to other headlines in the buffer.
837
838@table @kbd
839@kindex C-c C-n
840@item C-c C-n
841Next heading.
842@kindex C-c C-p
843@item C-c C-p
844Previous heading.
845@kindex C-c C-f
846@item C-c C-f
847Next heading same level.
848@kindex C-c C-b
849@item C-c C-b
850Previous heading same level.
851@kindex C-c C-u
852@item C-c C-u
853Backward to higher level heading.
854@kindex C-c C-j
855@item C-c C-j
856Jump to a different place without changing the current outline
857visibility. Shows the document structure in a temporary buffer, where
858you can use the following keys to find your destination:
859@example
860@key{TAB} @r{Cycle visibility.}
861@key{down} / @key{up} @r{Next/previous visible headline.}
71d35b24
CD
862@key{RET} @r{Select this location.}
863@kbd{/} @r{Do a Sparse-tree search}
864@r{The following keys work if you turn off @code{org-goto-auto-isearch}}
4009494e
GM
865n / p @r{Next/previous visible headline.}
866f / b @r{Next/previous headline same level.}
867u @r{One level up.}
8680-9 @r{Digit argument.}
71d35b24 869q @r{Quit}
4009494e
GM
870@end example
871@end table
872
a7808fba 873@node Structure editing, Archiving, Motion, Document Structure
4009494e
GM
874@section Structure editing
875@cindex structure editing
876@cindex headline, promotion and demotion
877@cindex promotion, of subtrees
878@cindex demotion, of subtrees
879@cindex subtree, cut and paste
880@cindex pasting, of subtrees
881@cindex cutting, of subtrees
882@cindex copying, of subtrees
883@cindex subtrees, cut and paste
884
885@table @kbd
886@kindex M-@key{RET}
887@item M-@key{RET}
888Insert new heading with same level as current. If the cursor is in a
889plain list item, a new item is created (@pxref{Plain lists}). To force
a7808fba 890creation of a new headline, use a prefix argument, or first press @key{RET}
4009494e
GM
891to get to the beginning of the next line. When this command is used in
892the middle of a line, the line is split and the rest of the line becomes
28a16a1b
CD
893the new headline@footnote{If you do not want the line to be split,
894customize the variable @code{org-M-RET-may-split-line}.}. If the
895command is used at the beginning of a headline, the new headline is
896created before the current line. If at the beginning of any other line,
897the content of that line is made the new heading. If the command is
898used at the end of a folded subtree (i.e. behind the ellipses at the end
899of a headline), then a headline like the current one will be inserted
900after the end of the subtree.
dbc28aaa
CD
901@kindex C-@key{RET}
902@item C-@key{RET}
71d35b24
CD
903Just like @kbd{M-@key{RET}}, except when adding a new heading below the
904current heading, the new heading is placed after the body instead of before
905it. This command works from anywhere in the entry.
4009494e
GM
906@kindex M-S-@key{RET}
907@item M-S-@key{RET}
908Insert new TODO entry with same level as current heading.
864c9740
CD
909@kindex C-S-@key{RET}
910@item C-S-@key{RET}
911Insert new TODO entry with same level as current heading. Like
912@kbd{C-@key{RET}}, the new headline will be inserted after the current
913subtree.
4009494e
GM
914@kindex M-@key{left}
915@item M-@key{left}
916Promote current heading by one level.
917@kindex M-@key{right}
918@item M-@key{right}
919Demote current heading by one level.
920@kindex M-S-@key{left}
921@item M-S-@key{left}
922Promote the current subtree by one level.
923@kindex M-S-@key{right}
924@item M-S-@key{right}
925Demote the current subtree by one level.
926@kindex M-S-@key{up}
927@item M-S-@key{up}
928Move subtree up (swap with previous subtree of same
929level).
930@kindex M-S-@key{down}
931@item M-S-@key{down}
932Move subtree down (swap with next subtree of same level).
933@kindex C-c C-x C-w
4009494e 934@item C-c C-x C-w
4009494e 935Kill subtree, i.e. remove it from buffer but save in kill ring.
a7808fba 936With a numeric prefix argument N, kill N sequential subtrees.
4009494e
GM
937@kindex C-c C-x M-w
938@item C-c C-x M-w
a7808fba
CD
939Copy subtree to kill ring. With a numeric prefix argument N, copy the N
940sequential subtrees.
4009494e
GM
941@kindex C-c C-x C-y
942@item C-c C-x C-y
943Yank subtree from kill ring. This does modify the level of the subtree to
a7808fba
CD
944make sure the tree fits in nicely at the yank position. The yank level can
945also be specified with a numeric prefix argument, or by yanking after a
4009494e 946headline marker like @samp{****}.
e45e3595
CD
947@kindex C-y
948@item C-y
949Depending on the variables @code{org-yank-adjusted-subtrees} and
950@code{org-yank-folded-subtrees}, Org's internal @code{yank} command will
951paste subtrees folded and in a clever way, using the same command as @kbd{C-c
952C-x C-y}. With the default settings, level adjustment will take place and
953yanked trees will be folded unless doing so would swallow text previously
954visible. Any prefix argument to this command will force a normal @code{yank}
955to be executed, with the prefix passed along. A good way to force a normal
956yank is @kbd{C-u C-y}.
dbc28aaa
CD
957@kindex C-c C-w
958@item C-c C-w
e45e3595 959Refile entry or region to a different location. @xref{Refiling notes}.
4009494e
GM
960@kindex C-c ^
961@item C-c ^
a7808fba
CD
962Sort same-level entries. When there is an active region, all entries in the
963region will be sorted. Otherwise the children of the current headline are
964sorted. The command prompts for the sorting method, which can be
965alphabetically, numerically, by time (using the first time stamp in each
966entry), by priority, or by TODO keyword (in the sequence the keywords have
967been defined in the setup). Reverse sorting is possible as well. You can
968also supply your own function to extract the sorting key. With a @kbd{C-u}
969prefix, sorting will be case-sensitive. With two @kbd{C-u C-u} prefixes,
970duplicate entries will also be removed.
b349f79f
CD
971@kindex C-x n s
972@item C-x n s
973Narrow buffer to current subtree.
974@kindex C-x n w
975@item C-x n w
976Widen buffer to remove a narrowing.
28a16a1b
CD
977@kindex C-c *
978@item C-c *
979Turn a normal line or plain list item into a headline (so that it
980becomes a subheading at its location). Also turn a headline into a
981normal line by removing the stars. If there is an active region, turn
982all lines in the region into headlines. Or, if the first line is a
983headline, remove the stars from all headlines in the region.
4009494e
GM
984@end table
985
986@cindex region, active
987@cindex active region
a7808fba
CD
988@cindex Transient mark mode
989When there is an active region (Transient mark mode), promotion and
4009494e
GM
990demotion work on all headlines in the region. To select a region of
991headlines, it is best to place both point and mark at the beginning of a
992line, mark at the beginning of the first headline, and point at the line
993just after the last headline to change. Note that when the cursor is
994inside a table (@pxref{Tables}), the Meta-Cursor keys have different
995functionality.
996
a7808fba 997@node Archiving, Sparse trees, Structure editing, Document Structure
4009494e
GM
998@section Archiving
999@cindex archiving
1000
1001When a project represented by a (sub)tree is finished, you may want
1002to move the tree out of the way and to stop it from contributing to the
a7808fba 1003agenda. Org mode knows two ways of archiving. You can mark a tree with
4009494e
GM
1004the ARCHIVE tag, or you can move an entire (sub)tree to a different
1005location.
1006
1007@menu
1008* ARCHIVE tag:: Marking a tree as inactive
1009* Moving subtrees:: Moving a tree to an archive file
1010@end menu
1011
1012@node ARCHIVE tag, Moving subtrees, Archiving, Archiving
1013@subsection The ARCHIVE tag
1014@cindex internal archiving
1015
1016A headline that is marked with the ARCHIVE tag (@pxref{Tags}) stays at
1017its location in the outline tree, but behaves in the following way:
1018@itemize @minus
1019@item
1020It does not open when you attempt to do so with a visibility cycling
1021command (@pxref{Visibility cycling}). You can force cycling archived
1022subtrees with @kbd{C-@key{TAB}}, or by setting the option
1023@code{org-cycle-open-archived-trees}. Also normal outline commands like
1024@code{show-all} will open archived subtrees.
1025@item
1026During sparse tree construction (@pxref{Sparse trees}), matches in
1027archived subtrees are not exposed, unless you configure the option
1028@code{org-sparse-tree-open-archived-trees}.
1029@item
a7808fba 1030During agenda view construction (@pxref{Agenda Views}), the content of
4009494e 1031archived trees is ignored unless you configure the option
44ce9197
CD
1032@code{org-agenda-skip-archived-trees}, in which case these trees will always
1033be included. In the agenda you can press the @kbd{v} key to get archives
1034temporarily included.
4009494e
GM
1035@item
1036Archived trees are not exported (@pxref{Exporting}), only the headline
1037is. Configure the details using the variable
1038@code{org-export-with-archived-trees}.
1039@end itemize
1040
1041The following commands help managing the ARCHIVE tag:
1042
1043@table @kbd
a7808fba
CD
1044@kindex C-c C-x a
1045@item C-c C-x a
4009494e 1046Toggle the ARCHIVE tag for the current headline. When the tag is set,
a7808fba 1047the headline changes to a shadowed face, and the subtree below it is
4009494e 1048hidden.
a7808fba
CD
1049@kindex C-u C-c C-x a
1050@item C-u C-c C-x a
4009494e
GM
1051Check if any direct children of the current headline should be archived.
1052To do this, each subtree is checked for open TODO entries. If none are
1053found, the command offers to set the ARCHIVE tag for the child. If the
1054cursor is @emph{not} on a headline when this command is invoked, the
1055level 1 trees will be checked.
1056@kindex C-@kbd{TAB}
1057@item C-@kbd{TAB}
1058Cycle a tree even if it is tagged with ARCHIVE.
1059@end table
1060
1061@node Moving subtrees, , ARCHIVE tag, Archiving
1062@subsection Moving subtrees
1063@cindex external archiving
1064
a7808fba 1065Once an entire project is finished, you may want to move it to a different
44ce9197 1066location. Org can move it to an @emph{Archive Sibling} in the same tree, to a
a7808fba 1067different tree in the current file, or to a different file, the archive file.
4009494e
GM
1068
1069@table @kbd
a7808fba
CD
1070@kindex C-c C-x A
1071@item C-c C-x A
44ce9197
CD
1072Move the current entry to the @emph{Archive Sibling}. This is a sibling of
1073the entry with the heading @samp{Archive} and the tag @samp{ARCHIVE}
a7808fba
CD
1074(@pxref{ARCHIVE tag}). The entry becomes a child of that sibling and in this
1075way retains a lot of its original context, including inherited tags and
1076approximate position in the outline.
4009494e
GM
1077@kindex C-c C-x C-s
1078@item C-c C-x C-s
1079Archive the subtree starting at the cursor position to the location
1080given by @code{org-archive-location}. Context information that could be
a7808fba 1081lost like the file name, the category, inherited tags, and the TODO
4009494e
GM
1082state will be store as properties in the entry.
1083@kindex C-u C-c C-x C-s
1084@item C-u C-c C-x C-s
1085Check if any direct children of the current headline could be moved to
1086the archive. To do this, each subtree is checked for open TODO entries.
1087If none are found, the command offers to move it to the archive
1088location. If the cursor is @emph{not} on a headline when this command
1089is invoked, the level 1 trees will be checked.
1090@end table
1091
1092@cindex archive locations
1093The default archive location is a file in the same directory as the
1094current file, with the name derived by appending @file{_archive} to the
1095current file name. For information and examples on how to change this,
1096see the documentation string of the variable
1097@code{org-archive-location}. There is also an in-buffer option for
dbc28aaa
CD
1098setting this variable, for example@footnote{For backward compatibility,
1099the following also works: If there are several such lines in a file,
1100each specifies the archive location for the text below it. The first
1101such line also applies to any text before its definition. However,
1102using this method is @emph{strongly} deprecated as it is incompatible
1103with the outline structure of the document. The correct method for
1104setting multiple archive locations in a buffer is using a property.}:
4009494e
GM
1105
1106@example
1107#+ARCHIVE: %s_done::
1108@end example
1109
1110@noindent
dbc28aaa
CD
1111If you would like to have a special ARCHIVE location for a single entry
1112or a (sub)tree, give the entry an @code{:ARCHIVE:} property with the
a7808fba 1113location as the value (@pxref{Properties and Columns}).
4009494e 1114
28a16a1b
CD
1115When a subtree is moved, it receives a number of special properties that
1116record context information like the file from where the entry came, it's
1117outline path the archiving time etc. Configure the variable
1118@code{org-archive-save-context-info} to adjust the amount of information
1119added.
1120
a7808fba 1121@node Sparse trees, Plain lists, Archiving, Document Structure
4009494e
GM
1122@section Sparse trees
1123@cindex sparse trees
1124@cindex trees, sparse
1125@cindex folding, sparse trees
1126@cindex occur, command
1127
b349f79f
CD
1128An important feature of Org mode is the ability to construct @emph{sparse
1129trees} for selected information in an outline tree, so that the entire
1130document is folded as much as possible, but the selected information is made
1131visible along with the headline structure above it@footnote{See also the
1132variables @code{org-show-hierarchy-above}, @code{org-show-following-heading},
1133@code{org-show-siblings}, and @code{org-show-entry-below} for detailed
1134control on how much context is shown around each match.}. Just try it out
1135and you will see immediately how it works.
dbc28aaa 1136
a7808fba 1137Org mode contains several commands creating such trees, all these
dbc28aaa 1138commands can be accessed through a dispatcher:
4009494e
GM
1139
1140@table @kbd
1141@kindex C-c /
1142@item C-c /
dbc28aaa
CD
1143This prompts for an extra key to select a sparse-tree creating command.
1144@kindex C-c / r
1145@item C-c / r
b349f79f
CD
1146Occur. Prompts for a regexp and shows a sparse tree with all matches. If
1147the match is in a headline, the headline is made visible. If the match is in
1148the body of an entry, headline and body are made visible. In order to
1149provide minimal context, also the full hierarchy of headlines above the match
1150is shown, as well as the headline following the match. Each match is also
1151highlighted; the highlights disappear when the buffer is changed by an
1152editing command@footnote{depending on the option
1153@code{org-remove-highlights-with-change}}, or by pressing @kbd{C-c C-c}.
1154When called with a @kbd{C-u} prefix argument, previous highlights are kept,
1155so several calls to this command can be stacked.
4009494e 1156@end table
dbc28aaa 1157
4009494e
GM
1158@noindent
1159For frequently used sparse trees of specific search strings, you can
1160use the variable @code{org-agenda-custom-commands} to define fast
1161keyboard access to specific sparse trees. These commands will then be
1162accessible through the agenda dispatcher (@pxref{Agenda dispatcher}).
1163For example:
1164
1165@lisp
1166(setq org-agenda-custom-commands
1167 '(("f" occur-tree "FIXME")))
1168@end lisp
1169
1170@noindent will define the key @kbd{C-c a f} as a shortcut for creating
1171a sparse tree matching the string @samp{FIXME}.
1172
dbc28aaa
CD
1173The other sparse tree commands select headings based on TODO keywords,
1174tags, or properties and will be discussed later in this manual.
4009494e
GM
1175
1176@kindex C-c C-e v
1177@cindex printing sparse trees
1178@cindex visible text, printing
1179To print a sparse tree, you can use the Emacs command
1180@code{ps-print-buffer-with-faces} which does not print invisible parts
1181of the document @footnote{This does not work under XEmacs, because
1182XEmacs uses selective display for outlining, not text properties.}.
1183Or you can use the command @kbd{C-c C-e v} to export only the visible
1184part of the document and print the resulting file.
1185
a7808fba 1186@node Plain lists, Drawers, Sparse trees, Document Structure
4009494e
GM
1187@section Plain lists
1188@cindex plain lists
1189@cindex lists, plain
1190@cindex lists, ordered
1191@cindex ordered lists
1192
1193Within an entry of the outline tree, hand-formatted lists can provide
1194additional structure. They also provide a way to create lists of
a7808fba 1195checkboxes (@pxref{Checkboxes}). Org supports editing such lists,
dbc28aaa 1196and the HTML exporter (@pxref{Exporting}) parses and formats them.
4009494e 1197
b349f79f
CD
1198Org knows ordered lists, unordered lists, and description lists.
1199@itemize @bullet
1200@item
1201@emph{Unordered} list items start with @samp{-}, @samp{+}, or
1202@samp{*}@footnote{When using @samp{*} as a bullet, lines must be indented or
1203they will be seen as top-level headlines. Also, when you are hiding leading
1204stars to get a clean outline view, plain list items starting with a star are
1205visually indistinguishable from true headlines. In short: even though
1206@samp{*} is supported, it may be better to not use it for plain list items.}
1207as bullets.
1208@item
1209@emph{Ordered} list items start with a numeral followed by either a period or
1210a right parenthesis, such as @samp{1.} or @samp{1)}.
1211@item
1212@emph{Description} list items are like unordered list items, but contain the
1213separator @samp{ :: } to separate the description @emph{term} from the
1214desciption.
1215@end itemize
1216
1217Items belonging to the same list must have the same indentation on the first
1218line. In particular, if an ordered list reaches number @samp{10.}, then the
12192--digit numbers must be written left-aligned with the other numbers in the
1220list. Indentation also determines the end of a list item. It ends before
1221the next line that is indented like the bullet/number, or less. Empty lines
1222are part of the previous item, so you can have several paragraphs in one
1223item. If you would like an empty line to terminate all currently open plain
1224lists, configure the variable @code{org-empty-line-terminates-plain-lists}.
1225Here is an example:
4009494e
GM
1226
1227@example
1228@group
1229** Lord of the Rings
1230 My favorite scenes are (in this order)
1231 1. The attack of the Rohirrim
1232 2. Eowyns fight with the witch king
1233 + this was already my favorite scene in the book
1234 + I really like Miranda Otto.
1235 3. Peter Jackson being shot by Legolas
1236 - on DVD only
1237 He makes a really funny face when it happens.
1238 But in the end, not individual scenes matter but the film as a whole.
b349f79f
CD
1239 Important actors in this film are:
1240 - @b{Elijah Wood} :: He plays the Frodo
1241 - @b{Sean Austin} :: He plays the Sam, Frodos friend. I still remember
1242 him very well from his role as Mikey Walsh a in the Goonies.
4009494e
GM
1243@end group
1244@end example
1245
a7808fba
CD
1246Org supports these lists by tuning filling and wrapping commands to
1247deal with them correctly@footnote{Org only changes the filling
4009494e
GM
1248settings for Emacs. For XEmacs, you should use Kyle E. Jones'
1249@file{filladapt.el}. To turn this on, put into @file{.emacs}:
b349f79f
CD
1250@code{(require 'filladapt)}}, and by exporting them properly
1251(@pxref{Exporting}).
4009494e
GM
1252
1253The following commands act on items when the cursor is in the first line
1254of an item (the line with the bullet or number).
1255
1256@table @kbd
1257@kindex @key{TAB}
1258@item @key{TAB}
1259Items can be folded just like headline levels if you set the variable
1260@code{org-cycle-include-plain-lists}. The level of an item is then
1261given by the indentation of the bullet/number. Items are always
1262subordinate to real headlines, however; the hierarchies remain
1263completely separated.
1264
1265If @code{org-cycle-include-plain-lists} has not been set, @key{TAB}
a7808fba 1266fixes the indentation of the current line in a heuristic way.
4009494e
GM
1267@kindex M-@key{RET}
1268@item M-@key{RET}
a7808fba
CD
1269Insert new item at current level. With a prefix argument, force a new
1270heading (@pxref{Structure editing}). If this command is used in the middle
1271of a line, the line is @emph{split} and the rest of the line becomes the new
1272item@footnote{If you do not want the line to be split, customize the variable
1273@code{org-M-RET-may-split-line}.}. If this command is executed in the
1274@emph{whitespace before a bullet or number}, the new item is created
1275@emph{before} the current item. If the command is executed in the white
1276space before the text that is part of an item but does not contain the
1277bullet, a bullet is added to the current line.
4009494e
GM
1278@kindex M-S-@key{RET}
1279@item M-S-@key{RET}
1280Insert a new item with a checkbox (@pxref{Checkboxes}).
1281@kindex S-@key{up}
1282@kindex S-@key{down}
1283@item S-@key{up}
1284@itemx S-@key{down}
1285Jump to the previous/next item in the current list.
1286@kindex M-S-@key{up}
1287@kindex M-S-@key{down}
1288@item M-S-@key{up}
1289@itemx M-S-@key{down}
1290Move the item including subitems up/down (swap with previous/next item
1291of same indentation). If the list is ordered, renumbering is
1292automatic.
1293@kindex M-S-@key{left}
1294@kindex M-S-@key{right}
1295@item M-S-@key{left}
1296@itemx M-S-@key{right}
1297Decrease/increase the indentation of the item, including subitems.
1298Initially, the item tree is selected based on current indentation.
1299When these commands are executed several times in direct succession,
1300the initially selected region is used, even if the new indentation
1301would imply a different hierarchy. To use the new hierarchy, break
1302the command chain with a cursor motion or so.
1303@kindex C-c C-c
1304@item C-c C-c
1305If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the
dbc28aaa
CD
1306state of the checkbox. If not, this command makes sure that all the
1307items on this list level use the same bullet. Furthermore, if this is
a7808fba 1308an ordered list, make sure the numbering is OK.
4009494e
GM
1309@kindex C-c -
1310@item C-c -
a7808fba
CD
1311Cycle the entire list level through the different itemize/enumerate bullets
1312(@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}). With a numeric prefix
1313argument N, select the Nth bullet from this list. If there is an active
1314region when calling this, all lines will be converted to list items. If the
1315first line already was a list item, any item markers will be removed from the
1316list. Finally, even without an active region, a normal line will be
1317converted into a list item.
4009494e
GM
1318@end table
1319
a7808fba 1320@node Drawers, Orgstruct mode, Plain lists, Document Structure
4009494e
GM
1321@section Drawers
1322@cindex drawers
1323@cindex visibility cycling, drawers
1324
1325Sometimes you want to keep information associated with an entry, but you
a7808fba 1326normally don't want to see it. For this, Org mode has @emph{drawers}.
dbc28aaa
CD
1327Drawers need to be configured with the variable
1328@code{org-drawers}@footnote{You can define drawers on a per-file basis
1329with a line like @code{#+DRAWERS: HIDDEN PROPERTIES STATE}}. Drawers
4009494e
GM
1330look like this:
1331
1332@example
1333** This is a headline
1334 Still outside the drawer
1335 :DRAWERNAME:
1336 This is inside the drawer.
1337 :END:
1338 After the drawer.
1339@end example
1340
1341Visibility cycling (@pxref{Visibility cycling}) on the headline will
1342hide and show the entry, but keep the drawer collapsed to a single line.
1343In order to look inside the drawer, you need to move the cursor to the
a7808fba 1344drawer line and press @key{TAB} there. Org mode uses a drawer for
b349f79f
CD
1345storing properties (@pxref{Properties and Columns}), and another one for
1346storing clock times (@pxref{Clocking work time}).
4009494e 1347
a7808fba 1348@node Orgstruct mode, , Drawers, Document Structure
4009494e 1349@section The Orgstruct minor mode
a7808fba 1350@cindex Orgstruct mode
4009494e
GM
1351@cindex minor mode for structure editing
1352
a7808fba 1353If you like the intuitive way the Org mode structure editing and list
4009494e 1354formatting works, you might want to use these commands in other modes
a7808fba 1355like Text mode or Mail mode as well. The minor mode Orgstruct mode
4009494e 1356makes this possible. You can always toggle the mode with @kbd{M-x
a7808fba 1357orgstruct-mode}. To turn it on by default, for example in Mail mode,
4009494e
GM
1358use
1359
1360@lisp
1361(add-hook 'mail-mode-hook 'turn-on-orgstruct)
1362@end lisp
1363
1364When this mode is active and the cursor is on a line that looks to
a7808fba 1365Org like a headline of the first line of a list item, most
4009494e
GM
1366structure editing commands will work, even if the same keys normally
1367have different functionality in the major mode you are using. If the
a7808fba 1368cursor is not in one of those special lines, Orgstruct mode lurks
4009494e
GM
1369silently in the shadow.
1370
a7808fba 1371@node Tables, Hyperlinks, Document Structure, Top
4009494e
GM
1372@chapter Tables
1373@cindex tables
1374@cindex editing tables
1375
a7808fba 1376Org comes with a fast and intuitive table editor. Spreadsheet-like
dbc28aaa 1377calculations are supported in connection with the Emacs @file{calc}
28a16a1b 1378package
dbc28aaa 1379@ifinfo
a7808fba 1380(@pxref{Top,Calc,,Calc,Gnu Emacs Calculator Manual}).
dbc28aaa
CD
1381@end ifinfo
1382@ifnotinfo
1383(see the Emacs Calculator manual for more information about the Emacs
1384calculator).
1385@end ifnotinfo
4009494e
GM
1386
1387@menu
1388* Built-in table editor:: Simple tables
28a16a1b 1389* Narrow columns:: Stop wasting space in tables
4009494e 1390* Column groups:: Grouping to trigger vertical lines
a7808fba
CD
1391* Orgtbl mode:: The table editor as minor mode
1392* The spreadsheet:: The table editor has spreadsheet capabilities
864c9740 1393* Org Plot:: Plotting from org tables
4009494e
GM
1394@end menu
1395
1396@node Built-in table editor, Narrow columns, Tables, Tables
1397@section The built-in table editor
1398@cindex table editor, built-in
1399
a7808fba 1400Org makes it easy to format tables in plain ASCII. Any line with
4009494e
GM
1401@samp{|} as the first non-whitespace character is considered part of a
1402table. @samp{|} is also the column separator. A table might look like
1403this:
1404
1405@example
1406| Name | Phone | Age |
1407|-------+-------+-----|
1408| Peter | 1234 | 17 |
1409| Anna | 4321 | 25 |
1410@end example
1411
1412A table is re-aligned automatically each time you press @key{TAB} or
1413@key{RET} or @kbd{C-c C-c} inside the table. @key{TAB} also moves to
1414the next field (@key{RET} to the next row) and creates new table rows
1415at the end of the table or before horizontal lines. The indentation
1416of the table is set by the first line. Any line starting with
1417@samp{|-} is considered as a horizontal separator line and will be
1418expanded on the next re-align to span the whole table width. So, to
1419create the above table, you would only type
1420
1421@example
1422|Name|Phone|Age|
1423|-
1424@end example
1425
1426@noindent and then press @key{TAB} to align the table and start filling in
1427fields.
1428
a7808fba 1429When typing text into a field, Org treats @key{DEL},
4009494e
GM
1430@key{Backspace}, and all character keys in a special way, so that
1431inserting and deleting avoids shifting other fields. Also, when
1432typing @emph{immediately after the cursor was moved into a new field
1433with @kbd{@key{TAB}}, @kbd{S-@key{TAB}} or @kbd{@key{RET}}}, the
1434field is automatically made blank. If this behavior is too
1435unpredictable for you, configure the variables
1436@code{org-enable-table-editor} and @code{org-table-auto-blank-field}.
1437
1438@table @kbd
1439@tsubheading{Creation and conversion}
1440@kindex C-c |
1441@item C-c |
1442Convert the active region to table. If every line contains at least one
1443TAB character, the function assumes that the material is tab separated.
dbc28aaa 1444If every line contains a comma, comma-separated values (CSV) are assumed.
4009494e 1445If not, lines are split at whitespace into fields. You can use a prefix
dbc28aaa
CD
1446argument to force a specific separator: @kbd{C-u} forces CSV, @kbd{C-u
1447C-u} forces TAB, and a numeric argument N indicates that at least N
a7808fba 1448consecutive spaces, or alternatively a TAB will be the separator.
28a16a1b 1449@*
a7808fba 1450If there is no active region, this command creates an empty Org
4009494e
GM
1451table. But it's easier just to start typing, like
1452@kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
1453
1454@tsubheading{Re-aligning and field motion}
1455@kindex C-c C-c
1456@item C-c C-c
1457Re-align the table without moving the cursor.
1458@c
1459@kindex @key{TAB}
1460@item @key{TAB}
1461Re-align the table, move to the next field. Creates a new row if
1462necessary.
1463@c
1464@kindex S-@key{TAB}
1465@item S-@key{TAB}
1466Re-align, move to previous field.
1467@c
1468@kindex @key{RET}
1469@item @key{RET}
1470Re-align the table and move down to next row. Creates a new row if
1471necessary. At the beginning or end of a line, @key{RET} still does
1472NEWLINE, so it can be used to split a table.
1473
1474@tsubheading{Column and row editing}
1475@kindex M-@key{left}
1476@kindex M-@key{right}
1477@item M-@key{left}
1478@itemx M-@key{right}
1479Move the current column left/right.
1480@c
1481@kindex M-S-@key{left}
1482@item M-S-@key{left}
1483Kill the current column.
1484@c
1485@kindex M-S-@key{right}
1486@item M-S-@key{right}
1487Insert a new column to the left of the cursor position.
1488@c
1489@kindex M-@key{up}
1490@kindex M-@key{down}
1491@item M-@key{up}
1492@itemx M-@key{down}
1493Move the current row up/down.
1494@c
1495@kindex M-S-@key{up}
1496@item M-S-@key{up}
1497Kill the current row or horizontal line.
1498@c
1499@kindex M-S-@key{down}
1500@item M-S-@key{down}
a7808fba
CD
1501Insert a new row above the current row. With a prefix argument, the line is
1502created below the current one.
4009494e
GM
1503@c
1504@kindex C-c -
1505@item C-c -
a7808fba 1506Insert a horizontal line below current row. With a prefix argument, the line
4009494e
GM
1507is created above the current line.
1508@c
1509@kindex C-c ^
1510@item C-c ^
1511Sort the table lines in the region. The position of point indicates the
1512column to be used for sorting, and the range of lines is the range
1513between the nearest horizontal separator lines, or the entire table. If
1514point is before the first column, you will be prompted for the sorting
1515column. If there is an active region, the mark specifies the first line
1516and the sorting column, while point should be in the last line to be
1517included into the sorting. The command prompts for the sorting type
1518(alphabetically, numerically, or by time). When called with a prefix
1519argument, alphabetic sorting will be case-sensitive.
1520
1521@tsubheading{Regions}
1522@kindex C-c C-x M-w
1523@item C-c C-x M-w
1524Copy a rectangular region from a table to a special clipboard. Point
1525and mark determine edge fields of the rectangle. The process ignores
1526horizontal separator lines.
1527@c
1528@kindex C-c C-x C-w
1529@item C-c C-x C-w
1530Copy a rectangular region from a table to a special clipboard, and
1531blank all fields in the rectangle. So this is the ``cut'' operation.
1532@c
1533@kindex C-c C-x C-y
1534@item C-c C-x C-y
1535Paste a rectangular region into a table.
864c9740 1536The upper left corner ends up in the current field. All involved fields
4009494e
GM
1537will be overwritten. If the rectangle does not fit into the present table,
1538the table is enlarged as needed. The process ignores horizontal separator
1539lines.
1540@c
1541@kindex C-c C-q
28a16a1b 1542@kindex M-@key{RET}
4009494e 1543@item C-c C-q
28a16a1b 1544@itemx M-@kbd{RET}
4009494e
GM
1545Wrap several fields in a column like a paragraph. If there is an active
1546region, and both point and mark are in the same column, the text in the
a7808fba
CD
1547column is wrapped to minimum width for the given number of lines. A numeric
1548prefix argument may be used to change the number of desired lines. If there
1549is no region, the current field is split at the cursor position and the text
1550fragment to the right of the cursor is prepended to the field one line
1551down. If there is no region, but you specify a prefix argument, the current
1552field is made blank, and the content is appended to the field above.
4009494e
GM
1553
1554@tsubheading{Calculations}
1555@cindex formula, in tables
1556@cindex calculations, in tables
1557@cindex region, active
1558@cindex active region
a7808fba 1559@cindex Transient mark mode
4009494e
GM
1560@kindex C-c +
1561@item C-c +
1562Sum the numbers in the current column, or in the rectangle defined by
1563the active region. The result is shown in the echo area and can
1564be inserted with @kbd{C-y}.
1565@c
1566@kindex S-@key{RET}
1567@item S-@key{RET}
864c9740
CD
1568When current field is empty, copy from first non-empty field above. When not
1569empty, copy current field down to next row and move cursor along with it.
1570Depending on the variable @code{org-table-copy-increment}, integer field
1571values will be incremented during copy. Integers that are too large will not
1572be incremented. Also, a @code{0} prefix argument temporarily dispables the
1573increment. This key is also used by CUA mode (@pxref{Cooperation}).
4009494e
GM
1574
1575@tsubheading{Miscellaneous}
1576@kindex C-c `
1577@item C-c `
1578Edit the current field in a separate window. This is useful for fields
1579that are not fully visible (@pxref{Narrow columns}). When called with a
1580@kbd{C-u} prefix, just make the full field visible, so that it can be
1581edited in place.
1582@c
4009494e
GM
1583@item M-x org-table-import
1584Import a file as a table. The table should be TAB- or whitespace
dbc28aaa
CD
1585separated. Useful, for example, to import a spreadsheet table or data
1586from a database, because these programs generally can write
1587TAB-separated text files. This command works by inserting the file into
1588the buffer and then converting the region to a table. Any prefix
1589argument is passed on to the converter, which uses it to determine the
1590separator.
4009494e 1591@item C-c |
a7808fba 1592Tables can also be imported by pasting tabular text into the Org
4009494e 1593buffer, selecting the pasted text with @kbd{C-x C-x} and then using the
44ce9197 1594@kbd{C-c |} command (see above under @i{Creation and conversion}).
4009494e
GM
1595@c
1596@item M-x org-table-export
a7808fba
CD
1597Export the table, by default as a TAB-separated file. Useful for data
1598exchange with, for example, spreadsheet or database programs. The format
1599used to export the file can be configured in the variable
1600@code{org-table-export-default-format}. You may also use properties
1601@code{TABLE_EXPORT_FILE} and @code{TABLE_EXPORT_FORMAT} to specify the file
b349f79f
CD
1602name and the format for table export in a subtree. Org supports quite
1603general formats for exported tables. The exporter format is the same as the
1604format used by Orgtbl radio tables, see @ref{Translator functions} for a
1605detailed description.
4009494e
GM
1606@end table
1607
1608If you don't like the automatic table editor because it gets in your
1609way on lines which you would like to start with @samp{|}, you can turn
1610it off with
1611
1612@lisp
1613(setq org-enable-table-editor nil)
1614@end lisp
1615
1616@noindent Then the only table command that still works is
1617@kbd{C-c C-c} to do a manual re-align.
1618
1619@node Narrow columns, Column groups, Built-in table editor, Tables
1620@section Narrow columns
1621@cindex narrow columns in tables
1622
1623The width of columns is automatically determined by the table editor.
1624Sometimes a single field or a few fields need to carry more text,
1625leading to inconveniently wide columns. To limit@footnote{This feature
1626does not work on XEmacs.} the width of a column, one field anywhere in
1627the column may contain just the string @samp{<N>} where @samp{N} is an
1628integer specifying the width of the column in characters. The next
1629re-align will then set the width of this column to no more than this
1630value.
1631
1632@example
1633@group
1634|---+------------------------------| |---+--------|
1635| | | | | <6> |
1636| 1 | one | | 1 | one |
1637| 2 | two | ----\ | 2 | two |
1638| 3 | This is a long chunk of text | ----/ | 3 | This=> |
1639| 4 | four | | 4 | four |
1640|---+------------------------------| |---+--------|
1641@end group
1642@end example
1643
1644@noindent
1645Fields that are wider become clipped and end in the string @samp{=>}.
1646Note that the full text is still in the buffer, it is only invisible.
1647To see the full text, hold the mouse over the field - a tool-tip window
1648will show the full content. To edit such a field, use the command
1649@kbd{C-c `} (that is @kbd{C-c} followed by the backquote). This will
1650open a new window with the full field. Edit it and finish with @kbd{C-c
1651C-c}.
1652
1653When visiting a file containing a table with narrowed columns, the
1654necessary character hiding has not yet happened, and the table needs to
1655be aligned before it looks nice. Setting the option
1656@code{org-startup-align-all-tables} will realign all tables in a file
1657upon visiting, but also slow down startup. You can also set this option
1658on a per-file basis with:
1659
1660@example
1661#+STARTUP: align
1662#+STARTUP: noalign
1663@end example
1664
a7808fba 1665@node Column groups, Orgtbl mode, Narrow columns, Tables
4009494e
GM
1666@section Column groups
1667@cindex grouping columns in tables
1668
a7808fba 1669When Org exports tables, it does so by default without vertical
4009494e
GM
1670lines because that is visually more satisfying in general. Occasionally
1671however, vertical lines can be useful to structure a table into groups
1672of columns, much like horizontal lines can do for groups of rows. In
1673order to specify column groups, you can use a special row where the
1674first field contains only @samp{/}. The further fields can either
1675contain @samp{<} to indicate that this column should start a group,
1676@samp{>} to indicate the end of a column, or @samp{<>} to make a column
a7808fba 1677a group of its own. Boundaries between column groups will upon export be
4009494e
GM
1678marked with vertical lines. Here is an example:
1679
1680@example
1681| | N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
1682|---+----+-----+-----+-----+---------+------------|
1683| / | <> | < | | > | < | > |
1684| # | 1 | 1 | 1 | 1 | 1 | 1 |
1685| # | 2 | 4 | 8 | 16 | 1.4142 | 1.1892 |
1686| # | 3 | 9 | 27 | 81 | 1.7321 | 1.3161 |
1687|---+----+-----+-----+-----+---------+------------|
44ce9197 1688#+TBLFM: $3=$2^2::$4=$2^3::$5=$2^4::$6=sqrt($2)::$7=sqrt(sqrt(($2)))
4009494e
GM
1689@end example
1690
a7808fba 1691It is also sufficient to just insert the column group starters after
4009494e
GM
1692every vertical line you'd like to have:
1693
1694@example
1695| N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
1696|----+-----+-----+-----+---------+------------|
1697| / | < | | | < | |
1698@end example
1699
a7808fba 1700@node Orgtbl mode, The spreadsheet, Column groups, Tables
4009494e 1701@section The Orgtbl minor mode
a7808fba 1702@cindex Orgtbl mode
4009494e
GM
1703@cindex minor mode for tables
1704
a7808fba
CD
1705If you like the intuitive way the Org table editor works, you
1706might also want to use it in other modes like Text mode or Mail mode.
1707The minor mode Orgtbl mode makes this possible. You can always toggle
4009494e
GM
1708the mode with @kbd{M-x orgtbl-mode}. To turn it on by default, for
1709example in mail mode, use
1710
1711@lisp
1712(add-hook 'mail-mode-hook 'turn-on-orgtbl)
1713@end lisp
1714
1715Furthermore, with some special setup, it is possible to maintain tables
a7808fba 1716in arbitrary syntax with Orgtbl mode. For example, it is possible to
4009494e 1717construct La@TeX{} tables with the underlying ease and power of
a7808fba 1718Orgtbl mode, including spreadsheet capabilities. For details, see
4009494e
GM
1719@ref{Tables in arbitrary syntax}.
1720
864c9740 1721@node The spreadsheet, Org Plot, Orgtbl mode, Tables
4009494e
GM
1722@section The spreadsheet
1723@cindex calculations, in tables
1724@cindex spreadsheet capabilities
1725@cindex @file{calc} package
1726
1727The table editor makes use of the Emacs @file{calc} package to implement
1728spreadsheet-like capabilities. It can also evaluate Emacs Lisp forms to
a7808fba 1729derive fields from other fields. While fully featured, Org's
4009494e 1730implementation is not identical to other spreadsheets. For example,
a7808fba 1731Org knows the concept of a @emph{column formula} that will be
4009494e
GM
1732applied to all non-header fields in a column without having to copy the
1733formula to each relevant field.
1734
1735@menu
1736* References:: How to refer to another field or range
1737* Formula syntax for Calc:: Using Calc to compute stuff
1738* Formula syntax for Lisp:: Writing formulas in Emacs Lisp
1739* Field formulas:: Formulas valid for a single field
1740* Column formulas:: Formulas valid for an entire column
1741* Editing and debugging formulas:: Fixing formulas
1742* Updating the table:: Recomputing all dependent fields
1743* Advanced features:: Field names, parameters and automatic recalc
1744@end menu
1745
1746@node References, Formula syntax for Calc, The spreadsheet, The spreadsheet
1747@subsection References
1748@cindex references
1749
1750To compute fields in the table from other fields, formulas must
a7808fba 1751reference other fields or ranges. In Org, fields can be referenced
4009494e
GM
1752by name, by absolute coordinates, and by relative coordinates. To find
1753out what the coordinates of a field are, press @kbd{C-c ?} in that
1754field, or press @kbd{C-c @}} to toggle the display of a grid.
1755
1756@subsubheading Field references
1757@cindex field references
1758@cindex references, to fields
1759
1760Formulas can reference the value of another field in two ways. Like in
1761any other spreadsheet, you may reference fields with a letter/number
1762combination like @code{B3}, meaning the 2nd field in the 3rd row.
1763@c Such references are always fixed to that field, they don't change
1764@c when you copy and paste a formula to a different field. So
a7808fba 1765@c Org's @code{B3} behaves like @code{$B$3} in other spreadsheets.
4009494e
GM
1766
1767@noindent
a7808fba 1768Org also uses another, more general operator that looks like this:
4009494e
GM
1769@example
1770@@row$column
1771@end example
1772
1773@noindent
1774Column references can be absolute like @samp{1}, @samp{2},...@samp{N},
1775or relative to the current column like @samp{+1} or @samp{-2}.
1776
1777The row specification only counts data lines and ignores horizontal
1778separator lines (hlines). You can use absolute row numbers
1779@samp{1}...@samp{N}, and row numbers relative to the current row like
1780@samp{+3} or @samp{-1}. Or specify the row relative to one of the
dbc28aaa
CD
1781hlines: @samp{I} refers to the first hline@footnote{Note that only
1782hlines are counted that @emph{separate} table lines. If the table
1783starts with a hline above the header, it does not count.}, @samp{II} to
1784the second etc. @samp{-I} refers to the first such line above the
1785current line, @samp{+I} to the first such line below the current line.
1786You can also write @samp{III+2} which is the second data line after the
1787third hline in the table. Relative row numbers like @samp{-3} will not
1788cross hlines if the current line is too close to the hline. Instead,
1789the value directly at the hline is used.
4009494e
GM
1790
1791@samp{0} refers to the current row and column. Also, if you omit
1792either the column or the row part of the reference, the current
28a16a1b 1793row/column is implied.
4009494e 1794
a7808fba 1795Org's references with @emph{unsigned} numbers are fixed references
4009494e
GM
1796in the sense that if you use the same reference in the formula for two
1797different fields, the same field will be referenced each time.
a7808fba 1798Org's references with @emph{signed} numbers are floating
4009494e
GM
1799references because the same reference operator can reference different
1800fields depending on the field being calculated by the formula.
1801
1802Here are a few examples:
1803
1804@example
1805@@2$3 @r{2nd row, 3rd column}
1806C2 @r{same as previous}
1807$5 @r{column 5 in the current row}
1808E& @r{same as previous}
1809@@2 @r{current column, row 2}
1810@@-1$-3 @r{the field one row up, three columns to the left}
1811@@-I$2 @r{field just under hline above current row, column 2}
1812@end example
1813
1814@subsubheading Range references
1815@cindex range references
1816@cindex references, to ranges
1817
1818You may reference a rectangular range of fields by specifying two field
1819references connected by two dots @samp{..}. If both fields are in the
1820current row, you may simply use @samp{$2..$7}, but if at least one field
1821is in a different row, you need to use the general @code{@@row$column}
1822format at least for the first field (i.e the reference must start with
1823@samp{@@} in order to be interpreted correctly). Examples:
1824
1825@example
1826$1..$3 @r{First three fields in the current row.}
1827$P..$Q @r{Range, using column names (see under Advanced)}
1828@@2$1..@@4$3 @r{6 fields between these two fields.}
1829A2..C4 @r{Same as above.}
1830@@-1$-2..@@-1 @r{3 numbers from the column to the left, 2 up to current row}
1831@end example
1832
1833@noindent Range references return a vector of values that can be fed
1834into Calc vector functions. Empty fields in ranges are normally
1835suppressed, so that the vector contains only the non-empty fields (but
1836see the @samp{E} mode switch below). If there are no non-empty fields,
1837@samp{[0]} is returned to avoid syntax errors in formulas.
1838
1839@subsubheading Named references
1840@cindex named references
1841@cindex references, named
1842@cindex name, of column or field
1843@cindex constants, in calculations
1844
1845@samp{$name} is interpreted as the name of a column, parameter or
1846constant. Constants are defined globally through the variable
1847@code{org-table-formula-constants}, and locally (for the file) through a
1848line like
1849
1850@example
1851#+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6
1852@end example
1853
1854@noindent
a7808fba 1855Also properties (@pxref{Properties and Columns}) can be used as
dbc28aaa
CD
1856constants in table formulas: For a property @samp{:Xyz:} use the name
1857@samp{$PROP_Xyz}, and the property will be searched in the current
4009494e
GM
1858outline entry and in the hierarchy above it. If you have the
1859@file{constants.el} package, it will also be used to resolve constants,
1860including natural constants like @samp{$h} for Planck's constant, and
1861units like @samp{$km} for kilometers@footnote{@file{Constant.el} can
1862supply the values of constants in two different unit systems, @code{SI}
1863and @code{cgs}. Which one is used depends on the value of the variable
1864@code{constants-unit-system}. You can use the @code{#+STARTUP} options
1865@code{constSI} and @code{constcgs} to set this value for the current
1866buffer.}. Column names and parameters can be specified in special table
1867lines. These are described below, see @ref{Advanced features}. All
1868names must start with a letter, and further consist of letters and
1869numbers.
1870
1871@node Formula syntax for Calc, Formula syntax for Lisp, References, The spreadsheet
1872@subsection Formula syntax for Calc
1873@cindex formula syntax, Calc
1874@cindex syntax, of formulas
1875
1876A formula can be any algebraic expression understood by the Emacs
1877@file{Calc} package. @b{Note that @file{calc} has the
1878non-standard convention that @samp{/} has lower precedence than
1879@samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.} Before
1880evaluation by @code{calc-eval} (@pxref{Calling Calc from
a7808fba 1881Your Programs,calc-eval,Calling Calc from Your Lisp Programs,Calc,GNU
4009494e 1882Emacs Calc Manual}),
a7808fba 1883@c FIXME: The link to the Calc manual in HTML does not work.
4009494e
GM
1884variable substitution takes place according to the rules described above.
1885@cindex vectors, in table calculations
a7808fba 1886The range vectors can be directly fed into the Calc vector functions
4009494e
GM
1887like @samp{vmean} and @samp{vsum}.
1888
1889@cindex format specifier
1890@cindex mode, for @file{calc}
1891A formula can contain an optional mode string after a semicolon. This
1892string consists of flags to influence Calc and other modes during
a7808fba 1893execution. By default, Org uses the standard Calc modes (precision
44ce9197 189412, angular units degrees, fraction and symbolic modes off). The display
4009494e
GM
1895format, however, has been changed to @code{(float 5)} to keep tables
1896compact. The default settings can be configured using the variable
1897@code{org-calc-default-modes}.
1898
1899@example
1900p20 @r{switch the internal precision to 20 digits}
1901n3 s3 e2 f4 @r{normal, scientific, engineering, or fixed display format}
1902D R @r{angle modes: degrees, radians}
1903F S @r{fraction and symbolic modes}
1904N @r{interpret all fields as numbers, use 0 for non-numbers}
1905T @r{force text interpretation}
1906E @r{keep empty fields in ranges}
1907@end example
1908
1909@noindent
1910In addition, you may provide a @code{printf} format specifier to
1911reformat the final result. A few examples:
1912
1913@example
1914$1+$2 @r{Sum of first and second field}
1915$1+$2;%.2f @r{Same, format result to two decimals}
1916exp($2)+exp($1) @r{Math functions can be used}
1917$0;%.1f @r{Reformat current cell to 1 decimal}
1918($3-32)*5/9 @r{Degrees F -> C conversion}
1919$c/$1/$cm @r{Hz -> cm conversion, using @file{constants.el}}
1920tan($1);Dp3s1 @r{Compute in degrees, precision 3, display SCI 1}
1921sin($1);Dp3%.1e @r{Same, but use printf specifier for display}
1922vmean($2..$7) @r{Compute column range mean, using vector function}
1923vmean($2..$7);EN @r{Same, but treat empty fields as 0}
1924taylor($3,x=7,2) @r{taylor series of $3, at x=7, second degree}
1925@end example
1926
1927Calc also contains a complete set of logical operations. For example
1928
1929@example
1930if($1<20,teen,string("")) @r{``teen'' if age $1 less than 20, else empty}
1931@end example
1932
1933@node Formula syntax for Lisp, Field formulas, Formula syntax for Calc, The spreadsheet
1934@subsection Emacs Lisp forms as formulas
1935@cindex Lisp forms, as table formulas
1936
1937It is also possible to write a formula in Emacs Lisp; this can be useful
1938for string manipulation and control structures, if the Calc's
1939functionality is not enough. If a formula starts with a single quote
1940followed by an opening parenthesis, then it is evaluated as a lisp form.
1941The evaluation should return either a string or a number. Just as with
1942@file{calc} formulas, you can specify modes and a printf format after a
a7808fba 1943semicolon. With Emacs Lisp forms, you need to be conscious about the way
4009494e
GM
1944field references are interpolated into the form. By default, a
1945reference will be interpolated as a Lisp string (in double quotes)
1946containing the field. If you provide the @samp{N} mode switch, all
1947referenced elements will be numbers (non-number fields will be zero) and
1948interpolated as Lisp numbers, without quotes. If you provide the
1949@samp{L} flag, all fields will be interpolated literally, without quotes.
1950I.e., if you want a reference to be interpreted as a string by the Lisp
a7808fba 1951form, enclose the reference operator itself in double quotes, like
4009494e
GM
1952@code{"$3"}. Ranges are inserted as space-separated fields, so you can
1953embed them in list or vector syntax. A few examples, note how the
1954@samp{N} mode is used when we do computations in lisp.
1955
1956@example
1957@r{Swap the first two characters of the content of column 1}
1958 '(concat (substring $1 1 2) (substring $1 0 1) (substring $1 2))
1959@r{Add columns 1 and 2, equivalent to the Calc's @code{$1+$2}}
1960 '(+ $1 $2);N
1961@r{Compute the sum of columns 1-4, like Calc's @code{vsum($1..$4)}}
1962 '(apply '+ '($1..$4));N
1963@end example
1964
1965@node Field formulas, Column formulas, Formula syntax for Lisp, The spreadsheet
1966@subsection Field formulas
1967@cindex field formula
1968@cindex formula, for individual table field
1969
1970To assign a formula to a particular field, type it directly into the
1971field, preceded by @samp{:=}, for example @samp{:=$1+$2}. When you
1972press @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in
1973the field, the formula will be stored as the formula for this field,
1974evaluated, and the current field replaced with the result.
1975
1976Formulas are stored in a special line starting with @samp{#+TBLFM:}
1977directly below the table. If you typed the equation in the 4th field of
1978the 3rd data line in the table, the formula will look like
1979@samp{@@3$4=$1+$2}. When inserting/deleting/swapping column and rows
1980with the appropriate commands, @i{absolute references} (but not relative
1981ones) in stored formulas are modified in order to still reference the
1982same field. Of cause this is not true if you edit the table structure
1983with normal editing commands - then you must fix the equations yourself.
1984
1985Instead of typing an equation into the field, you may also use the
1986following command
1987
1988@table @kbd
1989@kindex C-u C-c =
1990@item C-u C-c =
1991Install a new formula for the current field. The command prompts for a
1992formula, with default taken from the @samp{#+TBLFM:} line, applies
1993it to the current field and stores it.
1994@end table
1995
1996@node Column formulas, Editing and debugging formulas, Field formulas, The spreadsheet
1997@subsection Column formulas
1998@cindex column formula
1999@cindex formula, for table column
2000
2001Often in a table, the same formula should be used for all fields in a
2002particular column. Instead of having to copy the formula to all fields
a7808fba 2003in that column, Org allows to assign a single formula to an entire
4009494e
GM
2004column. If the table contains horizontal separator hlines, everything
2005before the first such line is considered part of the table @emph{header}
2006and will not be modified by column formulas.
2007
2008To assign a formula to a column, type it directly into any field in the
2009column, preceded by an equal sign, like @samp{=$1+$2}. When you press
2010@key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the
2011field, the formula will be stored as the formula for the current column,
2012evaluated and the current field replaced with the result. If the field
2013contains only @samp{=}, the previously stored formula for this column is
a7808fba 2014used. For each column, Org will only remember the most recently
4009494e
GM
2015used formula. In the @samp{TBLFM:} line, column formulas will look like
2016@samp{$4=$1+$2}.
2017
2018Instead of typing an equation into the field, you may also use the
2019following command:
2020
2021@table @kbd
2022@kindex C-c =
2023@item C-c =
a7808fba
CD
2024Install a new formula for the current column and replace current field with
2025the result of the formula. The command prompts for a formula, with default
2026taken from the @samp{#+TBLFM} line, applies it to the current field and
2027stores it. With a numeric prefix argument(e.g. @kbd{C-5 C-c =}) the command
4009494e
GM
2028will apply it to that many consecutive fields in the current column.
2029@end table
2030
4009494e 2031@node Editing and debugging formulas, Updating the table, Column formulas, The spreadsheet
a7808fba 2032@subsection Editing and debugging formulas
4009494e
GM
2033@cindex formula editing
2034@cindex editing, of table formulas
2035
2036You can edit individual formulas in the minibuffer or directly in the
a7808fba
CD
2037field. Org can also prepare a special buffer with all active
2038formulas of a table. When offering a formula for editing, Org
4009494e
GM
2039converts references to the standard format (like @code{B3} or @code{D&})
2040if possible. If you prefer to only work with the internal format (like
2041@code{@@3$2} or @code{$4}), configure the variable
2042@code{org-table-use-standard-references}.
2043
2044@table @kbd
2045@kindex C-c =
2046@kindex C-u C-c =
2047@item C-c =
2048@itemx C-u C-c =
2049Edit the formula associated with the current column/field in the
2050minibuffer. See @ref{Column formulas} and @ref{Field formulas}.
2051@kindex C-u C-u C-c =
2052@item C-u C-u C-c =
2053Re-insert the active formula (either a
2054field formula, or a column formula) into the current field, so that you
2055can edit it directly in the field. The advantage over editing in the
2056minibuffer is that you can use the command @kbd{C-c ?}.
2057@kindex C-c ?
2058@item C-c ?
2059While editing a formula in a table field, highlight the field(s)
2060referenced by the reference at the cursor position in the formula.
2061@kindex C-c @}
2062@item C-c @}
2063Toggle the display of row and column numbers for a table, using
2064overlays. These are updated each time the table is aligned, you can
2065force it with @kbd{C-c C-c}.
2066@kindex C-c @{
2067@item C-c @{
2068Toggle the formula debugger on and off. See below.
2069@kindex C-c '
2070@item C-c '
2071Edit all formulas for the current table in a special buffer, where the
2072formulas will be displayed one per line. If the current field has an
2073active formula, the cursor in the formula editor will mark it.
a7808fba 2074While inside the special buffer, Org will automatically highlight
4009494e
GM
2075any field or range reference at the cursor position. You may edit,
2076remove and add formulas, and use the following commands:
2077@table @kbd
2078@kindex C-c C-c
2079@kindex C-x C-s
2080@item C-c C-c
2081@itemx C-x C-s
2082Exit the formula editor and store the modified formulas. With @kbd{C-u}
2083prefix, also apply the new formulas to the entire table.
2084@kindex C-c C-q
2085@item C-c C-q
2086Exit the formula editor without installing changes.
2087@kindex C-c C-r
2088@item C-c C-r
2089Toggle all references in the formula editor between standard (like
2090@code{B3}) and internal (like @code{@@3$2}).
2091@kindex @key{TAB}
2092@item @key{TAB}
2093Pretty-print or indent lisp formula at point. When in a line containing
2094a lisp formula, format the formula according to Emacs Lisp rules.
2095Another @key{TAB} collapses the formula back again. In the open
a7808fba 2096formula, @key{TAB} re-indents just like in Emacs lisp mode.
4009494e
GM
2097@kindex M-@key{TAB}
2098@item M-@key{TAB}
a7808fba 2099Complete Lisp symbols, just like in Emacs lisp mode.
4009494e
GM
2100@kindex S-@key{up}
2101@kindex S-@key{down}
2102@kindex S-@key{left}
2103@kindex S-@key{right}
2104@item S-@key{up}/@key{down}/@key{left}/@key{right}
2105Shift the reference at point. For example, if the reference is
2106@code{B3} and you press @kbd{S-@key{right}}, it will become @code{C3}.
2107This also works for relative references, and for hline references.
2108@kindex M-S-@key{up}
2109@kindex M-S-@key{down}
2110@item M-S-@key{up}/@key{down}
a7808fba 2111Move the test line for column formulas in the Org buffer up and
4009494e
GM
2112down.
2113@kindex M-@key{up}
2114@kindex M-@key{down}
2115@item M-@key{up}/@key{down}
2116Scroll the window displaying the table.
2117@kindex C-c @}
2118@item C-c @}
2119Turn the coordinate grid in the table on and off.
2120@end table
2121@end table
2122
2123Making a table field blank does not remove the formula associated with
2124the field, because that is stored in a different line (the @samp{TBLFM}
2125line) - during the next recalculation the field will be filled again.
2126To remove a formula from a field, you have to give an empty reply when
2127prompted for the formula, or to edit the @samp{#+TBLFM} line.
2128
2129@kindex C-c C-c
2130You may edit the @samp{#+TBLFM} directly and re-apply the changed
2131equations with @kbd{C-c C-c} in that line, or with the normal
2132recalculation commands in the table.
2133
2134@subsubheading Debugging formulas
2135@cindex formula debugging
2136@cindex debugging, of table formulas
2137When the evaluation of a formula leads to an error, the field content
2138becomes the string @samp{#ERROR}. If you would like see what is going
2139on during variable substitution and calculation in order to find a bug,
2140turn on formula debugging in the @code{Tbl} menu and repeat the
2141calculation, for example by pressing @kbd{C-u C-u C-c = @key{RET}} in a
2142field. Detailed information will be displayed.
2143
2144@node Updating the table, Advanced features, Editing and debugging formulas, The spreadsheet
a7808fba 2145@subsection Updating the table
4009494e
GM
2146@cindex recomputing table fields
2147@cindex updating, table
2148
2149Recalculation of a table is normally not automatic, but needs to be
2150triggered by a command. See @ref{Advanced features} for a way to make
2151recalculation at least semi-automatically.
2152
2153In order to recalculate a line of a table or the entire table, use the
2154following commands:
2155
2156@table @kbd
2157@kindex C-c *
2158@item C-c *
2159Recalculate the current row by first applying the stored column formulas
2160from left to right, and all field formulas in the current row.
2161@c
2162@kindex C-u C-c *
2163@item C-u C-c *
2164@kindex C-u C-c C-c
2165@itemx C-u C-c C-c
2166Recompute the entire table, line by line. Any lines before the first
2167hline are left alone, assuming that these are part of the table header.
2168@c
2169@kindex C-u C-u C-c *
2170@kindex C-u C-u C-c C-c
2171@item C-u C-u C-c *
2172@itemx C-u C-u C-c C-c
2173Iterate the table by recomputing it until no further changes occur.
2174This may be necessary if some computed fields use the value of other
2175fields that are computed @i{later} in the calculation sequence.
2176@end table
2177
2178@node Advanced features, , Updating the table, The spreadsheet
2179@subsection Advanced features
2180
2181If you want the recalculation of fields to happen automatically, or if
2182you want to be able to assign @i{names} to fields and columns, you need
2183to reserve the first column of the table for special marking characters.
2184@table @kbd
2185@kindex C-#
2186@item C-#
2187Rotate the calculation mark in first column through the states @samp{},
864c9740
CD
2188@samp{#}, @samp{*}, @samp{!}, @samp{$}. When there is an active region,
2189change all marks in the region.
4009494e
GM
2190@end table
2191
2192Here is an example of a table that collects exam results of students and
2193makes use of these features:
2194
2195@example
2196@group
2197|---+---------+--------+--------+--------+-------+------|
2198| | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
2199|---+---------+--------+--------+--------+-------+------|
2200| ! | | P1 | P2 | P3 | Tot | |
2201| # | Maximum | 10 | 15 | 25 | 50 | 10.0 |
2202| ^ | | m1 | m2 | m3 | mt | |
2203|---+---------+--------+--------+--------+-------+------|
2204| # | Peter | 10 | 8 | 23 | 41 | 8.2 |
4009494e
GM
2205| # | Sam | 2 | 4 | 3 | 9 | 1.8 |
2206|---+---------+--------+--------+--------+-------+------|
2207| | Average | | | | 29.7 | |
2208| ^ | | | | | at | |
2209| $ | max=50 | | | | | |
2210|---+---------+--------+--------+--------+-------+------|
2211#+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@@-II..@@-I);%.1f
2212@end group
2213@end example
2214
2215@noindent @b{Important}: Please note that for these special tables,
2216recalculating the table with @kbd{C-u C-c *} will only affect rows that
2217are marked @samp{#} or @samp{*}, and fields that have a formula assigned
2218to the field itself. The column formulas are not applied in rows with
2219empty first field.
2220
2221@cindex marking characters, tables
2222The marking characters have the following meaning:
2223@table @samp
2224@item !
2225The fields in this line define names for the columns, so that you may
2226refer to a column as @samp{$Tot} instead of @samp{$6}.
2227@item ^
2228This row defines names for the fields @emph{above} the row. With such
2229a definition, any formula in the table may use @samp{$m1} to refer to
2230the value @samp{10}. Also, if you assign a formula to a names field, it
2231will be stored as @samp{$name=...}.
2232@item _
2233Similar to @samp{^}, but defines names for the fields in the row
2234@emph{below}.
2235@item $
2236Fields in this row can define @emph{parameters} for formulas. For
2237example, if a field in a @samp{$} row contains @samp{max=50}, then
2238formulas in this table can refer to the value 50 using @samp{$max}.
2239Parameters work exactly like constants, only that they can be defined on
2240a per-table basis.
2241@item #
2242Fields in this row are automatically recalculated when pressing
2243@key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row. Also, this row
2244is selected for a global recalculation with @kbd{C-u C-c *}. Unmarked
2245lines will be left alone by this command.
2246@item *
2247Selects this line for global recalculation with @kbd{C-u C-c *}, but
2248not for automatic recalculation. Use this when automatic
2249recalculation slows down editing too much.
2250@item
2251Unmarked lines are exempt from recalculation with @kbd{C-u C-c *}.
2252All lines that should be recalculated should be marked with @samp{#}
2253or @samp{*}.
2254@item /
2255Do not export this line. Useful for lines that contain the narrowing
2256@samp{<N>} markers.
2257@end table
2258
2259Finally, just to whet your appetite on what can be done with the
2260fantastic @file{calc} package, here is a table that computes the Taylor
28a16a1b
CD
2261series of degree @code{n} at location @code{x} for a couple of
2262functions.
4009494e
GM
2263
2264@example
2265@group
2266|---+-------------+---+-----+--------------------------------------|
2267| | Func | n | x | Result |
2268|---+-------------+---+-----+--------------------------------------|
2269| # | exp(x) | 1 | x | 1 + x |
2270| # | exp(x) | 2 | x | 1 + x + x^2 / 2 |
2271| # | exp(x) | 3 | x | 1 + x + x^2 / 2 + x^3 / 6 |
2272| # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
2273| # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2 |
2274| * | tan(x) | 3 | x | 0.0175 x + 1.77e-6 x^3 |
2275|---+-------------+---+-----+--------------------------------------|
2276#+TBLFM: $5=taylor($2,$4,$3);n3
2277@end group
2278@end example
2279
864c9740
CD
2280@page
2281@node Org Plot, , The spreadsheet, Tables
2282@section Org Plot
2283@cindex graph, in tables
2284@cindex plot tables using gnuplot
2285
2286Org Plot can produce 2D and 3D graphs of information stored in org tables
71d35b24
CD
2287using @file{Gnuplot} @uref{http://www.gnuplot.info/} and @file{gnuplot-mode}
2288@uref{http://cars9.uchicago.edu/~ravel/software/gnuplot-mode.html}. To see
2289this in action ensure that you have both Gnuplot and Gnuplot-mode installed
2290on your system, then call @code{org-plot/gnuplot} on the following table.
864c9740
CD
2291
2292@example
2293@group
2294#+PLOT: title:"Citas" ind:1 deps:(3) type:2d with:histograms set:"yrange [0:]"
2295| Sede | Max cites | H-index |
2296|-----------+-----------+---------|
2297| Chile | 257.72 | 21.39 |
2298| Leeds | 165.77 | 19.68 |
2299| Sao Paolo | 71.00 | 11.50 |
2300| Stockholm | 134.19 | 14.33 |
2301| Morelia | 257.56 | 17.67 |
2302@end group
2303@end example
2304
2305Notice that Org Plot is smart enough to apply the tables headers as labels.
2306Further control over the labels, type, content, and appearance of plots can
2307be exercised through the @code{#+Plot:} lines preceding a table. See below
2308for a complete list of Org plot options. For more information and examples
71d35b24
CD
2309see the org-plot tutorial at
2310@uref{http://legito.org/worg/org-tutorials/org-plot.php}.
864c9740
CD
2311
2312@subsubheading Plot Options
2313
2314@table @code
2315@item set
2316Specify any @file{gnuplot} option to be set when graphing.
2317
2318@item title
2319Specify the title of the plot.
2320
2321@item ind
2322Specify which column of the table to use as the @code{x} axis.
2323
2324@item deps
71d35b24
CD
2325Specify the columns to graph as a lisp style list, surrounded by parenthesis
2326and separated by spaces for example @code{dep:(3 4)} to graph the third and
2327fourth columns (defaults to graphing all other columns aside from the ind
2328column).
864c9740
CD
2329
2330@item type
2331Specify whether the plot will be @code{2d}, @code{3d}, or @code{grid}.
2332
2333@item with
2334Specify a @code{with} option to be inserted for every col being plotted
2335(e.g. @code{lines}, @code{points}, @code{boxes}, @code{impulses}, etc...).
2336Defaults to 'lines'.
2337
2338@item file
2339If you want to plot to a file specify the @code{"path/to/desired/output-file"}.
2340
2341@item labels
2342List of labels to be used for the deps (defaults to column headers if they
2343exist).
2344
2345@item line
2346Specify an entire line to be inserted in the gnuplot script.
2347
2348@item map
2349When plotting @code{3d} or @code{grid} types, set this to @code{t} to graph a
2350flat mapping rather than a @code{3d} slope.
2351
e45e3595
CD
2352@item timefmt
2353Specify format of org-mode timestamps as they will be parsed by gnuplot.
2354Defaults to '%Y-%m-%d-%H:%M:%S'.
2355
864c9740
CD
2356@item script
2357If you want total control you can specify a script file (place the file name
2358between double quotes) which will be used to plot. Before plotting, every
2359instance of @code{$datafile} in the specified script will be replaced with
2360the path to the generated data file. Note even if you set this option you
2361may still want to specify the plot type, as that can impact the content of
2362the data file.
2363@end table
2364
a7808fba 2365@node Hyperlinks, TODO Items, Tables, Top
4009494e
GM
2366@chapter Hyperlinks
2367@cindex hyperlinks
2368
a7808fba 2369Like HTML, Org provides links inside a file, external links to
dbc28aaa 2370other files, Usenet articles, emails, and much more.
4009494e
GM
2371
2372@menu
a7808fba 2373* Link format:: How links in Org are formatted
4009494e
GM
2374* Internal links:: Links to other places in the current file
2375* External links:: URL-like links to the world
2376* Handling links:: Creating, inserting and following
a7808fba 2377* Using links outside Org:: Linking from my C source code?
4009494e
GM
2378* Link abbreviations:: Shortcuts for writing complex links
2379* Search options:: Linking to a specific location
2380* Custom searches:: When the default search is not enough
4009494e
GM
2381@end menu
2382
2383@node Link format, Internal links, Hyperlinks, Hyperlinks
2384@section Link format
2385@cindex link format
2386@cindex format, of links
2387
a7808fba 2388Org will recognize plain URL-like links and activate them as
4009494e
GM
2389clickable links. The general link format, however, looks like this:
2390
2391@example
28a16a1b 2392[[link][description]] @r{or alternatively} [[link]]
4009494e
GM
2393@end example
2394
a7808fba 2395Once a link in the buffer is complete (all brackets present), Org
4009494e
GM
2396will change the display so that @samp{description} is displayed instead
2397of @samp{[[link][description]]} and @samp{link} is displayed instead of
2398@samp{[[link]]}. Links will be highlighted in the face @code{org-link},
2399which by default is an underlined face. You can directly edit the
2400visible part of a link. Note that this can be either the @samp{link}
2401part (if there is no description) or the @samp{description} part. To
2402edit also the invisible @samp{link} part, use @kbd{C-c C-l} with the
2403cursor on the link.
2404
2405If you place the cursor at the beginning or just behind the end of the
2406displayed text and press @key{BACKSPACE}, you will remove the
2407(invisible) bracket at that location. This makes the link incomplete
2408and the internals are again displayed as plain text. Inserting the
2409missing bracket hides the link internals again. To show the
2410internal structure of all links, use the menu entry
2411@code{Org->Hyperlinks->Literal links}.
2412
2413@node Internal links, External links, Link format, Hyperlinks
2414@section Internal links
2415@cindex internal links
2416@cindex links, internal
2417@cindex targets, for links
2418
2419If the link does not look like a URL, it is considered to be internal in
2420the current file. Links such as @samp{[[My Target]]} or @samp{[[My
2421Target][Find my target]]} lead to a text search in the current file.
2422The link can be followed with @kbd{C-c C-o} when the cursor is on the
2423link, or with a mouse click (@pxref{Handling links}). The preferred
2424match for such a link is a dedicated target: the same string in double
2425angular brackets. Targets may be located anywhere; sometimes it is
2426convenient to put them into a comment line. For example
2427
2428@example
2429# <<My Target>>
2430@end example
2431
2432@noindent In HTML export (@pxref{HTML export}), such targets will become
2433named anchors for direct access through @samp{http} links@footnote{Note
2434that text before the first headline is usually not exported, so the
2435first such target should be after the first headline.}.
2436
a7808fba 2437If no dedicated target exists, Org will search for the words in the
4009494e
GM
2438link. In the above example the search would be for @samp{my target}.
2439Links starting with a star like @samp{*My Target} restrict the search to
a7808fba 2440headlines. When searching, Org mode will first try an exact match, but
4009494e
GM
2441then move on to more and more lenient searches. For example, the link
2442@samp{[[*My Targets]]} will find any of the following:
2443
2444@example
2445** My targets
2446** TODO my targets are bright
2447** my 20 targets are
2448@end example
2449
2450To insert a link targeting a headline, in-buffer completion can be used.
2451Just type a star followed by a few optional letters into the buffer and
2452press @kbd{M-@key{TAB}}. All headlines in the current buffer will be
2453offered as completions. @xref{Handling links}, for more commands
2454creating links.
2455
a7808fba 2456Following a link pushes a mark onto Org's own mark ring. You can
4009494e
GM
2457return to the previous position with @kbd{C-c &}. Using this command
2458several times in direct succession goes back to positions recorded
2459earlier.
2460
2461@menu
a7808fba 2462* Radio targets:: Make targets trigger links in plain text
4009494e
GM
2463@end menu
2464
2465@node Radio targets, , Internal links, Internal links
2466@subsection Radio targets
2467@cindex radio targets
2468@cindex targets, radio
2469@cindex links, radio targets
2470
a7808fba 2471Org can automatically turn any occurrences of certain target names
4009494e
GM
2472in normal text into a link. So without explicitly creating a link, the
2473text connects to the target radioing its position. Radio targets are
2474enclosed by triple angular brackets. For example, a target @samp{<<<My
2475Target>>>} causes each occurrence of @samp{my target} in normal text to
a7808fba 2476become activated as a link. The Org file is scanned automatically
4009494e
GM
2477for radio targets only when the file is first loaded into Emacs. To
2478update the target list during editing, press @kbd{C-c C-c} with the
2479cursor on or at a target.
2480
2481@node External links, Handling links, Internal links, Hyperlinks
2482@section External links
2483@cindex links, external
2484@cindex external links
2485@cindex links, external
a7808fba 2486@cindex Gnus links
4009494e 2487@cindex BBDB links
28a16a1b 2488@cindex IRC links
4009494e
GM
2489@cindex URL links
2490@cindex file links
2491@cindex VM links
2492@cindex RMAIL links
2493@cindex WANDERLUST links
2494@cindex MH-E links
2495@cindex USENET links
2496@cindex SHELL links
2497@cindex Info links
2498@cindex elisp links
2499
a7808fba 2500Org supports links to files, websites, Usenet and email messages,
28a16a1b
CD
2501BBDB database entries and links to both IRC conversations and their
2502logs. External links are URL-like locators. They start with a short
2503identifying string followed by a colon. There can be no space after
2504the colon. The following list shows examples for each link type.
4009494e
GM
2505
2506@example
a7808fba 2507http://www.astro.uva.nl/~dominik @r{on the web}
4009494e 2508file:/home/dominik/images/jupiter.jpg @r{file, absolute path}
44ce9197 2509/home/dominik/images/jupiter.jpg @r{same as above}
4009494e 2510file:papers/last.pdf @r{file, relative path}
44ce9197 2511./papers/last.pdf @r{same as above}
4009494e 2512news:comp.emacs @r{Usenet link}
44ce9197 2513mailto:adent@@galaxy.net @r{Mail link}
4009494e
GM
2514vm:folder @r{VM folder link}
2515vm:folder#id @r{VM message link}
44ce9197 2516vm://myself@@some.where.org/folder#id @r{VM on remote machine}
4009494e
GM
2517wl:folder @r{WANDERLUST folder link}
2518wl:folder#id @r{WANDERLUST message link}
2519mhe:folder @r{MH-E folder link}
2520mhe:folder#id @r{MH-E message link}
2521rmail:folder @r{RMAIL folder link}
2522rmail:folder#id @r{RMAIL message link}
a7808fba
CD
2523gnus:group @r{Gnus group link}
2524gnus:group#id @r{Gnus article link}
4009494e 2525bbdb:Richard Stallman @r{BBDB link}
28a16a1b 2526irc:/irc.com/#emacs/bob @r{IRC link}
4009494e
GM
2527shell:ls *.org @r{A shell command}
2528elisp:(find-file-other-frame "Elisp.org") @r{An elisp form to evaluate}
2529@end example
2530
2531A link should be enclosed in double brackets and may contain a
a7808fba 2532descriptive text to be displayed instead of the URL (@pxref{Link
4009494e
GM
2533format}), for example:
2534
2535@example
2536[[http://www.gnu.org/software/emacs/][GNU Emacs]]
2537@end example
2538
2539@noindent
2540If the description is a file name or URL that points to an image, HTML
2541export (@pxref{HTML export}) will inline the image as a clickable
2542button. If there is no description at all and the link points to an
2543image,
2544that image will be inlined into the exported HTML file.
2545
2546@cindex angular brackets, around links
2547@cindex plain text external links
a7808fba 2548Org also finds external links in the normal text and activates them
4009494e
GM
2549as links. If spaces must be part of the link (for example in
2550@samp{bbdb:Richard Stallman}), or if you need to remove ambiguities
2551about the end of the link, enclose them in angular brackets.
2552
a7808fba 2553@node Handling links, Using links outside Org, External links, Hyperlinks
4009494e
GM
2554@section Handling links
2555@cindex links, handling
2556
a7808fba
CD
2557Org provides methods to create a link in the correct syntax, to
2558insert it into an Org file, and to follow the link.
4009494e
GM
2559
2560@table @kbd
2561@kindex C-c l
2562@cindex storing links
2563@item C-c l
2564Store a link to the current location. This is a @emph{global} command
2565which can be used in any buffer to create a link. The link will be
a7808fba
CD
2566stored for later insertion into an Org buffer (see below). For
2567Org files, if there is a @samp{<<target>>} at the cursor, the
28a16a1b 2568link points to the target. Otherwise it points to the current
a7808fba 2569headline. For VM, Rmail, Wanderlust, MH-E, Gnus and BBDB buffers, the
28a16a1b
CD
2570link will indicate the current article/entry. For W3 and W3M buffers,
2571the link goes to the current URL. For IRC links, if you set the
2572variable @code{org-irc-link-to-logs} to non-nil then @kbd{C-c l} will
2573store a @samp{file:/} style link to the relevant point in the logs for
2574the current conversation. Otherwise an @samp{irc:/} style link to the
2575user/channel/server under the point will be stored. For any other
2576files, the link will point to the file, with a search string
2577(@pxref{Search options}) pointing to the contents of the current line.
2578If there is an active region, the selected words will form the basis
2579of the search string. If the automatically created link is not
2580working correctly or accurately enough, you can write custom functions
2581to select the search string and to do the search for particular file
2582types - see @ref{Custom searches}. The key binding @kbd{C-c l} is
2583only a suggestion - see @ref{Installation}.
4009494e
GM
2584@c
2585@kindex C-c C-l
2586@cindex link completion
2587@cindex completion, of links
2588@cindex inserting links
2589@item C-c C-l
a7808fba
CD
2590Insert a link. This prompts for a link to be inserted into the buffer. You
2591can just type a link, using text for an internal link, or one of the link
2592type prefixes mentioned in the examples above. All links stored during the
2593current session are part of the history for this prompt, so you can access
2594them with @key{up} and @key{down} (or @kbd{M-p/n}). Completion, on the other
2595hand, will help you to insert valid link prefixes like @samp{http:} or
2596@samp{ftp:}, including the prefixes defined through link abbreviations
2597(@pxref{Link abbreviations}). The link will be inserted into the
2598buffer@footnote{After insertion of a stored link, the link will be removed
2599from the list of stored links. To keep it in the list later use, use a
2600triple @kbd{C-u} prefix argument to @kbd{C-c C-l}, or configure the option
2601@code{org-keep-stored-link-after-insertion}.}, along with a descriptive text.
2602If some text was selected when this command is called, the selected text
2603becomes the default description.@* Note that you don't have to use this
2604command to insert a link. Links in Org are plain text, and you can type
2605or paste them straight into the buffer. By using this command, the links are
2606automatically enclosed in double brackets, and you will be asked for the
2607optional descriptive text.
4009494e
GM
2608@c
2609@c If the link is a @samp{file:} link and
2610@c the linked file is located in the same directory as the current file or
2611@c a subdirectory of it, the path of the file will be inserted relative to
2612@c the current directory.
2613@c
2614@kindex C-u C-c C-l
2615@cindex file name completion
2616@cindex completion, of file names
2617@item C-u C-c C-l
2618When @kbd{C-c C-l} is called with a @kbd{C-u} prefix argument, a link to
2619a file will be inserted and you may use file name completion to select
2620the name of the file. The path to the file is inserted relative to the
2621directory of the current org file, if the linked file is in the current
a7808fba 2622directory or in a sub-directory of it, or if the path is written relative
4009494e
GM
2623to the current directory using @samp{../}. Otherwise an absolute path
2624is used, if possible with @samp{~/} for your home directory. You can
2625force an absolute path with two @kbd{C-u} prefixes.
2626@c
2627@item C-c C-l @r{(with cursor on existing link)}
2628When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
2629link and description parts of the link.
2630@c
2631@cindex following links
2632@kindex C-c C-o
2633@item C-c C-o
2634Open link at point. This will launch a web browser for URLs (using
864c9740
CD
2635@command{browse-url-at-point}), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for
2636the corresponding links, and execute the command in a shell link. When the
2637cursor is on an internal link, this commands runs the corresponding search.
2638When the cursor is on a TAG list in a headline, it creates the corresponding
2639TAGS view. If the cursor is on a time stamp, it compiles the agenda for that
2640date. Furthermore, it will visit text and remote files in @samp{file:} links
2641with Emacs and select a suitable application for local non-text files.
2642Classification of files is based on file extension only. See option
2643@code{org-file-apps}. If you want to override the default application and
e45e3595
CD
2644visit the file with Emacs, use a @kbd{C-u} prefix. If you want to avoid
2645opening in Emacs, use a @kbd{C-u C-u} prefix.
4009494e
GM
2646@c
2647@kindex mouse-2
2648@kindex mouse-1
2649@item mouse-2
2650@itemx mouse-1
2651On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o}
2652would. Under Emacs 22, also @kbd{mouse-1} will follow a link.
2653@c
2654@kindex mouse-3
2655@item mouse-3
2656Like @kbd{mouse-2}, but force file links to be opened with Emacs, and
2657internal links to be displayed in another window@footnote{See the
2658variable @code{org-display-internal-link-with-indirect-buffer}}.
2659@c
2660@cindex mark ring
2661@kindex C-c %
2662@item C-c %
2663Push the current position onto the mark ring, to be able to return
2664easily. Commands following an internal link do this automatically.
2665@c
2666@cindex links, returning to
2667@kindex C-c &
2668@item C-c &
2669Jump back to a recorded position. A position is recorded by the
2670commands following internal links, and by @kbd{C-c %}. Using this
2671command several times in direct succession moves through a ring of
2672previously recorded positions.
2673@c
2674@kindex C-c C-x C-n
2675@kindex C-c C-x C-p
2676@cindex links, finding next/previous
2677@item C-c C-x C-n
2678@itemx C-c C-x C-p
2679Move forward/backward to the next link in the buffer. At the limit of
2680the buffer, the search fails once, and then wraps around. The key
2681bindings for this are really too long, you might want to bind this also
2682to @kbd{C-n} and @kbd{C-p}
2683@lisp
2684(add-hook 'org-load-hook
2685 (lambda ()
2686 (define-key 'org-mode-map "\C-n" 'org-next-link)
2687 (define-key 'org-mode-map "\C-p" 'org-previous-link)))
2688@end lisp
2689@end table
2690
a7808fba
CD
2691@node Using links outside Org, Link abbreviations, Handling links, Hyperlinks
2692@section Using links outside Org
4009494e 2693
a7808fba
CD
2694You can insert and follow links that have Org syntax not only in
2695Org, but in any Emacs buffer. For this, you should create two
4009494e
GM
2696global commands, like this (please select suitable global keys
2697yourself):
2698
2699@lisp
2700(global-set-key "\C-c L" 'org-insert-link-global)
2701(global-set-key "\C-c o" 'org-open-at-point-global)
2702@end lisp
2703
a7808fba 2704@node Link abbreviations, Search options, Using links outside Org, Hyperlinks
4009494e
GM
2705@section Link abbreviations
2706@cindex link abbreviations
2707@cindex abbreviation, links
2708
2709Long URLs can be cumbersome to type, and often many similar links are
2710needed in a document. For this you can use link abbreviations. An
2711abbreviated link looks like this
2712
2713@example
2714[[linkword:tag][description]]
2715@end example
2716
2717@noindent
2718where the tag is optional. Such abbreviations are resolved according to
2719the information in the variable @code{org-link-abbrev-alist} that
2720relates the linkwords to replacement text. Here is an example:
2721
2722@lisp
2723@group
2724(setq org-link-abbrev-alist
2725 '(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
2726 ("google" . "http://www.google.com/search?q=")
2727 ("ads" . "http://adsabs.harvard.edu/cgi-bin/
2728 nph-abs_connect?author=%s&db_key=AST")))
2729@end group
2730@end lisp
2731
2732If the replacement text contains the string @samp{%s}, it will be
2733replaced with the tag. Otherwise the tag will be appended to the string
2734in order to create the link. You may also specify a function that will
2735be called with the tag as the only argument to create the link.
2736
2737With the above setting, you could link to a specific bug with
2738@code{[[bugzilla:129]]}, search the web for @samp{OrgMode} with
a7808fba 2739@code{[[google:OrgMode]]} and find out what the Org author is
4009494e
GM
2740doing besides Emacs hacking with @code{[[ads:Dominik,C]]}.
2741
a7808fba 2742If you need special abbreviations just for a single Org buffer, you
4009494e
GM
2743can define them in the file with
2744
2745@example
2746#+LINK: bugzilla http://10.1.2.9/bugzilla/show_bug.cgi?id=
2747#+LINK: google http://www.google.com/search?q=%s
2748@end example
2749
2750@noindent
2751In-buffer completion @pxref{Completion} can be used after @samp{[} to
2752complete link abbreviations.
2753
2754@node Search options, Custom searches, Link abbreviations, Hyperlinks
2755@section Search options in file links
2756@cindex search option in file links
2757@cindex file links, searching
2758
2759File links can contain additional information to make Emacs jump to a
2760particular location in the file when following a link. This can be a
2761line number or a search option after a double@footnote{For backward
2762compatibility, line numbers can also follow a single colon.} colon. For
2763example, when the command @kbd{C-c l} creates a link (@pxref{Handling
2764links}) to a file, it encodes the words in the current line as a search
2765string that can be used to find this line back later when following the
28a16a1b 2766link with @kbd{C-c C-o}.
4009494e
GM
2767
2768Here is the syntax of the different ways to attach a search to a file
2769link, together with an explanation:
2770
2771@example
2772[[file:~/code/main.c::255]]
2773[[file:~/xx.org::My Target]]
2774[[file:~/xx.org::*My Target]]
2775[[file:~/xx.org::/regexp/]]
2776@end example
2777
2778@table @code
2779@item 255
2780Jump to line 255.
2781@item My Target
2782Search for a link target @samp{<<My Target>>}, or do a text search for
2783@samp{my target}, similar to the search in internal links, see
2784@ref{Internal links}. In HTML export (@pxref{HTML export}), such a file
2785link will become an HTML reference to the corresponding named anchor in
2786the linked file.
2787@item *My Target
a7808fba 2788In an Org file, restrict search to headlines.
4009494e
GM
2789@item /regexp/
2790Do a regular expression search for @code{regexp}. This uses the Emacs
2791command @code{occur} to list all matches in a separate window. If the
a7808fba 2792target file is in Org mode, @code{org-occur} is used to create a
4009494e
GM
2793sparse tree with the matches.
2794@c If the target file is a directory,
2795@c @code{grep} will be used to search all files in the directory.
2796@end table
2797
2798As a degenerate case, a file link with an empty file name can be used
2799to search the current file. For example, @code{[[file:::find me]]} does
2800a search for @samp{find me} in the current file, just as
2801@samp{[[find me]]} would.
2802
dbc28aaa 2803@node Custom searches, , Search options, Hyperlinks
4009494e
GM
2804@section Custom Searches
2805@cindex custom search strings
2806@cindex search strings, custom
2807
2808The default mechanism for creating search strings and for doing the
2809actual search related to a file link may not work correctly in all
2810cases. For example, BibTeX database files have many entries like
2811@samp{year="1993"} which would not result in good search strings,
2812because the only unique identification for a BibTeX entry is the
2813citation key.
2814
2815If you come across such a problem, you can write custom functions to set
2816the right search string for a particular file type, and to do the search
2817for the string in the file. Using @code{add-hook}, these functions need
2818to be added to the hook variables
2819@code{org-create-file-search-functions} and
2820@code{org-execute-file-search-functions}. See the docstring for these
a7808fba 2821variables for more information. Org actually uses this mechanism
4009494e 2822for Bib@TeX{} database files, and you can use the corresponding code as
44ce9197 2823an implementation example. See the file @file{org-bibtex.el}.
4009494e 2824
a7808fba
CD
2825@node TODO Items, Tags, Hyperlinks, Top
2826@chapter TODO Items
4009494e
GM
2827@cindex TODO items
2828
44ce9197
CD
2829Org mode does not maintain TODO lists as separate documents@footnote{Of
2830course, you can make a document that contains inly long lists of TODO items,
2831but this is not required.}. Instead, TODO items are an integral part of the
2832notes file, because TODO items usually come up while taking notes! With Org
2833mode, simply mark any entry in a tree as being a TODO item. In this way,
2834information is not duplicated, and the entire context from which the TODO
2835item emerged is always present.
4009494e 2836
dbc28aaa 2837Of course, this technique for managing TODO items scatters them
a7808fba 2838throughout your notes file. Org mode compensates for this by providing
dbc28aaa 2839methods to give you an overview of all the things that you have to do.
4009494e
GM
2840
2841@menu
2842* TODO basics:: Marking and displaying TODO entries
2843* TODO extensions:: Workflow and assignments
dbc28aaa 2844* Progress logging:: Dates and notes for progress
4009494e
GM
2845* Priorities:: Some things are more important than others
2846* Breaking down tasks:: Splitting a task into manageable pieces
2847* Checkboxes:: Tick-off lists
2848@end menu
2849
a7808fba 2850@node TODO basics, TODO extensions, TODO Items, TODO Items
4009494e
GM
2851@section Basic TODO functionality
2852
dbc28aaa
CD
2853Any headline becomes a TODO item when it starts with the word
2854@samp{TODO}, for example:
4009494e
GM
2855
2856@example
2857*** TODO Write letter to Sam Fortune
2858@end example
2859
2860@noindent
2861The most important commands to work with TODO entries are:
2862
2863@table @kbd
2864@kindex C-c C-t
2865@cindex cycling, of TODO states
2866@item C-c C-t
2867Rotate the TODO state of the current item among
2868
2869@example
2870,-> (unmarked) -> TODO -> DONE --.
2871'--------------------------------'
2872@end example
2873
2874The same rotation can also be done ``remotely'' from the timeline and
2875agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
dbc28aaa
CD
2876
2877@kindex C-u C-c C-t
2878@item C-u C-c C-t
2879Select a specific keyword using completion or (if it has been set up)
28a16a1b
CD
2880the fast selection interface. For the latter, you need to assign keys
2881to TODO states, see @ref{Per-file keywords} and @ref{Setting tags} for
2882more information.
dbc28aaa 2883
4009494e
GM
2884@kindex S-@key{right}
2885@kindex S-@key{left}
2886@item S-@key{right}
2887@itemx S-@key{left}
dbc28aaa
CD
2888Select the following/preceding TODO state, similar to cycling. Useful
2889mostly if more than two TODO states are possible (@pxref{TODO
4009494e 2890extensions}).
4009494e 2891@kindex C-c C-v
dbc28aaa 2892@kindex C-c / t
4009494e
GM
2893@cindex sparse tree, for TODO
2894@item C-c C-v
dbc28aaa 2895@itemx C-c / t
4009494e
GM
2896View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}). Folds
2897the entire buffer, but shows all TODO items and the headings hierarchy
a7808fba 2898above them. With a prefix argument, search for a specific TODO. You will be
4009494e 2899prompted for the keyword, and you can also give a list of keywords like
a7808fba 2900@code{KWD1|KWD2|...}. With numeric prefix argument N, show the tree for the
4009494e 2901Nth keyword in the variable @code{org-todo-keywords}. With two prefix
a7808fba 2902arguments, find all TODO and DONE entries.
4009494e
GM
2903@kindex C-c a t
2904@item C-c a t
dbc28aaa 2905Show the global TODO list. Collects the TODO items from all agenda
a7808fba 2906files (@pxref{Agenda Views}) into a single buffer. The new buffer will
dbc28aaa
CD
2907be in @code{agenda-mode}, which provides commands to examine and
2908manipulate the TODO entries from the new buffer (@pxref{Agenda
2909commands}). @xref{Global TODO list}, for more information.
4009494e
GM
2910@kindex S-M-@key{RET}
2911@item S-M-@key{RET}
2912Insert a new TODO entry below the current one.
2913@end table
2914
71d35b24
CD
2915@noindent
2916Changing a TODO state can also trigger tag changes. See the docstring of the
2917option @code{org-todo-state-tags-triggers} for details.
2918
a7808fba 2919@node TODO extensions, Progress logging, TODO basics, TODO Items
4009494e
GM
2920@section Extended use of TODO keywords
2921@cindex extended TODO keywords
2922
dbc28aaa 2923By default, marked TODO entries have one of only two states: TODO and
a7808fba 2924DONE. Org mode allows you to classify TODO items in more complex ways
dbc28aaa
CD
2925with @emph{TODO keywords} (stored in @code{org-todo-keywords}). With
2926special setup, the TODO keyword system can work differently in different
2927files.
4009494e
GM
2928
2929Note that @i{tags} are another way to classify headlines in general and
2930TODO items in particular (@pxref{Tags}).
2931
2932@menu
2933* Workflow states:: From TODO to DONE in steps
dbc28aaa 2934* TODO types:: I do this, Fred does the rest
4009494e 2935* Multiple sets in one file:: Mixing it all, and still finding your way
dbc28aaa
CD
2936* Fast access to TODO states:: Single letter selection of a state
2937* Per-file keywords:: Different files, different requirements
2938* Faces for TODO keywords:: Highlighting states
4009494e
GM
2939@end menu
2940
2941@node Workflow states, TODO types, TODO extensions, TODO extensions
2942@subsection TODO keywords as workflow states
2943@cindex TODO workflow
2944@cindex workflow states as TODO keywords
2945
2946You can use TODO keywords to indicate different @emph{sequential} states
2947in the process of working on an item, for example@footnote{Changing
a7808fba 2948this variable only becomes effective after restarting Org mode in a
4009494e
GM
2949buffer.}:
2950
2951@lisp
2952(setq org-todo-keywords
2953 '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
2954@end lisp
2955
2956The vertical bar separates the TODO keywords (states that @emph{need
44ce9197 2957action}) from the DONE states (which need @emph{no further action}). If
4009494e
GM
2958you don't provide the separator bar, the last state is used as the DONE
2959state.
2960@cindex completion, of TODO keywords
2961With this setup, the command @kbd{C-c C-t} will cycle an entry from TODO
2962to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED. You may
a7808fba 2963also use a numeric prefix argument to quickly select a specific state. For
4009494e 2964example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
28a16a1b
CD
2965Or you can use @kbd{S-left} to go backward through the sequence. If you
2966define many keywords, you can use in-buffer completion
2967(@pxref{Completion}) or even a special one-key selection scheme
2968(@pxref{Fast access to TODO states}) to insert these words into the
a7808fba 2969buffer. Changing a TODO state can be logged with a timestamp, see
28a16a1b 2970@ref{Tracking TODO state changes} for more information.
4009494e
GM
2971
2972@node TODO types, Multiple sets in one file, Workflow states, TODO extensions
2973@subsection TODO keywords as types
2974@cindex TODO types
2975@cindex names as TODO keywords
2976@cindex types as TODO keywords
2977
2978The second possibility is to use TODO keywords to indicate different
2979@emph{types} of action items. For example, you might want to indicate
2980that items are for ``work'' or ``home''. Or, when you work with several
2981people on a single project, you might want to assign action items
2982directly to persons, by using their names as TODO keywords. This would
2983be set up like this:
2984
2985@lisp
2986(setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
2987@end lisp
2988
2989In this case, different keywords do not indicate a sequence, but rather
2990different types. So the normal work flow would be to assign a task to a
a7808fba
CD
2991person, and later to mark it DONE. Org mode supports this style by adapting
2992the workings of the command @kbd{C-c C-t}@footnote{This is also true for the
2993@kbd{t} command in the timeline and agenda buffers.}. When used several
2994times in succession, it will still cycle through all names, in order to first
2995select the right type for a task. But when you return to the item after some
2996time and execute @kbd{C-c C-t} again, it will switch from any name directly
2997to DONE. Use prefix arguments or completion to quickly select a specific
2998name. You can also review the items of a specific TODO type in a sparse tree
2999by using a numeric prefix to @kbd{C-c C-v}. For example, to see all things
3000Lucy has to do, you would use @kbd{C-3 C-c C-v}. To collect Lucy's items
3001from all agenda files into a single buffer, you would use the numeric prefix
3002argument as well when creating the global TODO list: @kbd{C-3 C-c t}.
4009494e 3003
dbc28aaa 3004@node Multiple sets in one file, Fast access to TODO states, TODO types, TODO extensions
4009494e 3005@subsection Multiple keyword sets in one file
a7808fba 3006@cindex TODO keyword sets
4009494e
GM
3007
3008Sometimes you may want to use different sets of TODO keywords in
3009parallel. For example, you may want to have the basic
3010@code{TODO}/@code{DONE}, but also a workflow for bug fixing, and a
3011separate state indicating that an item has been canceled (so it is not
3012DONE, but also does not require action). Your setup would then look
3013like this:
3014
3015@lisp
3016(setq org-todo-keywords
3017 '((sequence "TODO" "|" "DONE")
3018 (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
3019 (sequence "|" "CANCELED")))
3020@end lisp
3021
a7808fba 3022The keywords should all be different, this helps Org mode to keep track
4009494e
GM
3023of which subsequence should be used for a given entry. In this setup,
3024@kbd{C-c C-t} only operates within a subsequence, so it switches from
3025@code{DONE} to (nothing) to @code{TODO}, and from @code{FIXED} to
3026(nothing) to @code{REPORT}. Therefore you need a mechanism to initially
3027select the correct sequence. Besides the obvious ways like typing a
3028keyword or using completion, you may also apply the following commands:
3029
3030@table @kbd
3031@kindex C-S-@key{right}
3032@kindex C-S-@key{left}
3033@item C-S-@key{right}
3034@itemx C-S-@key{left}
3035These keys jump from one TODO subset to the next. In the above example,
3036@kbd{C-S-@key{right}} would jump from @code{TODO} or @code{DONE} to
3037@code{REPORT}, and any of the words in the second row to @code{CANCELED}.
3038@kindex S-@key{right}
3039@kindex S-@key{left}
3040@item S-@key{right}
3041@itemx S-@key{left}
3042@kbd{S-@key{<left>}} and @kbd{S-@key{<right>}} and walk through
3043@emph{all} keywords from all sets, so for example @kbd{S-@key{<right>}}
3044would switch from @code{DONE} to @code{REPORT} in the example above.
3045@end table
3046
dbc28aaa
CD
3047@node Fast access to TODO states, Per-file keywords, Multiple sets in one file, TODO extensions
3048@subsection Fast access to TODO states
3049
3050If you would like to quickly change an entry to an arbitrary TODO state
3051instead of cycling through the states, you can set up keys for
3052single-letter access to the states. This is done by adding the section
3053key after each keyword, in parenthesis. For example:
3054
3055@lisp
3056(setq org-todo-keywords
3057 '((sequence "TODO(t)" "|" "DONE(d)")
3058 (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
3059 (sequence "|" "CANCELED(c)")))
3060@end lisp
3061
3062If you then press @code{C-u C-c C-t} followed by the selection key, the
3063entry will be switched to this state. @key{SPC} can be used to remove
3064any TODO keyword from an entry. Should you like this way of selecting
3065TODO states a lot, you might want to set the variable
3066@code{org-use-fast-todo-selection} to @code{t} and make this behavior
3067the default. Check also the variable
3068@code{org-fast-tag-selection-include-todo}, it allows to change the TODO
28a16a1b
CD
3069state through the tags interface (@pxref{Setting tags}), in case you
3070like to mingle the two concepts.
dbc28aaa
CD
3071
3072@node Per-file keywords, Faces for TODO keywords, Fast access to TODO states, TODO extensions
4009494e
GM
3073@subsection Setting up keywords for individual files
3074@cindex keyword options
dbc28aaa 3075@cindex per-file keywords
4009494e
GM
3076
3077It can be very useful to use different aspects of the TODO mechanism in
3078different files. For file-local settings, you need to add special lines
3079to the file which set the keywords and interpretation for that file
3080only. For example, to set one of the two examples discussed above, you
3081need one of the following lines, starting in column zero anywhere in the
3082file:
3083
3084@example
3085#+SEQ_TODO: TODO FEEDBACK VERIFY | DONE CANCELED
3086@end example
3087or
3088@example
3089#+TYP_TODO: Fred Sara Lucy Mike | DONE
3090@end example
3091
3092A setup for using several sets in parallel would be:
3093
3094@example
3095#+SEQ_TODO: TODO | DONE
3096#+SEQ_TODO: REPORT BUG KNOWNCAUSE | FIXED
3097#+SEQ_TODO: | CANCELED
3098@end example
3099
3100@cindex completion, of option keywords
3101@kindex M-@key{TAB}
3102@noindent To make sure you are using the correct keyword, type
3103@samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
3104
3105@cindex DONE, final TODO keyword
3106Remember that the keywords after the vertical bar (or the last keyword
3107if no bar is there) must always mean that the item is DONE (although you
3108may use a different word). After changing one of these lines, use
3109@kbd{C-c C-c} with the cursor still in the line to make the changes
a7808fba
CD
3110known to Org mode@footnote{Org mode parses these lines only when
3111Org mode is activated after visiting a file. @kbd{C-c C-c} with the
3112cursor in a line starting with @samp{#+} is simply restarting Org mode
4009494e
GM
3113for the current buffer.}.
3114
dbc28aaa
CD
3115@node Faces for TODO keywords, , Per-file keywords, TODO extensions
3116@subsection Faces for TODO keywords
3117@cindex faces, for TODO keywords
3118
a7808fba 3119Org mode highlights TODO keywords with special faces: @code{org-todo}
dbc28aaa
CD
3120for keywords indicating that an item still has to be acted upon, and
3121@code{org-done} for keywords indicating that an item is finished. If
3122you are using more than 2 different states, you might want to use
3123special faces for some of them. This can be done using the variable
3124@code{org-todo-keyword-faces}. For example:
3125
3126@lisp
3127(setq org-todo-keyword-faces
3128 '(("TODO" . org-warning)
3129 ("DEFERRED" . shadow)
3130 ("CANCELED" . (:foreground "blue" :weight bold))))
3131@end lisp
3132
28a16a1b
CD
3133While using a list with face properties as shown for CANCELED
3134@emph{should} work, this does not aways seem to be the case. If
3135necessary, define a special face and use that.
3136
dbc28aaa 3137@page
a7808fba
CD
3138@node Progress logging, Priorities, TODO extensions, TODO Items
3139@section Progress logging
dbc28aaa
CD
3140@cindex progress logging
3141@cindex logging, of progress
3142
a7808fba 3143Org mode can automatically record a time stamp and possibly a note when
28a16a1b
CD
3144you mark a TODO item as DONE, or even each time you change the state of
3145a TODO item. This system is highly configurable, settings can be on a
3146per-keyword basis and can be localized to a file or even a subtree. For
3147information on how to clock working time for a task, see @ref{Clocking
3148work time}.
dbc28aaa
CD
3149
3150@menu
3151* Closing items:: When was this entry marked DONE?
3152* Tracking TODO state changes:: When did the status change?
3153@end menu
3154
3155@node Closing items, Tracking TODO state changes, Progress logging, Progress logging
3156@subsection Closing items
3157
28a16a1b
CD
3158The most basic logging is to keep track of @emph{when} a certain TODO
3159item was finished. This is achieved with@footnote{The corresponding
3160in-buffer setting is: @code{#+STARTUP: logdone}}.
dbc28aaa
CD
3161
3162@lisp
28a16a1b 3163(setq org-log-done 'time)
dbc28aaa
CD
3164@end lisp
3165
3166@noindent
28a16a1b
CD
3167Then each time you turn an entry from a TODO (not-done) state into any
3168of the DONE states, a line @samp{CLOSED: [timestamp]} will be inserted
3169just after the headline. If you turn the entry back into a TODO item
3170through further state cycling, that line will be removed again. If you
3171want to record a note along with the timestamp, use@footnote{The
3172corresponding in-buffer setting is: @code{#+STARTUP: lognotedone}}
dbc28aaa
CD
3173
3174@lisp
28a16a1b 3175(setq org-log-done 'note)
dbc28aaa
CD
3176@end lisp
3177
28a16a1b
CD
3178@noindent
3179You will then be prompted for a note, and that note will be stored below
3180the entry with a @samp{Closing Note} heading.
3181
3182In the timeline (@pxref{Timeline}) and in the agenda
a7808fba 3183(@pxref{Weekly/daily agenda}), you can then use the @kbd{l} key to
28a16a1b
CD
3184display the TODO items with a @samp{CLOSED} timestamp on each day,
3185giving you an overview of what has been done.
3186
dbc28aaa
CD
3187@node Tracking TODO state changes, , Closing items, Progress logging
3188@subsection Tracking TODO state changes
3189
3190When TODO keywords are used as workflow states (@pxref{Workflow
3191states}), you might want to keep track of when a state change occurred
28a16a1b 3192and maybe take a note about this change. Since it is normally too much
a7808fba 3193to record a note for every state, Org mode expects configuration on a
28a16a1b
CD
3194per-keyword basis for this. This is achieved by adding special markers
3195@samp{!} (for a time stamp) and @samp{@@} (for a note) in parenthesis
3196after each keyword. For example, with the setting
dbc28aaa
CD
3197
3198@lisp
28a16a1b
CD
3199(setq org-todo-keywords
3200 '((sequence "TODO(t)" "WAIT(w@@/!)" "|" "DONE(d!)" "CANCELED(c@@)")))
dbc28aaa
CD
3201@end lisp
3202
3203@noindent
28a16a1b
CD
3204you not only define global TODO keywords and fast access keys, but also
3205request that a time is recorded when the entry is turned into
a7808fba 3206DONE@footnote{It is possible that Org mode will record two time stamps
28a16a1b
CD
3207when you are using both @code{org-log-done} and state change logging.
3208However, it will never prompt for two notes - if you have configured
3209both, the state change recording note will take precedence and cancel
3210the @samp{Closing Note}.}, and that a note is recorded when switching to
3211WAIT or CANCELED. The setting for WAIT is even more special: The
3212@samp{!} after the slash means that in addition to the note taken when
3213entering the state, a time stamp should be recorded when @i{leaving} the
3214WAIT state, if and only if the @i{target} state does not configure
3215logging for entering it. So it has no effect when switching from WAIT
3216to DONE, because DONE is configured to record a timestamp only. But
3217when switching from WAIT back to TODO, the @samp{/!} in the WAIT
3218setting now triggers a timestamp even though TODO has no logging
3219configured.
3220
3221You can use the exact same syntax for setting logging preferences local
3222to a buffer:
3223@example
3224#+SEQ_TODO: TODO(t) WAIT(w@@/!) | DONE(d!) CANCELED(c@@)
3225@end example
3226
3227In order to define logging settings that are local to a subtree or a
3228single item, define a LOGGING property in this entry. Any non-empty
3229LOGGING property resets all logging settings to nil. You may then turn
3230on logging for this specific tree using STARTUP keywords like
3231@code{lognotedone} or @code{logrepeat}, as well as adding state specific
3232settings like @code{TODO(!)}. For example
3233
3234@example
3235* TODO Log each state with only a time
3236 :PROPERTIES:
3237 :LOGGING: TODO(!) WAIT(!) DONE(!) CANCELED(!)
3238 :END:
3239* TODO Only log when switching to WAIT, and when repeating
3240 :PROPERTIES:
3241 :LOGGING: WAIT(@@) logrepeat
3242 :END:
3243* TODO No logging at all
3244 :PROPERTIES:
3245 :LOGGING: nil
3246 :END:
dbc28aaa
CD
3247@end example
3248
a7808fba 3249@node Priorities, Breaking down tasks, Progress logging, TODO Items
4009494e
GM
3250@section Priorities
3251@cindex priorities
3252
a7808fba 3253If you use Org mode extensively, you may end up enough TODO items that
dbc28aaa
CD
3254it starts to make sense to prioritize them. Prioritizing can be done by
3255placing a @emph{priority cookie} into the headline of a TODO item, like
3256this
4009494e
GM
3257
3258@example
3259*** TODO [#A] Write letter to Sam Fortune
3260@end example
3261
3262@noindent
a7808fba 3263By default, Org mode supports three priorities: @samp{A}, @samp{B}, and
dbc28aaa
CD
3264@samp{C}. @samp{A} is the highest priority. An entry without a cookie
3265is treated as priority @samp{B}. Priorities make a difference only in
a7808fba
CD
3266the agenda (@pxref{Weekly/daily agenda}); outside the agenda, they have
3267no inherent meaning to Org mode.
dbc28aaa
CD
3268
3269Priorities can be attached to any outline tree entries; they do not need
3270to be TODO items.
4009494e
GM
3271
3272@table @kbd
3273@kindex @kbd{C-c ,}
3274@item @kbd{C-c ,}
3275Set the priority of the current headline. The command prompts for a
3276priority character @samp{A}, @samp{B} or @samp{C}. When you press
3277@key{SPC} instead, the priority cookie is removed from the headline.
3278The priorities can also be changed ``remotely'' from the timeline and
3279agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
3280@c
3281@kindex S-@key{up}
3282@kindex S-@key{down}
3283@item S-@key{up}
3284@itemx S-@key{down}
dbc28aaa
CD
3285Increase/decrease priority of current headline@footnote{See also the
3286option @code{org-priority-start-cycle-with-default'}.}. Note that these
3287keys are also used to modify time stamps (@pxref{Creating timestamps}).
a7808fba 3288Furthermore, these keys are also used by CUA mode (@pxref{Conflicts}).
4009494e
GM
3289@end table
3290
3291You can change the range of allowed priorities by setting the variables
3292@code{org-highest-priority}, @code{org-lowest-priority}, and
3293@code{org-default-priority}. For an individual buffer, you may set
3294these values (highest, lowest, default) like this (please make sure that
3295the highest priority is earlier in the alphabet than the lowest
3296priority):
3297
3298@example
3299#+PRIORITIES: A C B
3300@end example
3301
a7808fba 3302@node Breaking down tasks, Checkboxes, Priorities, TODO Items
4009494e
GM
3303@section Breaking tasks down into subtasks
3304@cindex tasks, breaking down
3305
3306It is often advisable to break down large tasks into smaller, manageable
b349f79f
CD
3307subtasks. You can do this by creating an outline tree below a TODO item,
3308with detailed subtasks on the tree@footnote{To keep subtasks out of the
3309global TODO list, see the @code{org-agenda-todo-list-sublevels}.}. To keep
3310the overview over the fraction of subtasks that are already completed, insert
3311either @samp{[/]} or @samp{[%]} anywhere in the headline. These cookies will
3312be updates each time the todo status of a child changes. For example:
3313
3314@example
3315* Organize Party [33%]
3316** TODO Call people [1/2]
3317*** TODO Peter
3318*** DONE Sarah
3319** TODO Buy food
3320** DONE Talk to neighbor
3321@end example
3322
3323If you would like a TODO entry to automatically change to DONE when all
3324chilrden are done, you can use the following setup:
3325
3326@example
3327(defun org-summary-todo (n-done n-not-done)
3328 "Switch entry to DONE when all subentries are done, to TODO otherwise."
3329 (let (org-log-done org-log-states) ; turn off logging
3330 (org-todo (if (= n-not-done 0) "DONE" "TODO"))))
3331
3332(add-hook 'org-after-todo-statistics-hook 'org-summary-todo)
3333@end example
3334
3335
3336Another possibility is the use of checkboxes to identify (a hierarchy of) a
3337large number of subtasks (@pxref{Checkboxes}).
4009494e
GM
3338
3339
a7808fba 3340@node Checkboxes, , Breaking down tasks, TODO Items
4009494e
GM
3341@section Checkboxes
3342@cindex checkboxes
3343
dbc28aaa
CD
3344Every item in a plain list (@pxref{Plain lists}) can be made into a
3345checkbox by starting it with the string @samp{[ ]}. This feature is
a7808fba 3346similar to TODO items (@pxref{TODO Items}), but is more lightweight.
dbc28aaa
CD
3347Checkboxes are not included into the global TODO list, so they are often
3348great to split a task into a number of simple steps. Or you can use
3349them in a shopping list. To toggle a checkbox, use @kbd{C-c C-c}, or
3350use the mouse (thanks to Piotr Zielinski's @file{org-mouse.el}).
3351
3352Here is an example of a checkbox list.
4009494e
GM
3353
3354@example
28a16a1b
CD
3355* TODO Organize party [2/4]
3356 - [-] call people [1/3]
4009494e
GM
3357 - [ ] Peter
3358 - [X] Sarah
3359 - [ ] Sam
3360 - [X] order food
3361 - [ ] think about what music to play
3362 - [X] talk to the neighbors
3363@end example
3364
28a16a1b
CD
3365Checkboxes work hierarchically, so if a checkbox item has children that
3366are checkboxes, toggling one of the children checkboxes will make the
3367parent checkbox reflect if none, some, or all of the children are
3368checked.
3369
4009494e
GM
3370@cindex statistics, for checkboxes
3371@cindex checkbox statistics
28a16a1b 3372The @samp{[2/4]} and @samp{[1/3]} in the first and second line are
dbc28aaa
CD
3373cookies indicating how many checkboxes present in this entry have been
3374checked off, and the total number of checkboxes are present. This can
3375give you an idea on how many checkboxes remain, even without opening a
3376folded entry. The cookies can be placed into a headline or into (the
3377first line of) a plain list item. Each cookie covers all checkboxes
3378structurally below the headline/item on which the cookie appear. You
3379have to insert the cookie yourself by typing either @samp{[/]} or
3380@samp{[%]}. With @samp{[/]} you get an @samp{n out of m} result, as in
3381the examples above. With @samp{[%]} you get information about the
4009494e 3382percentage of checkboxes checked (in the above example, this would be
dbc28aaa 3383@samp{[50%]} and @samp{[33%]}, respectively).
4009494e
GM
3384
3385@noindent The following commands work with checkboxes:
3386
3387@table @kbd
3388@kindex C-c C-c
3389@item C-c C-c
a7808fba 3390Toggle checkbox at point. With a prefix argument, set it to @samp{[-]},
4009494e
GM
3391which is considered to be an intermediate state.
3392@kindex C-c C-x C-b
3393@item C-c C-x C-b
3394Toggle checkbox at point.
3395@itemize @minus
3396@item
3397If there is an active region, toggle the first checkbox in the region
3398and set all remaining boxes to the same status as the first. If you
3399want to toggle all boxes in the region independently, use a prefix
3400argument.
3401@item
3402If the cursor is in a headline, toggle checkboxes in the region between
3403this headline and the next (so @emph{not} the entire subtree).
3404@item
3405If there is no active region, just toggle the checkbox at point.
3406@end itemize
3407@kindex M-S-@key{RET}
3408@item M-S-@key{RET}
3409Insert a new item with a checkbox.
3410This works only if the cursor is already in a plain list item
3411(@pxref{Plain lists}).
3412@kindex C-c #
3413@item C-c #
3414Update the checkbox statistics in the current outline entry. When
3415called with a @kbd{C-u} prefix, update the entire file. Checkbox
3416statistic cookies are updated automatically if you toggle checkboxes
3417with @kbd{C-c C-c} and make new ones with @kbd{M-S-@key{RET}}. If you
3418delete boxes or add/change them by hand, use this command to get things
3419back into synch. Or simply toggle any checkbox twice with @kbd{C-c C-c}.
3420@end table
3421
a7808fba 3422@node Tags, Properties and Columns, TODO Items, Top
4009494e
GM
3423@chapter Tags
3424@cindex tags
3425@cindex headline tagging
3426@cindex matching, tags
3427@cindex sparse tree, tag based
3428
dbc28aaa 3429An excellent way to implement labels and contexts for cross-correlating
a7808fba 3430information is to assign @i{tags} to headlines. Org mode has extensive
dbc28aaa 3431support for tags.
4009494e 3432
dbc28aaa
CD
3433Every headline can contain a list of tags; they occur at the end of the
3434headline. Tags are normal words containing letters, numbers, @samp{_},
3435and @samp{@@}. Tags must be preceded and followed by a single colon,
44ce9197
CD
3436e.g., @samp{:work:}. Several tags can be specified, as in
3437@samp{:work:urgent:}.
4009494e
GM
3438
3439@menu
3440* Tag inheritance:: Tags use the tree structure of the outline
3441* Setting tags:: How to assign tags to a headline
3442* Tag searches:: Searching for combinations of tags
3443@end menu
3444
3445@node Tag inheritance, Setting tags, Tags, Tags
3446@section Tag inheritance
dbc28aaa 3447@cindex tag inheritance
4009494e
GM
3448@cindex inheritance, of tags
3449@cindex sublevels, inclusion into tags match
3450
3451@i{Tags} make use of the hierarchical structure of outline trees. If a
3452heading has a certain tag, all subheadings will inherit the tag as
3453well. For example, in the list
3454
3455@example
dbc28aaa
CD
3456* Meeting with the French group :work:
3457** Summary by Frank :boss:notes:
3458*** TODO Prepare slides for him :action:
4009494e
GM
3459@end example
3460
3461@noindent
dbc28aaa
CD
3462the final heading will have the tags @samp{:work:}, @samp{:boss:},
3463@samp{:notes:}, and @samp{:action:} even though the final heading is not
b349f79f
CD
3464explicitly marked with those tags. You can also set tags that all entries in
3465a file should inherit as if these tags would be defined in a hypothetical
3466level zero that surounds the entire file.
3467
3468@example
3469#+FILETAGS: :Peter:Boss:Secret:
3470@end example
3471
3472@noindent
3473To limit tag inheritance to specific tags, or to turn it off entirely, use
3474the variable @code{org-use-tag-inheritance}.
3475
3476When a headline matches during a tags search while tag inheritance is turned
3477on, all the sublevels in the same tree will match as well@footnote{This is
3478only true if the the search does not involve more complex tests including
3479properties (@pxref{Property searches}).}. The list of matches may then
3480become very long. If you only want to see the first tags match in a subtree,
3481configure the variable @code{org-tags-match-list-sublevels}.
4009494e
GM
3482
3483@node Setting tags, Tag searches, Tag inheritance, Tags
3484@section Setting tags
3485@cindex setting tags
3486@cindex tags, setting
3487
3488@kindex M-@key{TAB}
3489Tags can simply be typed into the buffer at the end of a headline.
3490After a colon, @kbd{M-@key{TAB}} offers completion on tags. There is
3491also a special command for inserting tags:
3492
3493@table @kbd
71d35b24
CD
3494@kindex C-c C-q
3495@item C-c C-q
4009494e 3496@cindex completion, of tags
a7808fba 3497Enter new tags for the current headline. Org mode will either offer
4009494e
GM
3498completion or a special single-key interface for setting tags, see
3499below. After pressing @key{RET}, the tags will be inserted and aligned
3500to @code{org-tags-column}. When called with a @kbd{C-u} prefix, all
3501tags in the current buffer will be aligned to that column, just to make
3502things look nice. TAGS are automatically realigned after promotion,
3503demotion, and TODO state changes (@pxref{TODO basics}).
71d35b24
CD
3504@kindex C-c C-c
3505@item C-c C-c
3506When the cursor is in a headline, this does the same as @kbd{C-c C-q}.
4009494e
GM
3507@end table
3508
3509Org will support tag insertion based on a @emph{list of tags}. By
3510default this list is constructed dynamically, containing all tags
3511currently used in the buffer. You may also globally specify a hard list
3512of tags with the variable @code{org-tag-alist}. Finally you can set
3513the default tags for a given file with lines like
3514
3515@example
dbc28aaa
CD
3516#+TAGS: @@work @@home @@tennisclub
3517#+TAGS: laptop car pc sailboat
4009494e
GM
3518@end example
3519
3520If you have globally defined your preferred set of tags using the
3521variable @code{org-tag-alist}, but would like to use a dynamic tag list
dbc28aaa 3522in a specific file, add an empty TAGS option line to that file:
4009494e
GM
3523
3524@example
3525#+TAGS:
3526@end example
3527
a7808fba
CD
3528By default Org mode uses the standard minibuffer completion facilities for
3529entering tags. However, it also implements another, quicker, tag selection
3530method called @emph{fast tag selection}. This allows you to select and
3531deselect tags with just a single key press. For this to work well you should
3532assign unique letters to most of your commonly used tags. You can do this
3533globally by configuring the variable @code{org-tag-alist} in your
3534@file{.emacs} file. For example, you may find the need to tag many items in
3535different files with @samp{:@@home:}. In this case you can set something
3536like:
4009494e
GM
3537
3538@lisp
dbc28aaa 3539(setq org-tag-alist '(("@@work" . ?w) ("@@home" . ?h) ("laptop" . ?l)))
4009494e
GM
3540@end lisp
3541
a7808fba
CD
3542@noindent If the tag is only relevant to the file you are working on then you
3543can, instead, set the TAGS option line as:
4009494e
GM
3544
3545@example
dbc28aaa 3546#+TAGS: @@work(w) @@home(h) @@tennisclub(t) laptop(l) pc(p)
4009494e
GM
3547@end example
3548
3549@noindent
a7808fba
CD
3550You can also group together tags that are mutually exclusive. By using
3551braces, as in:
4009494e
GM
3552
3553@example
dbc28aaa 3554#+TAGS: @{ @@work(w) @@home(h) @@tennisclub(t) @} laptop(l) pc(p)
4009494e
GM
3555@end example
3556
dbc28aaa 3557@noindent you indicate that at most one of @samp{@@work}, @samp{@@home},
a7808fba 3558and @samp{@@tennisclub} should be selected. Multiple such groups are allowed.
4009494e
GM
3559
3560@noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
3561these lines to activate any changes.
3562
a7808fba
CD
3563@noindent
3564To set these mutually exclusive groups in the variable @code{org-mode-alist}
3565you must use the dummy tags @code{:startgroup} and @code{:endgroup} instead
3566of the braces. The previous example would be set globally by the following
3567configuration:
3568
3569@lisp
3570(setq org-tag-alist '((:startgroup . nil)
3571 ("@@work" . ?w) ("@@home" . ?h)
3572 ("@@tennisclub" . ?t)
3573 (:endgroup . nil)
3574 ("laptop" . ?l) ("pc" . ?p)))
3575@end lisp
3576
3577If at least one tag has a selection key then pressing @kbd{C-c C-c} will
3578automatically present you with a special interface, listing inherited tags,
3579the tags of the current headline, and a list of all valid tags with
3580corresponding keys@footnote{Keys will automatically be assigned to tags which
3581have no configured keys.}. In this interface, you can use the following
3582keys:
4009494e
GM
3583
3584@table @kbd
3585@item a-z...
3586Pressing keys assigned to tags will add or remove them from the list of
3587tags in the current line. Selecting a tag in a group of mutually
3588exclusive tags will turn off any other tags from that group.
3589@kindex @key{TAB}
3590@item @key{TAB}
3591Enter a tag in the minibuffer, even if the tag is not in the predefined
3592list. You will be able to complete on all tags present in the buffer.
3593@kindex @key{SPC}
3594@item @key{SPC}
3595Clear all tags for this line.
3596@kindex @key{RET}
3597@item @key{RET}
3598Accept the modified set.
3599@item C-g
3600Abort without installing changes.
3601@item q
3602If @kbd{q} is not assigned to a tag, it aborts like @kbd{C-g}.
3603@item !
3604Turn off groups of mutually exclusive tags. Use this to (as an
3605exception) assign several tags from such a group.
3606@item C-c
3607Toggle auto-exit after the next change (see below).
3608If you are using expert mode, the first @kbd{C-c} will display the
3609selection window.
3610@end table
3611
3612@noindent
3613This method lets you assign tags to a headline with very few keys. With
dbc28aaa
CD
3614the above setup, you could clear the current tags and set @samp{@@home},
3615@samp{laptop} and @samp{pc} tags with just the following keys: @kbd{C-c
3616C-c @key{SPC} h l p @key{RET}}. Switching from @samp{@@home} to
3617@samp{@@work} would be done with @kbd{C-c C-c w @key{RET}} or
4009494e
GM
3618alternatively with @kbd{C-c C-c C-c w}. Adding the non-predefined tag
3619@samp{Sarah} could be done with @kbd{C-c C-c @key{TAB} S a r a h
3620@key{RET} @key{RET}}.
3621
a7808fba 3622If you find that most of the time, you need only a single key press to
4009494e
GM
3623modify your list of tags, set the variable
3624@code{org-fast-tag-selection-single-key}. Then you no longer have to
3625press @key{RET} to exit fast tag selection - it will immediately exit
3626after the first change. If you then occasionally need more keys, press
3627@kbd{C-c} to turn off auto-exit for the current tag selection process
3628(in effect: start selection with @kbd{C-c C-c C-c} instead of @kbd{C-c
3629C-c}). If you set the variable to the value @code{expert}, the special
3630window is not even shown for single-key tag selection, it comes up only
3631when you press an extra @kbd{C-c}.
3632
3633@node Tag searches, , Setting tags, Tags
3634@section Tag searches
3635@cindex tag searches
3636@cindex searching for tags
3637
dbc28aaa 3638Once a system of tags has been set up, it can be used to collect related
4009494e
GM
3639information into special lists.
3640
3641@table @kbd
3642@kindex C-c \
dbc28aaa 3643@kindex C-c / T
4009494e 3644@item C-c \
dbc28aaa 3645@itemx C-c / T
4009494e
GM
3646Create a sparse tree with all headlines matching a tags search. With a
3647@kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
3648@kindex C-c a m
3649@item C-c a m
3650Create a global list of tag matches from all agenda files.
3651@xref{Matching tags and properties}.
3652@kindex C-c a M
3653@item C-c a M
3654Create a global list of tag matches from all agenda files, but check
3655only TODO items and force checking subitems (see variable
3656@code{org-tags-match-list-sublevels}).
3657@end table
3658
3659@cindex Boolean logic, for tag searches
3660A @i{tags} search string can use Boolean operators @samp{&} for AND and
3661@samp{|} for OR. @samp{&} binds more strongly than @samp{|}.
3662Parenthesis are currently not implemented. A tag may also be preceded
3663by @samp{-}, to select against it, and @samp{+} is syntactic sugar for
3664positive selection. The AND operator @samp{&} is optional when @samp{+}
3665or @samp{-} is present. Examples:
3666
3667@table @samp
dbc28aaa
CD
3668@item +work-boss
3669Select headlines tagged @samp{:work:}, but discard those also tagged
3670@samp{:boss:}.
3671@item work|laptop
3672Selects lines tagged @samp{:work:} or @samp{:laptop:}.
3673@item work|laptop&night
3674Like before, but require the @samp{:laptop:} lines to be tagged also
3675@samp{:night:}.
4009494e
GM
3676@end table
3677
3678@cindex TODO keyword matching, with tags search
e45e3595
CD
3679You may also test for TODO keywords (@pxref{TODO extensions}) and properties
3680(@pxref{Properties and Columns}) at the same time as matching tags. For a
3681guide on how to match properties, see @ref{Property searches}. To match a
3682specific TODO keyword, include an expression like @samp{+TODO="NEXT"} as one
3683of the terms in a tags search.
3684
3685There is also the possibility to end the tags part of the match (which may
3686include several terms connected with @samp{|}) with a @samp{/} and then
3687specify a Boolean expression just for TODO keywords. The syntax is then
3688similar to the tag matches, but should be applied with consideration: For
3689example, a positive selection on several TODO keywords can not meaningfully
3690be combined with boolean AND. However, @emph{negative selection} combined
3691with AND can be meaningful. To make sure that only lines are checked that
3692actually have any TODO keyword (resulting in a speed-up), use @kbd{C-c a M},
3693or equivalently start the TODO part after the slash with @samp{!}. Examples:
4009494e
GM
3694
3695@table @samp
e45e3595 3696@item work+TODO="WAITING"
dbc28aaa 3697Select @samp{:work:}-tagged TODO lines with the specific TODO
4009494e 3698keyword @samp{WAITING}.
e45e3595
CD
3699@item work+TODO="WAITING"|home+TODO="WAITING"
3700Waiting tasks both at work and at home.
3701@item work/WAITING
3702Same as the first example.
dbc28aaa
CD
3703@item work/!-WAITING-NEXT
3704Select @samp{:work:}-tagged TODO lines that are neither @samp{WAITING}
4009494e 3705nor @samp{NEXT}
e45e3595 3706@item work/!+WAITING|+NEXT
dbc28aaa 3707Select @samp{:work:}-tagged TODO lines that are either @samp{WAITING} or
4009494e
GM
3708@samp{NEXT}.
3709@end table
3710
3711@cindex regular expressions, with tags search
3712Any element of the tag/todo match can be a regular expression - in this
3713case it must be enclosed in curly braces. For example,
dbc28aaa 3714@samp{work+@{^boss.*@}} matches headlines that contain the tag
e45e3595
CD
3715@samp{:work:} and any tag @i{starting} with @samp{boss}. You may also use a
3716regular expression in @samp{TODO=@{^W@}} which would match TODO keywords
3717starting with the letter @samp{W}.
dbc28aaa
CD
3718
3719@cindex level, require for tags/property match
3720@cindex category, require for tags/property match
3721You can also require a headline to be of a certain level or category, by
3722writing instead of any TAG an expression like @samp{LEVEL=3} or
3723@samp{CATEGORY="work"}, respectively. For example, a search
3724@samp{+LEVEL=3+boss/-DONE} lists all level three headlines that have the
a7808fba 3725tag @samp{boss} and are @emph{not} marked with the TODO keyword DONE.
dbc28aaa 3726
e45e3595
CD
3727Accessing TODO, LEVEL, and CATEGORY during a search is fast. Accessing any
3728other properties will slow down the search.
3729
a7808fba 3730@node Properties and Columns, Dates and Times, Tags, Top
4009494e
GM
3731@chapter Properties and Columns
3732@cindex properties
3733
3734Properties are a set of key-value pairs associated with an entry. There
a7808fba 3735are two main applications for properties in Org mode. First, properties
dbc28aaa 3736are like tags, but with a value. Second, you can use properties to
a7808fba 3737implement (very basic) database capabilities in an Org buffer. For
dbc28aaa
CD
3738an example of the first application, imagine maintaining a file where
3739you document bugs and plan releases of a piece of software. Instead of
3740using tags like @code{:release_1:}, @code{:release_2:}, one can use a
3741property, say @code{:Release:}, that in different subtrees has different
3742values, such as @code{1.0} or @code{2.0}. For an example of the second
a7808fba 3743application of properties, imagine keeping track of your music CD's,
dbc28aaa
CD
3744where properties could be things such as the album artist, date of
3745release, number of tracks, and so on.
3746
28a16a1b 3747Properties can be conveniently edited and viewed in column view
dbc28aaa
CD
3748(@pxref{Column view}).
3749
4009494e
GM
3750@menu
3751* Property syntax:: How properties are spelled out
a7808fba 3752* Special properties:: Access to other Org mode features
4009494e 3753* Property searches:: Matching property values
dbc28aaa 3754* Property inheritance:: Passing values down the tree
4009494e
GM
3755* Column view:: Tabular viewing and editing
3756* Property API:: Properties for Lisp programmers
3757@end menu
3758
a7808fba
CD
3759@node Property syntax, Special properties, Properties and Columns, Properties and Columns
3760@section Property syntax
4009494e
GM
3761@cindex property syntax
3762@cindex drawer, for properties
3763
3764Properties are key-value pairs. They need to be inserted into a special
3765drawer (@pxref{Drawers}) with the name @code{PROPERTIES}. Each property
3766is specified on a single line, with the key (surrounded by colons)
3767first, and the value after it. Here is an example:
3768
3769@example
3770* CD collection
3771** Classic
3772*** Goldberg Variations
3773 :PROPERTIES:
3774 :Title: Goldberg Variations
3775 :Composer: J.S. Bach
28a16a1b 3776 :Artist: Glen Gould
4009494e
GM
3777 :Publisher: Deutsche Grammphon
3778 :NDisks: 1
28a16a1b 3779 :END:
4009494e
GM
3780@end example
3781
dbc28aaa
CD
3782You may define the allowed values for a particular property @samp{:Xyz:}
3783by setting a property @samp{:Xyz_ALL:}. This special property is
4009494e
GM
3784@emph{inherited}, so if you set it in a level 1 entry, it will apply to
3785the entire tree. When allowed values are defined, setting the
3786corresponding property becomes easier and is less prone to typing
3787errors. For the example with the CD collection, we can predefine
3788publishers and the number of disks in a box like this:
3789
3790@example
3791* CD collection
3792 :PROPERTIES:
3793 :NDisks_ALL: 1 2 3 4
3794 :Publisher_ALL: "Deutsche Grammophon" Phillips EMI
3795 :END:
3796@end example
3797
3798If you want to set properties that can be inherited by any entry in a
3799file, use a line like
3800
3801@example
3802#+PROPERTY: NDisks_ALL 1 2 3 4
3803@end example
3804
3805Property values set with the global variable
3806@code{org-global-properties} can be inherited by all entries in all
a7808fba 3807Org files.
4009494e
GM
3808
3809@noindent
3810The following commands help to work with properties:
3811
3812@table @kbd
3813@kindex M-@key{TAB}
3814@item M-@key{TAB}
3815After an initial colon in a line, complete property keys. All keys used
3816in the current file will be offered as possible completions.
dbc28aaa
CD
3817@kindex C-c C-x p
3818@item C-c C-x p
3819Set a property. This prompts for a property name and a value. If
3820necessary, the property drawer is created as well.
4009494e
GM
3821@item M-x org-insert-property-drawer
3822Insert a property drawer into the current entry. The drawer will be
3823inserted early in the entry, but after the lines with planning
3824information like deadlines.
3825@kindex C-c C-c
3826@item C-c C-c
3827With the cursor in a property drawer, this executes property commands.
3828@item C-c C-c s
3829Set a property in the current entry. Both the property and the value
3830can be inserted using completion.
3831@kindex S-@key{right}
3832@kindex S-@key{left}
3833@item S-@key{left}/@key{right}
3834Switch property at point to the next/previous allowed value.
3835@item C-c C-c d
3836Remove a property from the current entry.
3837@item C-c C-c D
3838Globally remove a property, from all entries in the current file.
dbc28aaa
CD
3839@item C-c C-c c
3840Compute the property at point, using the operator and scope from the
3841nearest column format definition.
4009494e
GM
3842@end table
3843
a7808fba
CD
3844@node Special properties, Property searches, Property syntax, Properties and Columns
3845@section Special properties
4009494e
GM
3846@cindex properties, special
3847
a7808fba 3848Special properties provide alternative access method to Org mode
4009494e
GM
3849features discussed in the previous chapters, like the TODO state or the
3850priority of an entry. This interface exists so that you can include
dbc28aaa
CD
3851these states into columns view (@pxref{Column view}), or to use them in
3852queries. The following property names are special and should not be
3853used as keys in the properties drawer:
4009494e
GM
3854
3855@example
3856TODO @r{The TODO keyword of the entry.}
3857TAGS @r{The tags defined directly in the headline.}
3858ALLTAGS @r{All tags, including inherited ones.}
3859PRIORITY @r{The priority of the entry, a string with a single letter.}
3860DEADLINE @r{The deadline time string, without the angular brackets.}
3861SCHEDULED @r{The scheduling time stamp, without the angular brackets.}
dbc28aaa
CD
3862TIMESTAMP @r{The first keyword-less time stamp in the entry.}
3863TIMESTAMP_IA @r{The first inactive time stamp in the entry.}
3864CLOCKSUM @r{The sum of CLOCK intervals in the subtree. @code{org-clock-sum}}
3865 @r{must be run first to compute the values.}
4009494e
GM
3866@end example
3867
a7808fba 3868@node Property searches, Property inheritance, Special properties, Properties and Columns
4009494e
GM
3869@section Property searches
3870@cindex properties, searching
dbc28aaa 3871@cindex searching, of properties
4009494e 3872
a7808fba
CD
3873To create sparse trees and special lists with selection based on properties,
3874the same commands are used as for tag searches (@pxref{Tag searches}), and
3875the same logic applies. For example, here is a search string:
4009494e
GM
3876
3877@example
44ce9197
CD
3878+work-boss+PRIORITY="A"+Coffee="unlimited"+Effort<2 \
3879 +With=@{Sarah\|Denny@}+SCHEDULED>="<2008-10-11>"
4009494e
GM
3880@end example
3881
3882@noindent
44ce9197
CD
3883The type of comparison will depend on how the comparison value is written:
3884@itemize @minus
3885@item
a7808fba
CD
3886If the comparison value is a plain number, a numerical comparison is done,
3887and the allowed operators are @samp{<}, @samp{=}, @samp{>}, @samp{<=},
44ce9197
CD
3888@samp{>=}, and @samp{<>}.
3889@item
3890If the comparison value is enclosed in double
3891quotes, a string comparison is done, and the same operators are allowed.
3892@item
3893If the comparison value is enclosed in double quotes @emph{and} angular
3894brackets (like @samp{DEADLINE<="<2008-12-24 18:30>"}), both values are
3895assumed to be date/time specifications in the standard Org way@footnote{The
3896only special values that will be recognized are @samp{"<now>"} for now, and
864c9740 3897@samp{"<today>"} today at 0:00 hours, i.e. without a time specification.}, and
44ce9197
CD
3898the comparison will be done accordingly.
3899@item
3900If the comparison value is enclosed
3901in curly braces, a regexp match is performed, with @samp{=} meaning that the
3902regexp matches the property value, and @samp{<>} meaning that it does not
3903match.
3904@end itemize
3905
3906So the search string in the example finds entries tagged @samp{:work:} but
3907not @samp{:boss:}, which also have a priority value @samp{A}, a
3908@samp{:Coffee:} property with the value @samp{unlimited}, an @samp{Effort}
3909property that is numerically smaller than 2, a @samp{:With:} property that is
3910matched by the regular expression @samp{Sarah\|Denny}, and that are scheduled
3911on or after October 11, 2008.
a7808fba
CD
3912
3913You can configure Org mode to use property inheritance during a search, but
3914beware that this can slow down searches considerably. See @ref{Property
3915inheritance} for details.
dbc28aaa
CD
3916
3917There is also a special command for creating sparse trees based on a
3918single property:
3919
3920@table @kbd
3921@kindex C-c / p
3922@item C-c / p
3923Create a sparse tree based on the value of a property. This first
3924prompts for the name of a property, and then for a value. A sparse tree
3925is created with all entries that define this property with the given
3926value. If you enclose the value into curly braces, it is interpreted as
3927a regular expression and matched against the property values.
3928@end table
3929
a7808fba 3930@node Property inheritance, Column view, Property searches, Properties and Columns
dbc28aaa 3931@section Property Inheritance
a7808fba
CD
3932@cindex properties, inheritance
3933@cindex inheritance, of properties
dbc28aaa 3934
a7808fba 3935The outline structure of Org mode documents lends itself for an
dbc28aaa 3936inheritance model of properties: If the parent in a tree has a certain
a7808fba 3937property, the children can inherit this property. Org mode does not
dbc28aaa
CD
3938turn this on by default, because it can slow down property searches
3939significantly and is often not needed. However, if you find inheritance
3940useful, you can turn it on by setting the variable
3941@code{org-use-property-inheritance}. It may be set to @code{t}, to make
a7808fba
CD
3942all properties inherited from the parent, to a list of properties
3943that should be inherited, or to a regular expression that matches
3944inherited properties.
dbc28aaa 3945
a7808fba 3946Org mode has a few properties for which inheritance is hard-coded, at
dbc28aaa
CD
3947least for the special applications for which they are used:
3948
3949@table @code
3950@item COLUMNS
3951The @code{:COLUMNS:} property defines the format of column view
3952(@pxref{Column view}). It is inherited in the sense that the level
3953where a @code{:COLUMNS:} property is defined is used as the starting
3954point for a column view table, independently of the location in the
3955subtree from where columns view is turned on.
3956@item CATEGORY
3957For agenda view, a category set through a @code{:CATEGORY:} property
3958applies to the entire subtree.
3959@item ARCHIVE
3960For archiving, the @code{:ARCHIVE:} property may define the archive
3961location for the entire subtree (@pxref{Moving subtrees}).
28a16a1b
CD
3962@item LOGGING
3963The LOGGING property may define logging settings for an entry or a
3964subtree (@pxref{Tracking TODO state changes}).
dbc28aaa
CD
3965@end table
3966
a7808fba
CD
3967@node Column view, Property API, Property inheritance, Properties and Columns
3968@section Column view
4009494e
GM
3969
3970A great way to view and edit properties in an outline tree is
3971@emph{column view}. In column view, each outline item is turned into a
3972table row. Columns in this table provide access to properties of the
a7808fba 3973entries. Org mode implements columns by overlaying a tabular structure
4009494e
GM
3974over the headline of each item. While the headlines have been turned
3975into a table row, you can still change the visibility of the outline
3976tree. For example, you get a compact table by switching to CONTENTS
3977view (@kbd{S-@key{TAB} S-@key{TAB}}, or simply @kbd{c} while column view
3978is active), but you can still open, read, and edit the entry below each
3979headline. Or, you can switch to column view after executing a sparse
3980tree command and in this way get a table only for the selected items.
a7808fba 3981Column view also works in agenda buffers (@pxref{Agenda Views}) where
4009494e
GM
3982queries have collected selected items, possibly from a number of files.
3983
3984@menu
3985* Defining columns:: The COLUMNS format property
3986* Using column view:: How to create and use column view
a7808fba 3987* Capturing column view:: A dynamic block for column view
4009494e
GM
3988@end menu
3989
3990@node Defining columns, Using column view, Column view, Column view
a7808fba 3991@subsection Defining columns
4009494e
GM
3992@cindex column view, for properties
3993@cindex properties, column view
3994
3995Setting up a column view first requires defining the columns. This is
3996done by defining a column format line.
3997
3998@menu
3999* Scope of column definitions:: Where defined, where valid?
4000* Column attributes:: Appearance and content of a column
4001@end menu
4002
4003@node Scope of column definitions, Column attributes, Defining columns, Defining columns
4004@subsubsection Scope of column definitions
4005
4006To define a column format for an entire file, use a line like
4007
4008@example
4009#+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
4010@end example
4011
dbc28aaa
CD
4012To specify a format that only applies to a specific tree, add a
4013@code{:COLUMNS:} property to the top node of that tree, for example:
4014
4009494e
GM
4015@example
4016** Top node for columns view
4017 :PROPERTIES:
4018 :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
4019 :END:
4020@end example
4021
dbc28aaa 4022If a @code{:COLUMNS:} property is present in an entry, it defines columns
4009494e
GM
4023for the entry itself, and for the entire subtree below it. Since the
4024column definition is part of the hierarchical structure of the document,
4025you can define columns on level 1 that are general enough for all
4026sublevels, and more specific columns further down, when you edit a
4027deeper part of the tree.
4028
4029@node Column attributes, , Scope of column definitions, Defining columns
4030@subsubsection Column attributes
4031A column definition sets the attributes of a column. The general
4032definition looks like this:
4033
4034@example
4035 %[width]property[(title)][@{summary-type@}]
4036@end example
4037
4038@noindent
4039Except for the percent sign and the property name, all items are
4040optional. The individual parts have the following meaning:
4041
4042@example
4043width @r{An integer specifying the width of the column in characters.}
4044 @r{If omitted, the width will be determined automatically.}
4045property @r{The property that should be edited in this column.}
4046(title) @r{The header text for the column. If omitted, the}
4047 @r{property name is used.}
4048@{summary-type@} @r{The summary type. If specified, the column values for}
4049 @r{parent nodes are computed from the children.}
4050 @r{Supported summary types are:}
dbc28aaa
CD
4051 @{+@} @r{Sum numbers in this column.}
4052 @{+;%.1f@} @r{Like @samp{+}, but format result with @samp{%.1f}.}
4053 @{$@} @r{Currency, short for @samp{+;%.2f}.}
4054 @{:@} @r{Sum times, HH:MM:SS, plain numbers are hours.}
4055 @{X@} @r{Checkbox status, [X] if all children are [X].}
28a16a1b
CD
4056 @{X/@} @r{Checkbox status, [n/m].}
4057 @{X%@} @r{Checkbox status, [n%].}
4009494e
GM
4058@end example
4059
4060@noindent
4061Here is an example for a complete columns definition, along with allowed
4062values.
4063
4064@example
dbc28aaa
CD
4065:COLUMNS: %20ITEM %9Approved(Approved?)@{X@} %Owner %11Status \@footnote{Please note that the COLUMNS definition must be on a single line - it is wrapped here only because of formatting constraints.}
4066 %10Time_Estimate@{:@} %CLOCKSUM
4009494e
GM
4067:Owner_ALL: Tammy Mark Karl Lisa Don
4068:Status_ALL: "In progress" "Not started yet" "Finished" ""
4069:Approved_ALL: "[ ]" "[X]"
4070@end example
4071
4072The first column, @samp{%25ITEM}, means the first 25 characters of the
4073item itself, i.e. of the headline. You probably always should start the
28a16a1b
CD
4074column definition with the @samp{ITEM} specifier. The other specifiers
4075create columns @samp{Owner} with a list of names as allowed values, for
4009494e
GM
4076@samp{Status} with four different possible values, and for a checkbox
4077field @samp{Approved}. When no width is given after the @samp{%}
4078character, the column will be exactly as wide as it needs to be in order
4079to fully display all values. The @samp{Approved} column does have a
4080modified title (@samp{Approved?}, with a question mark). Summaries will
dbc28aaa 4081be created for the @samp{Time_Estimate} column by adding time duration
4009494e 4082expressions like HH:MM, and for the @samp{Approved} column, by providing
dbc28aaa
CD
4083an @samp{[X]} status if all children have been checked. The
4084@samp{CLOCKSUM} column is special, it lists the sum of CLOCK intervals
4085in the subtree.
4009494e 4086
a7808fba
CD
4087@node Using column view, Capturing column view, Defining columns, Column view
4088@subsection Using column view
4009494e
GM
4089
4090@table @kbd
4091@tsubheading{Turning column view on and off}
4092@kindex C-c C-x C-c
4093@item C-c C-x C-c
4094Create the column view for the local environment. This command searches
dbc28aaa 4095the hierarchy, up from point, for a @code{:COLUMNS:} property that defines
4009494e 4096a format. When one is found, the column view table is established for
dbc28aaa 4097the entire tree, starting from the entry that contains the @code{:COLUMNS:}
4009494e
GM
4098property. If none is found, the format is taken from the @code{#+COLUMNS}
4099line or from the variable @code{org-columns-default-format}, and column
4100view is established for the current entry and its subtree.
28a16a1b
CD
4101@kindex r
4102@item r
a7808fba 4103Recreate the column view, to include recent changes made in the buffer.
28a16a1b
CD
4104@kindex g
4105@item g
4106Same as @kbd{r}.
4009494e
GM
4107@kindex q
4108@item q
4109Exit column view.
4110@tsubheading{Editing values}
4111@item @key{left} @key{right} @key{up} @key{down}
4112Move through the column view from field to field.
4113@kindex S-@key{left}
4114@kindex S-@key{right}
4115@item S-@key{left}/@key{right}
4116Switch to the next/previous allowed value of the field. For this, you
4117have to have specified allowed values for a property.
b349f79f
CD
4118@item 1..9,0
4119Directly select the nth allowed value, @kbd{0} selects the 10th value.
4009494e
GM
4120@kindex n
4121@kindex p
4122@itemx n / p
4123Same as @kbd{S-@key{left}/@key{right}}
4124@kindex e
4125@item e
4126Edit the property at point. For the special properties, this will
4127invoke the same interface that you normally use to change that
4128property. For example, when editing a TAGS property, the tag completion
4129or fast selection interface will pop up.
dbc28aaa
CD
4130@kindex C-c C-c
4131@item C-c C-c
4132When there is a checkbox at point, toggle it.
4009494e
GM
4133@kindex v
4134@item v
4135View the full value of this property. This is useful if the width of
4136the column is smaller than that of the value.
4137@kindex a
4138@item a
4139Edit the list of allowed values for this property. If the list is found
4140in the hierarchy, the modified values is stored there. If no list is
4141found, the new value is stored in the first entry that is part of the
4142current column view.
4143@tsubheading{Modifying the table structure}
4144@kindex <
4145@kindex >
4146@item < / >
4147Make the column narrower/wider by one character.
4148@kindex S-M-@key{right}
4149@item S-M-@key{right}
864c9740 4150Insert a new column, to the left of the current column.
4009494e
GM
4151@kindex S-M-@key{left}
4152@item S-M-@key{left}
4153Delete the current column.
4154@end table
4155
a7808fba
CD
4156@node Capturing column view, , Using column view, Column view
4157@subsection Capturing column view
dbc28aaa
CD
4158
4159Since column view is just an overlay over a buffer, it cannot be
4160exported or printed directly. If you want to capture a column view, use
a7808fba 4161this @code{columnview} dynamic block (@pxref{Dynamic blocks}). The frame
28a16a1b 4162of this block looks like this:
dbc28aaa 4163
b349f79f 4164@cindex #+BEGIN: columnview
dbc28aaa
CD
4165@example
4166* The column view
4167#+BEGIN: columnview :hlines 1 :id "label"
4168
4169#+END:
4170@end example
4171
4172@noindent This dynamic block has the following parameters:
4173
4174@table @code
4175@item :id
4176This is most important parameter. Column view is a feature that is
4177often localized to a certain (sub)tree, and the capture block might be
4178in a different location in the file. To identify the tree whose view to
4179capture, you can use 3 values:
4180@example
4181local @r{use the tree in which the capture block is located}
4182global @r{make a global view, including all headings in the file}
b349f79f
CD
4183"label" @r{call column view in the tree that has an @code{:ID:}}
4184 @r{property with the value @i{label}. You can use}
4185 @r{@kbd{M-x org-id-copy} to create a globally unique ID for}
4186 @r{the current entry and copy it to the kill-ring.}
dbc28aaa
CD
4187@end example
4188@item :hlines
4189When @code{t}, insert a hline after every line. When a number N, insert
4190a hline before each headline with level @code{<= N}.
4191@item :vlines
4192When set to @code{t}, enforce column groups to get vertical lines.
28a16a1b
CD
4193@item :maxlevel
4194When set to a number, don't capture entries below this level.
4195@item :skip-empty-rows
4196When set to @code{t}, skip row where the only non-empty specifier of the
4197column view is @code{ITEM}.
4198
dbc28aaa
CD
4199@end table
4200
4201@noindent
4202The following commands insert or update the dynamic block:
4203
4204@table @kbd
864c9740
CD
4205@kindex C-c C-x i
4206@item C-c C-x i
dbc28aaa
CD
4207Insert a dynamic block capturing a column view. You will be prompted
4208for the scope or id of the view.
4209@kindex C-c C-c
4210@item C-c C-c
4211@kindex C-c C-x C-u
4212@itemx C-c C-x C-u
4213Update dynamical block at point. The cursor needs to be in the
4214@code{#+BEGIN} line of the dynamic block.
4215@kindex C-u C-c C-x C-u
4216@item C-u C-c C-x C-u
4217Update all dynamic blocks (@pxref{Dynamic blocks}). This is useful if
a7808fba 4218you have several clock table blocks in a buffer.
dbc28aaa
CD
4219@end table
4220
864c9740
CD
4221You can add formulas to the column view table and you may add plotting
4222instructions in front of the table - these will survive an update of the
4223block. If there is a @code{#+TBLFM:} after the table, the table will
4224actually be recalculated automatically after an update.
4225
a7808fba 4226@node Property API, , Column view, Properties and Columns
4009494e
GM
4227@section The Property API
4228@cindex properties, API
4229@cindex API, for properties
4230
4231There is a full API for accessing and changing properties. This API can
4232be used by Emacs Lisp programs to work with properties and to implement
4233features based on them. For more information see @ref{Using the
4234property API}.
4235
864c9740 4236@node Dates and Times, Capture, Properties and Columns, Top
dbc28aaa
CD
4237@chapter Dates and Times
4238@cindex dates
4239@cindex times
4009494e
GM
4240@cindex time stamps
4241@cindex date stamps
4242
dbc28aaa
CD
4243To assist project planning, TODO items can be labeled with a date and/or
4244a time. The specially formatted string carrying the date and time
a7808fba 4245information is called a @emph{timestamp} in Org mode. This may be a
dbc28aaa 4246little confusing because timestamp is often used as indicating when
a7808fba 4247something was created or last changed. However, in Org mode this term
dbc28aaa 4248is used in a much wider sense.
4009494e
GM
4249
4250@menu
a7808fba 4251* Timestamps:: Assigning a time to a tree entry
4009494e
GM
4252* Creating timestamps:: Commands which insert timestamps
4253* Deadlines and scheduling:: Planning your work
a7808fba
CD
4254* Clocking work time:: Tracking how long you spend on a task
4255* Effort estimates:: Planning work effort in advance
4009494e
GM
4256@end menu
4257
4258
a7808fba
CD
4259@node Timestamps, Creating timestamps, Dates and Times, Dates and Times
4260@section Timestamps, deadlines and scheduling
4009494e
GM
4261@cindex time stamps
4262@cindex ranges, time
4263@cindex date stamps
4264@cindex deadlines
4265@cindex scheduling
4266
4267A time stamp is a specification of a date (possibly with time or a range
4268of times) in a special format, either @samp{<2003-09-16 Tue>} or
4269@samp{<2003-09-16 Tue 09:39>} or @samp{<2003-09-16 Tue
dbc28aaa
CD
427012:00-12:30>}@footnote{This is the standard ISO date/time format. To
4271use an alternative format, see @ref{Custom time format}.}. A time stamp
a7808fba 4272can appear anywhere in the headline or body of an Org tree entry. Its
dbc28aaa 4273presence causes entries to be shown on specific dates in the agenda
a7808fba 4274(@pxref{Weekly/daily agenda}). We distinguish:
4009494e
GM
4275
4276@table @var
dbc28aaa 4277@item Plain time stamp; Event; Appointment
4009494e
GM
4278@cindex timestamp
4279A simple time stamp just assigns a date/time to an item. This is just
dbc28aaa
CD
4280like writing down an appointment or event in a paper agenda. In the
4281timeline and agenda displays, the headline of an entry associated with a
4282plain time stamp will be shown exactly on that date.
4009494e
GM
4283
4284@example
4285* Meet Peter at the movies <2006-11-01 Wed 19:15>
4286* Discussion on climate change <2006-11-02 Thu 20:00-22:00>
4287@end example
4288
4289@item Time stamp with repeater interval
4290@cindex timestamp, with repeater interval
4291A time stamp may contain a @emph{repeater interval}, indicating that it
4292applies not only on the given date, but again and again after a certain
4293interval of N days (d), weeks (w), months(m), or years(y). The
4294following will show up in the agenda every Wednesday:
4295
4296@example
4297* Pick up Sam at school <2007-05-16 Wed 12:30 +1w>
4298@end example
4299
4300@item Diary-style sexp entries
a7808fba 4301For more complex date specifications, Org mode supports using the
4009494e
GM
4302special sexp diary entries implemented in the Emacs calendar/diary
4303package. For example
4304
4305@example
4306* The nerd meeting on every 2nd Thursday of the month
4307 <%%(diary-float t 4 2)>
4308@end example
4309
4310@item Time/Date range
4311@cindex timerange
4312@cindex date range
4313Two time stamps connected by @samp{--} denote a range. The headline
4314will be shown on the first and last day of the range, and on any dates
4315that are displayed and fall in the range. Here is an example:
4316
4317@example
4318** Meeting in Amsterdam
4319 <2004-08-23 Mon>--<2004-08-26 Thu>
4320@end example
4321
4322@item Inactive time stamp
4323@cindex timestamp, inactive
4324@cindex inactive timestamp
4325Just like a plain time stamp, but with square brackets instead of
4326angular ones. These time stamps are inactive in the sense that they do
4327@emph{not} trigger an entry to show up in the agenda.
4328
4329@example
4330* Gillian comes late for the fifth time [2006-11-01 Wed]
4331@end example
4332
4333@end table
4334
a7808fba 4335@node Creating timestamps, Deadlines and scheduling, Timestamps, Dates and Times
4009494e
GM
4336@section Creating timestamps
4337@cindex creating timestamps
4338@cindex timestamps, creating
4339
a7808fba 4340For Org mode to recognize time stamps, they need to be in the specific
4009494e
GM
4341format. All commands listed below produce time stamps in the correct
4342format.
4343
4344@table @kbd
4345@kindex C-c .
4346@item C-c .
864c9740
CD
4347Prompt for a date and insert a corresponding time stamp. When the cursor is
4348at an existing time stamp in the buffer, the command is used to modify this
4349timestamp instead of inserting a new one. When this command is used twice in
4350succession, a time range is inserted.
4009494e
GM
4351@c
4352@kindex C-u C-c .
4353@item C-u C-c .
4354Like @kbd{C-c .}, but use the alternative format which contains date
4355and time. The default time can be rounded to multiples of 5 minutes,
4356see the option @code{org-time-stamp-rounding-minutes}.
4357@c
4358@kindex C-c !
4359@item C-c !
4360Like @kbd{C-c .}, but insert an inactive time stamp that will not cause
4361an agenda entry.
4362@c
4363@kindex C-c <
4364@item C-c <
4365Insert a time stamp corresponding to the cursor date in the Calendar.
4366@c
4367@kindex C-c >
4368@item C-c >
4369Access the Emacs calendar for the current date. If there is a
a7808fba 4370timestamp in the current line, go to the corresponding date
4009494e
GM
4371instead.
4372@c
4373@kindex C-c C-o
4374@item C-c C-o
4375Access the agenda for the date given by the time stamp or -range at
a7808fba 4376point (@pxref{Weekly/daily agenda}).
4009494e
GM
4377@c
4378@kindex S-@key{left}
4379@kindex S-@key{right}
4380@item S-@key{left}
4381@itemx S-@key{right}
4382Change date at cursor by one day. These key bindings conflict with
a7808fba 4383CUA mode (@pxref{Conflicts}).
4009494e
GM
4384@c
4385@kindex S-@key{up}
4386@kindex S-@key{down}
4387@item S-@key{up}
4388@itemx S-@key{down}
4389Change the item under the cursor in a timestamp. The cursor can be on a
4390year, month, day, hour or minute. Note that if the cursor is in a
4391headline and not at a time stamp, these same keys modify the priority of
4392an item. (@pxref{Priorities}). The key bindings also conflict with
a7808fba 4393CUA mode (@pxref{Conflicts}).
4009494e
GM
4394@c
4395@kindex C-c C-y
4396@cindex evaluate time range
4397@item C-c C-y
a7808fba
CD
4398Evaluate a time range by computing the difference between start and end.
4399With a prefix argument, insert result after the time range (in a table: into
4400the following column).
4009494e
GM
4401@end table
4402
4403
4404@menu
a7808fba
CD
4405* The date/time prompt:: How Org mode helps you entering date and time
4406* Custom time format:: Making dates look different
4009494e
GM
4407@end menu
4408
4409@node The date/time prompt, Custom time format, Creating timestamps, Creating timestamps
4410@subsection The date/time prompt
4411@cindex date, reading in minibuffer
4412@cindex time, reading in minibuffer
4413
a7808fba 4414When Org mode prompts for a date/time, the default is shown as an ISO
dbc28aaa
CD
4415date, and the prompt therefore seems to ask for an ISO date. But it
4416will in fact accept any string containing some date and/or time
4417information, and it is really smart about interpreting your input. You
4418can, for example, use @kbd{C-y} to paste a (possibly multi-line) string
a7808fba 4419copied from an email message. Org mode will find whatever information
dbc28aaa
CD
4420is in there and derive anything you have not specified from the
4421@emph{default date and time}. The default is usually the current date
4422and time, but when modifying an existing time stamp, or when entering
4423the second stamp of a range, it is taken from the stamp in the buffer.
a7808fba 4424When filling in information, Org mode assumes that most of the time you
dbc28aaa
CD
4425will want to enter a date in the future: If you omit the month/year and
4426the given day/month is @i{before} today, it will assume that you mean a
4427future date@footnote{See the variable
4428@code{org-read-date-prefer-future}.}.
4429
4430For example, lets assume that today is @b{June 13, 2006}. Here is how
a7808fba 4431various inputs will be interpreted, the items filled in by Org mode are
dbc28aaa
CD
4432in @b{bold}.
4433
4434@example
44353-2-5 --> 2003-02-05
443614 --> @b{2006}-@b{06}-14
443712 --> @b{2006}-@b{07}-12
4438Fri --> nearest Friday (defaultdate or later)
4439sep 15 --> @b{2006}-11-15
4440feb 15 --> @b{2007}-02-15
4441sep 12 9 --> 2009-09-12
444212:45 --> @b{2006}-@b{06}-@b{13} 12:45
444322 sept 0:34 --> @b{2006}-09-22 0:34
a7808fba
CD
4444w4 --> ISO week for of the current year @b{2006}
44452012 w4 fri --> Friday of ISO week 4 in 2012
44462012-w04-5 --> Same as above
dbc28aaa
CD
4447@end example
4448
4449Furthermore you can specify a relative date by giving, as the
4450@emph{first} thing in the input: a plus/minus sign, a number and a
4451letter [dwmy] to indicate change in days weeks, months, years. With a
4452single plus or minus, the date is always relative to today. With a
4453double plus or minus, it is relative to the default date. If instead of
4454a single letter, you use the abbreviation of day name, the date will be
4455the nth such day. E.g.
4456
4457@example
b349f79f
CD
4458+0 --> today
4459. --> today
dbc28aaa
CD
4460+4d --> four days from today
4461+4 --> same as above
4462+2w --> two weeks from today
4463++5 --> five days from default date
4464+2tue --> second tuesday from now.
4009494e
GM
4465@end example
4466
4467The function understands English month and weekday abbreviations. If
4468you want to use unabbreviated names and/or other languages, configure
4469the variables @code{parse-time-months} and @code{parse-time-weekdays}.
4470
4471@cindex calendar, for selecting date
4472Parallel to the minibuffer prompt, a calendar is popped up@footnote{If
4473you don't need/want the calendar, configure the variable
4474@code{org-popup-calendar-for-date-prompt}.}. When you exit the date
4475prompt, either by clicking on a date in the calendar, or by pressing
4476@key{RET}, the date selected in the calendar will be combined with the
4477information entered at the prompt. You can control the calendar fully
4478from the minibuffer:
4479
4009494e 4480@kindex <
4009494e 4481@kindex >
4009494e 4482@kindex mouse-1
4009494e 4483@kindex S-@key{right}
4009494e 4484@kindex S-@key{left}
4009494e 4485@kindex S-@key{down}
4009494e 4486@kindex S-@key{up}
4009494e 4487@kindex M-S-@key{right}
4009494e 4488@kindex M-S-@key{left}
4009494e 4489@kindex @key{RET}
dbc28aaa
CD
4490@example
4491> / < @r{Scroll calendar forward/backward by one month.}
4492mouse-1 @r{Select date by clicking on it.}
4493S-@key{right}/@key{left} @r{One day forward/backward.}
4494S-@key{down}/@key{up} @r{One week forward/backward.}
4495M-S-@key{right}/@key{left} @r{One month forward/backward.}
4496@key{RET} @r{Choose date in calendar.}
4497@end example
4498
a7808fba
CD
4499The actions of the date/time prompt may seem complex, but I assure you they
4500will grow on you, and you will start getting annoyed by pretty much any other
4501way of entering a date/time out there. To help you understand what is going
4502on, the current interpretation of your input will be displayed live in the
4503minibuffer@footnote{If you find this distracting, turn the display of with
4504@code{org-read-date-display-live}.}.
4009494e
GM
4505
4506@node Custom time format, , The date/time prompt, Creating timestamps
4507@subsection Custom time format
4508@cindex custom date/time format
4509@cindex time format, custom
4510@cindex date format, custom
4511
a7808fba 4512Org mode uses the standard ISO notation for dates and times as it is
4009494e
GM
4513defined in ISO 8601. If you cannot get used to this and require another
4514representation of date and time to keep you happy, you can get it by
4515customizing the variables @code{org-display-custom-times} and
4516@code{org-time-stamp-custom-formats}.
4517
4518@table @kbd
4519@kindex C-c C-x C-t
4520@item C-c C-x C-t
4521Toggle the display of custom formats for dates and times.
4522@end table
4523
4524@noindent
a7808fba 4525Org mode needs the default format for scanning, so the custom date/time
4009494e
GM
4526format does not @emph{replace} the default format - instead it is put
4527@emph{over} the default format using text properties. This has the
4528following consequences:
4529@itemize @bullet
28a16a1b 4530@item
4009494e
GM
4531You cannot place the cursor onto a time stamp anymore, only before or
4532after.
4533@item
4534The @kbd{S-@key{up}/@key{down}} keys can no longer be used to adjust
4535each component of a time stamp. If the cursor is at the beginning of
4536the stamp, @kbd{S-@key{up}/@key{down}} will change the stamp by one day,
4537just like @kbd{S-@key{left}/@key{right}}. At the end of the stamp, the
4538time will be changed by one minute.
4539@item
4540If the time stamp contains a range of clock times or a repeater, these
4541will not be overlayed, but remain in the buffer as they were.
4542@item
4543When you delete a time stamp character-by-character, it will only
4544disappear from the buffer after @emph{all} (invisible) characters
4545belonging to the ISO timestamp have been removed.
4546@item
4547If the custom time stamp format is longer than the default and you are
4548using dates in tables, table alignment will be messed up. If the custom
4549format is shorter, things do work as expected.
4550@end itemize
4551
4552
a7808fba
CD
4553@node Deadlines and scheduling, Clocking work time, Creating timestamps, Dates and Times
4554@section Deadlines and scheduling
4009494e 4555
dbc28aaa 4556A time stamp may be preceded by special keywords to facilitate planning:
4009494e
GM
4557
4558@table @var
4559@item DEADLINE
4560@cindex DEADLINE keyword
dbc28aaa
CD
4561
4562Meaning: the task (most likely a TODO item, though not necessarily) is supposed
4563to be finished on that date.
4564
4565On the deadline date, the task will be listed in the agenda. In
4566addition, the agenda for @emph{today} will carry a warning about the
4567approaching or missed deadline, starting
4568@code{org-deadline-warning-days} before the due date, and continuing
4569until the entry is marked DONE. An example:
4009494e
GM
4570
4571@example
4572*** TODO write article about the Earth for the Guide
4573 The editor in charge is [[bbdb:Ford Prefect]]
4574 DEADLINE: <2004-02-29 Sun>
4575@end example
4576
4577You can specify a different lead time for warnings for a specific
4578deadlines using the following syntax. Here is an example with a warning
4579period of 5 days @code{DEADLINE: <2004-02-29 Sun -5d>}.
4580
4581@item SCHEDULED
4582@cindex SCHEDULED keyword
dbc28aaa
CD
4583
4584Meaning: you are planning to start working on that task on the given
4585date.
4586
4587The headline will be listed under the given date@footnote{It will still
4588be listed on that date after it has been marked DONE. If you don't like
4009494e
GM
4589this, set the variable @code{org-agenda-skip-scheduled-if-done}.}. In
4590addition, a reminder that the scheduled date has passed will be present
4591in the compilation for @emph{today}, until the entry is marked DONE.
4592I.e., the task will automatically be forwarded until completed.
4593
4594@example
4595*** TODO Call Trillian for a date on New Years Eve.
4596 SCHEDULED: <2004-12-25 Sat>
4597@end example
dbc28aaa
CD
4598
4599@noindent
a7808fba 4600@b{Important:} Scheduling an item in Org mode should @i{not} be
dbc28aaa
CD
4601understood in the same way that we understand @i{scheduling a meeting}.
4602Setting a date for a meeting is just a simple appointment, you should
4603mark this entry with a simple plain time stamp, to get this item shown
4604on the date where it applies. This is a frequent mis-understanding from
a7808fba 4605Org-users. In Org mode, @i{scheduling} means setting a date when you
dbc28aaa 4606want to start working on an action item.
4009494e
GM
4607@end table
4608
dbc28aaa 4609You may use time stamps with repeaters in scheduling and deadline
a7808fba 4610entries. Org mode will issue early and late warnings based on the
dbc28aaa
CD
4611assumption that the time stamp represents the @i{nearest instance} of
4612the repeater. However, the use of diary sexp entries like
4613@c
4614@code{<%%(diary-float t 42)>}
4615@c
a7808fba 4616in scheduling and deadline timestamps is limited. Org mode does not
dbc28aaa
CD
4617know enough about the internals of each sexp function to issue early and
4618late warnings. However, it will show the item on each day where the
4619sexp entry matches.
4620
4009494e
GM
4621@menu
4622* Inserting deadline/schedule:: Planning items
4623* Repeated tasks:: Items that show up again and again
4624@end menu
4625
4626@node Inserting deadline/schedule, Repeated tasks, Deadlines and scheduling, Deadlines and scheduling
a7808fba 4627@subsection Inserting deadlines or schedules
4009494e
GM
4628
4629The following commands allow to quickly insert a deadline or to schedule
4630an item:
4631
4632@table @kbd
4633@c
4634@kindex C-c C-d
4635@item C-c C-d
4636Insert @samp{DEADLINE} keyword along with a stamp. The insertion will
dbc28aaa
CD
4637happen in the line directly following the headline. When called with a
4638prefix arg, an existing deadline will be removed from the entry.
4009494e
GM
4639@c FIXME Any CLOSED timestamp will be removed.????????
4640@c
dbc28aaa 4641@kindex C-c / d
4009494e 4642@cindex sparse tree, for deadlines
dbc28aaa 4643@item C-c / d
4009494e
GM
4644Create a sparse tree with all deadlines that are either past-due, or
4645which will become due within @code{org-deadline-warning-days}.
4646With @kbd{C-u} prefix, show all deadlines in the file. With a numeric
dbc28aaa 4647prefix, check that many days. For example, @kbd{C-1 C-c / d} shows
4009494e
GM
4648all deadlines due tomorrow.
4649@c
4650@kindex C-c C-s
4651@item C-c C-s
4652Insert @samp{SCHEDULED} keyword along with a stamp. The insertion will
4653happen in the line directly following the headline. Any CLOSED
dbc28aaa
CD
4654timestamp will be removed. When called with a prefix argument, remove
4655the scheduling date from the entry.
b349f79f
CD
4656@c
4657@kindex C-c C-x C-k
4658@kindex k a
4659@kindex k s
4660@item C-c C-x C-k
4661Mark the current entry for agenda action. After you have marked the entry
4662like this, you can open the agenda or the calendar to find an appropriate
4663date. With the cursor on the selected date, press @kbd{k s} or @kbd{k d} to
4664schedule the marked item.
4009494e
GM
4665@end table
4666
4667@node Repeated tasks, , Inserting deadline/schedule, Deadlines and scheduling
a7808fba 4668@subsection Repeated tasks
4009494e 4669
a7808fba 4670Some tasks need to be repeated again and again. Org mode helps to
28a16a1b
CD
4671organize such tasks using a so-called repeater in a DEADLINE, SCHEDULED,
4672or plain time stamp. In the following example
4009494e
GM
4673@example
4674** TODO Pay the rent
4675 DEADLINE: <2005-10-01 Sat +1m>
4676@end example
dbc28aaa
CD
4677the @code{+1m} is a repeater; the intended interpretation is that the
4678task has a deadline on <2005-10-01> and repeats itself every (one) month
28a16a1b
CD
4679starting from that time. If you need both a repeater and a special
4680warning period in a deadline entry, the repeater comes first and the
4681warning period last: @code{DEADLINE: <2005-10-01 Sat +1m -3d>}.
4009494e
GM
4682
4683Deadlines and scheduled items produce entries in the agenda when they
4684are over-due, so it is important to be able to mark such an entry as
4685completed once you have done so. When you mark a DEADLINE or a SCHEDULE
a7808fba 4686with the TODO keyword DONE, it will no longer produce entries in the
28a16a1b 4687agenda. The problem with this is, however, that then also the
a7808fba 4688@emph{next} instance of the repeated entry will not be active. Org mode
4009494e
GM
4689deals with this in the following way: When you try to mark such an entry
4690DONE (using @kbd{C-c C-t}), it will shift the base date of the repeating
4691time stamp by the repeater interval, and immediately set the entry state
4692back to TODO. In the example above, setting the state to DONE would
4693actually switch the date like this:
4694
4695@example
4696** TODO Pay the rent
4697 DEADLINE: <2005-11-01 Tue +1m>
4698@end example
4699
a7808fba
CD
4700A timestamp@footnote{You can change this using the option
4701@code{org-log-repeat}, or the @code{#+STARTUP} options @code{logrepeat},
4702@code{lognoterepeat}, and @code{nologrepeat}. With @code{lognoterepeat}, you
4703will aslo be prompted for a note.} will be added under the deadline, to keep
4704a record that you actually acted on the previous instance of this deadline.
4009494e
GM
4705
4706As a consequence of shifting the base date, this entry will no longer be
4707visible in the agenda when checking past dates, but all future instances
4708will be visible.
4709
28a16a1b
CD
4710With the @samp{+1m} cookie, the date shift will always be exactly one
4711month. So if you have not payed the rent for three months, marking this
4712entry DONE will still keep it as an overdue deadline. Depending on the
4713task, this may not be the best way to handle it. For example, if you
4714forgot to call you father for 3 weeks, it does not make sense to call
a7808fba 4715him 3 times in a single day to make up for it. Finally, there are tasks
28a16a1b 4716like changing batteries which should always repeat a certain time
a7808fba
CD
4717@i{after} the last time you did it. For these tasks, Org mode has
4718special repeaters markers with @samp{++} and @samp{.+}. For example:
28a16a1b
CD
4719
4720@example
4721** TODO Call Father
4722 DEADLINE: <2008-02-10 Sun ++1w>
4723 Marking this DONE will shift the date by at least one week,
4724 but also by as many weeks as it takes to get this date into
4725 the future. However, it stays on a Sunday, even if you called
4726 and marked it done on Saturday.
4727** TODO Check the batteries in the smoke detectors
4728 DEADLINE: <2005-11-01 Tue .+1m>
4729 Marking this DONE will shift the date to one month after
4730 today.
4731@end example
4732
4009494e
GM
4733You may have both scheduling and deadline information for a specific
4734task - just make sure that the repeater intervals on both are the same.
4735
a7808fba 4736@node Clocking work time, Effort estimates, Deadlines and scheduling, Dates and Times
dbc28aaa 4737@section Clocking work time
4009494e 4738
a7808fba 4739Org mode allows you to clock the time you spent on specific tasks in a
4009494e
GM
4740project. When you start working on an item, you can start the clock.
4741When you stop working on that task, or when you mark the task done, the
4742clock is stopped and the corresponding time interval is recorded. It
4743also computes the total time spent on each subtree of a project.
4744
4745@table @kbd
4746@kindex C-c C-x C-i
4747@item C-c C-x C-i
4748Start the clock on the current item (clock-in). This inserts the CLOCK
dbc28aaa
CD
4749keyword together with a timestamp. If this is not the first clocking of
4750this item, the multiple CLOCK lines will be wrapped into a
4751@code{:CLOCK:} drawer (see also the variable
a7808fba
CD
4752@code{org-clock-into-drawer}). When called with a @kbd{C-u} prefix argument,
4753select the task from a list of recently clocked tasks. With two @kbd{C-u
4754C-u} prefixes, clock into the task at point and mark it as the default task.
4755The default task will always be available when selecting a clocking task,
4756with letter @kbd{d}.
4009494e
GM
4757@kindex C-c C-x C-o
4758@item C-c C-x C-o
4759Stop the clock (clock-out). The inserts another timestamp at the same
4760location where the clock was last started. It also directly computes
4761the resulting time in inserts it after the time range as @samp{=>
28a16a1b
CD
4762HH:MM}. See the variable @code{org-log-note-clock-out} for the
4763possibility to record an additional note together with the clock-out
4764time stamp@footnote{The corresponding in-buffer setting is:
4765@code{#+STARTUP: lognoteclock-out}}.
4009494e
GM
4766@kindex C-c C-y
4767@item C-c C-y
4768Recompute the time interval after changing one of the time stamps. This
4769is only necessary if you edit the time stamps directly. If you change
4770them with @kbd{S-@key{cursor}} keys, the update is automatic.
4771@kindex C-c C-t
4772@item C-c C-t
4773Changing the TODO state of an item to DONE automatically stops the clock
4774if it is running in this same item.
4775@kindex C-c C-x C-x
4776@item C-c C-x C-x
4777Cancel the current clock. This is useful if a clock was started by
4778mistake, or if you ended up working on something else.
dbc28aaa
CD
4779@kindex C-c C-x C-j
4780@item C-c C-x C-j
a7808fba
CD
4781Jump to the entry that contains the currently running clock. With a
4782@kbd{C-u} prefix arg, select the target task from a list of recently clocked
4783tasks.
4009494e
GM
4784@kindex C-c C-x C-d
4785@item C-c C-x C-d
4786Display time summaries for each subtree in the current buffer. This
4787puts overlays at the end of each headline, showing the total time
4788recorded under that heading, including the time of any subheadings. You
4789can use visibility cycling to study the tree, but the overlays disappear
4790when you change the buffer (see variable
4791@code{org-remove-highlights-with-change}) or press @kbd{C-c C-c}.
4792@kindex C-c C-x C-r
4793@item C-c C-x C-r
4794Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
a7808fba 4795report as an Org mode table into the current file. When the cursor is
dbc28aaa
CD
4796at an existing clock table, just update it. When called with a prefix
4797argument, jump to the first clock report in the current document and
4798update it.
b349f79f 4799@cindex #+BEGIN: clocktable
4009494e 4800@example
dbc28aaa 4801#+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
4009494e
GM
4802#+END: clocktable
4803@end example
4804@noindent
dbc28aaa
CD
4805If such a block already exists at point, its content is replaced by the
4806new table. The @samp{BEGIN} line can specify options:
4009494e 4807@example
dbc28aaa 4808:maxlevel @r{Maximum level depth to which times are listed in the table.}
4009494e 4809:emphasize @r{When @code{t}, emphasize level one and level two items}
dbc28aaa
CD
4810:scope @r{The scope to consider. This can be any of the following:}
4811 nil @r{the current buffer or narrowed region}
4812 file @r{the full current buffer}
4813 subtree @r{the subtree where the clocktable is located}
4814 treeN @r{the surrounding level N tree, for example @code{tree3}}
4815 tree @r{the surrounding level 1 tree}
4816 agenda @r{all agenda files}
4817 ("file"..) @r{scan these files}
a7808fba
CD
4818 file-with-archives @r{current file and its archives}
4819 agenda-with-archives @r{all agenda files, including archives}
4820:block @r{The time block to consider. This block is specified either}
4821 @r{absolute, or relative to the current time and may be any of}
4822 @r{these formats:}
4823 2007-12-31 @r{New year eve 2007}
4824 2007-12 @r{December 2007}
4825 2007-W50 @r{ISO-week 50 in 2007}
4826 2007 @r{the year 2007}
4827 today, yesterday, today-N @r{a relative day}
4828 thisweek, lastweek, thisweek-N @r{a relative week}
4829 thismonth, lastmonth, thismonth-N @r{a relative month}
4830 thisyear, lastyear, thisyear-N @r{a relative year}
4831 @r{Use @kbd{S-@key{left}/@key{right}} keys to shift the time interval.}
4009494e
GM
4832:tstart @r{A time string specifying when to start considering times}
4833:tend @r{A time string specifying when to stop considering times}
a7808fba
CD
4834:step @r{@code{week} or @code{day}, to split the table into chunks.}
4835 @r{To use this, @code{:block} or @code{:tstart}, @code{:tend} are needed.}
28a16a1b 4836:link @r{Link the item headlines in the table to their origins}
e45e3595
CD
4837:formula @r{Content of a @code{#+TBLFM} line to be added and evaluated.}
4838 @r{As a special case, @samp{:formula %} adds column with % time.}
4839 @r{If you do not specify a formula here, any existing formula}
4840 @r{below the clock table will survive updates and be evaluated.}
4009494e 4841@end example
dbc28aaa
CD
4842So to get a clock summary of the current level 1 tree, for the current
4843day, you could write
4009494e 4844@example
a7808fba 4845#+BEGIN: clocktable :maxlevel 2 :block today :scope tree1 :link t
4009494e
GM
4846#+END: clocktable
4847@end example
4848and to use a specific time range you could write@footnote{Note that all
4849parameters must be specified in a single line - the line is broken here
4850only to fit it onto the manual.}
4851@example
28a16a1b 4852#+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>"
4009494e 4853 :tend "<2006-08-10 Thu 12:00>"
4009494e
GM
4854#+END: clocktable
4855@end example
e45e3595
CD
4856A summary of the current subtree with % times would be
4857@example
4858#+BEGIN: clocktable :scope subtree :link t :formula %
4859#+END: clocktable
4860@end example
dbc28aaa
CD
4861@kindex C-c C-c
4862@item C-c C-c
4863@kindex C-c C-x C-u
4864@itemx C-c C-x C-u
4865Update dynamical block at point. The cursor needs to be in the
4866@code{#+BEGIN} line of the dynamic block.
4009494e
GM
4867@kindex C-u C-c C-x C-u
4868@item C-u C-c C-x C-u
4869Update all dynamic blocks (@pxref{Dynamic blocks}). This is useful if
a7808fba
CD
4870you have several clock table blocks in a buffer.
4871@kindex S-@key{left}
4872@kindex S-@key{right}
4873@item S-@key{left}
4874@itemx S-@key{right}
4875Shift the current @code{:block} interval and update the table. The cursor
4876needs to be in the @code{#+BEGIN: clocktable} line for this command. If
4877@code{:block} is @code{today}, it will be shifted to @code{today-1} etc.
4009494e
GM
4878@end table
4879
4880The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
a7808fba 4881the agenda (@pxref{Weekly/daily agenda}) to show which tasks have been
4009494e
GM
4882worked on or closed during a day.
4883
b349f79f 4884@node Effort estimates, , Clocking work time, Dates and Times
a7808fba
CD
4885@section Effort estimates
4886@cindex Effort estimates
4887
4888If you want to plan your work in a very detailed way, or if you need to
4889produce offers with quotations of the estimated work effort, you may want to
4890assign effort estimates to entries. If you are also clocking your work, you
4891may later want to compare the planned effort with the actual working time, a
4892great way to improve planning estimates. Effort estimates are stored in a
4893special property @samp{Effort}@footnote{You may change the property being
4894used with the variable @code{org-effort-property}.}. Clearly the best way to
4895work with effort estimates is through column view (@pxref{Column view}). You
4896should start by setting up discrete values for effort estimates, and a
4897@code{COLUMNS} format that displays these values together with clock sums (if
4898you want to clock your time). For a specific buffer you can use
4899
4900@example
4901#+PROPERTY: Effort_ALL 0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00 8:00
4902#+COLUMNS: %40ITEM(Task) %17Effort(Estimated Effort)@{:@} %CLOCKSUM
4903@end example
4904
4905@noindent
71d35b24
CD
4906or, even better, you can set up these values globally by customizing the
4907variables @code{org-global-properties} and @code{org-columns-default-format}.
4908In particular if you want to use this setup also in the agenda, a global
4909setup may be advised.
a7808fba
CD
4910
4911The way to assign estimates to individual items is then to switch to column
4912mode, and to use @kbd{S-@key{right}} and @kbd{S-@key{left}} to change the
4913value. The values you enter will immediately be summed up in the hierarchy.
4914In the column next to it, any clocked time will be displayed.
4915
4916If you switch to column view in the daily/weekly agenda, the effort column
4917will summarize the estimated work effort for each day@footnote{Please note
4918the pitfalls of summing hierarchical data in a flat list (@pxref{Agenda
b349f79f 4919column view}).}, and you can use this to find space in your schedule. To get
a7808fba
CD
4920an overview of the entire part of the day that is committed, you can set the
4921option @code{org-agenda-columns-add-appointments-to-effort-sum}. The
4922appointments on a day that take place over a specified time interval will
4923then also be added to the load estimate of the day.
4924
71d35b24
CD
4925Effort estimates can be used in secondary agenda filtering that is triggered
4926with the @kbd{/} key in the agenda (@pxref{Agenda commands}). If you have
4927these estimates defined consistently, two or three key presses will narrow
4928down the list to stuff that fits into an available time slot.
864c9740
CD
4929
4930@node Capture, Agenda Views, Dates and Times, Top
4931@chapter Capture
4932@cindex capture
4933
4934An important part of any organization system is the ability to quickly
4935capture new ideas and tasks, and to associate reference material with them.
4936Org uses the @file{remember} package to create tasks, and stores files
4937related to a task (@i{attachments}) in a special directory.
4938
4939@menu
4940* Remember:: Capture new tasks/ideas with little interruption
4941* Attachments:: Add files to tasks.
4942@end menu
4943
4944@node Remember, Attachments, Capture, Capture
4945@section Remember
dbc28aaa
CD
4946@cindex @file{remember.el}
4947
4948The @i{Remember} package by John Wiegley lets you store quick notes with
4949little interruption of your work flow. See
4950@uref{http://www.emacswiki.org/cgi-bin/wiki/RememberMode} for more
4951information. It is an excellent way to add new notes and tasks to
a7808fba 4952Org files. Org significantly expands the possibilities of
dbc28aaa
CD
4953@i{remember}: You may define templates for different note types, and
4954associate target files and headlines with specific templates. It also
4955allows you to select the location where a note should be stored
4956interactively, on the fly.
4957
4958@menu
a7808fba 4959* Setting up Remember:: Some code for .emacs to get things going
dbc28aaa
CD
4960* Remember templates:: Define the outline of different note types
4961* Storing notes:: Directly get the note to where it belongs
4962* Refiling notes:: Moving a note or task to a project
4963@end menu
4964
a7808fba 4965@node Setting up Remember, Remember templates, Remember, Remember
864c9740 4966@subsection Setting up Remember
dbc28aaa
CD
4967
4968The following customization will tell @i{remember} to use org files as
a7808fba 4969target, and to create annotations compatible with Org links.
dbc28aaa
CD
4970
4971@example
4972(org-remember-insinuate)
4973(setq org-directory "~/path/to/my/orgfiles/")
4974(setq org-default-notes-file (concat org-directory "/notes.org"))
4975(define-key global-map "\C-cr" 'org-remember)
4976@end example
4977
4978The last line binds the command @code{org-remember} to a global
4979key@footnote{Please select your own key, @kbd{C-c r} is only a
4980suggestion.}. @code{org-remember} basically just calls @code{remember},
4981but it makes a few things easier: If there is an active region, it will
4982automatically copy the region into the remember buffer. It also allows
4983to jump to the buffer and location where remember notes are being
28a16a1b 4984stored: Just call @code{org-remember} with a prefix argument. If you
a7808fba 4985use two prefix arguments, Org jumps to the location where the last
28a16a1b 4986remember note was stored.
dbc28aaa 4987
b349f79f
CD
4988You can also call @code{org-remember} in a special way from the agenda,
4989using the @kbd{k r} key combination. With this access, any time stamps
4990inserted by the selected remember template (see below) will default to
4991the cursor date in the agenda, rather than to the current date.
4992
a7808fba 4993@node Remember templates, Storing notes, Setting up Remember, Remember
864c9740 4994@subsection Remember templates
dbc28aaa
CD
4995@cindex templates, for remember
4996
a7808fba 4997In combination with Org, you can use templates to generate
dbc28aaa
CD
4998different types of @i{remember} notes. For example, if you would like
4999to use one template to create general TODO entries, another one for
5000journal entries, and a third one for collecting random ideas, you could
5001use:
5002
5003@example
5004(setq org-remember-templates
5005 '(("Todo" ?t "* TODO %?\n %i\n %a" "~/org/TODO.org" "Tasks")
5006 ("Journal" ?j "* %U %?\n\n %i\n %a" "~/org/JOURNAL.org")
5007 ("Idea" ?i "* %^@{Title@}\n %i\n %a" "~/org/JOURNAL.org" "New Ideas")))
5008@end example
5009
5010@noindent In these entries, the first string is just a name, and the
5011character specifies how to select the template. It is useful if the
b349f79f
CD
5012character is also the first letter of the name. The next string specifies
5013the template. Two more (optional) strings give the file in which, and the
5014headline under which the new note should be stored. The file (if not present
5015or @code{nil}) defaults to @code{org-default-notes-file}, the heading to
5016@code{org-remember-default-headline}. If the file name is not an absolute
5017path, it will be interpreted relative to @code{org-directory}. The heading
5018can also be the symbols @code{top} or @code{bottom} to send note as level 1
5019entries to the beginning or end of the file, respectively.
5020
5021An optional sixth element specifies the contexts in which the user can select
5022the template. This element can be a list of major modes or a function.
5023@code{org-remember} will first check whether the function returns @code{t} or
5024if we are in any of the listed major mode, and exclude templates fo which
5025this condition is not fulfilled. Templates that do not specify this element
5026at all, or that use @code{nil} or @code{t} as a value will always be
5027selectable.
28a16a1b
CD
5028
5029So for example:
5030
5031@example
5032(setq org-remember-templates
5033 '(("Bug" ?b "* BUG %?\n %i\n %a" "~/org/BUGS.org" "Bugs" (emacs-lisp-mode))
b349f79f 5034 ("Journal" ?j "* %U %?\n\n %i\n %a" "~/org/JOURNAL.org" "X" my-check)
28a16a1b
CD
5035 ("Idea" ?i "* %^@{Title@}\n %i\n %a" "~/org/JOURNAL.org" "New Ideas")))
5036@end example
5037
5038The first template will only be available when invoking @code{org-remember}
5039from an buffer in @code{emacs-lisp-mode}. The second template will only be
5040available when the function @code{my-check} returns @code{t}. The third
5041template will be proposed in any context.
5042
b349f79f
CD
5043When you call @kbd{M-x org-remember} (or @kbd{M-x remember}) to remember
5044something, Org will prompt for a key to select the template (if you have
dbc28aaa
CD
5045more than one template) and then prepare the buffer like
5046@example
5047* TODO
5048 [[file:link to where you called remember]]
5049@end example
5050
5051@noindent
5052During expansion of the template, special @kbd{%}-escapes allow dynamic
5053insertion of content:
5054@example
5055%^@{prompt@} @r{prompt the user for a string and replace this sequence with it.}
5056 @r{You may specify a default value and a completion table with}
5057 @r{%^@{prompt|default|completion2|completion3...@}}
5058 @r{The arrow keys access a prompt-specific history.}
b349f79f
CD
5059%a @r{annotation, normally the link created with @code{org-store-link}}
5060%A @r{like @code{%a}, but prompt for the description part}
5061%i @r{initial content, the region when remember is called with C-u.}
5062 @r{The entire text will be indented like @code{%i} itself.}
dbc28aaa
CD
5063%t @r{time stamp, date only}
5064%T @r{time stamp with date and time}
5065%u, %U @r{like the above, but inactive time stamps}
5066%^t @r{like @code{%t}, but prompt for date. Similarly @code{%^T}, @code{%^u}, @code{%^U}}
5067 @r{You may define a prompt like @code{%^@{Birthday@}t}}
5068%n @r{user name (taken from @code{user-full-name})}
a7808fba
CD
5069%c @r{Current kill ring head.}
5070%x @r{Content of the X clipboard.}
5071%^C @r{Interactive selection of which kill or clip to use.}
5072%^L @r{Like @code{%^C}, but insert as link.}
dbc28aaa 5073%^g @r{prompt for tags, with completion on tags in target file.}
864c9740
CD
5074%k @r{title of currently clocked task}
5075%K @r{link to currently clocked task}
dbc28aaa 5076%^G @r{prompt for tags, with completion all tags in all agenda files.}
864c9740 5077%^@{prop@}p @r{Prompt the user for a value for property @code{prop}}
dbc28aaa
CD
5078%:keyword @r{specific information for certain link types, see below}
5079%[pathname] @r{insert the contents of the file given by @code{pathname}}
5080%(sexp) @r{evaluate elisp @code{(sexp)} and replace with the result}
5081%! @r{immediately store note after completing the template}
5082 @r{(skipping the @kbd{C-c C-c} that normally triggers storing)}
b349f79f 5083%& @r{jump to target location immediately after storing note}
dbc28aaa
CD
5084@end example
5085
5086@noindent
5087For specific link types, the following keywords will be
5088defined@footnote{If you define your own link types (@pxref{Adding
5089hyperlink types}), any property you store with
5090@code{org-store-link-props} can be accessed in remember templates in a
5091similar way.}:
5092
5093@example
5094Link type | Available keywords
5095-------------------+----------------------------------------------
5096bbdb | %:name %:company
28a16a1b 5097bbdb | %::server %:port %:nick
dbc28aaa
CD
5098vm, wl, mh, rmail | %:type %:subject %:message-id
5099 | %:from %:fromname %:fromaddress
5100 | %:to %:toname %:toaddress
28a16a1b 5101 | %:fromto @r{(either "to NAME" or "from NAME")@footnote{This will always be the other, not the user. See the variable @code{org-from-is-user-regexp}.}}
dbc28aaa
CD
5102gnus | %:group, @r{for messages also all email fields}
5103w3, w3m | %:url
5104info | %:file %:node
5105calendar | %:date"
5106@end example
5107
5108@noindent
5109To place the cursor after template expansion use:
5110
5111@example
5112%? @r{After completing the template, position cursor here.}
5113@end example
5114
5115@noindent
28a16a1b 5116If you change your mind about which template to use, call
dbc28aaa
CD
5117@code{org-remember} in the remember buffer. You may then select a new
5118template that will be filled with the previous context information.
5119
5120@node Storing notes, Refiling notes, Remember templates, Remember
864c9740 5121@subsection Storing notes
dbc28aaa 5122
b349f79f
CD
5123When you are finished preparing a note with @i{remember}, you have to press
5124@kbd{C-c C-c} to file the note away. If you have started the clock in the
5125remember buffer, you will first be asked if you want to clock out
5126now@footnote{To avoid this query, configure the variable
5127@code{org-remember-clock-out-on-exit}.}. If you answer @kbd{n}, the clock
44ce9197 5128will continue to run after the note was filed away.
b349f79f
CD
5129
5130The handler will then store the note in the file and under the headline
5131specified in the template, or it will use the default file and headlines.
5132The window configuration will be restored, sending you back to the working
5133context before the call to @code{remember}. To re-use the location found
5134during the last call to @code{remember}, exit the remember buffer with
864c9740
CD
5135@kbd{C-0 C-c C-c}, i.e. specify a zero prefix argument to @kbd{C-c C-c}.
5136Another special case is @kbd{C-2 C-c C-c} which files the note as a child of
5137the currently clocked item.
dbc28aaa
CD
5138
5139If you want to store the note directly to a different place, use
864c9740 5140@kbd{C-1 C-c C-c} instead to exit remember@footnote{Configure the
dbc28aaa
CD
5141variable @code{org-remember-store-without-prompt} to make this behavior
5142the default.}. The handler will then first prompt for a target file -
5143if you press @key{RET}, the value specified for the template is used.
5144Then the command offers the headings tree of the selected file, with the
5145cursor position at the default headline (if you had specified one in the
5146template). You can either immediately press @key{RET} to get the note
5147placed there. Or you can use the following keys to find a different
5148location:
5149@example
5150@key{TAB} @r{Cycle visibility.}
5151@key{down} / @key{up} @r{Next/previous visible headline.}
5152n / p @r{Next/previous visible headline.}
5153f / b @r{Next/previous headline same level.}
5154u @r{One level up.}
5155@c 0-9 @r{Digit argument.}
5156@end example
5157@noindent
5158Pressing @key{RET} or @key{left} or @key{right}
5159then leads to the following result.
5160
5161@multitable @columnfractions 0.2 0.15 0.65
5162@item @b{Cursor position} @tab @b{Key} @tab @b{Note gets inserted}
5163@item on headline @tab @key{RET} @tab as sublevel of the heading at cursor, first or last
5164@item @tab @tab depending on @code{org-reverse-note-order}.
5165@item @tab @key{left}/@key{right} @tab as same level, before/after current heading
5166@item buffer-start @tab @key{RET} @tab as level 2 heading at end of file or level 1 at beginning
5167@item @tab @tab depending on @code{org-reverse-note-order}.
5168@item not on headline @tab @key{RET}
5169 @tab at cursor position, level taken from context.
5170@end multitable
5171
864c9740
CD
5172Before inserting the text into a tree, the function ensures that the text has
5173a headline, i.e. a first line that starts with a @samp{*}. If not, a
5174headline is constructed from the current date. If you have indented the text
5175of the note below the headline, the indentation will be adapted if inserting
5176the note into the tree requires demotion from level 1.
dbc28aaa
CD
5177
5178@node Refiling notes, , Storing notes, Remember
864c9740 5179@subsection Refiling notes
dbc28aaa
CD
5180@cindex refiling notes
5181
5182Remember is usually used to quickly capture notes and tasks into one or
5183a few capture lists. When reviewing the captured data, you may want to
5184refile some of the entries into a different list, for example into a
5185project. Cutting, finding the right location and then pasting the note
5186is cumbersome. To simplify this process, you can use the following
5187special command:
5188
5189@table @kbd
5190@kindex C-c C-w
5191@item C-c C-w
e45e3595
CD
5192Refile the entry or region at point. This command offers possible locations
5193for refiling the entry and lets you select one with completion. The item (or
5194all items in the region) is filed below the target heading as a subitem.
5195Depending on @code{org-reverse-note-order}, it will be either the first of
5196last subitem.@*
5197By default, all level 1 headlines in the current buffer are considered to be
5198targets, but you can have more complex definitions across a number of files.
5199See the variable @code{org-refile-targets} for details. If you would like to
5200select a location via a file-pathlike completion along the outline path, see
5201the variable @code{org-refile-use-outline-path}.
28a16a1b
CD
5202@kindex C-u C-c C-w
5203@item C-u C-c C-w
5204Use the refile interface to jump to a heading.
5205@kindex C-u C-u C-c C-w
a7808fba 5206@item C-u C-u C-c C-w
28a16a1b 5207Jump to the location where @code{org-refile} last moved a tree to.
dbc28aaa
CD
5208@end table
5209
864c9740
CD
5210@node Attachments, , Remember, Capture
5211@section Attachments
5212@cindex attachments
5213
5214It is often useful to associate reference material with an outline node/task.
5215Small chunks of plain text can simply be stored in the subtree of a project.
5216Hyperlinks (@pxref{Hyperlinks}) can be used to establish associations with
5217files that live elsewhere on your computer or in the cloud, like emails or
5218source code files belonging to a project. Another method is @i{attachments},
5219which are files located in a directory belonging to an outline node. Org
5220uses directories named by the unique ID of each entry. These directories are
5221located in the @file{data} directory which lives in the same directory where
5222your org-file lives@footnote{If you move entries or Org-files from one
5223directory to the next, you may want to configure @code{org-attach-directory}
5224to contain an absolute path.}. If you initialize this directory with
5225@code{git-init}, Org will automatically commit changes when it sees them.
5226The attachment system has been contributed to Org by John Wiegley.
5227
5228@noindent The following commands deal with attachments.
5229
5230@table @kbd
5231
5232@kindex C-c C-a
5233@item C-c C-a
5234The dispatcher for commands related to the attachment system. After these
5235keys, a list of commands is displayed and you need to press an additional key
5236to select a command:
5237
5238@table @kbd
5239@kindex C-c C-a a
5240@item a
5241Select a file and move it into the task's attachment directory. The file
5242will be copied, moved, or linked, depending on @code{org-attach-method}.
5243Note that hard links are not supported on all systems.
5244
5245@kindex C-c C-a c
5246@kindex C-c C-a m
5247@kindex C-c C-a l
5248@item c/m/l
5249Attach a file using the copy/move/link method.
5250Note that hard links are not supported on all systems.
5251
5252@kindex C-c C-a n
5253@item n
5254Create a new attachment as an Emacs buffer.
5255
5256@kindex C-c C-a z
5257@item z
5258Synchronize the current task with its attachment directory, in case you added
5259attachments yourself.
5260
5261@kindex C-c C-a o
5262@item o
5263Open current task's attachment. If there are more than one, prompt for a
5264file name first. Opening will follow the rules set by @code{org-file-apps}.
5265For more details, see the information on following hyperlings
5266(@pxref{Handling links}).
5267
5268@kindex C-c C-a O
5269@item O
5270Also open the attachment, but force opening the file in Emacs.
5271
5272@kindex C-c C-a f
5273@item f
5274Open the current task's attachment directory.
5275
5276@kindex C-c C-a F
5277@item F
5278Also open the directory, but force using @code{dired} in Emacs.
5279
5280@kindex C-c C-a d
5281@item d
5282Select and delete a single attachment.
5283
5284@kindex C-c C-a D
5285@item D
5286Delete all of a task's attachments. A safer way is to open the directory in
5287dired and delete from there.
5288@end table
5289@end table
5290
5291@node Agenda Views, Embedded LaTeX, Capture, Top
4009494e
GM
5292@chapter Agenda Views
5293@cindex agenda views
5294
a7808fba 5295Due to the way Org works, TODO items, time-stamped items, and
4009494e 5296tagged headlines can be scattered throughout a file or even a number of
dbc28aaa
CD
5297files. To get an overview of open action items, or of events that are
5298important for a particular date, this information must be collected,
4009494e
GM
5299sorted and displayed in an organized way.
5300
a7808fba 5301Org can select items based on various criteria, and display them
28a16a1b 5302in a separate buffer. Seven different view types are provided:
4009494e
GM
5303
5304@itemize @bullet
5305@item
5306an @emph{agenda} that is like a calendar and shows information
5307for specific dates,
5308@item
5309a @emph{TODO list} that covers all unfinished
5310action items,
5311@item
864c9740
CD
5312a @emph{match view}, showings headlines based on the tags, properties and
5313TODO state associated with them,
4009494e 5314@item
a7808fba 5315a @emph{timeline view} that shows all events in a single Org file,
4009494e
GM
5316in time-sorted view,
5317@item
28a16a1b
CD
5318a @emph{keyword search view} that shows all entries from multiple files
5319that contain specified keywords.
5320@item
4009494e
GM
5321a @emph{stuck projects view} showing projects that currently don't move
5322along, and
5323@item
5324@emph{custom views} that are special tag/keyword searches and
5325combinations of different views.
5326@end itemize
5327
5328@noindent
5329The extracted information is displayed in a special @emph{agenda
5330buffer}. This buffer is read-only, but provides commands to visit the
a7808fba 5331corresponding locations in the original Org files, and even to
28a16a1b 5332edit these files remotely.
4009494e
GM
5333
5334Two variables control how the agenda buffer is displayed and whether the
5335window configuration is restored when the agenda exits:
5336@code{org-agenda-window-setup} and
5337@code{org-agenda-restore-windows-after-quit}.
5338
5339@menu
5340* Agenda files:: Files being searched for agenda information
5341* Agenda dispatcher:: Keyboard access to agenda views
5342* Built-in agenda views:: What is available out of the box?
5343* Presentation and sorting:: How agenda items are prepared for display
a7808fba 5344* Agenda commands:: Remote editing of Org trees
4009494e 5345* Custom agenda views:: Defining special searches and views
a7808fba 5346* Agenda column view:: Using column view for collected entries
4009494e
GM
5347@end menu
5348
a7808fba 5349@node Agenda files, Agenda dispatcher, Agenda Views, Agenda Views
4009494e
GM
5350@section Agenda files
5351@cindex agenda files
5352@cindex files for agenda
5353
dbc28aaa
CD
5354The information to be shown is normally collected from all @emph{agenda
5355files}, the files listed in the variable
5356@code{org-agenda-files}@footnote{If the value of that variable is not a
5357list, but a single file name, then the list of agenda files will be
5358maintained in that external file.}. If a directory is part of this list,
5359all files with the extension @file{.org} in this directory will be part
5360of the list.
5361
a7808fba 5362Thus even if you only work with a single Org file, this file should
dbc28aaa
CD
5363be put into that list@footnote{When using the dispatcher, pressing
5364@kbd{<} before selecting a command will actually limit the command to
5365the current file, and ignore @code{org-agenda-files} until the next
4009494e
GM
5366dispatcher command.}. You can customize @code{org-agenda-files}, but
5367the easiest way to maintain it is through the following commands
5368
5369@cindex files, adding to agenda list
5370@table @kbd
5371@kindex C-c [
5372@item C-c [
5373Add current file to the list of agenda files. The file is added to
5374the front of the list. If it was already in the list, it is moved to
a7808fba 5375the front. With a prefix argument, file is added/moved to the end.
4009494e
GM
5376@kindex C-c ]
5377@item C-c ]
5378Remove current file from the list of agenda files.
5379@kindex C-,
5380@kindex C-'
5381@item C-,
5382@itemx C-'
5383Cycle through agenda file list, visiting one file after the other.
a7808fba
CD
5384@kindex M-x org-iswitchb
5385@item M-x org-iswitchb
5386Command to use an @code{iswitchb}-like interface to switch to and between Org
5387buffers.
4009494e
GM
5388@end table
5389
5390@noindent
5391The Org menu contains the current list of files and can be used
5392to visit any of them.
5393
dbc28aaa
CD
5394If you would like to focus the agenda temporarily onto a file not in
5395this list, or onto just one file in the list or even only a subtree in a
5396file, this can be done in different ways. For a single agenda command,
5397you may press @kbd{<} once or several times in the dispatcher
5398(@pxref{Agenda dispatcher}). To restrict the agenda scope for an
5399extended period, use the following commands:
5400
5401@table @kbd
5402@kindex C-c C-x <
5403@item C-c C-x <
5404Permanently restrict the agenda to the current subtree. When with a
5405prefix argument, or with the cursor before the first headline in a file,
5406the agenda scope is set to the entire file. This restriction remains in
5407effect until removed with @kbd{C-c C-x >}, or by typing either @kbd{<}
5408or @kbd{>} in the agenda dispatcher. If there is a window displaying an
5409agenda view, the new restriction takes effect immediately.
5410@kindex C-c C-x <
5411@item C-c C-x <
5412Remove the permanent restriction created by @kbd{C-c C-x <}.
5413@end table
5414
5415@noindent
5416When working with @file{Speedbar}, you can use the following commands in
a7808fba 5417the Speedbar frame:
dbc28aaa
CD
5418@table @kbd
5419@kindex <
5420@item < @r{in the speedbar frame}
5421Permanently restrict the agenda to the item at the cursor in the
a7808fba 5422Speedbar frame, either an Org file or a subtree in such a file.
dbc28aaa
CD
5423If there is a window displaying an agenda view, the new restriction takes
5424effect immediately.
5425@kindex <
5426@item > @r{in the speedbar frame}
5427Lift the restriction again.
5428@end table
5429
a7808fba 5430@node Agenda dispatcher, Built-in agenda views, Agenda files, Agenda Views
4009494e
GM
5431@section The agenda dispatcher
5432@cindex agenda dispatcher
5433@cindex dispatching agenda commands
5434The views are created through a dispatcher that should be bound to a
5435global key, for example @kbd{C-c a} (@pxref{Installation}). In the
5436following we will assume that @kbd{C-c a} is indeed how the dispatcher
5437is accessed and list keyboard access to commands accordingly. After
5438pressing @kbd{C-c a}, an additional letter is required to execute a
5439command. The dispatcher offers the following default commands:
5440@table @kbd
5441@item a
a7808fba 5442Create the calendar-like agenda (@pxref{Weekly/daily agenda}).
4009494e
GM
5443@item t @r{/} T
5444Create a list of all TODO items (@pxref{Global TODO list}).
5445@item m @r{/} M
5446Create a list of headlines matching a TAGS expression (@pxref{Matching
5447tags and properties}).
5448@item L
5449Create the timeline view for the current buffer (@pxref{Timeline}).
28a16a1b
CD
5450@item s
5451Create a list of entries selected by a boolean expression of keywords
5452and/or regular expressions that must or must not occur in the entry.
dbc28aaa
CD
5453@item /
5454Search for a regular expression in all agenda files and additionally in
5455the files listed in @code{org-agenda-multi-occur-extra-files}. This
5456uses the Emacs command @code{multi-occur}. A prefix argument can be
5457used to specify the number of context lines for each match, default is
54581.
28a16a1b
CD
5459@item # @r{/} !
5460Create a list of stuck projects (@pxref{Stuck projects}).
dbc28aaa
CD
5461@item <
5462Restrict an agenda command to the current buffer@footnote{For backward
5463compatibility, you can also press @kbd{1} to restrict to the current
5464buffer.}. After pressing @kbd{<}, you still need to press the character
5465selecting the command.
5466@item < <
4009494e 5467If there is an active region, restrict the following agenda command to
dbc28aaa
CD
5468the region. Otherwise, restrict it to the current subtree@footnote{For
5469backward compatibility, you can also press @kbd{0} to restrict to the
5470current buffer.}. After pressing @kbd{< <}, you still need to press the
5471character selecting the command.
4009494e
GM
5472@end table
5473
5474You can also define custom commands that will be accessible through the
5475dispatcher, just like the default commands. This includes the
5476possibility to create extended agenda buffers that contain several
5477blocks together, for example the weekly agenda, the global TODO list and
5478a number of special tags matches. @xref{Custom agenda views}.
5479
a7808fba 5480@node Built-in agenda views, Presentation and sorting, Agenda dispatcher, Agenda Views
4009494e
GM
5481@section The built-in agenda views
5482
5483In this section we describe the built-in views.
5484
5485@menu
a7808fba 5486* Weekly/daily agenda:: The calendar page with current tasks
4009494e
GM
5487* Global TODO list:: All unfinished action items
5488* Matching tags and properties:: Structured information with fine-tuned search
5489* Timeline:: Time-sorted view for single file
28a16a1b 5490* Keyword search:: Finding entries by keyword
4009494e
GM
5491* Stuck projects:: Find projects you need to review
5492@end menu
5493
a7808fba 5494@node Weekly/daily agenda, Global TODO list, Built-in agenda views, Built-in agenda views
4009494e
GM
5495@subsection The weekly/daily agenda
5496@cindex agenda
5497@cindex weekly agenda
5498@cindex daily agenda
5499
5500The purpose of the weekly/daily @emph{agenda} is to act like a page of a
5501paper agenda, showing all the tasks for the current week or day.
5502
5503@table @kbd
5504@cindex org-agenda, command
5505@kindex C-c a a
5506@item C-c a a
864c9740
CD
5507Compile an agenda for the current week from a list of org files. The agenda
5508shows the entries for each day. With a numeric prefix@footnote{For backward
5509compatibility, the universal prefix @kbd{C-u} causes all TODO entries to be
5510listed before the agenda. This feature is deprecated, use the dedicated TODO
5511list, or a block agenda instead (@pxref{Block agenda}).} (like @kbd{C-u 2 1
5512C-c a a}) you may set the number of days to be displayed (see also the
5513variable @code{org-agenda-ndays})
4009494e
GM
5514@end table
5515
5516Remote editing from the agenda buffer means, for example, that you can
5517change the dates of deadlines and appointments from the agenda buffer.
5518The commands available in the Agenda buffer are listed in @ref{Agenda
5519commands}.
5520
5521@subsubheading Calendar/Diary integration
5522@cindex calendar integration
5523@cindex diary integration
5524
5525Emacs contains the calendar and diary by Edward M. Reingold. The
5526calendar displays a three-month calendar with holidays from different
5527countries and cultures. The diary allows you to keep track of
5528anniversaries, lunar phases, sunrise/set, recurrent appointments
5529(weekly, monthly) and more. In this way, it is quite complementary to
a7808fba 5530Org. It can be very useful to combine output from Org with
4009494e
GM
5531the diary.
5532
a7808fba 5533In order to include entries from the Emacs diary into Org mode's
4009494e
GM
5534agenda, you only need to customize the variable
5535
5536@lisp
5537(setq org-agenda-include-diary t)
5538@end lisp
5539
5540@noindent After that, everything will happen automatically. All diary
5541entries including holidays, anniversaries etc will be included in the
a7808fba 5542agenda buffer created by Org mode. @key{SPC}, @key{TAB}, and
4009494e
GM
5543@key{RET} can be used from the agenda buffer to jump to the diary
5544file in order to edit existing diary entries. The @kbd{i} command to
5545insert new entries for the current date works in the agenda buffer, as
5546well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
5547Sunrise/Sunset times, show lunar phases and to convert to other
5548calendars, respectively. @kbd{c} can be used to switch back and forth
5549between calendar and agenda.
5550
5551If you are using the diary only for sexp entries and holidays, it is
5552faster to not use the above setting, but instead to copy or even move
a7808fba 5553the entries into an Org file. Org mode evaluates diary-style sexp
4009494e
GM
5554entries, and does it faster because there is no overhead for first
5555creating the diary display. Note that the sexp entries must start at
5556the left margin, no white space is allowed before them. For example,
a7808fba 5557the following segment of an Org file will be processed and entries
4009494e
GM
5558will be made in the agenda:
5559
5560@example
5561* Birthdays and similar stuff
5562#+CATEGORY: Holiday
5563%%(org-calendar-holiday) ; special function for holiday names
5564#+CATEGORY: Ann
5565%%(diary-anniversary 14 5 1956) Arthur Dent is %d years old
5566%%(diary-anniversary 2 10 1869) Mahatma Gandhi would be %d years old
5567@end example
5568
dbc28aaa
CD
5569@subsubheading Appointment reminders
5570@cindex @file{appt.el}
5571@cindex appointment reminders
5572
5573Org can interact with Emacs appointments notification facility.
5574
5575To add all the appointments of your agenda files, use the command
5576@code{org-agenda-to-appt}. This commands also lets you filter through
5577the list of your appointments and add only those belonging to a specific
5578category or matching a regular expression. See the docstring for
5579details.
5580
a7808fba 5581@node Global TODO list, Matching tags and properties, Weekly/daily agenda, Built-in agenda views
4009494e
GM
5582@subsection The global TODO list
5583@cindex global TODO list
5584@cindex TODO list, global
5585
5586The global TODO list contains all unfinished TODO items, formatted and
5587collected into a single place.
5588
5589@table @kbd
5590@kindex C-c a t
5591@item C-c a t
5592Show the global TODO list. This collects the TODO items from all
a7808fba 5593agenda files (@pxref{Agenda Views}) into a single buffer. The buffer is in
4009494e
GM
5594@code{agenda-mode}, so there are commands to examine and manipulate
5595the TODO entries directly from that buffer (@pxref{Agenda commands}).
5596@kindex C-c a T
5597@item C-c a T
5598@cindex TODO keyword matching
5599Like the above, but allows selection of a specific TODO keyword. You
5600can also do this by specifying a prefix argument to @kbd{C-c a t}. With
5601a @kbd{C-u} prefix you are prompted for a keyword, and you may also
5602specify several keywords by separating them with @samp{|} as boolean OR
5603operator. With a numeric prefix, the Nth keyword in
5604@code{org-todo-keywords} is selected.
5605@kindex r
5606The @kbd{r} key in the agenda buffer regenerates it, and you can give
5607a prefix argument to this command to change the selected TODO keyword,
5608for example @kbd{3 r}. If you often need a search for a specific
5609keyword, define a custom command for it (@pxref{Agenda dispatcher}).@*
5610Matching specific TODO keywords can also be done as part of a tags
5611search (@pxref{Tag searches}).
5612@end table
5613
5614Remote editing of TODO items means that you can change the state of a
5615TODO entry with a single key press. The commands available in the
5616TODO list are described in @ref{Agenda commands}.
5617
a7808fba
CD
5618@cindex sublevels, inclusion into TODO list
5619Normally the global TODO list simply shows all headlines with TODO
4009494e
GM
5620keywords. This list can become very long. There are two ways to keep
5621it more compact:
5622@itemize @minus
5623@item
5624Some people view a TODO item that has been @emph{scheduled} for
a7808fba 5625execution (@pxref{Timestamps}) as no longer @emph{open}. Configure the
4009494e
GM
5626variable @code{org-agenda-todo-ignore-scheduled} to exclude scheduled
5627items from the global TODO list.
5628@item
5629TODO items may have sublevels to break up the task into subtasks. In
5630such cases it may be enough to list only the highest level TODO headline
5631and omit the sublevels from the global list. Configure the variable
5632@code{org-agenda-todo-list-sublevels} to get this behavior.
5633@end itemize
5634
5635@node Matching tags and properties, Timeline, Global TODO list, Built-in agenda views
a7808fba 5636@subsection Matching tags and properties
4009494e
GM
5637@cindex matching, of tags
5638@cindex matching, of properties
5639@cindex tags view
864c9740 5640@cindex match view
4009494e
GM
5641
5642If headlines in the agenda files are marked with @emph{tags}
5643(@pxref{Tags}), you can select headlines based on the tags that apply
5644to them and collect them into an agenda buffer.
5645
5646@table @kbd
5647@kindex C-c a m
5648@item C-c a m
5649Produce a list of all headlines that match a given set of tags. The
5650command prompts for a selection criterion, which is a boolean logic
dbc28aaa
CD
5651expression with tags, like @samp{+work+urgent-withboss} or
5652@samp{work|home} (@pxref{Tags}). If you often need a specific search,
4009494e
GM
5653define a custom command for it (@pxref{Agenda dispatcher}).
5654@kindex C-c a M
5655@item C-c a M
5656Like @kbd{C-c a m}, but only select headlines that are also TODO items
5657and force checking subitems (see variable
a7808fba 5658@code{org-tags-match-list-sublevels}). Matching specific TODO keywords
4009494e
GM
5659together with a tags match is also possible, see @ref{Tag searches}.
5660@end table
5661
5662The commands available in the tags list are described in @ref{Agenda
5663commands}.
5664
28a16a1b 5665@node Timeline, Keyword search, Matching tags and properties, Built-in agenda views
4009494e
GM
5666@subsection Timeline for a single file
5667@cindex timeline, single file
5668@cindex time-sorted view
5669
a7808fba 5670The timeline summarizes all time-stamped items from a single Org mode
4009494e
GM
5671file in a @emph{time-sorted view}. The main purpose of this command is
5672to give an overview over events in a project.
5673
5674@table @kbd
5675@kindex C-c a L
5676@item C-c a L
5677Show a time-sorted view of the org file, with all time-stamped items.
5678When called with a @kbd{C-u} prefix, all unfinished TODO entries
5679(scheduled or not) are also listed under the current date.
5680@end table
5681
5682@noindent
5683The commands available in the timeline buffer are listed in
5684@ref{Agenda commands}.
5685
28a16a1b
CD
5686@node Keyword search, Stuck projects, Timeline, Built-in agenda views
5687@subsection Keyword search
5688@cindex keyword search
5689@cindex searching, for keywords
5690
a7808fba 5691This agenda view is a general text search facility for Org mode entries.
28a16a1b
CD
5692It is particularly useful to find notes.
5693
5694@table @kbd
5695@kindex C-c a s
5696@item C-c a s
5697This is a special search that lets you select entries by keywords or
5698regular expression, using a boolean logic. For example, the search
5699string
5700
5701@example
5702+computer +wifi -ethernet -@{8\.11[bg]@}
5703@end example
4009494e 5704
28a16a1b
CD
5705@noindent
5706will search for note entries that contain the keywords @code{computer}
5707and @code{wifi}, but not the keyword @code{ethernet}, and which are also
5708not matched by the regular expression @code{8\.11[bg]}, meaning to
5709exclude both 8.11b and 8.11g.
5710
5711Note that in addition to the agenda files, this command will also search
5712the files listed in @code{org-agenda-text-search-extra-files}.
5713@end table
5714
5715@node Stuck projects, , Keyword search, Built-in agenda views
4009494e
GM
5716@subsection Stuck projects
5717
5718If you are following a system like David Allen's GTD to organize your
5719work, one of the ``duties'' you have is a regular review to make sure
5720that all projects move along. A @emph{stuck} project is a project that
5721has no defined next actions, so it will never show up in the TODO lists
a7808fba 5722Org mode produces. During the review, you need to identify such
4009494e
GM
5723projects and define next actions for them.
5724
5725@table @kbd
5726@kindex C-c a #
5727@item C-c a #
5728List projects that are stuck.
5729@kindex C-c a !
5730@item C-c a !
5731Customize the variable @code{org-stuck-projects} to define what a stuck
5732project is and how to find it.
5733@end table
5734
5735You almost certainly will have to configure this view before it will
5736work for you. The built-in default assumes that all your projects are
5737level-2 headlines, and that a project is not stuck if it has at least
a7808fba 5738one entry marked with a TODO keyword TODO or NEXT or NEXTACTION.
4009494e 5739
864c9740 5740Let's assume that you, in your own way of using Org mode, identify
a7808fba 5741projects with a tag PROJECT, and that you use a TODO keyword MAYBE to
864c9740 5742indicate a project that should not be considered yet. Let's further
a7808fba 5743assume that the TODO keyword DONE marks finished projects, and that NEXT
4009494e
GM
5744and TODO indicate next actions. The tag @@SHOP indicates shopping and
5745is a next action even without the NEXT tag. Finally, if the project
5746contains the special word IGNORE anywhere, it should not be listed
5747either. In this case you would start by identifying eligible projects
5748with a tags/todo match @samp{+PROJECT/-MAYBE-DONE}, and then check for
5749TODO, NEXT, @@SHOP, and IGNORE in the subtree to identify projects that
5750are not stuck. The correct customization for this is
5751
5752@lisp
5753(setq org-stuck-projects
5754 '("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP")
5755 "\\<IGNORE\\>"))
5756@end lisp
5757
5758
a7808fba 5759@node Presentation and sorting, Agenda commands, Built-in agenda views, Agenda Views
4009494e
GM
5760@section Presentation and sorting
5761@cindex presentation, of agenda items
5762
a7808fba 5763Before displaying items in an agenda view, Org mode visually prepares
4009494e
GM
5764the items and sorts them. Each item occupies a single line. The line
5765starts with a @emph{prefix} that contains the @emph{category}
5766(@pxref{Categories}) of the item and other important information. You can
5767customize the prefix using the option @code{org-agenda-prefix-format}.
5768The prefix is followed by a cleaned-up version of the outline headline
5769associated with the item.
5770
5771@menu
5772* Categories:: Not all tasks are equal
5773* Time-of-day specifications:: How the agenda knows the time
5774* Sorting of agenda items:: The order of things
5775@end menu
5776
5777@node Categories, Time-of-day specifications, Presentation and sorting, Presentation and sorting
5778@subsection Categories
5779
5780@cindex category
5781The category is a broad label assigned to each agenda item. By default,
5782the category is simply derived from the file name, but you can also
dbc28aaa
CD
5783specify it with a special line in the buffer, like this@footnote{For
5784backward compatibility, the following also works: If there are several
5785such lines in a file, each specifies the category for the text below it.
5786The first category also applies to any text before the first CATEGORY
5787line. However, using this method is @emph{strongly} deprecated as it is
5788incompatible with the outline structure of the document. The correct
5789method for setting multiple categories in a buffer is using a
5790property.}:
4009494e
GM
5791
5792@example
5793#+CATEGORY: Thesis
5794@end example
5795
dbc28aaa
CD
5796@noindent
5797If you would like to have a special CATEGORY for a single entry or a
5798(sub)tree, give the entry a @code{:CATEGORY:} property with the location
a7808fba 5799as the value (@pxref{Properties and Columns}).
dbc28aaa
CD
5800
5801@noindent
5802The display in the agenda buffer looks best if the category is not
5803longer than 10 characters.
4009494e
GM
5804
5805@node Time-of-day specifications, Sorting of agenda items, Categories, Presentation and sorting
a7808fba 5806@subsection Time-of-day specifications
4009494e
GM
5807@cindex time-of-day specification
5808
a7808fba 5809Org mode checks each agenda item for a time-of-day specification. The
4009494e
GM
5810time can be part of the time stamp that triggered inclusion into the
5811agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}. Time
5812ranges can be specified with two time stamps, like
5813@c
5814@w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
5815
5816In the headline of the entry itself, a time(range) may also appear as
44ce9197 5817plain text (like @samp{12:45} or a @samp{8:30-1pm}). If the agenda
a7808fba 5818integrates the Emacs diary (@pxref{Weekly/daily agenda}), time
4009494e
GM
5819specifications in diary entries are recognized as well.
5820
a7808fba 5821For agenda display, Org mode extracts the time and displays it in a
4009494e
GM
5822standard 24 hour format as part of the prefix. The example times in
5823the previous paragraphs would end up in the agenda like this:
5824
5825@example
5826 8:30-13:00 Arthur Dent lies in front of the bulldozer
5827 12:45...... Ford Prefect arrives and takes Arthur to the pub
5828 19:00...... The Vogon reads his poem
5829 20:30-22:15 Marwin escorts the Hitchhikers to the bridge
5830@end example
5831
5832@cindex time grid
5833If the agenda is in single-day mode, or for the display of today, the
5834timed entries are embedded in a time grid, like
5835
5836@example
5837 8:00...... ------------------
5838 8:30-13:00 Arthur Dent lies in front of the bulldozer
5839 10:00...... ------------------
5840 12:00...... ------------------
5841 12:45...... Ford Prefect arrives and takes Arthur to the pub
5842 14:00...... ------------------
5843 16:00...... ------------------
5844 18:00...... ------------------
5845 19:00...... The Vogon reads his poem
5846 20:00...... ------------------
5847 20:30-22:15 Marwin escorts the Hitchhikers to the bridge
5848@end example
5849
5850The time grid can be turned on and off with the variable
5851@code{org-agenda-use-time-grid}, and can be configured with
5852@code{org-agenda-time-grid}.
5853
5854@node Sorting of agenda items, , Time-of-day specifications, Presentation and sorting
5855@subsection Sorting of agenda items
5856@cindex sorting, of agenda items
5857@cindex priorities, of agenda items
5858Before being inserted into a view, the items are sorted. How this is
5859done depends on the type of view.
5860@itemize @bullet
5861@item
5862For the daily/weekly agenda, the items for each day are sorted. The
5863default order is to first collect all items containing an explicit
5864time-of-day specification. These entries will be shown at the beginning
5865of the list, as a @emph{schedule} for the day. After that, items remain
5866grouped in categories, in the sequence given by @code{org-agenda-files}.
5867Within each category, items are sorted by priority (@pxref{Priorities}),
5868which is composed of the base priority (2000 for priority @samp{A}, 1000
5869for @samp{B}, and 0 for @samp{C}), plus additional increments for
5870overdue scheduled or deadline items.
28a16a1b 5871@item
4009494e
GM
5872For the TODO list, items remain in the order of categories, but within
5873each category, sorting takes place according to priority
5874(@pxref{Priorities}).
5875@item
5876For tags matches, items are not sorted at all, but just appear in the
5877sequence in which they are found in the agenda files.
5878@end itemize
5879
5880Sorting can be customized using the variable
a7808fba 5881@code{org-agenda-sorting-strategy}, and may also include criteria based on
71d35b24 5882the estimated effort of an entry (@pxref{Effort estimates}).
4009494e 5883
a7808fba 5884@node Agenda commands, Custom agenda views, Presentation and sorting, Agenda Views
4009494e
GM
5885@section Commands in the agenda buffer
5886@cindex commands, in agenda buffer
5887
5888Entries in the agenda buffer are linked back to the org file or diary
5889file where they originate. You are not allowed to edit the agenda
5890buffer itself, but commands are provided to show and jump to the
5891original entry location, and to edit the org-files ``remotely'' from
5892the agenda buffer. In this way, all information is stored only once,
5893removing the risk that your agenda and note files may diverge.
5894
5895Some commands can be executed with mouse clicks on agenda lines. For
5896the other commands, the cursor needs to be in the desired line.
5897
5898@table @kbd
5899@tsubheading{Motion}
5900@cindex motion commands in agenda
5901@kindex n
5902@item n
dbc28aaa 5903Next line (same as @key{up} and @kbd{C-p}).
4009494e
GM
5904@kindex p
5905@item p
dbc28aaa 5906Previous line (same as @key{down} and @kbd{C-n}).
a7808fba 5907@tsubheading{View/Go to org file}
4009494e
GM
5908@kindex mouse-3
5909@kindex @key{SPC}
5910@item mouse-3
5911@itemx @key{SPC}
5912Display the original location of the item in another window.
5913@c
5914@kindex L
5915@item L
5916Display original location and recenter that window.
5917@c
5918@kindex mouse-2
5919@kindex mouse-1
5920@kindex @key{TAB}
5921@item mouse-2
5922@itemx mouse-1
5923@itemx @key{TAB}
5924Go to the original location of the item in another window. Under Emacs
592522, @kbd{mouse-1} will also works for this.
5926@c
5927@kindex @key{RET}
5928@itemx @key{RET}
5929Go to the original location of the item and delete other windows.
5930@c
5931@kindex f
5932@item f
5933Toggle Follow mode. In Follow mode, as you move the cursor through
5934the agenda buffer, the other window always shows the corresponding
5935location in the org file. The initial setting for this mode in new
5936agenda buffers can be set with the variable
5937@code{org-agenda-start-with-follow-mode}.
5938@c
5939@kindex b
5940@item b
a7808fba
CD
5941Display the entire subtree of the current item in an indirect buffer. With a
5942numeric prefix argument N, go up to level N and then take that tree. If N is
5943negative, go up that many levels. With a @kbd{C-u} prefix, do not remove the
5944previously used indirect buffer.
4009494e
GM
5945@c
5946@kindex l
5947@item l
44ce9197 5948Toggle Logbook mode. In Logbook mode, entries that where marked DONE while
e45e3595
CD
5949logging was on (variable @code{org-log-done}) are shown in the agenda, as are
5950entries that have been clocked on that day. You can configure the entry
5951types that should be included in log mode using the variable
5952@code{org-agenda-log-mode-items}. When called with a @kbd{C-u} prefix, show
5953all possible logbook entries, including state changes. When called with two
5954prefix args @kbd{C-u C-u}, show only logging information, nothing else.
a7808fba 5955@c
44ce9197
CD
5956@kindex v
5957@item v
5958Toggle Archives mode. In archives mode, trees that are marked are also
5959scanned when producing the agenda. When you call this command with a
5960@kbd{C-u} prefix argument, even all archive files are included. To exit
5961archives mode, press @kbd{v} again.
5962@c
a7808fba
CD
5963@kindex R
5964@item R
5965Toggle Clockreport mode. In clockreport mode, the daily/weekly agenda will
5966always show a table with the clocked times for the timespan and file scope
5967covered by the current agenda view. The initial setting for this mode in new
5968agenda buffers can be set with the variable
5969@code{org-agenda-start-with-clockreport-mode}.
4009494e
GM
5970
5971@tsubheading{Change display}
5972@cindex display changing, in agenda
5973@kindex o
5974@item o
5975Delete other windows.
5976@c
5977@kindex d
5978@kindex w
5979@kindex m
5980@kindex y
5981@item d w m y
5982Switch to day/week/month/year view. When switching to day or week view,
a7808fba
CD
5983this setting becomes the default for subsequent agenda commands. Since
5984month and year views are slow to create, they do not become the default.
5985A numeric prefix argument may be used to jump directly to a specific day
5986of the year, ISO week, month, or year, respectively. For example,
5987@kbd{32 d} jumps to February 1st, @kbd{9 w} to ISO week number 9. When
5988setting day, week, or month view, a year may be encoded in the prefix
5989argument as well. For example, @kbd{200712 w} will jump to week 12 in
59902007. If such a year specification has only one or two digits, it will
5991be mapped to the interval 1938-2037.
4009494e
GM
5992@c
5993@kindex D
5994@item D
a7808fba 5995Toggle the inclusion of diary entries. See @ref{Weekly/daily agenda}.
4009494e 5996@c
28a16a1b
CD
5997@kindex G
5998@item G
4009494e
GM
5999Toggle the time grid on and off. See also the variables
6000@code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
6001@c
6002@kindex r
6003@item r
6004Recreate the agenda buffer, for example to reflect the changes
6005after modification of the time stamps of items with S-@key{left} and
a7808fba 6006S-@key{right}. When the buffer is the global TODO list, a prefix
4009494e
GM
6007argument is interpreted to create a selective list for a specific TODO
6008keyword.
28a16a1b
CD
6009@kindex g
6010@item g
6011Same as @kbd{r}.
4009494e
GM
6012@c
6013@kindex s
dbc28aaa 6014@kindex C-x C-s
4009494e 6015@item s
dbc28aaa 6016@itemx C-x C-s
a7808fba 6017Save all Org buffers in the current Emacs session.
4009494e
GM
6018@c
6019@kindex @key{right}
6020@item @key{right}
6021Display the following @code{org-agenda-ndays} days. For example, if
6022the display covers a week, switch to the following week. With prefix
6023arg, go forward that many times @code{org-agenda-ndays} days.
6024@c
6025@kindex @key{left}
6026@item @key{left}
6027Display the previous dates.
6028@c
6029@kindex .
6030@item .
a7808fba
CD
6031Go to today.
6032@c
6033@kindex C-c C-x C-c
6034@item C-c C-x C-c
6035Invoke column view (@pxref{Column view}) in the agenda buffer. The column
6036view format is taken from the entry at point, or (if there is no entry at
6037point), from the first entry in the agenda view. So whatever the format for
6038that entry would be in the original buffer (taken from a property, from a
6039@code{#+COLUMNS} line, or from the default variable
6040@code{org-columns-default-format}), will be used in the agenda.
4009494e 6041
864c9740 6042@tsubheading{Secondary filtering and query editing}
71d35b24
CD
6043@cindex filtering, by tag and effort, in agenda
6044@cindex tag filtering, in agenda
6045@cindex effort filtering, in agenda
28a16a1b
CD
6046@cindex query editing, in agenda
6047
864c9740
CD
6048@kindex /
6049@item /
71d35b24
CD
6050Filter the current agenda view with respect to a tag and/or effort estimates.
6051The difference between this and a custom agenda commands is that filtering is
6052very fast, so that you can switch quickly between different filters without
6053having to recreate the agenda.
6054
6055You will be prompted for a tag selection letter. Pressing @key{TAB} at that
6056prompt will offer use completion to select a tag (including any tags that do
6057not have a selection character). The command then hides all entries that do
6058not contain or inherit this tag. When called with prefix arg, remove the
6059entries that @emph{do} have the tag. A second @kbd{/} at the prompt will
6060turn off the filter and unhide any hidden entries. If the first key you
6061press is either @kbd{+} or @kbd{-}, the previous filter will be narrowed by
6062requiring or forbidding the selected additional tag. Instead of pressing
6063@kbd{+} or @kbd{-}, you can also use the @kbd{\} command.
6064
6065In order to filter for effort estimates, you should set-up allowed
6066efforts globally, for example
6067@lisp
6068(setq org-global-properties
6069 '(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))
6070@end lisp
6071You can then filter for an effort by first typing an operator, one of @kbd{<},
6072@kbd{>}, and @kbd{=}, and then the one-digit index of an effort estimate in
6073your array of allowed values, where @kbd{0} means the 10th value. The filter
6074will then restrict to entries with effort smaller-or-equal, equal, or
6075larger-or-equal than the selected value. If the digits 0-9 are not used as
6076fast access keys to tags, you can also simply press the index digit directly
6077without an operator. In this case, @kbd{<} will be assumed.
6078
6079@kindex \
6080@item \
6081Narrow the current agenda filter by an additional condition. When called with
6082prefix arg, remove the entries that @emph{do} have the tag, or that do match
6083the effort criterion. You can achieve the same effect by pressing @kbd{+} or
6084@kbd{-} as the first key after the @kbd{/} command.
864c9740 6085
28a16a1b
CD
6086@kindex [
6087@kindex ]
6088@kindex @{
6089@kindex @}
6090@item [ ] @{ @}
864c9740
CD
6091In the @i{search view} (@pxref{Keyword search}), these keys add new search
6092words (@kbd{[} and @kbd{]}) or new regular expressions (@kbd{@{} and
6093@kbd{@}}) to the query string. The opening bracket/brace will add a positive
6094search term prefixed by @samp{+}, indicating that this search term @i{must}
6095occur/match in the entry. The closing bracket/brace will add a negative
6096search term which @i{must not} occur/match in the entry for it to be
6097selected.
28a16a1b
CD
6098
6099
4009494e
GM
6100@tsubheading{Remote editing}
6101@cindex remote editing, from agenda
6102
6103@item 0-9
6104Digit argument.
6105@c
6106@cindex undoing remote-editing events
6107@cindex remote editing, undo
6108@kindex C-_
6109@item C-_
6110Undo a change due to a remote editing command. The change is undone
6111both in the agenda buffer and in the remote buffer.
6112@c
6113@kindex t
6114@item t
6115Change the TODO state of the item, both in the agenda and in the
6116original org file.
6117@c
6118@kindex C-k
6119@item C-k
6120Delete the current agenda item along with the entire subtree belonging
a7808fba 6121to it in the original Org file. If the text to be deleted remotely
4009494e
GM
6122is longer than one line, the kill needs to be confirmed by the user. See
6123variable @code{org-agenda-confirm-kill}.
6124@c
a7808fba
CD
6125@kindex a
6126@item a
6127Toggle the ARCHIVE tag for the current headline.
6128@c
6129@kindex A
6130@item A
b349f79f 6131Move the subtree corresponding to the current entry to its @emph{Archive
a7808fba
CD
6132Sibling}.
6133@c
4009494e
GM
6134@kindex $
6135@item $
a7808fba 6136Archive the subtree corresponding to the current headline. This means the
b349f79f 6137entry will be moved to the configured archive location, most likely a
a7808fba 6138different file.
4009494e
GM
6139@c
6140@kindex T
6141@item T
6142Show all tags associated with the current item. Because of
6143inheritance, this may be more than the tags listed in the line itself.
6144@c
6145@kindex :
6146@item :
dbc28aaa
CD
6147Set tags for the current headline. If there is an active region in the
6148agenda, change a tag for all headings in the region.
4009494e 6149@c
4009494e
GM
6150@kindex ,
6151@item ,
a7808fba 6152Set the priority for the current item. Org mode prompts for the
4009494e
GM
6153priority character. If you reply with @key{SPC}, the priority cookie
6154is removed from the entry.
6155@c
6156@kindex P
6157@item P
6158Display weighted priority of current item.
6159@c
6160@kindex +
6161@kindex S-@key{up}
6162@item +
6163@itemx S-@key{up}
6164Increase the priority of the current item. The priority is changed in
6165the original buffer, but the agenda is not resorted. Use the @kbd{r}
6166key for this.
6167@c
6168@kindex -
6169@kindex S-@key{down}
6170@item -
6171@itemx S-@key{down}
6172Decrease the priority of the current item.
6173@c
864c9740
CD
6174@kindex C-c C-a
6175@item C-c C-a
6176Dispatcher for all command related to attachments.
6177@c
4009494e
GM
6178@kindex C-c C-s
6179@item C-c C-s
6180Schedule this item
6181@c
6182@kindex C-c C-d
6183@item C-c C-d
6184Set a deadline for this item.
6185@c
b349f79f
CD
6186@kindex k
6187@item k
6188Agenda actions, to set dates for selected items to the cursor date.
6189This command also works in the calendar! The command prompts for an
6190additonal key:
6191@example
6192m @r{Mark the entry at point for action. You can also make entries}
6193 @r{in Org files with @kbd{C-c C-x C-k}.}
6194d @r{Set the deadline of the marked entry to the date at point.}
6195s @r{Schedule the marked entry at the date at point.}
6196r @r{Call @code{org-remember} with the cursor date as default date.}
6197@end example
6198Press @kbd{r} afterwards to refresh the agenda and see the effect of the
6199command.
6200@c
4009494e
GM
6201@kindex S-@key{right}
6202@item S-@key{right}
a7808fba
CD
6203Change the time stamp associated with the current line by one day into the
6204future. With a numeric prefix argument, change it by that many days. For
6205example, @kbd{3 6 5 S-@key{right}} will change it by a year. The stamp is
6206changed in the original org file, but the change is not directly reflected in
6207the agenda buffer. Use the @kbd{r} key to update the buffer.
4009494e
GM
6208@c
6209@kindex S-@key{left}
6210@item S-@key{left}
6211Change the time stamp associated with the current line by one day
6212into the past.
6213@c
6214@kindex >
6215@item >
6216Change the time stamp associated with the current line to today.
6217The key @kbd{>} has been chosen, because it is the same as @kbd{S-.}
6218on my keyboard.
6219@c
6220@kindex I
6221@item I
6222Start the clock on the current item. If a clock is running already, it
6223is stopped first.
6224@c
6225@kindex O
6226@item O
6227Stop the previously started clock.
6228@c
6229@kindex X
6230@item X
6231Cancel the currently running clock.
6232
dbc28aaa
CD
6233@kindex J
6234@item J
6235Jump to the running clock in another window.
6236
4009494e
GM
6237@tsubheading{Calendar commands}
6238@cindex calendar commands, from agenda
6239@kindex c
6240@item c
6241Open the Emacs calendar and move to the date at the agenda cursor.
6242@c
6243@item c
a7808fba 6244When in the calendar, compute and show the Org mode agenda for the
4009494e
GM
6245date at the cursor.
6246@c
6247@cindex diary entries, creating from agenda
6248@kindex i
6249@item i
6250Insert a new entry into the diary. Prompts for the type of entry
6251(day, weekly, monthly, yearly, anniversary, cyclic) and creates a new
6252entry in the diary, just as @kbd{i d} etc. would do in the calendar.
6253The date is taken from the cursor position.
6254@c
6255@kindex M
6256@item M
6257Show the phases of the moon for the three months around current date.
6258@c
6259@kindex S
6260@item S
6261Show sunrise and sunset times. The geographical location must be set
6262with calendar variables, see documentation of the Emacs calendar.
6263@c
6264@kindex C
6265@item C
6266Convert the date at cursor into many other cultural and historic
6267calendars.
6268@c
6269@kindex H
6270@item H
6271Show holidays for three month around the cursor date.
a7808fba
CD
6272
6273@item M-x org-export-icalendar-combine-agenda-files
4009494e 6274Export a single iCalendar file containing entries from all agenda files.
a7808fba 6275This is a globally available command, and also available in the agenda menu.
4009494e
GM
6276
6277@tsubheading{Exporting to a file}
6278@kindex C-x C-w
6279@item C-x C-w
6280@cindex exporting agenda views
6281@cindex agenda views, exporting
6282Write the agenda view to a file. Depending on the extension of the
6283selected file name, the view will be exported as HTML (extension
6284@file{.html} or @file{.htm}), Postscript (extension @file{.ps}), or
6285plain text (any other extension). Use the variable
6286@code{org-agenda-exporter-settings} to set options for @file{ps-print}
6287and for @file{htmlize} to be used during export.
6288
6289@tsubheading{Quit and Exit}
6290@kindex q
6291@item q
6292Quit agenda, remove the agenda buffer.
6293@c
6294@kindex x
6295@cindex agenda files, removing buffers
6296@item x
6297Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
6298for the compilation of the agenda. Buffers created by the user to
6299visit org files will not be removed.
6300@end table
6301
6302
a7808fba 6303@node Custom agenda views, Agenda column view, Agenda commands, Agenda Views
4009494e
GM
6304@section Custom agenda views
6305@cindex custom agenda views
6306@cindex agenda views, custom
6307
6308Custom agenda commands serve two purposes: to store and quickly access
6309frequently used TODO and tags searches, and to create special composite
6310agenda buffers. Custom agenda commands will be accessible through the
6311dispatcher (@pxref{Agenda dispatcher}), just like the default commands.
6312
6313@menu
6314* Storing searches:: Type once, use often
6315* Block agenda:: All the stuff you need in a single buffer
6316* Setting Options:: Changing the rules
a7808fba
CD
6317* Exporting Agenda Views:: Writing agendas to files
6318* Using the agenda elsewhere:: Using agenda information in other programs
4009494e
GM
6319@end menu
6320
6321@node Storing searches, Block agenda, Custom agenda views, Custom agenda views
6322@subsection Storing searches
6323
6324The first application of custom searches is the definition of keyboard
6325shortcuts for frequently used searches, either creating an agenda
6326buffer, or a sparse tree (the latter covering of course only the current
6327buffer).
6328@kindex C-c a C
6329Custom commands are configured in the variable
6330@code{org-agenda-custom-commands}. You can customize this variable, for
6331example by pressing @kbd{C-c a C}. You can also directly set it with
6332Emacs Lisp in @file{.emacs}. The following example contains all valid
6333search types:
6334
6335@lisp
6336@group
6337(setq org-agenda-custom-commands
6338 '(("w" todo "WAITING")
6339 ("W" todo-tree "WAITING")
dbc28aaa
CD
6340 ("u" tags "+boss-urgent")
6341 ("v" tags-todo "+boss-urgent")
6342 ("U" tags-tree "+boss-urgent")
6343 ("f" occur-tree "\\<FIXME\\>")
6344 ("h" . "HOME+Name tags searches") ; description for "h" prefix
6345 ("hl" tags "+home+Lisa")
6346 ("hp" tags "+home+Peter")
6347 ("hk" tags "+home+Kim")))
4009494e
GM
6348@end group
6349@end lisp
6350
6351@noindent
dbc28aaa
CD
6352The initial string in each entry defines the keys you have to press
6353after the dispatcher command @kbd{C-c a} in order to access the command.
6354Usually this will be just a single character, but if you have many
6355similar commands, you can also define two-letter combinations where the
6356first character is the same in several combinations and serves as a
6357prefix key@footnote{You can provide a description for a prefix key by
6358inserting a cons cell with the prefix and the description.}. The second
6359parameter is the search type, followed by the string or regular
6360expression to be used for the matching. The example above will
6361therefore define:
4009494e
GM
6362
6363@table @kbd
6364@item C-c a w
6365as a global search for TODO entries with @samp{WAITING} as the TODO
6366keyword
6367@item C-c a W
6368as the same search, but only in the current buffer and displaying the
6369results as a sparse tree
6370@item C-c a u
dbc28aaa
CD
6371as a global tags search for headlines marked @samp{:boss:} but not
6372@samp{:urgent:}
4009494e
GM
6373@item C-c a v
6374as the same search as @kbd{C-c a u}, but limiting the search to
6375headlines that are also TODO items
6376@item C-c a U
6377as the same search as @kbd{C-c a u}, but only in the current buffer and
6378displaying the result as a sparse tree
6379@item C-c a f
6380to create a sparse tree (again: current buffer only) with all entries
dbc28aaa
CD
6381containing the word @samp{FIXME}
6382@item C-c a h
6383as a prefix command for a HOME tags search where you have to press an
6384additional key (@kbd{l}, @kbd{p} or @kbd{k}) to select a name (Lisa,
6385Peter, or Kim) as additional tag to match.
4009494e
GM
6386@end table
6387
6388@node Block agenda, Setting Options, Storing searches, Custom agenda views
6389@subsection Block agenda
6390@cindex block agenda
6391@cindex agenda, with block views
6392
6393Another possibility is the construction of agenda views that comprise
6394the results of @emph{several} commands, each of which creates a block in
6395the agenda buffer. The available commands include @code{agenda} for the
6396daily or weekly agenda (as created with @kbd{C-c a a}), @code{alltodo}
a7808fba 6397for the global TODO list (as constructed with @kbd{C-c a t}), and the
4009494e
GM
6398matching commands discussed above: @code{todo}, @code{tags}, and
6399@code{tags-todo}. Here are two examples:
6400
6401@lisp
6402@group
6403(setq org-agenda-custom-commands
6404 '(("h" "Agenda and Home-related tasks"
28a16a1b 6405 ((agenda "")
dbc28aaa
CD
6406 (tags-todo "home")
6407 (tags "garden")))
4009494e 6408 ("o" "Agenda and Office-related tasks"
28a16a1b 6409 ((agenda "")
dbc28aaa
CD
6410 (tags-todo "work")
6411 (tags "office")))))
4009494e
GM
6412@end group
6413@end lisp
6414
6415@noindent
6416This will define @kbd{C-c a h} to create a multi-block view for stuff
6417you need to attend to at home. The resulting agenda buffer will contain
6418your agenda for the current week, all TODO items that carry the tag
dbc28aaa 6419@samp{home}, and also all lines tagged with @samp{garden}. Finally the
4009494e
GM
6420command @kbd{C-c a o} provides a similar view for office tasks.
6421
4009494e 6422@node Setting Options, Exporting Agenda Views, Block agenda, Custom agenda views
a7808fba 6423@subsection Setting options for custom commands
4009494e
GM
6424@cindex options, for custom agenda views
6425
a7808fba 6426Org mode contains a number of variables regulating agenda construction
4009494e
GM
6427and display. The global variables define the behavior for all agenda
6428commands, including the custom commands. However, if you want to change
6429some settings just for a single custom view, you can do so. Setting
6430options requires inserting a list of variable names and values at the
6431right spot in @code{org-agenda-custom-commands}. For example:
6432
6433@lisp
6434@group
6435(setq org-agenda-custom-commands
6436 '(("w" todo "WAITING"
6437 ((org-agenda-sorting-strategy '(priority-down))
6438 (org-agenda-prefix-format " Mixed: ")))
dbc28aaa 6439 ("U" tags-tree "+boss-urgent"
4009494e 6440 ((org-show-following-heading nil)
28a16a1b
CD
6441 (org-show-hierarchy-above nil)))
6442 ("N" search ""
6443 ((org-agenda-files '("~org/notes.org"))
6444 (org-agenda-text-search-extra-files nil)))))
4009494e
GM
6445@end group
6446@end lisp
6447
6448@noindent
6449Now the @kbd{C-c a w} command will sort the collected entries only by
dbc28aaa 6450priority, and the prefix format is modified to just say @samp{ Mixed: }
4009494e
GM
6451instead of giving the category of the entry. The sparse tags tree of
6452@kbd{C-c a U} will now turn out ultra-compact, because neither the
6453headline hierarchy above the match, nor the headline following the match
28a16a1b
CD
6454will be shown. The command @kbd{C-c a N} will do a text search limited
6455to only a single file.
4009494e
GM
6456
6457For command sets creating a block agenda,
6458@code{org-agenda-custom-commands} has two separate spots for setting
6459options. You can add options that should be valid for just a single
6460command in the set, and options that should be valid for all commands in
6461the set. The former are just added to the command entry, the latter
6462must come after the list of command entries. Going back to the block
6463agenda example (@pxref{Block agenda}), let's change the sorting strategy
6464for the @kbd{C-c a h} commands to @code{priority-down}, but let's sort
6465the results for GARDEN tags query in the opposite order,
6466@code{priority-up}. This would look like this:
6467
6468@lisp
6469@group
6470(setq org-agenda-custom-commands
6471 '(("h" "Agenda and Home-related tasks"
6472 ((agenda)
dbc28aaa
CD
6473 (tags-todo "home")
6474 (tags "garden"
4009494e
GM
6475 ((org-agenda-sorting-strategy '(priority-up)))))
6476 ((org-agenda-sorting-strategy '(priority-down))))
6477 ("o" "Agenda and Office-related tasks"
6478 ((agenda)
dbc28aaa
CD
6479 (tags-todo "work")
6480 (tags "office")))))
4009494e
GM
6481@end group
6482@end lisp
6483
6484As you see, the values and parenthesis setting is a little complex.
6485When in doubt, use the customize interface to set this variable - it
6486fully supports its structure. Just one caveat: When setting options in
6487this interface, the @emph{values} are just lisp expressions. So if the
6488value is a string, you need to add the double quotes around the value
6489yourself.
6490
6491
a7808fba 6492@node Exporting Agenda Views, Using the agenda elsewhere, Setting Options, Custom agenda views
4009494e
GM
6493@subsection Exporting Agenda Views
6494@cindex agenda views, exporting
6495
6496If you are away from your computer, it can be very useful to have a
a7808fba 6497printed version of some agenda views to carry around. Org mode can
4009494e 6498export custom agenda views as plain text, HTML@footnote{You need to
28a16a1b
CD
6499install Hrvoje Niksic' @file{htmlize.el}.} postscript, and iCalendar
6500files. If you want to do this only occasionally, use the command
4009494e
GM
6501
6502@table @kbd
6503@kindex C-x C-w
6504@item C-x C-w
6505@cindex exporting agenda views
6506@cindex agenda views, exporting
6507Write the agenda view to a file. Depending on the extension of the
6508selected file name, the view will be exported as HTML (extension
28a16a1b
CD
6509@file{.html} or @file{.htm}), Postscript (extension @file{.ps}),
6510iCalendar (extension @file{.ics}), or plain text (any other extension).
6511Use the variable @code{org-agenda-exporter-settings} to
6512set options for @file{ps-print} and for @file{htmlize} to be used during
6513export, for example
6514
4009494e
GM
6515@lisp
6516(setq org-agenda-exporter-settings
6517 '((ps-number-of-columns 2)
6518 (ps-landscape-mode t)
6519 (htmlize-output-type 'css)))
6520@end lisp
6521@end table
6522
6523If you need to export certain agenda views frequently, you can associate
6524any custom agenda command with a list of output file names
6525@footnote{If you want to store standard views like the weekly agenda
6526or the global TODO list as well, you need to define custom commands for
28a16a1b 6527them in order to be able to specify file names.}. Here is an example
4009494e
GM
6528that first does define custom commands for the agenda and the global
6529todo list, together with a number of files to which to export them.
28a16a1b 6530Then we define two block agenda commands and specify file names for them
4009494e
GM
6531as well. File names can be relative to the current working directory,
6532or absolute.
6533
6534@lisp
6535@group
6536(setq org-agenda-custom-commands
6537 '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
6538 ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
6539 ("h" "Agenda and Home-related tasks"
28a16a1b 6540 ((agenda "")
dbc28aaa
CD
6541 (tags-todo "home")
6542 (tags "garden"))
4009494e
GM
6543 nil
6544 ("~/views/home.html"))
6545 ("o" "Agenda and Office-related tasks"
6546 ((agenda)
dbc28aaa
CD
6547 (tags-todo "work")
6548 (tags "office"))
4009494e 6549 nil
28a16a1b 6550 ("~/views/office.ps" "~/calendars/office.ics"))))
4009494e
GM
6551@end group
6552@end lisp
6553
6554The extension of the file name determines the type of export. If it is
a7808fba 6555@file{.html}, Org mode will use the @file{htmlize.el} package to convert
4009494e
GM
6556the buffer to HTML and save it to this file name. If the extension is
6557@file{.ps}, @code{ps-print-buffer-with-faces} is used to produce
28a16a1b
CD
6558postscript output. If the extension is @file{.ics}, iCalendar export is
6559run export over all files that were used to construct the agenda, and
6560limit the export to entries listed in the agenda now. Any other
6561extension produces a plain ASCII file.
4009494e
GM
6562
6563The export files are @emph{not} created when you use one of those
28a16a1b
CD
6564commands interactively because this might use too much overhead.
6565Instead, there is a special command to produce @emph{all} specified
6566files in one step:
4009494e
GM
6567
6568@table @kbd
6569@kindex C-c a e
6570@item C-c a e
28a16a1b 6571Export all agenda views that have export file names associated with
4009494e
GM
6572them.
6573@end table
6574
6575You can use the options section of the custom agenda commands to also
6576set options for the export commands. For example:
6577
6578@lisp
6579(setq org-agenda-custom-commands
6580 '(("X" agenda ""
6581 ((ps-number-of-columns 2)
6582 (ps-landscape-mode t)
6583 (org-agenda-prefix-format " [ ] ")
6584 (org-agenda-with-colors nil)
6585 (org-agenda-remove-tags t))
6586 ("theagenda.ps"))))
6587@end lisp
6588
6589@noindent
6590This command sets two options for the postscript exporter, to make it
6591print in two columns in landscape format - the resulting page can be cut
6592in two and then used in a paper agenda. The remaining settings modify
6593the agenda prefix to omit category and scheduling information, and
6594instead include a checkbox to check off items. We also remove the tags
6595to make the lines compact, and we don't want to use colors for the
6596black-and-white printer. Settings specified in
6597@code{org-agenda-exporter-settings} will also apply, but the settings
6598in @code{org-agenda-custom-commands} take precedence.
6599
6600@noindent
6601From the command line you may also use
6602@example
6603emacs -f org-batch-store-agenda-views -kill
6604@end example
6605@noindent
71d35b24
CD
6606or, if you need to modify some parameters@footnote{Quoting may depend on the
6607system you use, please check th FAQ for examples.}
4009494e
GM
6608@example
6609emacs -eval '(org-batch-store-agenda-views \
6610 org-agenda-ndays 30 \
dbc28aaa 6611 org-agenda-start-day "2007-11-01" \
4009494e
GM
6612 org-agenda-include-diary nil \
6613 org-agenda-files (quote ("~/org/project.org")))' \
6614 -kill
6615@end example
6616@noindent
6617which will create the agenda views restricted to the file
6618@file{~/org/project.org}, without diary entries and with 30 days
28a16a1b 6619extent.
4009494e 6620
a7808fba
CD
6621@node Using the agenda elsewhere, , Exporting Agenda Views, Custom agenda views
6622@subsection Using agenda information outside of Org
4009494e
GM
6623@cindex agenda, pipe
6624@cindex Scripts, for agenda processing
6625
a7808fba 6626Org provides commands to access agenda information for the command
4009494e
GM
6627line in emacs batch mode. This extracted information can be sent
6628directly to a printer, or it can be read by a program that does further
6629processing of the data. The first of these commands is the function
6630@code{org-batch-agenda}, that produces an agenda view and sends it as
6631ASCII text to STDOUT. The command takes a single string as parameter.
6632If the string has length 1, it is used as a key to one of the commands
6633you have configured in @code{org-agenda-custom-commands}, basically any
6634key you can use after @kbd{C-c a}. For example, to directly print the
6635current TODO list, you could use
6636
6637@example
6638emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
6639@end example
6640
6641If the parameter is a string with 2 or more characters, it is used as a
6642tags/todo match string. For example, to print your local shopping list
6643(all items with the tag @samp{shop}, but excluding the tag
6644@samp{NewYork}), you could use
6645
6646@example
28a16a1b 6647emacs -batch -l ~/.emacs \
4009494e
GM
6648 -eval '(org-batch-agenda "+shop-NewYork")' | lpr
6649@end example
6650
6651@noindent
6652You may also modify parameters on the fly like this:
6653
6654@example
6655emacs -batch -l ~/.emacs \
6656 -eval '(org-batch-agenda "a" \
6657 org-agenda-ndays 30 \
6658 org-agenda-include-diary nil \
6659 org-agenda-files (quote ("~/org/project.org")))' \
6660 | lpr
6661@end example
6662
6663@noindent
6664which will produce a 30 day agenda, fully restricted to the Org file
6665@file{~/org/projects.org}, not even including the diary.
6666
6667If you want to process the agenda data in more sophisticated ways, you
6668can use the command @code{org-batch-agenda-csv} to get a comma-separated
6669list of values for each agenda item. Each line in the output will
6670contain a number of fields separated by commas. The fields in a line
6671are:
6672
6673@example
6674category @r{The category of the item}
6675head @r{The headline, without TODO kwd, TAGS and PRIORITY}
6676type @r{The type of the agenda entry, can be}
6677 todo @r{selected in TODO match}
6678 tagsmatch @r{selected in tags match}
6679 diary @r{imported from diary}
6680 deadline @r{a deadline}
6681 scheduled @r{scheduled}
6682 timestamp @r{appointment, selected by timestamp}
6683 closed @r{entry was closed on date}
6684 upcoming-deadline @r{warning about nearing deadline}
6685 past-scheduled @r{forwarded scheduled item}
6686 block @r{entry has date block including date}
a7808fba 6687todo @r{The TODO keyword, if any}
4009494e
GM
6688tags @r{All tags including inherited ones, separated by colons}
6689date @r{The relevant date, like 2007-2-14}
6690time @r{The time, like 15:00-16:50}
6691extra @r{String with extra planning info}
6692priority-l @r{The priority letter if any was given}
6693priority-n @r{The computed numerical priority}
6694@end example
6695
6696@noindent
6697Time and date will only be given if a timestamp (or deadline/scheduled)
6698lead to the selection of the item.
6699
6700A CSV list like this is very easy to use in a post processing script.
6701For example, here is a Perl program that gets the TODO list from
a7808fba 6702Emacs/Org and prints all the items, preceded by a checkbox:
4009494e
GM
6703
6704@example
6705@group
6706#!/usr/bin/perl
6707
6708# define the Emacs command to run
6709$cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'";
6710
6711# run it and capture the output
6712$agenda = qx@{$cmd 2>/dev/null@};
6713
6714# loop over all lines
6715foreach $line (split(/\n/,$agenda)) @{
6716
6717 # get the individual values
6718 ($category,$head,$type,$todo,$tags,$date,$time,$extra,
6719 $priority_l,$priority_n) = split(/,/,$line);
6720
6721 # proccess and print
6722 print "[ ] $head\n";
6723@}
6724@end group
6725@end example
6726
a7808fba
CD
6727@node Agenda column view, , Custom agenda views, Agenda Views
6728@section Using column view in the agenda
6729@cindex column view, in agenda
6730@cindex agenda, column view
6731
6732Column view (@pxref{Column view}) is normally used to view and edit
6733properties embedded in the hierarchical structure of an Org file. It can be
6734quite useful to use column view also from the agenda, where entries are
6735collected by certain criteria.
6736
6737@table @kbd
6738@kindex C-c C-x C-c
6739@item C-c C-x C-c
6740Turn on column view in the agenda.
6741@end table
6742
6743To understand how to use this properly, it is important to realize that the
6744entries in the agenda are no longer in their proper outline environment.
6745This causes the following issues:
6746
6747@enumerate
6748@item
6749Org needs to make a decision which @code{COLUMNS} format to use. Since the
6750entries in the agenda are collected from different files, and different files
6751may have different @code{COLUMNS} formats, this is a non-trivial problem.
6752Org first checks if the variable @code{org-overriding-columns-format} is
6753currently set, and if yes takes the format from there. Otherwise it takes
6754the format associated with the first item in the agenda, or, if that item
6755does not have a specific format (defined in a property, or in it's file), it
6756uses @code{org-columns-default-format}.
6757@item
6758If any of the columns has a summary type defined (@pxref{Column attributes}),
6759turning on column view in the agenda will visit all relevant agenda files and
6760make sure that the computations of this property are up to date. This is
6761also true for the special @code{CLOCKSUM} property. Org will then sum the
6762values displayed in the agenda. In the daily/weekly agenda, the sums will
6763cover a single day, in all other views they cover the entire block. It is
6764vital to realize that the agenda may show the same entry @emph{twice} (for
6765example as scheduled and as a deadline), and it may show two entries from the
6766same hierarchy (for example a @emph{parent} and it's @emph{child}). In these
6767cases, the summation in the agenda will lead to incorrect results because
6768some values will count double.
6769@item
6770When the column view in the agenda shows the @code{CLOCKSUM}, that is always
6771the entire clocked time for this item. So even in the daily/weekly agenda,
6772the clocksum listed in column view may originate from times outside the
6773current view. This has the advantage that you can compare these values with
6774a column listing the planned total effort for a task - one of the major
6775applications for column view in the agenda. If you want information about
6776clocked time in the displayed period use clock table mode (press @kbd{R} in
6777the agenda).
6778@end enumerate
6779
6780
6781@node Embedded LaTeX, Exporting, Agenda Views, Top
4009494e
GM
6782@chapter Embedded LaTeX
6783@cindex @TeX{} interpretation
6784@cindex La@TeX{} interpretation
6785
6786Plain ASCII is normally sufficient for almost all note taking. One
a7808fba
CD
6787exception, however, are scientific notes which need to be able to contain
6788mathematical symbols and the occasional formula. La@TeX{}@footnote{La@TeX{}
6789is a macro system based on Donald E. Knuth's @TeX{} system. Many of the
6790features described here as ``La@TeX{}'' are really from @TeX{}, but for
6791simplicity I am blurring this distinction.} is widely used to typeset
6792scientific documents. Org mode supports embedding La@TeX{} code into its
6793files, because many academics are used to reading La@TeX{} source code, and
6794because it can be readily processed into images for HTML production.
4009494e
GM
6795
6796It is not necessary to mark La@TeX{} macros and code in any special way.
a7808fba 6797If you observe a few conventions, Org mode knows how to find it and what
4009494e
GM
6798to do with it.
6799
6800@menu
6801* Math symbols:: TeX macros for symbols and Greek letters
a7808fba 6802* Subscripts and superscripts:: Simple syntax for raising/lowering text
4009494e
GM
6803* LaTeX fragments:: Complex formulas made easy
6804* Processing LaTeX fragments:: Previewing LaTeX processing
6805* CDLaTeX mode:: Speed up entering of formulas
6806@end menu
6807
a7808fba 6808@node Math symbols, Subscripts and superscripts, Embedded LaTeX, Embedded LaTeX
4009494e
GM
6809@section Math symbols
6810@cindex math symbols
6811@cindex TeX macros
6812
6813You can use La@TeX{} macros to insert special symbols like @samp{\alpha}
6814to indicate the Greek letter, or @samp{\to} to indicate an arrow.
6815Completion for these macros is available, just type @samp{\} and maybe a
6816few letters, and press @kbd{M-@key{TAB}} to see possible completions.
a7808fba 6817Unlike La@TeX{} code, Org mode allows these macros to be present
4009494e
GM
6818without surrounding math delimiters, for example:
6819
6820@example
6821Angles are written as Greek letters \alpha, \beta and \gamma.
6822@end example
6823
6824During HTML export (@pxref{HTML export}), these symbols are translated
6825into the proper syntax for HTML, for the above examples this is
864c9740
CD
6826@samp{&alpha;} and @samp{&rarr;}, respectively. If you need such a symbol
6827inside a word, terminate it like this: @samp{\Aacute@{@}stor}.
4009494e 6828
a7808fba
CD
6829@node Subscripts and superscripts, LaTeX fragments, Math symbols, Embedded LaTeX
6830@section Subscripts and superscripts
4009494e
GM
6831@cindex subscript
6832@cindex superscript
6833
6834Just like in La@TeX{}, @samp{^} and @samp{_} are used to indicate super-
6835and subscripts. Again, these can be used without embedding them in
6836math-mode delimiters. To increase the readability of ASCII text, it is
6837not necessary (but OK) to surround multi-character sub- and superscripts
6838with curly braces. For example
6839
6840@example
6841The mass if the sun is M_sun = 1.989 x 10^30 kg. The radius of
6842the sun is R_@{sun@} = 6.96 x 10^8 m.
6843@end example
6844
6845To avoid interpretation as raised or lowered text, you can quote
6846@samp{^} and @samp{_} with a backslash: @samp{\_} and @samp{\^}.
6847
6848During HTML export (@pxref{HTML export}), subscript and superscripts
6849are surrounded with @code{<sub>} and @code{<sup>} tags, respectively.
6850
a7808fba 6851@node LaTeX fragments, Processing LaTeX fragments, Subscripts and superscripts, Embedded LaTeX
4009494e
GM
6852@section LaTeX fragments
6853@cindex LaTeX fragments
6854
6855With symbols, sub- and superscripts, HTML is pretty much at its end when
6856it comes to representing mathematical formulas@footnote{Yes, there is
6857MathML, but that is not yet fully supported by many browsers, and there
6858is no decent converter for turning La@TeX{} or ASCII representations of
6859formulas into MathML. So for the time being, converting formulas into
6860images seems the way to go.}. More complex expressions need a dedicated
a7808fba 6861formula processor. To this end, Org mode can contain arbitrary La@TeX{}
4009494e
GM
6862fragments. It provides commands to preview the typeset result of these
6863fragments, and upon export to HTML, all fragments will be converted to
6864images and inlined into the HTML document@footnote{The La@TeX{} export
6865will not use images for displaying La@TeX{} fragments but include these
6866fragments directly into the La@TeX{} code.}. For this to work you
6867need to be on a system with a working La@TeX{} installation. You also
6868need the @file{dvipng} program, available at
6869@url{http://sourceforge.net/projects/dvipng/}. The La@TeX{} header that
6870will be used when processing a fragment can be configured with the
6871variable @code{org-format-latex-header}.
6872
6873La@TeX{} fragments don't need any special marking at all. The following
6874snippets will be identified as La@TeX{} source code:
6875@itemize @bullet
6876@item
6877Environments of any kind. The only requirement is that the
6878@code{\begin} statement appears on a new line, preceded by only
6879whitespace.
6880@item
6881Text within the usual La@TeX{} math delimiters. To avoid conflicts with
6882currency specifications, single @samp{$} characters are only recognized
6883as math delimiters if the enclosed text contains at most two line breaks,
6884is directly attached to the @samp{$} characters with no whitespace in
6885between, and if the closing @samp{$} is followed by whitespace or
6886punctuation. For the other delimiters, there is no such restriction, so
6887when in doubt, use @samp{\(...\)} as inline math delimiters.
6888@end itemize
6889
6890@noindent For example:
6891
6892@example
6893\begin@{equation@} % arbitrary environments,
6894x=\sqrt@{b@} % even tables, figures
6895\end@{equation@} % etc
6896
6897If $a^2=b$ and \( b=2 \), then the solution must be
6898either $$ a=+\sqrt@{2@} $$ or \[ a=-\sqrt@{2@} \].
6899@end example
6900
6901@noindent
6902If you need any of the delimiter ASCII sequences for other purposes, you
6903can configure the option @code{org-format-latex-options} to deselect the
6904ones you do not wish to have interpreted by the La@TeX{} converter.
6905
6906@node Processing LaTeX fragments, CDLaTeX mode, LaTeX fragments, Embedded LaTeX
6907@section Processing LaTeX fragments
6908@cindex LaTeX fragments, preview
6909
6910La@TeX{} fragments can be processed to produce a preview images of the
6911typeset expressions:
6912
6913@table @kbd
6914@kindex C-c C-x C-l
6915@item C-c C-x C-l
6916Produce a preview image of the La@TeX{} fragment at point and overlay it
6917over the source code. If there is no fragment at point, process all
6918fragments in the current entry (between two headlines). When called
6919with a prefix argument, process the entire subtree. When called with
6920two prefix arguments, or when the cursor is before the first headline,
6921process the entire buffer.
6922@kindex C-c C-c
6923@item C-c C-c
6924Remove the overlay preview images.
6925@end table
6926
6927During HTML export (@pxref{HTML export}), all La@TeX{} fragments are
6928converted into images and inlined into the document if the following
6929setting is active:
6930
6931@lisp
6932(setq org-export-with-LaTeX-fragments t)
6933@end lisp
6934
6935@node CDLaTeX mode, , Processing LaTeX fragments, Embedded LaTeX
6936@section Using CDLaTeX to enter math
6937@cindex CDLaTeX
6938
a7808fba 6939CDLaTeX mode is a minor mode that is normally used in combination with a
4009494e 6940major La@TeX{} mode like AUCTeX in order to speed-up insertion of
a7808fba
CD
6941environments and math templates. Inside Org mode, you can make use of
6942some of the features of CDLaTeX mode. You need to install
4009494e
GM
6943@file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
6944AUCTeX) from @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
a7808fba
CD
6945Don't use CDLaTeX mode itself under Org mode, but use the light
6946version @code{org-cdlatex-mode} that comes as part of Org mode. Turn it
4009494e 6947on for the current buffer with @code{M-x org-cdlatex-mode}, or for all
a7808fba 6948Org files with
4009494e
GM
6949
6950@lisp
6951(add-hook 'org-mode-hook 'turn-on-org-cdlatex)
6952@end lisp
6953
6954When this mode is enabled, the following features are present (for more
a7808fba 6955details see the documentation of CDLaTeX mode):
4009494e
GM
6956@itemize @bullet
6957@kindex C-c @{
6958@item
6959Environment templates can be inserted with @kbd{C-c @{}.
6960@item
6961@kindex @key{TAB}
6962The @key{TAB} key will do template expansion if the cursor is inside a
a7808fba 6963La@TeX{} fragment@footnote{Org mode has a method to test if the cursor is
4009494e
GM
6964inside such a fragment, see the documentation of the function
6965@code{org-inside-LaTeX-fragment-p}.}. For example, @key{TAB} will
6966expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
6967correctly inside the first brace. Another @key{TAB} will get you into
6968the second brace. Even outside fragments, @key{TAB} will expand
6969environment abbreviations at the beginning of a line. For example, if
6970you write @samp{equ} at the beginning of a line and press @key{TAB},
6971this abbreviation will be expanded to an @code{equation} environment.
6972To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help}.
6973@item
6974@kindex _
6975@kindex ^
6976Pressing @kbd{_} and @kbd{^} inside a La@TeX{} fragment will insert these
6977characters together with a pair of braces. If you use @key{TAB} to move
6978out of the braces, and if the braces surround only a single character or
6979macro, they are removed again (depending on the variable
6980@code{cdlatex-simplify-sub-super-scripts}).
6981@item
6982@kindex `
6983Pressing the backquote @kbd{`} followed by a character inserts math
6984macros, also outside La@TeX{} fragments. If you wait more than 1.5 seconds
6985after the backquote, a help window will pop up.
6986@item
6987@kindex '
6988Pressing the normal quote @kbd{'} followed by another character modifies
6989the symbol before point with an accent or a font. If you wait more than
69901.5 seconds after the backquote, a help window will pop up. Character
6991modification will work only inside La@TeX{} fragments, outside the quote
6992is normal.
6993@end itemize
6994
6995@node Exporting, Publishing, Embedded LaTeX, Top
6996@chapter Exporting
6997@cindex exporting
6998
a7808fba 6999Org mode documents can be exported into a variety of other formats. For
4009494e 7000printing and sharing of notes, ASCII export produces a readable and
a7808fba 7001simple version of an Org file. HTML export allows you to publish a
4009494e
GM
7002notes file on the web, while the XOXO format provides a solid base for
7003exchange with a broad range of other applications. La@TeX{} export lets
a7808fba 7004you use Org mode and its structured editing functions to easily create
4009494e
GM
7005La@TeX{} files. To incorporate entries with associated times like
7006deadlines or appointments into a desktop calendar program like iCal,
a7808fba
CD
7007Org mode can also produce extracts in the iCalendar format. Currently
7008Org mode only supports export, not import of these different formats.
4009494e 7009
b349f79f
CD
7010@menu
7011* Markup rules:: Which structures are recognized?
864c9740 7012* Selective export:: Using tags to select and exclude trees
b349f79f
CD
7013* Export options:: Per-file export settings
7014* The export dispatcher:: How to access exporter commands
7015* ASCII export:: Exporting to plain ASCII
7016* HTML export:: Exporting to HTML
71d35b24 7017* LaTeX and PDF export:: Exporting to LaTeX, and processing to PDF
b349f79f
CD
7018* XOXO export:: Exporting to XOXO
7019* iCalendar export:: Exporting in iCalendar format
7020@end menu
7021
864c9740 7022@node Markup rules, Selective export, Exporting, Exporting
b349f79f
CD
7023@section Markup rules
7024
7025When exporting Org mode documents, the exporter tries to reflect the
7026structure of the document as accurately as possible in the back-end. Since
7027export targets like HTML or La@TeX{} allow much richer formatting, Org mode
7028has rules how to prepare text for rich export. This section summarizes the
7029markup rule used in an Org mode buffer.
7030
7031@menu
7032* Document title:: How the document title is determined
7033* Headings and sections:: The main structure of the exported document
7034* Table of contents:: If, where, how to create a table of contents
7035* Initial text:: Text before the first headline
7036* Lists:: Plain lists are exported
7037* Paragraphs:: What determines beginning and ending
7038* Literal examples:: Source code and other examples
7039* Include files:: Include the contents of a file during export
7040* Tables exported:: Tables are exported richly
7041* Footnotes:: Numbers like [1]
7042* Emphasis and monospace:: To bold or not to bold
7043* TeX macros and LaTeX fragments:: Create special, rich export.
7044* Horizontal rules:: A line across the page
7045* Comment lines:: Some lines will not be exported
7046@end menu
7047
7048@node Document title, Headings and sections, Markup rules, Markup rules
7049@subheading Document title
7050@cindex document title, markup rules
7051
7052@noindent
7053The title of the exported document is taken from the special line
7054
7055@example
7056#+TITLE: This is the title of the document
7057@end example
7058
7059@noindent
7060If this line does not exist, the title is derived from the first non-empty,
7061non-comment line in the buffer. If no such line exists, or if you have
7062turned off exporting of the text before the first headline (see below), the
7063title will be the file name without extension.
7064
7065If you are exporting only a subtree by marking is as the region, the heading
7066of the subtree will become the title of the document. If the subtree has a
7067property @code{EXPORT_TITLE}, that will take precedence.
7068
7069@node Headings and sections, Table of contents, Document title, Markup rules
7070@subheading Headings and sections
7071@cindex headings and sections, markup rules
7072
7073The outline structure of the document as described in @ref{Document
7074Structure} forms the basis for defining sections of the exported document.
7075However, since the outline structure is also used for (for example) lists of
7076tasks, only the first three outline levels will be used as headings. Deeper
7077levels will become itemized lists. You can change the location of this
7078switch, globally by setting the variable @code{org-headline-levels}, or on a
7079per file basis with a line
7080
7081@example
7082#+OPTIONS: H:4
7083@end example
7084
7085@node Table of contents, Initial text, Headings and sections, Markup rules
7086@subheading Table of contents
7087@cindex table of contents, markup rules
7088
7089The table of contents is normally inserted directly before the first headline
7090of the file. If you would like to get it to a different location, insert the
7091string @code{[TABLE-OF-CONTENTS]} on a line by itself at the desired
7092location. The depth of the table of contents is by default the same as the
7093number of headline levels, but you can choose a smaller number or turn off
7094the table of contents entirely by configuring the variable
7095@code{org-export-with-toc}, or on a per-file basis with a line like
7096
7097@example
7098#+OPTIONS: toc:2 (only to two levels in TOC)
7099#+OPTIONS: toc:nil (no TOC at all)
7100@end example
7101
7102@node Initial text, Lists, Table of contents, Markup rules
7103@subheading Text before the first headline
7104@cindex text before first headline, markup rules
7105@cindex #+TEXT
7106
7107Org mode normally exports the text before the first headline, and even uses
7108the first line as the document title. The text will be fully marked up. If
7109you need to include literal HTML or La@TeX{} code, use the special constructs
7110described below in the sections for the individual exporters.
7111
7112Some people like to use the space before the first headline for setup and
7113internal links and therefore would like to control the exported text before
7114the first headline in a different way. You can do so by setting the variable
7115@code{org-export-skip-text-before-1st-heading} to @code{t}. On a per-file
7116basis, you can get the same effect with @samp{#+OPTIONS: skip:t}.
7117
7118@noindent
7119If you still want to have some text before the first headline, use the
7120@code{#+TEXT} construct:
7121
7122@example
7123#+OPTIONS: skip:t
7124#+TEXT: This text will go before the *first* headline.
7125#+TEXT: [TABLE-OF-CONTENTS]
7126#+TEXT: This goes between the table of contents and the first headline
7127@end example
7128
7129@node Lists, Paragraphs, Initial text, Markup rules
7130@subheading Lists
7131@cindex lists, markup rules
7132
7133Plain lists as described in @ref{Plain lists} are translated to the back-ends
7134syntax for such lists. Most back-ends support unordered, ordered, and
7135description lists.
7136
7137@node Paragraphs, Literal examples, Lists, Markup rules
7138@subheading Paragraphs, line breaks, and quoting
7139@cindex paragraphs, markup rules
7140
7141Paragraphs are separated by at least one empty line. If you need to enforce
7142a line break within a paragraph, use @samp{\\} at the end of a line.
7143
7144To keep the line breaks in a region, but otherwise use normal formatting, you
7145can use this construct, which can also be used to format poetry.
7146
7147@example
7148#+BEGIN_VERSE
864c9740
CD
7149 Great clouds overhead
7150 Tiny black birds rise and fall
7151 Snow covers Emacs
7152
7153 -- AlexSchroeder
b349f79f
CD
7154#+END_VERSE
7155@end example
7156
7157When quoting a passage from another document, it is customary to format this
7158as a paragraph that is indented on both the left and the right margin. You
7159can include quotations in Org mode documents like this:
7160
7161@example
7162#+BEGIN_QUOTE
7163Everything should be made as simple as possible,
7164but not any simpler -- Albert Einstein
7165#+END_QUOTE
7166@end example
7167
7168
7169@node Literal examples, Include files, Paragraphs, Markup rules
7170@subheading Literal examples
7171@cindex literal examples, markup rules
7172
7173You can include literal examples that should not be subjected to
7174markup. Such examples will be typeset in monospace, so this is well suited
7175for source code and similar examples.
7176@cindex #+BEGIN_EXAMPLE
7177
7178@example
7179#+BEGIN_EXAMPLE
7180Some example from a text file.
7181#+END_EXAMPLE
7182@end example
7183
7184For simplicity when using small examples, you can also start the example
7185lines with a colon:
7186
7187@example
7188: Some example from a text file.
7189@end example
7190
7191@cindex formatting source code, markup rules
7192If the example is source code from a programming language, or any other text
7193that can be marked up by font-lock in Emacs, you can ask for the example to
7194look like the fontified Emacs buffer@footnote{Currently this works only for
7195the HTML back-end, and requires the @file{htmlize.el} package version 1.34 or
7196later.}. This is done with the @samp{src} block, where you also need to
7197specify the name of the major mode that should be used to fontify the
7198example:
7199@cindex #+BEGIN_SRC
7200
7201@example
7202#+BEGIN_SRC emacs-lisp
7203(defun org-xor (a b)
7204 "Exclusive or."
7205 (if a (not b) b))
7206#+END_SRC
7207@end example
7208
7209@table @kbd
7210@kindex C-c '
7211@item C-c '
7212Edit the source code example at point in its native mode. This works by
7213switching to an indirect buffer, narrowing the buffer and switching to the
864c9740
CD
7214other mode. You need to exit by pressing @kbd{C-c '} again@footnote{Upon
7215exit, lines starting with @samp{*} or @samp{#} will get a comma prepended, to
7216keep them from being interpreted by Org as outline nodes or special
7217comments. These commas will be striped for editing with @kbd{C-c '}, and
7218also for export.}. Fixed-width
7219regions (where each line starts with a colon followed by a space) will be
7220edited using @code{artist-mode}@footnote{You may select a different-mode with
7221the variable @code{org-edit-fixed-width-region-mode}.} to allow creating
7222ASCII drawings easily. Using this command in an empty line will create a new
7223fixed-width region.
b349f79f
CD
7224@end table
7225
7226
7227@node Include files, Tables exported, Literal examples, Markup rules
7228@subheading Include files
7229@cindex include files, markup rules
7230
7231During export, you can include the content of another file. For example, to
7232include your .emacs file, you could use:
7233@cindex #+INCLUDE
7234
7235@example
7236#+INCLUDE: "~/.emacs" src emacs-lisp
7237@end example
7238
7239The optional second and third parameter are the markup (@samp{quote},
7240@samp{example}, or @samp{src}), and, if the markup is @samp{src}, the
7241language for formatting the contents. The markup is optional, if it is not
7242given, the text will be assumed to be in Org mode format and will be
44ce9197
CD
7243processed normally. The include line will also allow additional keyword
7244parameters @code{:prefix1} and @code{:prefix} to specify prefixes for the
7245first line and for each following line. For example, to include a file as an
7246item, use
7247
7248@example
7249#+INCLUDE: "~/snippets/xx" :prefix1 " + " :prefix " "
7250@end example
b349f79f
CD
7251
7252@table @kbd
7253@kindex C-c '
7254@item C-c '
7255Visit the include file at point.
7256@end table
7257
7258@node Tables exported, Footnotes, Include files, Markup rules
7259@subheading Tables
7260@cindex tables, markup rules
7261
7262Both the native Org mode tables (@pxref{Tables}) and tables formatted with
7263the @file{table.el} package will be exported properly. For Org mode tables,
7264the lines before the first horizontal separator line will become table header
7265lines.
7266
7267@node Footnotes, Emphasis and monospace, Tables exported, Markup rules
7268@subheading Footnotes
7269@cindex footnotes, markup rules
7270@cindex @file{footnote.el}
7271
7272@kindex C-c !
7273Numbers in square brackets are treated as footnote markers, and lines
7274starting with such a marker are interpreted as the footnote itself. You can
7275use the Emacs package @file{footnote.el} to create footnotes@footnote{The
7276@file{footnote} package uses @kbd{C-c !} to invoke its commands. This
7277binding conflicts with the Org mode command for inserting inactive time
7278stamps. You could use the variable @code{footnote-prefix} to switch
7279footnotes commands to another key. Or, if you are too used to this binding,
7280you could use @code{org-replace-disputed-keys} and @code{org-disputed-keys}
7281to change the settings in Org.}. For example:
7282
7283@example
7284The Org homepage[1] now looks a lot better than it used to.
7285
7286[1] The link is: http://orgmode.org
7287@end example
7288
7289@node Emphasis and monospace, TeX macros and LaTeX fragments, Footnotes, Markup rules
7290@subheading Emphasis and monospace
7291
7292@cindex underlined text, markup rules
7293@cindex bold text, markup rules
7294@cindex italic text, markup rules
7295@cindex verbatim text, markup rules
7296@cindex code text, markup rules
7297@cindex strike-through text, markup rules
7298You can make words @b{*bold*}, @i{/italic/}, _underlined_, @code{=code=}
7299and @code{~verbatim~}, and, if you must, @samp{+strike-through+}. Text
7300in the code and verbatim string is not processed for Org mode specific
7301syntax, it is exported verbatim.
7302
7303@node TeX macros and LaTeX fragments, Horizontal rules, Emphasis and monospace, Markup rules
7304@subheading @TeX{} macros and La@TeX{} fragments
7305@cindex LaTeX fragments, markup rules
7306@cindex TeX macros, markup rules
7307@cindex HTML entities
7308@cindex LaTeX entities
7309
7310A @TeX{}-like syntax is used to specify special characters. Where possible,
7311these will be transformed into the native format of the exporter back-end.
7312Strings like @code{\alpha} will be exported as @code{&alpha;} in the HTML
7313output, and as @code{$\alpha$} in the La@TeX{} output. Similarly,
7314@code{\nbsp} will become @code{&nbsp;} in HTML and @code{~} in La@TeX{}.
7315This applies for a large number of entities, with names taken from both HTML
7316and La@TeX{}, see the variable @code{org-html-entities} for the complete
7317list. If you are unsure about a name, use @kbd{M-@key{TAB}} for completion
7318after having types the backslash and maybe a few characters
7319(@pxref{Completion}).
7320
7321La@TeX{} fragments are converted into images for HTML export, and they are
7322written literally into the La@TeX{} export. See also @ref{Embedded LaTeX}.
7323
7324Finally, @samp{\-} is treated as a shy hyphen, and @samp{--}, @samp{---}, and
7325@samp{...} are all converted into special commands creating hyphens of
7326different lengths or a compact set of dots.
7327
7328@node Horizontal rules, Comment lines, TeX macros and LaTeX fragments, Markup rules
7329@subheading Horizontal rules
7330@cindex horizontal rules, markup rules
7331A line consisting of only dashes, and at least 5 of them, will be
7332exported as a horizontal line (@samp{<hr/>} in HTML).
7333
7334@node Comment lines, , Horizontal rules, Markup rules
7335@subheading Comment lines
7336@cindex comment lines
7337@cindex exporting, not
7338
7339Lines starting with @samp{#} in column zero are treated as comments and will
7340never be exported. Also entire subtrees starting with the word
7341@samp{COMMENT} will never be exported. Finally, regions surrounded by
7342@samp{#+BEGIN_COMMENT} ... @samp{#+END_COMMENT} will not be exported.
7343
7344@table @kbd
7345@kindex C-c ;
7346@item C-c ;
7347Toggle the COMMENT keyword at the beginning of an entry.
7348@end table
7349
864c9740
CD
7350@node Selective export, Export options, Markup rules, Exporting
7351@section Selective export
7352@cindex export, selective by tags
7353
7354You may use tags to select the parts of a document that should be exported,
7355or to exclude parts from export. This behavior is governed by two variables:
7356@code{org-export-select-tags} and @code{org-export-exclude-tags}.
7357
7358Org first checks if any of the @emph{select} tags is present in the buffer.
7359If yes, all trees that do not carry one of these tags will be excluded. If a
7360selected tree is a subtree, the heading hierarchy above it will also be
7361selected for export, but not the text below those headings.
7362
7363@noindent
7364If none of the select tags is found, the whole buffer will be selected for
7365export.
7366
7367@noindent
7368Finally, all subtrees that are marked by any of the @emph{exclude} tags will
7369be removed from the export buffer.
7370
7371@node Export options, The export dispatcher, Selective export, Exporting
b349f79f
CD
7372@section Export options
7373@cindex options, for export
7374
7375@cindex completion, of option keywords
7376The exporter recognizes special lines in the buffer which provide
7377additional information. These lines may be put anywhere in the file.
7378The whole set of lines can be inserted into the buffer with @kbd{C-c
7379C-e t}. For individual lines, a good way to make sure the keyword is
7380correct is to type @samp{#+} and then use @kbd{M-@key{TAB}} completion
7381(@pxref{Completion}).
7382
7383@table @kbd
7384@kindex C-c C-e t
7385@item C-c C-e t
7386Insert template with export options, see example below.
7387@end table
7388
7389@cindex #+TITLE:
7390@cindex #+AUTHOR:
7391@cindex #+DATE:
7392@cindex #+EMAIL:
7393@cindex #+LANGUAGE:
7394@cindex #+TEXT:
7395@cindex #+OPTIONS:
7396@cindex #+LINK_UP:
7397@cindex #+LINK_HOME:
864c9740
CD
7398@cindex #+EXPORT_SELECT_TAGS:
7399@cindex #+EXPORT_EXCLUDE_TAGS:
b349f79f
CD
7400@example
7401#+TITLE: the title to be shown (default is the buffer name)
7402#+AUTHOR: the author (default taken from @code{user-full-name})
7403#+DATE: A date, fixed, of a format string for @code{format-time-string}
7404#+EMAIL: his/her email address (default from @code{user-mail-address})
7405#+LANGUAGE: language for HTML, e.g. @samp{en} (@code{org-export-default-language})
7406#+TEXT: Some descriptive text to be inserted at the beginning.
7407#+TEXT: Several lines may be given.
7408#+OPTIONS: H:2 num:t toc:t \n:nil @@:t ::t |:t ^:t f:t TeX:t ...
7409#+LINK_UP: the ``up'' link of an exported page
7410#+LINK_HOME: the ``home'' link of an exported page
864c9740
CD
7411#+EXPORT_SELECT_TAGS: Tags that select a tree for export
7412#+EXPORT_EXCLUDE_TAGS: Tags that exclude a tree from export
b349f79f
CD
7413@end example
7414
7415@noindent
7416The OPTIONS line is a compact@footnote{If you want to configure many options
7417this way, you can use several OPTIONS lines.} form to specify export settings. Here
7418you can:
7419@cindex headline levels
7420@cindex section-numbers
7421@cindex table of contents
7422@cindex line-break preservation
7423@cindex quoted HTML tags
7424@cindex fixed-width sections
7425@cindex tables
7426@cindex @TeX{}-like syntax for sub- and superscripts
7427@cindex footnotes
7428@cindex special strings
7429@cindex emphasized text
7430@cindex @TeX{} macros
7431@cindex La@TeX{} fragments
7432@cindex author info, in export
7433@cindex time info, in export
7434@example
7435H: @r{set the number of headline levels for export}
7436num: @r{turn on/off section-numbers}
7437toc: @r{turn on/off table of contents, or set level limit (integer)}
7438\n: @r{turn on/off line-break-preservation}
7439@@: @r{turn on/off quoted HTML tags}
7440:: @r{turn on/off fixed-width sections}
7441|: @r{turn on/off tables}
7442^: @r{turn on/off @TeX{}-like syntax for sub- and superscripts. If}
7443 @r{you write "^:@{@}", @code{a_@{b@}} will be interpreted, but}
7444 @r{the simple @code{a_b} will be left as it is.}
7445-: @r{turn on/off conversion of special strings.}
7446f: @r{turn on/off footnotes like this[1].}
7447*: @r{turn on/off emphasized text (bold, italic, underlined)}
7448TeX: @r{turn on/off simple @TeX{} macros in plain text}
7449LaTeX: @r{turn on/off La@TeX{} fragments}
7450skip: @r{turn on/off skipping the text before the first heading}
7451author: @r{turn on/off inclusion of author name/email into exported file}
dd12e1c6 7452creator: @r{turn on/off inclusion of creator info into exported file}
b349f79f
CD
7453timestamp: @r{turn on/off inclusion creation time into exported file}
7454d: @r{turn on/off inclusion of drawers}
7455@end example
7456
7457These options take effect in both the HTML and La@TeX{} export, except
7458for @code{TeX} and @code{LaTeX}, which are respectively @code{t} and
7459@code{nil} for the La@TeX{} export.
7460
7461When exporting only a single subtree by selecting it with @kbd{C-c @@} before
7462calling an export command, the subtree can overrule some of the file's export
7463settings with properties @code{EXPORT_FILE_NAME}, @code{EXPORT_TITLE},
7464@code{EXPORT_TEXT}, and @code{EXPORT_OPTIONS}.
7465
7466@node The export dispatcher, ASCII export, Export options, Exporting
7467@section The export dispatcher
7468@cindex dispatcher, for export commands
7469
7470All export commands can be reached using the export dispatcher, which is a
7471prefix key that prompts for an additional key specifying the command.
7472Normally the entire file is exported, but if there is an active region that
7473contains one outline tree, the first heading is used as document title and
7474the subtrees are exported.
4009494e
GM
7475
7476@table @kbd
7477@kindex C-c C-e
7478@item C-c C-e
7479Dispatcher for export and publishing commands. Displays a help-window
7480listing the additional key(s) needed to launch an export or publishing
a7808fba
CD
7481command. The prefix arg is passed through to the exporter. If the option
7482@code{org-export-run-in-background} is set, Org will run the command in the
7483background if that seems useful for the specific command (i.e. commands that
7484write to a file).
b349f79f
CD
7485@kindex C-c C-e v
7486@item C-c C-e v
7487Like @kbd{C-c C-e}, but only export the text that is currently visible
7488(i.e. not hidden by outline visibility).
a7808fba
CD
7489@kindex C-u C-u C-c C-e
7490@item C-u C-u C-c C-e
7491Call an the exporter, but reverse the setting of
7492@code{org-export-run-in-background}, i.e. request background processing if
7493not set, or force processing in the current Emacs process if st.
4009494e
GM
7494@end table
7495
b349f79f 7496@node ASCII export, HTML export, The export dispatcher, Exporting
4009494e
GM
7497@section ASCII export
7498@cindex ASCII export
7499
a7808fba 7500ASCII export produces a simple and very readable version of an Org mode
4009494e
GM
7501file.
7502
7503@cindex region, active
7504@cindex active region
a7808fba 7505@cindex Transient mark mode
4009494e
GM
7506@table @kbd
7507@kindex C-c C-e a
7508@item C-c C-e a
7509Export as ASCII file. For an org file @file{myfile.org}, the ASCII file
7510will be @file{myfile.txt}. The file will be overwritten without
7511warning. If there is an active region, only the region will be
b349f79f
CD
7512exported. If the selected region is a single tree@footnote{To select the
7513current subtree, use @kbd{C-c @@}.}, the tree head will
4009494e 7514become the document title. If the tree head entry has or inherits an
b349f79f 7515@code{EXPORT_FILE_NAME} property, that name will be used for the
28a16a1b 7516export.
4009494e
GM
7517@kindex C-c C-e v a
7518@item C-c C-e v a
7519Export only the visible part of the document.
7520@end table
7521
7522@cindex headline levels, for exporting
7523In the exported version, the first 3 outline levels will become
7524headlines, defining a general document structure. Additional levels
7525will be exported as itemized lists. If you want that transition to occur
7526at a different level, specify it with a prefix argument. For example,
7527
7528@example
7529@kbd{C-1 C-c C-e a}
7530@end example
7531
7532@noindent
7533creates only top level headlines and does the rest as items. When
7534headlines are converted to items, the indentation of the text following
7535the headline is changed to fit nicely under the item. This is done with
a7808fba 7536the assumption that the first body line indicates the base indentation of
4009494e
GM
7537the body text. Any indentation larger than this is adjusted to preserve
7538the layout relative to the first line. Should there be lines with less
7539indentation than the first, these are left alone.
7540
71d35b24 7541@node HTML export, LaTeX and PDF export, ASCII export, Exporting
4009494e
GM
7542@section HTML export
7543@cindex HTML export
7544
a7808fba 7545Org mode contains an HTML (XHTML 1.0 strict) exporter with extensive
4009494e
GM
7546HTML formatting, in ways similar to John Grubers @emph{markdown}
7547language, but with additional support for tables.
7548
7549@menu
b349f79f 7550* HTML Export commands:: How to invoke HTML export
a7808fba 7551* Quoting HTML tags:: Using direct HTML in Org mode
4009494e
GM
7552* Links:: Transformation of links for HTML
7553* Images:: How to include images
a7808fba
CD
7554* CSS support:: Changing the appearance of the output
7555* Javascript support:: Info and Folding in a web browser
4009494e
GM
7556@end menu
7557
7558@node HTML Export commands, Quoting HTML tags, HTML export, HTML export
7559@subsection HTML export commands
7560
7561@cindex region, active
7562@cindex active region
a7808fba 7563@cindex Transient mark mode
4009494e
GM
7564@table @kbd
7565@kindex C-c C-e h
7566@item C-c C-e h
b349f79f
CD
7567Export as HTML file @file{myfile.html}. For an org file @file{myfile.org},
7568the ASCII file will be @file{myfile.html}. The file will be overwritten
7569without warning. If there is an active region, only the region will be
7570exported. If the selected region is a single tree@footnote{To select the
7571current subtree, use @kbd{C-c @@}.}, the tree head will become the document
7572title. If the tree head entry has or inherits an @code{EXPORT_FILE_NAME}
7573property, that name will be used for the export.
4009494e
GM
7574@kindex C-c C-e b
7575@item C-c C-e b
7576Export as HTML file and immediately open it with a browser.
7577@kindex C-c C-e H
7578@item C-c C-e H
7579Export to a temporary buffer, do not create a file.
7580@kindex C-c C-e R
dbc28aaa 7581@item C-c C-e R
a7808fba
CD
7582Export the active region to a temporary buffer. With a prefix argument, do
7583not produce the file header and footer, but just the plain HTML section for
7584the region. This is good for cut-and-paste operations.
4009494e
GM
7585@kindex C-c C-e v h
7586@kindex C-c C-e v b
7587@kindex C-c C-e v H
7588@kindex C-c C-e v R
7589@item C-c C-e v h
7590@item C-c C-e v b
7591@item C-c C-e v H
7592@item C-c C-e v R
7593Export only the visible part of the document.
7594@item M-x org-export-region-as-html
a7808fba 7595Convert the region to HTML under the assumption that it was Org mode
4009494e
GM
7596syntax before. This is a global command that can be invoked in any
7597buffer.
7598@item M-x org-replace-region-by-HTML
a7808fba 7599Replace the active region (assumed to be in Org mode syntax) by HTML
4009494e
GM
7600code.
7601@end table
7602
7603@cindex headline levels, for exporting
a7808fba
CD
7604In the exported version, the first 3 outline levels will become headlines,
7605defining a general document structure. Additional levels will be exported as
7606itemized lists. If you want that transition to occur at a different level,
7607specify it with a numeric prefix argument. For example,
4009494e
GM
7608
7609@example
7610@kbd{C-2 C-c C-e b}
7611@end example
7612
7613@noindent
7614creates two levels of headings and does the rest as items.
7615
7616@node Quoting HTML tags, Links, HTML Export commands, HTML export
7617@subsection Quoting HTML tags
7618
7619Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
7620@samp{&gt;} in HTML export. If you want to include simple HTML tags
7621which should be interpreted as such, mark them with @samp{@@} as in
7622@samp{@@<b>bold text@@</b>}. Note that this really works only for
7623simple tags. For more extensive HTML that should be copied verbatim to
7624the exported file use either
7625
7626@example
7627#+HTML: Literal HTML code for export
7628@end example
7629
7630@noindent or
b349f79f 7631@cindex #+BEGIN_HTML
4009494e
GM
7632
7633@example
7634#+BEGIN_HTML
7635All lines between these markers are exported literally
7636#+END_HTML
7637@end example
7638
7639
7640@node Links, Images, Quoting HTML tags, HTML export
7641@subsection Links
7642
7643@cindex links, in HTML export
7644@cindex internal links, in HTML export
7645@cindex external links, in HTML export
7646Internal links (@pxref{Internal links}) will continue to work in HTML
7647files only if they match a dedicated @samp{<<target>>}. Automatic links
7648created by radio targets (@pxref{Radio targets}) will also work in the
7649HTML file. Links to external files will still work if the HTML file is
a7808fba 7650in the same directory as the Org file. Links to other @file{.org}
4009494e
GM
7651files will be translated into HTML links under the assumption that an
7652HTML version also exists of the linked file. For information related to
7653linking files while publishing them to a publishing directory see
7654@ref{Publishing links}.
7655
44ce9197
CD
7656If you want to specify attributes for links, you can do so using a special
7657syntax. Here is an example that sets @code{alt} and @code{title} attributes
7658for an inlined image:
7659
7660@example
7661[[./img/a.jpg@{@{alt="This is image A" title="Image with no action"@}@}]]
7662@end example
7663
4009494e
GM
7664@node Images, CSS support, Links, HTML export
7665@subsection Images
7666
7667@cindex images, inline in HTML
7668@cindex inlining images in HTML
a7808fba 7669HTML export can inline images given as links in the Org file, and
4009494e
GM
7670it can make an image the clickable part of a link. By
7671default@footnote{but see the variable
7672@code{org-export-html-inline-images}}, images are inlined if a link does
7673not have a description. So @samp{[[file:myimg.jpg]]} will be inlined,
7674while @samp{[[file:myimg.jpg][the image]]} will just produce a link
7675@samp{the image} that points to the image. If the description part
7676itself is a @code{file:} link or a @code{http:} URL pointing to an
7677image, this image will be inlined and activated so that clicking on the
7678image will activate the link. For example, to include a thumbnail that
7679will link to a high resolution version of the image, you could use:
7680
7681@example
7682[[file:highres.jpg][file:thumb.jpg]]
7683@end example
7684
7685@noindent
7686and you could use @code{http} addresses just as well.
7687
a7808fba 7688@node CSS support, Javascript support, Images, HTML export
4009494e 7689@subsection CSS support
a7808fba
CD
7690@cindex CSS, for HTML export
7691@cindex HTML export, CSS
4009494e
GM
7692
7693You can also give style information for the exported file. The HTML
7694exporter assigns the following CSS classes to appropriate parts of the
7695document - your style specifications may change these:
7696@example
7697.todo @r{TODO keywords}
7698.done @r{the DONE keyword}
7699.timestamp @r{time stamp}
7700.timestamp-kwd @r{keyword associated with a time stamp, like SCHEDULED}
7701.tag @r{tag in a headline}
7702.target @r{target for links}
7703@end example
7704
44ce9197 7705Each exported files contains a compact default style that defines these
e45e3595
CD
7706classes in a basic way@footnote{This style is defined in the constant
7707@code{org-export-html-style-default}, which you should not modify. To turn
7708inclusion of these defaults off, customize
7709@code{org-export-html-style-include-default}}. You may overwrite these
7710settings, or add to them by using the variables @code{org-export-html-style}
7711(for Org-wide settings) and @code{org-export-html-style-extra} (for more
7712granular settings, like file-local settings). To set the latter variable
7713individually for each file, you can use
4009494e
GM
7714
7715@example
864c9740 7716#+STYLE: <link rel="stylesheet" type="text/css" href="stylesheet.css" />
4009494e
GM
7717@end example
7718
864c9740 7719@noindent
e45e3595
CD
7720For longer style definitions, you can use several such lines. You could also
7721directly write a @code{<style>} @code{</style>} section in this way, without
7722referring to an external file.
4009494e
GM
7723
7724@c FIXME: More about header and footer styles
7725@c FIXME: Talk about links and targets.
7726
a7808fba
CD
7727@node Javascript support, , CSS support, HTML export
7728@subsection Javascript supported display of web pages
7729
7730@emph{Sebastian Rose} has written a JavaScript program especially designed to
7731enhance the web viewing experience of HTML files created with Org. This
7732program allows to view large files in two different ways. The first one is
7733an @emph{Info}-like mode where each section is displayed separately and
7734navigation can be done with the @kbd{n} and @kbd{p} keys (and some other keys
7735as well, press @kbd{?} for an overview of the available keys). The second
7736view type is a @emph{folding} view much like Org provides it inside Emacs.
7737The script is available at @url{http://orgmode.org/org-info.js} and you can
b349f79f
CD
7738find the documentation for it at
7739@url{http://orgmode.org/worg/code/org-info-js/org-info.js.html}. We are
7740serving the script from our site, but if you use it a lot, you might not want
7741to be dependent on @url{orgmode.org} and prefer to install a local copy on
7742your own web server.
a7808fba 7743
b349f79f 7744To use the script, you need to make sure that the @file{org-jsinfo.el} module
a7808fba
CD
7745gets loaded. It should be loaded by default, try @kbd{M-x customize-variable
7746@key{RET} org-modules @key{RET}} to convince yourself that this is indeed the
7747case. All it then takes to make use of the program is adding a single line
7748to the Org file:
7749
7750@example
b349f79f 7751#+INFOJS_OPT: view:info toc:nil
a7808fba
CD
7752@end example
7753
7754@noindent
7755If this line is found, the HTML header will automatically contain the code
7756needed to invoke the script. Using the line above, you can set the following
7757viewing options:
7758
7759@example
7760path: @r{The path to the script. The default is to grab the script from}
7761 @r{@url{http://orgmode.org/org-info.js}, but you might want to have}
7762 @r{a local copy and use a path like @samp{../scripts/org-info.js}.}
b349f79f 7763view: @r{Initial view when website is first shown. Possible values are:}
a7808fba
CD
7764 info @r{Info-like interface with one section per page.}
7765 overview @r{Folding interface, initially showing only top-level.}
7766 content @r{Folding interface, starting with all headlines visible.}
7767 showall @r{Folding interface, all headlines and text visible.}
7768sdepth: @r{Maximum headline level that will still become an independent}
7769 @r{section for info and folding modes. The default is taken from}
7770 @r{@code{org-headline-levels} (= the @code{H} switch in @code{#+OPTIONS}).}
7771 @r{If this is smaller than in @code{org-headline-levels}, each}
7772 @r{info/folding section can still contain children headlines.}
7773toc: @r{Should the table of content @emph{initially} be visible?}
7774 @r{Even when @code{nil}, you can always get to the toc with @kbd{i}.}
7775tdepth: @r{The depth of the table of contents. The defaults are taken from}
7776 @r{the variables @code{org-headline-levels} and @code{org-export-with-toc}.}
b349f79f
CD
7777ftoc: @r{Does the css of the page specify a fixed position for the toc?}
7778 @r{If yes, the toc will never be displayed as a section.}
a7808fba
CD
7779ltoc: @r{Should there be short contents (children) in each section?}
7780mouse: @r{Headings are highlighted when the mouse is over them. Should be}
7781 @r{@samp{underline} (default) or a background color like @samp{#cccccc}.}
7782buttons: @r{Should view-toggle buttons be everywhere? When @code{nil} (the}
7783 @r{default), only one such button will be present.}
7784@end example
7785
7786You can choose default values for these options by customizing the variable
7787@code{org-infojs-options}. If you always want to apply the script to your
7788pages, configure the variable @code{org-export-html-use-infojs}.
7789
71d35b24
CD
7790@node LaTeX and PDF export, XOXO export, HTML export, Exporting
7791@section LaTeX and PDF export
4009494e 7792@cindex LaTeX export
71d35b24 7793@cindex PDF export
4009494e 7794
71d35b24
CD
7795Org mode contains a La@TeX{} exporter written by Bastien Guerry. With
7796further processing, this backend is also used to produce PDF output. Since
7797the LaTeX output uses @file{hyperref} to implement links and cross
7798references, the PDF output file will be fully linked.
4009494e
GM
7799
7800@menu
71d35b24 7801* LaTeX/PDF export commands::
4009494e 7802* Quoting LaTeX code:: Incorporating literal LaTeX code
a7808fba 7803* Sectioning structure:: Changing sectioning in LaTeX output
4009494e
GM
7804@end menu
7805
71d35b24 7806@node LaTeX/PDF export commands, Quoting LaTeX code, LaTeX and PDF export, LaTeX and PDF export
4009494e
GM
7807@subsection LaTeX export commands
7808
7809@table @kbd
7810@kindex C-c C-e l
7811@item C-c C-e l
b349f79f
CD
7812Export as La@TeX{} file @file{myfile.tex}. For an org file
7813@file{myfile.org}, the ASCII file will be @file{myfile.tex}. The file will
7814be overwritten without warning. If there is an active region, only the
7815region will be exported. If the selected region is a single tree@footnote{To
7816select the current subtree, use @kbd{C-c @@}.}, the tree head will become the
7817document title. If the tree head entry has or inherits an
7818@code{EXPORT_FILE_NAME} property, that name will be used for the export.
4009494e
GM
7819@kindex C-c C-e L
7820@item C-c C-e L
7821Export to a temporary buffer, do not create a file.
7822@kindex C-c C-e v l
7823@kindex C-c C-e v L
7824@item C-c C-e v l
7825@item C-c C-e v L
7826Export only the visible part of the document.
7827@item M-x org-export-region-as-latex
a7808fba 7828Convert the region to La@TeX{} under the assumption that it was Org mode
4009494e
GM
7829syntax before. This is a global command that can be invoked in any
7830buffer.
7831@item M-x org-replace-region-by-latex
a7808fba 7832Replace the active region (assumed to be in Org mode syntax) by La@TeX{}
4009494e 7833code.
71d35b24
CD
7834@kindex C-c C-e p
7835@item C-c C-e p
7836Export as LaTeX and then process to PDF.
7837@kindex C-c C-e d
7838@item C-c C-e d
7839Export as LaTeX and then process to PDF, then open the resulting PDF file.
4009494e
GM
7840@end table
7841
7842@cindex headline levels, for exporting
7843In the exported version, the first 3 outline levels will become
7844headlines, defining a general document structure. Additional levels
7845will be exported as description lists. The exporter can ignore them or
7846convert them to a custom string depending on
7847@code{org-latex-low-levels}.
7848
7849If you want that transition to occur at a different level, specify it
a7808fba 7850with a numeric prefix argument. For example,
4009494e
GM
7851
7852@example
7853@kbd{C-2 C-c C-e l}
7854@end example
7855
7856@noindent
7857creates two levels of headings and does the rest as items.
7858
71d35b24 7859@node Quoting LaTeX code, Sectioning structure, LaTeX/PDF export commands, LaTeX and PDF export
4009494e
GM
7860@subsection Quoting LaTeX code
7861
7862Embedded La@TeX{} as described in @ref{Embedded LaTeX} will be correctly
a7808fba 7863inserted into the La@TeX{} file. Furthermore, you can add special code
4009494e
GM
7864that should only be present in La@TeX{} export with the following
7865constructs:
7866
7867@example
7868#+LaTeX: Literal LaTeX code for export
7869@end example
7870
7871@noindent or
b349f79f 7872@cindex #+BEGIN_LaTeX
4009494e
GM
7873
7874@example
7875#+BEGIN_LaTeX
7876All lines between these markers are exported literally
7877#+END_LaTeX
7878@end example
dbc28aaa 7879
71d35b24 7880@node Sectioning structure, , Quoting LaTeX code, LaTeX and PDF export
dbc28aaa
CD
7881@subsection Sectioning structure
7882@cindex LaTeX class
7883@cindex LaTeX sectioning structure
7884
7885By default, the La@TeX{} output uses the class @code{article}.
7886
7887You can change this globally by setting a different value for
71d35b24
CD
7888@code{org-export-latex-default-class} or locally by adding an option like
7889@code{#+LaTeX_CLASS: myclass} in your file. The class should be listed in
7890@code{org-export-latex-classes}, where you can also define the sectioning
7891structure for each class, as well as defining additonal classes.
dbc28aaa
CD
7892
7893
71d35b24 7894@node XOXO export, iCalendar export, LaTeX and PDF export, Exporting
4009494e
GM
7895@section XOXO export
7896@cindex XOXO export
7897
a7808fba 7898Org mode contains an exporter that produces XOXO-style output.
4009494e 7899Currently, this exporter only handles the general outline structure and
a7808fba 7900does not interpret any additional Org mode features.
4009494e
GM
7901
7902@table @kbd
7903@kindex C-c C-e x
7904@item C-c C-e x
7905Export as XOXO file @file{myfile.html}.
7906@kindex C-c C-e v
7907@item C-c C-e v x
7908Export only the visible part of the document.
7909@end table
7910
b349f79f 7911@node iCalendar export, , XOXO export, Exporting
4009494e
GM
7912@section iCalendar export
7913@cindex iCalendar export
7914
44ce9197
CD
7915Some people like to use Org mode for keeping track of projects, but still
7916prefer a standard calendar application for anniversaries and appointments.
7917In this case it can be useful to have deadlines and other time-stamped items
7918in Org files show up in the calendar application. Org mode can export
7919calendar information in the standard iCalendar format. If you also want to
7920have TODO entries included in the export, configure the variable
7921@code{org-icalendar-include-todo}. iCalendar export will export plain time
7922stamps as VEVENT, and TODO items as VTODO. It will also create events from
7923deadlines that are in non-TODO items. Deadlines and scheduling dates in TODO
7924items will be used to set the start and due dates for the todo
7925entry@footnote{See the variables @code{org-icalendar-use-deadline} and
864c9740
CD
7926@code{org-icalendar-use-scheduled}.}. As categories, it will use the tags
7927locally defined in the heading, and the file/tree category@footnote{To add
7928inherited tags or the TODO state, configure the variable
7929@code{org-icalendar-categories}.}.
4009494e 7930
b349f79f
CD
7931The iCalendar standard requires each entry to have a globally unique
7932identifier (UID). Org creates these identifiers during export. If you set
7933the variable @code{org-icalendar-store-UID}, the UID will be stored in the
7934@code{:ID:} property of the entry and re-used next time you report this
7935entry. Since a single entry can give rise to multiple iCalendar entries (as
7936a timestamp, a deadline, a scheduled item, and as a TODO item), Org adds
7937prefixes to the UID, depending on what triggered the inclusion of the entry.
7938In this way the UID remains unique, but a synchronization program can still
7939figure out from which entry all the different instances originate.
7940
4009494e
GM
7941@table @kbd
7942@kindex C-c C-e i
7943@item C-c C-e i
7944Create iCalendar entries for the current file and store them in the same
7945directory, using a file extension @file{.ics}.
7946@kindex C-c C-e I
7947@item C-c C-e I
7948Like @kbd{C-c C-e i}, but do this for all files in
7949@code{org-agenda-files}. For each of these files, a separate iCalendar
7950file will be written.
7951@kindex C-c C-e c
7952@item C-c C-e c
7953Create a single large iCalendar file from all files in
7954@code{org-agenda-files} and write it to the file given by
7955@code{org-combined-agenda-icalendar-file}.
7956@end table
7957
dbc28aaa
CD
7958The export will honor SUMMARY, DESCRIPTION and LOCATION properties if
7959the selected entries have them. If not, the summary will be derived
7960from the headline, and the description from the body (limited to
28a16a1b 7961@code{org-icalendar-include-body} characters).
dbc28aaa 7962
44ce9197 7963How this calendar is best read and updated, that depends on the application
4009494e
GM
7964you are using. The FAQ covers this issue.
7965
4009494e
GM
7966@node Publishing, Miscellaneous, Exporting, Top
7967@chapter Publishing
7968@cindex publishing
7969
a7808fba 7970Org includes@footnote{@file{org-publish.el} is not distributed with
4009494e
GM
7971Emacs 21, if you are still using Emacs 21, you need you need to download
7972this file separately.} a publishing management system that allows you to
7973configure automatic HTML conversion of @emph{projects} composed of
7974interlinked org files. This system is called @emph{org-publish}. You can
7975also configure org-publish to automatically upload your exported HTML
7976pages and related attachments, such as images and source code files, to
a7808fba 7977a web server. Org-publish turns Org into a web-site authoring tool.
4009494e
GM
7978
7979You can also use Org-publish to convert files into La@TeX{}, or even
7980combine HTML and La@TeX{} conversion so that files are available in both
7981formats on the server@footnote{Since La@TeX{} files on a server are not
7982that helpful, you surely want to perform further conversion on them --
7983e.g. convert them to @code{PDF} format.}.
7984
a7808fba 7985Org-publish has been contributed to Org by David O'Toole.
4009494e
GM
7986
7987@menu
7988* Configuration:: Defining projects
7989* Sample configuration:: Example projects
7990* Triggering publication:: Publication commands
7991@end menu
7992
7993@node Configuration, Sample configuration, Publishing, Publishing
7994@section Configuration
7995
7996Publishing needs significant configuration to specify files, destination
7997and many other properties of a project.
7998
7999@menu
8000* Project alist:: The central configuration variable
8001* Sources and destinations:: From here to there
8002* Selecting files:: What files are part of the project?
8003* Publishing action:: Setting the function doing the publishing
8004* Publishing options:: Tweaking HTML export
8005* Publishing links:: Which links keep working after publishing?
8006* Project page index:: Publishing a list of project files
8007@end menu
8008
8009@node Project alist, Sources and destinations, Configuration, Configuration
8010@subsection The variable @code{org-publish-project-alist}
8011@cindex org-publish-project-alist
8012@cindex projects, for publishing
8013
8014Org-publish is configured almost entirely through setting the value of
8015one variable, called @code{org-publish-project-alist}.
8016Each element of the list configures one project, and may be in one of
8017the two following forms:
8018
8019@lisp
dbc28aaa 8020("project-name" :property value :property value ...)
4009494e 8021
28a16a1b
CD
8022@r{or}
8023
dbc28aaa 8024("project-name" :components ("project-name" "project-name" ...))
4009494e
GM
8025
8026@end lisp
8027
8028In both cases, projects are configured by specifying property values.
8029A project defines the set of files that will be published, as well as
8030the publishing configuration to use when publishing those files. When
8031a project takes the second form listed above, the individual members
8032of the ``components'' property are taken to be components of the
8033project, which group together files requiring different publishing
8034options. When you publish such a ``meta-project'' all the components
8035will also publish.
8036
8037@node Sources and destinations, Selecting files, Project alist, Configuration
8038@subsection Sources and destinations for files
8039@cindex directories, for publishing
8040
8041Most properties are optional, but some should always be set. In
8042particular, org-publish needs to know where to look for source files,
8043and where to put published files.
8044
8045@multitable @columnfractions 0.3 0.7
8046@item @code{:base-directory}
8047@tab Directory containing publishing source files
8048@item @code{:publishing-directory}
8049@tab Directory (possibly remote) where output files will be published.
8050@item @code{:preparation-function}
b349f79f 8051@tab Function called before starting the publishing process, for example to
4009494e 8052run @code{make} for updating files to be published.
b349f79f
CD
8053@item @code{:completion-function}
8054@tab Function called after finishing the publishing process, for example to
8055change permissions of the resulting files.
4009494e
GM
8056@end multitable
8057@noindent
8058
8059@node Selecting files, Publishing action, Sources and destinations, Configuration
8060@subsection Selecting files
8061@cindex files, selecting for publishing
8062
8063By default, all files with extension @file{.org} in the base directory
8064are considered part of the project. This can be modified by setting the
28a16a1b 8065properties
4009494e
GM
8066@multitable @columnfractions 0.25 0.75
8067@item @code{:base-extension}
8068@tab Extension (without the dot!) of source files. This actually is a
8069regular expression.
8070
28a16a1b 8071@item @code{:exclude}
4009494e
GM
8072@tab Regular expression to match file names that should not be
8073published, even though they have been selected on the basis of their
8074extension.
8075
8076@item @code{:include}
8077@tab List of files to be included regardless of @code{:base-extension}
8078and @code{:exclude}.
8079@end multitable
8080
8081@node Publishing action, Publishing options, Selecting files, Configuration
a7808fba 8082@subsection Publishing action
4009494e
GM
8083@cindex action, for publishing
8084
8085Publishing means that a file is copied to the destination directory and
71d35b24
CD
8086possibly transformed in the process. The default transformation is to export
8087Org files as HTML files, and this is done by the function
8088@code{org-publish-org-to-html} which calls the HTML exporter (@pxref{HTML
8089export}). But you also can publish your files in La@TeX{} by using the
8090function @code{org-publish-org-to-latex} instead, or as PDF files using
8091@code{org-publish-org-to-pdf}. Other files like images only need to be
8092copied to the publishing destination. For non-Org files, you need to provide
8093your own publishing function:
4009494e
GM
8094
8095@multitable @columnfractions 0.3 0.7
8096@item @code{:publishing-function}
8097@tab Function executing the publication of a file. This may also be a
8098list of functions, which will all be called in turn.
8099@end multitable
8100
8101The function must accept two arguments: a property list containing at
8102least a @code{:publishing-directory} property, and the name of the file
8103to be published. It should take the specified file, make the necessary
8104transformation (if any) and place the result into the destination folder.
8105You can write your own publishing function, but @code{org-publish}
8106provides one for attachments (files that only need to be copied):
8107@code{org-publish-attachment}.
8108
8109@node Publishing options, Publishing links, Publishing action, Configuration
8110@subsection Options for the HTML/LaTeX exporters
8111@cindex options, for publishing
8112
8113The property list can be used to set many export options for the HTML
8114and La@TeX{} exporters. In most cases, these properties correspond to user
a7808fba 8115variables in Org. The table below lists these properties along
4009494e
GM
8116with the variable they belong to. See the documentation string for the
8117respective variable for details.
8118
8119@multitable @columnfractions 0.3 0.7
8120@item @code{:language} @tab @code{org-export-default-language}
8121@item @code{:headline-levels} @tab @code{org-export-headline-levels}
8122@item @code{:section-numbers} @tab @code{org-export-with-section-numbers}
8123@item @code{:table-of-contents} @tab @code{org-export-with-toc}
8124@item @code{:archived-trees} @tab @code{org-export-with-archived-trees}
8125@item @code{:emphasize} @tab @code{org-export-with-emphasize}
8126@item @code{:sub-superscript} @tab @code{org-export-with-sub-superscripts}
dbc28aaa 8127@item @code{:special-strings} @tab @code{org-export-with-special-strings}
4009494e
GM
8128@item @code{:TeX-macros} @tab @code{org-export-with-TeX-macros}
8129@item @code{:LaTeX-fragments} @tab @code{org-export-with-LaTeX-fragments}
8130@item @code{:fixed-width} @tab @code{org-export-with-fixed-width}
44ce9197
CD
8131@item @code{:timestamps} @tab @code{org-export-with-timestamps}
8132@item @code{:author-info} @tab @code{org-export-author-info}
8133@item @code{:creator-info} @tab @code{org-export-creator-info}
8134@item @code{:tags} @tab @code{org-export-with-tags}
4009494e
GM
8135@item @code{:tables} @tab @code{org-export-with-tables}
8136@item @code{:table-auto-headline} @tab @code{org-export-highlight-first-table-line}
e45e3595 8137@item @code{:style-include-default} @tab @code{org-export-html-style-include-default}
4009494e 8138@item @code{:style} @tab @code{org-export-html-style}
44ce9197 8139@item @code{:style-extra} @tab @code{org-export-html-style-extra}
4009494e
GM
8140@item @code{:convert-org-links} @tab @code{org-export-html-link-org-files-as-html}
8141@item @code{:inline-images} @tab @code{org-export-html-inline-images}
8142@item @code{:expand-quoted-html} @tab @code{org-export-html-expand}
8143@item @code{:timestamp} @tab @code{org-export-html-with-timestamp}
8144@item @code{:publishing-directory} @tab @code{org-export-publishing-directory}
8145@item @code{:preamble} @tab @code{org-export-html-preamble}
8146@item @code{:postamble} @tab @code{org-export-html-postamble}
8147@item @code{:auto-preamble} @tab @code{org-export-html-auto-preamble}
8148@item @code{:auto-postamble} @tab @code{org-export-html-auto-postamble}
8149@item @code{:author} @tab @code{user-full-name}
8150@item @code{:email} @tab @code{user-mail-address}
864c9740
CD
8151@item @code{:select-tags} @tab @code{org-export-select-tags}
8152@item @code{:exclude-tags} @tab @code{org-export-exclude-tags}
4009494e
GM
8153@end multitable
8154
dbc28aaa
CD
8155If you use several email addresses, separate them by a semi-column.
8156
4009494e
GM
8157Most of the @code{org-export-with-*} variables have the same effect in
8158both HTML and La@TeX{} exporters, except for @code{:TeX-macros} and
8159@code{:LaTeX-fragments}, respectively @code{nil} and @code{t} in the
8160La@TeX{} export.
8161
dbc28aaa
CD
8162When a property is given a value in @code{org-publish-project-alist},
8163its setting overrides the value of the corresponding user variable (if
8164any) during publishing. Options set within a file (@pxref{Export
4009494e
GM
8165options}), however, override everything.
8166
8167@node Publishing links, Project page index, Publishing options, Configuration
8168@subsection Links between published files
8169@cindex links, publishing
8170
a7808fba 8171To create a link from one Org file to another, you would use
4009494e
GM
8172something like @samp{[[file:foo.org][The foo]]} or simply
8173@samp{file:foo.org.} (@pxref{Hyperlinks}). Upon publishing this link
8174becomes a link to @file{foo.html}. In this way, you can interlink the
8175pages of your "org web" project and the links will work as expected when
8176you publish them to HTML.
8177
8178You may also link to related files, such as images. Provided you are
8179careful with relative pathnames, and provided you have also configured
dbc28aaa 8180@code{org-publish} to upload the related files, these links will work
4009494e
GM
8181too. @ref{Complex example} for an example of this usage.
8182
a7808fba 8183Sometime an Org file to be published may contain links that are
4009494e 8184only valid in your production environment, but not in the publishing
28a16a1b 8185location. In this case, use the property
4009494e
GM
8186
8187@multitable @columnfractions 0.4 0.6
8188@item @code{:link-validation-function}
8189@tab Function to validate links
8190@end multitable
8191
8192@noindent
8193to define a function for checking link validity. This function must
8194accept two arguments, the file name and a directory relative to which
8195the file name is interpreted in the production environment. If this
8196function returns @code{nil}, then the HTML generator will only insert a
8197description into the HTML file, but no link. One option for this
8198function is @code{org-publish-validate-link} which checks if the given
8199file is part of any project in @code{org-publish-project-alist}.
8200
8201@node Project page index, , Publishing links, Configuration
8202@subsection Project page index
8203@cindex index, of published pages
8204
8205The following properties may be used to control publishing of an
8206index of files or summary page for a given project.
8207
8208@multitable @columnfractions 0.25 0.75
8209@item @code{:auto-index}
8210@tab When non-nil, publish an index during org-publish-current-project or
8211org-publish-all.
8212
8213@item @code{:index-filename}
8214@tab Filename for output of index. Defaults to @file{index.org} (which
8215becomes @file{index.html}).
8216
8217@item @code{:index-title}
8218@tab Title of index page. Defaults to name of file.
8219
8220@item @code{:index-function}
a7808fba 8221@tab Plug-in function to use for generation of index.
4009494e
GM
8222Defaults to @code{org-publish-org-index}, which generates a plain list
8223of links to all files in the project.
8224@end multitable
8225
8226@node Sample configuration, Triggering publication, Configuration, Publishing
8227@section Sample configuration
8228
8229Below we provide two example configurations. The first one is a simple
a7808fba 8230project publishing only a set of Org files. The second example is
4009494e
GM
8231more complex, with a multi-component project.
8232
8233@menu
8234* Simple example:: One-component publishing
8235* Complex example:: A multi-component publishing example
8236@end menu
8237
8238@node Simple example, Complex example, Sample configuration, Sample configuration
8239@subsection Example: simple publishing configuration
8240
a7808fba 8241This example publishes a set of Org files to the @file{public_html}
4009494e
GM
8242directory on the local machine.
8243
8244@lisp
8245(setq org-publish-project-alist
28a16a1b 8246 '(("org"
4009494e
GM
8247 :base-directory "~/org/"
8248 :publishing-directory "~/public_html"
8249 :section-numbers nil
8250 :table-of-contents nil
e45e3595 8251 :style "<link rel=\"stylesheet\"
4009494e
GM
8252 href=\"../other/mystyle.css\"
8253 type=\"text/css\">")))
8254@end lisp
8255
8256@node Complex example, , Simple example, Sample configuration
8257@subsection Example: complex publishing configuration
8258
8259This more complicated example publishes an entire website, including
8260org files converted to HTML, image files, emacs lisp source code, and
a7808fba 8261style sheets. The publishing-directory is remote and private files are
4009494e
GM
8262excluded.
8263
8264To ensure that links are preserved, care should be taken to replicate
8265your directory structure on the web server, and to use relative file
8266paths. For example, if your org files are kept in @file{~/org} and your
8267publishable images in @file{~/images}, you'd link to an image with
8268@c
8269@example
8270file:../images/myimage.png
8271@end example
8272@c
8273On the web server, the relative path to the image should be the
8274same. You can accomplish this by setting up an "images" folder in the
a7808fba 8275right place on the web server, and publishing images to it.
4009494e
GM
8276
8277@lisp
8278(setq org-publish-project-alist
8279 '(("orgfiles"
8280 :base-directory "~/org/"
8281 :base-extension "org"
8282 :publishing-directory "/ssh:user@@host:~/html/notebook/"
8283 :publishing-function org-publish-org-to-html
8284 :exclude "PrivatePage.org" ;; regexp
8285 :headline-levels 3
8286 :section-numbers nil
8287 :table-of-contents nil
e45e3595 8288 :style "<link rel=\"stylesheet\"
4009494e
GM
8289 href=\"../other/mystyle.css\" type=\"text/css\">"
8290 :auto-preamble t
8291 :auto-postamble nil)
28a16a1b 8292
4009494e
GM
8293 ("images"
8294 :base-directory "~/images/"
8295 :base-extension "jpg\\|gif\\|png"
8296 :publishing-directory "/ssh:user@@host:~/html/images/"
8297 :publishing-function org-publish-attachment)
28a16a1b 8298
4009494e
GM
8299 ("other"
8300 :base-directory "~/other/"
8301 :base-extension "css\\|el"
8302 :publishing-directory "/ssh:user@@host:~/html/other/"
8303 :publishing-function org-publish-attachment)
8304 ("website" :components ("orgfiles" "images" "other"))))
8305@end lisp
8306
8307@node Triggering publication, , Sample configuration, Publishing
8308@section Triggering publication
8309
8310Once org-publish is properly configured, you can publish with the
28a16a1b 8311following functions:
4009494e
GM
8312
8313@table @kbd
8314@item C-c C-e C
8315Prompt for a specific project and publish all files that belong to it.
8316@item C-c C-e P
8317Publish the project containing the current file.
8318@item C-c C-e F
8319Publish only the current file.
8320@item C-c C-e A
8321Publish all projects.
8322@end table
8323
8324Org uses timestamps to track when a file has changed. The above
8325functions normally only publish changed files. You can override this and
8326force publishing of all files by giving a prefix argument.
8327
b349f79f 8328@node Miscellaneous, Extensions, Publishing, Top
4009494e
GM
8329@chapter Miscellaneous
8330
8331@menu
8332* Completion:: M-TAB knows what you need
a7808fba 8333* Customization:: Adapting Org to your taste
4009494e
GM
8334* In-buffer settings:: Overview of the #+KEYWORDS
8335* The very busy C-c C-c key:: When in doubt, press C-c C-c
8336* Clean view:: Getting rid of leading stars in the outline
a7808fba 8337* TTY keys:: Using Org on a tty
4009494e
GM
8338* Interaction:: Other Emacs packages
8339* Bugs:: Things which do not work perfectly
8340@end menu
8341
8342@node Completion, Customization, Miscellaneous, Miscellaneous
8343@section Completion
8344@cindex completion, of @TeX{} symbols
8345@cindex completion, of TODO keywords
8346@cindex completion, of dictionary words
8347@cindex completion, of option keywords
8348@cindex completion, of tags
8349@cindex completion, of property keys
8350@cindex completion, of link abbreviations
8351@cindex @TeX{} symbol completion
8352@cindex TODO keywords completion
8353@cindex dictionary word completion
8354@cindex option keyword completion
8355@cindex tag completion
8356@cindex link abbreviations, completion of
8357
a7808fba 8358Org supports in-buffer completion. This type of completion does
4009494e
GM
8359not make use of the minibuffer. You simply type a few letters into
8360the buffer and use the key to complete text right there.
8361
8362@table @kbd
8363@kindex M-@key{TAB}
8364@item M-@key{TAB}
8365Complete word at point
8366@itemize @bullet
8367@item
8368At the beginning of a headline, complete TODO keywords.
8369@item
8370After @samp{\}, complete @TeX{} symbols supported by the exporter.
8371@item
8372After @samp{*}, complete headlines in the current buffer so that they
8373can be used in search links like @samp{[[*find this headline]]}.
8374@item
8375After @samp{:} in a headline, complete tags. The list of tags is taken
8376from the variable @code{org-tag-alist} (possibly set through the
8377@samp{#+TAGS} in-buffer option, @pxref{Setting tags}), or it is created
8378dynamically from all tags used in the current buffer.
8379@item
8380After @samp{:} and not in a headline, complete property keys. The list
8381of keys is constructed dynamically from all keys used in the current
8382buffer.
8383@item
8384After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
8385@item
8386After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
a7808fba 8387@samp{OPTIONS} which set file-specific options for Org mode. When the
4009494e
GM
8388option keyword is already complete, pressing @kbd{M-@key{TAB}} again
8389will insert example settings for this keyword.
8390@item
8391In the line after @samp{#+STARTUP: }, complete startup keywords,
8392i.e. valid keys for this line.
8393@item
a7808fba 8394Elsewhere, complete dictionary words using Ispell.
4009494e
GM
8395@end itemize
8396@end table
8397
8398@node Customization, In-buffer settings, Completion, Miscellaneous
8399@section Customization
8400@cindex customization
8401@cindex options, for customization
8402@cindex variables, for customization
8403
8404There are more than 180 variables that can be used to customize
a7808fba 8405Org. For the sake of compactness of the manual, I am not
4009494e
GM
8406describing the variables here. A structured overview of customization
8407variables is available with @kbd{M-x org-customize}. Or select
8408@code{Browse Org Group} from the @code{Org->Customization} menu. Many
8409settings can also be activated on a per-file basis, by putting special
8410lines into the buffer (@pxref{In-buffer settings}).
8411
8412@node In-buffer settings, The very busy C-c C-c key, Customization, Miscellaneous
8413@section Summary of in-buffer settings
8414@cindex in-buffer settings
8415@cindex special keywords
8416
a7808fba 8417Org mode uses special lines in the buffer to define settings on a
4009494e
GM
8418per-file basis. These lines start with a @samp{#+} followed by a
8419keyword, a colon, and then individual words defining a setting. Several
8420setting words can be in the same line, but you can also have multiple
8421lines for the keyword. While these settings are described throughout
8422the manual, here is a summary. After changing any of those lines in the
8423buffer, press @kbd{C-c C-c} with the cursor still in the line to
8424activate the changes immediately. Otherwise they become effective only
8425when the file is visited again in a new Emacs session.
8426
8427@table @kbd
8428@item #+ARCHIVE: %s_done::
8429This line sets the archive location for the agenda file. It applies for
8430all subsequent lines until the next @samp{#+ARCHIVE} line, or the end
8431of the file. The first such line also applies to any entries before it.
8432The corresponding variable is @code{org-archive-location}.
8433@item #+CATEGORY:
8434This line sets the category for the agenda file. The category applies
8435for all subsequent lines until the next @samp{#+CATEGORY} line, or the
8436end of the file. The first such line also applies to any entries before it.
8437@item #+COLUMNS: %25ITEM .....
8438Set the default format for columns view. This format applies when
dbc28aaa
CD
8439columns view is invoked in location where no @code{COLUMNS} property
8440applies.
4009494e
GM
8441@item #+CONSTANTS: name1=value1 ...
8442Set file-local values for constants to be used in table formulas. This
8443line set the local variable @code{org-table-formula-constants-local}.
dbc28aaa 8444The global version of this variable is
4009494e 8445@code{org-table-formula-constants}.
b349f79f
CD
8446@item #+FILETAGS: :tag1:tag2:tag3:
8447Set tags that can be inherited by any entry in the file, including the
8448top-level entries.
dbc28aaa
CD
8449@item #+DRAWERS: NAME1 .....
8450Set the file-local set of drawers. The corresponding global variable is
8451@code{org-drawers}.
4009494e
GM
8452@item #+LINK: linkword replace
8453These lines (several are allowed) specify link abbreviations.
8454@xref{Link abbreviations}. The corresponding variable is
8455@code{org-link-abbrev-alist}.
8456@item #+PRIORITIES: highest lowest default
8457This line sets the limits and the default for the priorities. All three
8458must be either letters A-Z or numbers 0-9. The highest priority must
8459have a lower ASCII number that the lowest priority.
8460@item #+PROPERTY: Property_Name Value
8461This line sets a default inheritance value for entries in the current
8462buffer, most useful for specifying the allowed values of a property.
b349f79f
CD
8463@item #+SETUPFILE: file
8464This line defines a file that holds more in-buffer setup. Normally this is
8465entirely ignored. Only when the buffer is parsed for option-setting lines
8466(i.e. when starting Org mode for a file, when pressing @kbd{C-c C-c} in a
8467settings line, or when exporting), then the contents of this file are parsed
8468as if they had been included in the buffer. In particlar, the file can be
8469any other Org mode file with internal setup. You can visit the file the
8470cursor is in the line with @kbd{C-c '}.
4009494e 8471@item #+STARTUP:
a7808fba
CD
8472This line sets options to be used at startup of Org mode, when an
8473Org file is being visited. The first set of options deals with the
4009494e
GM
8474initial visibility of the outline tree. The corresponding variable for
8475global default settings is @code{org-startup-folded}, with a default
8476value @code{t}, which means @code{overview}.
8477@cindex @code{overview}, STARTUP keyword
8478@cindex @code{content}, STARTUP keyword
8479@cindex @code{showall}, STARTUP keyword
8480@example
8481overview @r{top-level headlines only}
8482content @r{all headlines}
8483showall @r{no folding at all, show everything}
8484@end example
8485Then there are options for aligning tables upon visiting a file. This
8486is useful in files containing narrowed table columns. The corresponding
8487variable is @code{org-startup-align-all-tables}, with a default value
28a16a1b 8488@code{nil}.
4009494e
GM
8489@cindex @code{align}, STARTUP keyword
8490@cindex @code{noalign}, STARTUP keyword
8491@example
8492align @r{align all tables}
8493noalign @r{don't align tables on startup}
8494@end example
28a16a1b
CD
8495Logging closing and reinstating TODO items, and clock intervals
8496(variables @code{org-log-done}, @code{org-log-note-clock-out}, and
8497@code{org-log-repeat}) can be configured using these options.
4009494e 8498@cindex @code{logdone}, STARTUP keyword
4009494e 8499@cindex @code{lognotedone}, STARTUP keyword
28a16a1b 8500@cindex @code{nologdone}, STARTUP keyword
4009494e 8501@cindex @code{lognoteclock-out}, STARTUP keyword
28a16a1b 8502@cindex @code{nolognoteclock-out}, STARTUP keyword
4009494e 8503@cindex @code{logrepeat}, STARTUP keyword
28a16a1b 8504@cindex @code{lognoterepeat}, STARTUP keyword
4009494e
GM
8505@cindex @code{nologrepeat}, STARTUP keyword
8506@example
28a16a1b
CD
8507logdone @r{record a timestamp when an item is marked DONE}
8508lognotedone @r{record timestamp and a note when DONE}
8509nologdone @r{don't record when items are marked DONE}
8510logrepeat @r{record a time when reinstating a repeating item}
8511lognoterepeat @r{record a note when reinstating a repeating item}
8512nologrepeat @r{do not record when reinstating repeating item}
8513lognoteclock-out @r{record a note when clocking out}
8514nolognoteclock-out @r{don't record a note when clocking out}
4009494e 8515@end example
b349f79f
CD
8516Here are the options for hiding leading stars in outline headings, and for
8517indenting outlines. The corresponding variables are
8518@code{org-hide-leading-stars} and @code{org-odd-levels-only}, both with a
8519default setting @code{nil} (meaning @code{showstars} and @code{oddeven}).
4009494e
GM
8520@cindex @code{hidestars}, STARTUP keyword
8521@cindex @code{showstars}, STARTUP keyword
8522@cindex @code{odd}, STARTUP keyword
8523@cindex @code{even}, STARTUP keyword
8524@example
8525hidestars @r{make all but one of the stars starting a headline invisible.}
8526showstars @r{show all stars starting a headline}
b349f79f
CD
8527indent @r{virtual indentation according to outline level}
8528noindent @r{no virtual indentation according to outline level}
4009494e
GM
8529odd @r{allow only odd outline levels (1,3,...)}
8530oddeven @r{allow all outline levels}
8531@end example
8532To turn on custom format overlays over time stamps (variables
8533@code{org-put-time-stamp-overlays} and
8534@code{org-time-stamp-overlay-formats}), use
8535@cindex @code{customtime}, STARTUP keyword
8536@example
8537customtime @r{overlay custom time format}
8538@end example
8539The following options influence the table spreadsheet (variable
8540@code{constants-unit-system}).
8541@cindex @code{constcgs}, STARTUP keyword
8542@cindex @code{constSI}, STARTUP keyword
8543@example
8544constcgs @r{@file{constants.el} should use the c-g-s unit system}
8545constSI @r{@file{constants.el} should use the SI unit system}
8546@end example
8547@item #+TAGS: TAG1(c1) TAG2(c2)
cad1d376 8548These lines (several such lines are allowed) specify the valid tags in
4009494e
GM
8549this file, and (potentially) the corresponding @emph{fast tag selection}
8550keys. The corresponding variable is @code{org-tag-alist}.
8551@item #+TBLFM:
8552This line contains the formulas for the table directly above the line.
dbc28aaa 8553@item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS, #+DATE:
4009494e
GM
8554These lines provide settings for exporting files. For more details see
8555@ref{Export options}.
8556@item #+SEQ_TODO: #+TYP_TODO:
8557These lines set the TODO keywords and their interpretation in the
8558current file. The corresponding variables are @code{org-todo-keywords}
8559and @code{org-todo-interpretation}.
8560@end table
8561
8562@node The very busy C-c C-c key, Clean view, In-buffer settings, Miscellaneous
8563@section The very busy C-c C-c key
8564@kindex C-c C-c
8565@cindex C-c C-c, overview
8566
a7808fba 8567The key @kbd{C-c C-c} has many purposes in Org, which are all
4009494e
GM
8568mentioned scattered throughout this manual. One specific function of
8569this key is to add @emph{tags} to a headline (@pxref{Tags}). In many
a7808fba 8570other circumstances it means something like @emph{Hey Org, look
4009494e
GM
8571here and update according to what you see here}. Here is a summary of
8572what this means in different contexts.
8573
8574@itemize @minus
8575@item
8576If there are highlights in the buffer from the creation of a sparse
8577tree, or from clock display, remove these highlights.
8578@item
8579If the cursor is in one of the special @code{#+KEYWORD} lines, this
8580triggers scanning the buffer for these lines and updating the
28a16a1b 8581information.
4009494e
GM
8582@item
8583If the cursor is inside a table, realign the table. This command
8584works even if the automatic table editor has been turned off.
8585@item
8586If the cursor is on a @code{#+TBLFM} line, re-apply the formulas to
8587the entire table.
8588@item
8589If the cursor is inside a table created by the @file{table.el} package,
8590activate that table.
8591@item
8592If the current buffer is a remember buffer, close the note and file it.
8593With a prefix argument, file it, without further interaction, to the
8594default location.
8595@item
8596If the cursor is on a @code{<<<target>>>}, update radio targets and
8597corresponding links in this buffer.
8598@item
8599If the cursor is in a property line or at the start or end of a property
8600drawer, offer property commands.
8601@item
8602If the cursor is in a plain list item with a checkbox, toggle the status
8603of the checkbox.
8604@item
8605If the cursor is on a numbered item in a plain list, renumber the
8606ordered list.
dbc28aaa
CD
8607@item
8608If the cursor is on the @code{#+BEGIN} line of a dynamical block, the
8609block is updated.
4009494e
GM
8610@end itemize
8611
8612@node Clean view, TTY keys, The very busy C-c C-c key, Miscellaneous
8613@section A cleaner outline view
8614@cindex hiding leading stars
b349f79f
CD
8615@cindex dynamic indentation
8616@cindex odd-levels-only outlines
4009494e
GM
8617@cindex clean outline view
8618
b349f79f
CD
8619Some people find it noisy and distracting that the Org headlines are starting
8620with a potentially large number of stars, and that text below the headlines
8621is not indented. This is not really a problem when you are writing a book
8622where the outline headings are really section headlines. However, in a more
8623list-oriented outline, it is clear that an indented structure is a lot
8624cleaner, as can be seen by comparing the two columns in the following
8625example:
4009494e
GM
8626
8627@example
b349f79f
CD
8628@group
8629* Top level headline | * Top level headline
8630** Second level | * Second level
8631*** 3rd level | * 3rd level
8632some text | some text
8633*** 3rd level | * 3rd level
8634more text | more text
8635* Another top level headline | * Another top level headline
8636@end group
4009494e
GM
8637@end example
8638
8639@noindent
b349f79f
CD
8640It is non-trivial to make such a look work in Emacs, but Org contains three
8641separate features that, combined, achieve just that.
4009494e 8642
b349f79f
CD
8643@enumerate
8644@item
8645@emph{Indentation of text below headlines}@*
8646You may indent text below each headline to make the left boundary line up
8647with the headline, like
4009494e 8648
b349f79f
CD
8649@example
8650*** 3rd level
8651 more text, now indented
8652@end example
8653
8654A good way to get this indentation is by hand, and Org supports this with
8655paragraph filling, line wrapping, and structure editing@footnote{See also the
8656variable @code{org-adapt-indentation}.} preserving or adapting the
8657indentation appropriate. A different approach would be to have a way to
8658automatically indent lines according to outline structure by adding overlays
8659or text properties. But I have not yet found a robust and efficient way to
8660do this in large files.
8661
8662@item
8663@emph{Hiding leading stars}@* You can modify the display in such a way that
8664all leading stars become invisible. To do this in a global way, configure
8665the variable @code{org-hide-leading-stars} or change this on a per-file basis
8666with
4009494e
GM
8667
8668@example
4009494e
GM
8669#+STARTUP: hidestars
8670@end example
8671
864c9740
CD
8672@noindent
8673Note that the opposite behavior is selected with @code{showstars}.
8674
b349f79f 8675With hidden stars, the tree becomes:
4009494e
GM
8676
8677@example
b349f79f 8678@group
4009494e
GM
8679* Top level headline
8680 * Second level
8681 * 3rd level
b349f79f
CD
8682 ...
8683@end group
4009494e
GM
8684@end example
8685
8686@noindent
8687Note that the leading stars are not truly replaced by whitespace, they
8688are only fontified with the face @code{org-hide} that uses the
8689background color as font color. If you are not using either white or
8690black background, you may have to customize this face to get the wanted
8691effect. Another possibility is to set this font such that the extra
8692stars are @i{almost} invisible, for example using the color
8693@code{grey90} on a white background.
8694
b349f79f
CD
8695@item
8696Things become cleaner still if you skip all the even levels and use only odd
8697levels 1, 3, 5..., effectively adding two stars to go from one outline level
8698to the next. In this way we get the outline view shown at the beginning of
8699this section. In order to make the structure editing and export commands
8700handle this convention correctly, configure the variable
8701@code{org-odd-levels-only}, or set this on a per-file basis with one of the
8702following lines:
4009494e
GM
8703
8704@example
8705#+STARTUP: odd
8706#+STARTUP: oddeven
8707@end example
8708
a7808fba 8709You can convert an Org file from single-star-per-level to the
4009494e
GM
8710double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
8711RET} in that file. The reverse operation is @kbd{M-x
8712org-convert-to-oddeven-levels}.
b349f79f 8713@end enumerate
4009494e
GM
8714
8715@node TTY keys, Interaction, Clean view, Miscellaneous
a7808fba
CD
8716@section Using Org on a tty
8717@cindex tty key bindings
4009494e 8718
a7808fba
CD
8719Because Org contains a large number of commands, by default much of
8720Org's core commands are bound to keys that are generally not
dbc28aaa
CD
8721accessible on a tty, such as the cursor keys (@key{left}, @key{right},
8722@key{up}, @key{down}), @key{TAB} and @key{RET}, in particular when used
8723together with modifiers like @key{Meta} and/or @key{Shift}. To access
8724these commands on a tty when special keys are unavailable, the following
8725alternative bindings can be used. The tty bindings below will likely be
8726more cumbersome; you may find for some of the bindings below that a
8727customized work-around suits you better. For example, changing a time
8728stamp is really only fun with @kbd{S-@key{cursor}} keys, whereas on a
8729tty you would rather use @kbd{C-c .} to re-insert the timestamp.
4009494e
GM
8730
8731@multitable @columnfractions 0.15 0.2 0.2
8732@item @b{Default} @tab @b{Alternative 1} @tab @b{Alternative 2}
8733@item @kbd{S-@key{TAB}} @tab @kbd{C-u @key{TAB}} @tab
8734@item @kbd{M-@key{left}} @tab @kbd{C-c C-x l} @tab @kbd{@key{Esc} @key{left}}
8735@item @kbd{M-S-@key{left}} @tab @kbd{C-c C-x L} @tab
71d35b24 8736@item @kbd{M-@key{right}} @tab @kbd{C-c C-x i} @tab @kbd{@key{Esc} @key{right}}
4009494e
GM
8737@item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R} @tab
8738@item @kbd{M-@key{up}} @tab @kbd{C-c C-x u} @tab @kbd{@key{Esc} @key{up}}
8739@item @kbd{M-S-@key{up}} @tab @kbd{C-c C-x U} @tab
8740@item @kbd{M-@key{down}} @tab @kbd{C-c C-x d} @tab @kbd{@key{Esc} @key{down}}
8741@item @kbd{M-S-@key{down}} @tab @kbd{C-c C-x D} @tab
8742@item @kbd{S-@key{RET}} @tab @kbd{C-c C-x c} @tab
8743@item @kbd{M-@key{RET}} @tab @kbd{C-c C-x m} @tab @kbd{@key{Esc} @key{RET}}
8744@item @kbd{M-S-@key{RET}} @tab @kbd{C-c C-x M} @tab
8745@item @kbd{S-@key{left}} @tab @kbd{C-c @key{left}} @tab
8746@item @kbd{S-@key{right}} @tab @kbd{C-c @key{right}} @tab
8747@item @kbd{S-@key{up}} @tab @kbd{C-c @key{up}} @tab
8748@item @kbd{S-@key{down}} @tab @kbd{C-c @key{down}} @tab
8749@item @kbd{C-S-@key{left}} @tab @kbd{C-c C-x @key{left}} @tab
8750@item @kbd{C-S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab
8751@end multitable
8752
8753@node Interaction, Bugs, TTY keys, Miscellaneous
8754@section Interaction with other packages
8755@cindex packages, interaction with other
a7808fba 8756Org lives in the world of GNU Emacs and interacts in various ways
4009494e
GM
8757with other code out there.
8758
8759@menu
a7808fba 8760* Cooperation:: Packages Org cooperates with
4009494e
GM
8761* Conflicts:: Packages that lead to conflicts
8762@end menu
8763
8764@node Cooperation, Conflicts, Interaction, Interaction
a7808fba 8765@subsection Packages that Org cooperates with
4009494e
GM
8766
8767@table @asis
8768@cindex @file{calc.el}
8769@item @file{calc.el} by Dave Gillespie
a7808fba
CD
8770Org uses the Calc package for implementing spreadsheet
8771functionality in its tables (@pxref{The spreadsheet}). Org
8772checks for the availability of Calc by looking for the function
8773@code{calc-eval} which should be autoloaded in your setup if Calc has
8774been installed properly. As of Emacs 22, Calc is part of the Emacs
4009494e 8775distribution. Another possibility for interaction between the two
a7808fba
CD
8776packages is using Calc for embedded calculations. @xref{Embedded Mode,
8777, Embedded Mode, Calc, GNU Emacs Calc Manual}.
4009494e
GM
8778@cindex @file{constants.el}
8779@item @file{constants.el} by Carsten Dominik
8780In a table formula (@pxref{The spreadsheet}), it is possible to use
8781names for natural constants or units. Instead of defining your own
8782constants in the variable @code{org-table-formula-constants}, install
8783the @file{constants} package which defines a large number of constants
8784and units, and lets you use unit prefixes like @samp{M} for
8785@samp{Mega} etc. You will need version 2.0 of this package, available
a7808fba 8786at @url{http://www.astro.uva.nl/~dominik/Tools}. Org checks for
4009494e
GM
8787the function @code{constants-get}, which has to be autoloaded in your
8788setup. See the installation instructions in the file
8789@file{constants.el}.
8790@item @file{cdlatex.el} by Carsten Dominik
8791@cindex @file{cdlatex.el}
a7808fba
CD
8792Org mode can make use of the CDLaTeX package to efficiently enter
8793La@TeX{} fragments into Org files. See @ref{CDLaTeX mode}.
dbc28aaa
CD
8794@item @file{imenu.el} by Ake Stenhoff and Lars Lindberg
8795@cindex @file{imenu.el}
a7808fba
CD
8796Imenu allows menu access to an index of items in a file. Org mode
8797supports Imenu - all you need to do to get the index is the following:
dbc28aaa 8798@lisp
28a16a1b 8799(add-hook 'org-mode-hook
a7808fba 8800 (lambda () (imenu-add-to-menubar "Imenu")))
dbc28aaa
CD
8801@end lisp
8802By default the index is two levels deep - you can modify the depth using
8803the option @code{org-imenu-depth}.
4009494e
GM
8804@item @file{remember.el} by John Wiegley
8805@cindex @file{remember.el}
a7808fba 8806Org cooperates with remember, see @ref{Remember}.
4009494e 8807@file{Remember.el} is not part of Emacs, find it on the web.
dbc28aaa
CD
8808@item @file{speedbar.el} by Eric M. Ludlam
8809@cindex @file{speedbar.el}
8810Speedbar is a package that creates a special frame displaying files and
a7808fba
CD
8811index items in files. Org mode supports Speedbar and allows you to
8812drill into Org files directly from the Speedbar. It also allows to
dbc28aaa 8813restrict the scope of agenda commands to a file or a subtree by using
a7808fba 8814the command @kbd{<} in the Speedbar frame.
4009494e
GM
8815@cindex @file{table.el}
8816@item @file{table.el} by Takaaki Ota
8817@kindex C-c C-c
8818@cindex table editor, @file{table.el}
8819@cindex @file{table.el}
8820
8821Complex ASCII tables with automatic line wrapping, column- and
8822row-spanning, and alignment can be created using the Emacs table
8823package by Takaaki Ota (@uref{http://sourceforge.net/projects/table},
8824and also part of Emacs 22).
a7808fba 8825When @key{TAB} or @kbd{C-c C-c} is pressed in such a table, Org mode
4009494e 8826will call @command{table-recognize-table} and move the cursor into the
a7808fba
CD
8827table. Inside a table, the keymap of Org mode is inactive. In order
8828to execute Org mode-related commands, leave the table.
4009494e
GM
8829
8830@table @kbd
8831@kindex C-c C-c
8832@item C-c C-c
8833Recognize @file{table.el} table. Works when the cursor is in a
8834table.el table.
8835@c
8836@kindex C-c ~
8837@item C-c ~
8838Insert a table.el table. If there is already a table at point, this
a7808fba 8839command converts it between the table.el format and the Org mode
4009494e
GM
8840format. See the documentation string of the command
8841@code{org-convert-table} for the restrictions under which this is
8842possible.
8843@end table
8844@file{table.el} is part of Emacs 22.
8845@cindex @file{footnote.el}
8846@item @file{footnote.el} by Steven L. Baur
a7808fba 8847Org mode recognizes numerical footnotes as provided by this package
4009494e
GM
8848(@pxref{Footnotes}).
8849@end table
8850
8851@node Conflicts, , Cooperation, Interaction
a7808fba 8852@subsection Packages that lead to conflicts with Org mode
4009494e
GM
8853
8854@table @asis
8855
8856@cindex @file{allout.el}
8857@item @file{allout.el} by Ken Manheimer
a7808fba 8858Startup of Org may fail with the error message
4009494e
GM
8859@code{(wrong-type-argument keymapp nil)} when there is an outdated
8860version @file{allout.el} on the load path, for example the version
8861distributed with Emacs 21.x. Upgrade to Emacs 22 and this problem will
8862disappear. If for some reason you cannot do this, make sure that org.el
8863is loaded @emph{before} @file{allout.el}, for example by putting
8864@code{(require 'org)} early enough into your @file{.emacs} file.
8865
8866@cindex @file{CUA.el}
8867@item @file{CUA.el} by Kim. F. Storm
a7808fba
CD
8868Key bindings in Org conflict with the @kbd{S-<cursor>} keys used by
8869CUA mode (as well as pc-select-mode and s-region-mode) to select and
dbc28aaa 8870extend the region. If you want to use one of these packages along with
a7808fba
CD
8871Org, configure the variable @code{org-replace-disputed-keys}. When
8872set, Org will move the following key bindings in Org files, and
dbc28aaa 8873in the agenda buffer (but not during date selection).
4009494e
GM
8874
8875@example
8876S-UP -> M-p S-DOWN -> M-n
8877S-LEFT -> M-- S-RIGHT -> M-+
8878@end example
8879
8880Yes, these are unfortunately more difficult to remember. If you want
8881to have other replacement keys, look at the variable
8882@code{org-disputed-keys}.
8883@item @file{windmove.el} by Hovav Shacham
8884@cindex @file{windmove.el}
8885Also this package uses the @kbd{S-<cursor>} keys, so everything written
8886in the paragraph above about CUA mode also applies here.
8887
8888@cindex @file{footnote.el}
8889@item @file{footnote.el} by Steven L. Baur
a7808fba 8890Org supports the syntax of the footnote package, but only the
4009494e 8891numerical footnote markers. Also, the default key for footnote
a7808fba 8892commands, @kbd{C-c !} is already used by Org. You could use the
4009494e
GM
8893variable @code{footnote-prefix} to switch footnotes commands to another
8894key. Or, you could use @code{org-replace-disputed-keys} and
a7808fba 8895@code{org-disputed-keys} to change the settings in Org.
4009494e
GM
8896
8897@end table
8898
8899
8900@node Bugs, , Interaction, Miscellaneous
8901@section Bugs
8902@cindex bugs
8903
8904Here is a list of things that should work differently, but which I
8905have found too hard to fix.
8906
8907@itemize @bullet
8908@item
8909If a table field starts with a link, and if the corresponding table
8910column is narrowed (@pxref{Narrow columns}) to a width too small to
8911display the link, the field would look entirely empty even though it is
a7808fba 8912not. To prevent this, Org throws an error. The work-around is to
4009494e
GM
8913make the column wide enough to fit the link, or to add some text (at
8914least 2 characters) before the link in the same field.
8915@item
8916Narrowing table columns does not work on XEmacs, because the
8917@code{format} function does not transport text properties.
8918@item
8919Text in an entry protected with the @samp{QUOTE} keyword should not
8920autowrap.
8921@item
8922When the application called by @kbd{C-c C-o} to open a file link fails
8923(for example because the application does not exist or refuses to open
8924the file), it does so silently. No error message is displayed.
8925@item
8926Recalculating a table line applies the formulas from left to right.
8927If a formula uses @emph{calculated} fields further down the row,
8928multiple recalculation may be needed to get all fields consistent. You
8929may use the command @code{org-table-iterate} (@kbd{C-u C-c *}) to
8930recalculate until convergence.
8931@item
4009494e
GM
8932The exporters work well, but could be made more efficient.
8933@end itemize
8934
8935
b349f79f
CD
8936@node Extensions, Hacking, Miscellaneous, Top
8937@appendix Extensions
8938
8939This appendix lists the extension modules that have been written for Org.
8940Many of these extensions live in the @file{contrib} directory of the Org
8941distribution, others are available somewhere on the web.
4009494e 8942
b349f79f
CD
8943@menu
8944* Extensions in the contrib directory:: These come with the Org distro
8945* Other extensions:: These you have to find on the web.
8946@end menu
8947
8948@node Extensions in the contrib directory, Other extensions, Extensions, Extensions
8949@section Extensions in the @file{contrib} directory
8950
8951@table @asis
8952@item @file{org-annotate-file.el} by @i{Philip Jackson}
8953 Annotate a file with org syntax, in a separate file, with links back to
8954 the annotated file.
8955@item @file{org-annotation-helper.el} by @i{Bastien Guerry and Daniel E. German}
8956 Call @i{remember} directly from Firefox/Opera, or from Adobe Reader.
8957 When activating a special link or bookmark, Emacs receives a trigger to
8958 create a note with a link back to the website. Requires some setup, a
8959 detailes description is in
8960 @file{contrib/packages/org-annotation-helper}.
8961@item @file{org-bookmark.el} by @i{Tokuya Kameshima}
8962 Support for links to Emacs bookmarks.
8963@item @file{org-depend.el} by @i{Carsten Dominik}
8964 TODO dependencies for Org-mode. Make TODO state changes in one entry
8965 trigger changes in another, or be blocked by the state of another
8966 entry. Also, easily create chains of TODO items with exactly one
8967 active item at any time.
8968@item @file{org-elisp-symbol.el} by @i{Bastien Guerry}
8969 Org links to emacs-lisp symbols. This can create annotated links that
8970 exactly point to the definition location of a variable of function.
8971@item @file{org-eval.el} by @i{Carsten Dominik}
8972 The @code{<lisp>} tag, adapted from Emacs Wiki and Emacs Muse, allows
8973 to include text in a document that is the result of evaluating some
8974 code. Other scripting languages like @code{perl} can be supported with
8975 this package as well.
8976@item @file{org-expiry.el} by @i{Bastien Guerry}
8977 Expiry mechanism for Org entries.
8978@item @file{org-indent.el} by @i{Carsten Dominik}
8979 Dynamic indentation of Org outlines. The plan is to indent an outline
8980 according to level, but so far this is too hard for a proper and stable
8981 implementation. Still, it works somewhat.
8982@item @file{org-interactive-query.el} by @i{Christopher League}
8983 Interactive modification of tags queries. After running a general
8984 query in Org, this package allows to narrow down the results by adding
8985 more tags or keywords.
8986@item @file{org-mairix.el} by @i{Georg C. F. Greve}
8987 Hook mairix search into Org for different MUAs.
8988@item @file{org-man.el} by @i{Carsten Dominik}
8989 Support for links to manpages in Org-mode.
8990@item @file{org-mtags.el} by @i{Carsten Dominik}
8991 Support for some Muse-like tags in Org-mode. This package allows you
8992 to write @code{<example>} and @code{<src>} and other syntax copied from
8993 Emacs Muse, right inside an Org file. The goal here is to make it easy
8994 to publish the same file using either org-publish or Muse.
8995@item @file{org-panel.el} by @i{Lennard Borgman}
8996 Simplified and display-aided access to some Org commands.
864c9740
CD
8997@c @item @file{org-plot.el} by @i{Eric Schulte}
8998@c Plotting Org tables with Gnuplot.
b349f79f
CD
8999@item @file{org-registry.el} by @i{Bastien Guerry}
9000 A registry for Org links, to find out from where links point to a given
9001 file or location.
9002@item @file{org2rem.el} by @i{Bastien Guerry}
9003 Convert org appointments into reminders for the @file{remind} program.
9004@item @file{org-screen.el} by @i{Andrew Hyatt}
9005 Visit screen sessions through Org-mode links.
9006@item @file{org-toc.el} by @i{Bastien Guerry}
9007 Table of contents in a separate buffer, with fast access to sections
9008 and easy visibility cycling.
9009@item @file{orgtbl-sqlinsert.el} by @i{Jason Riedy}
9010 Convert Org-mode tables to SQL insertions. Documentation for this can
9011 be found on the Worg pages.
9012@end table
9013
9014
9015@node Other extensions, , Extensions in the contrib directory, Extensions
9016@section Other extensions
9017
9018@i{TO BE DONE}
9019
9020@node Hacking, History and Acknowledgments, Extensions, Top
9021@appendix Hacking
9022
9023This appendix covers some aspects where users can extend the functionality of
a7808fba 9024Org.
4009494e
GM
9025
9026@menu
4009494e
GM
9027* Adding hyperlink types:: New custom link types
9028* Tables in arbitrary syntax:: Orgtbl for LaTeX and other programs
9029* Dynamic blocks:: Automatically filled blocks
9030* Special agenda views:: Customized views
9031* Using the property API:: Writing programs that use entry properties
b349f79f 9032* Using the mapping API:: Mapping over all or selected entries
4009494e
GM
9033@end menu
9034
b349f79f 9035@node Adding hyperlink types, Tables in arbitrary syntax, Hacking, Hacking
4009494e
GM
9036@section Adding hyperlink types
9037@cindex hyperlinks, adding new types
9038
a7808fba 9039Org has a large number of hyperlink types built-in
4009494e 9040(@pxref{Hyperlinks}). If you would like to add new link types, it
864c9740 9041provides an interface for doing so. Let's look at an example file
4009494e 9042@file{org-man.el} that will add support for creating links like
a7808fba 9043@samp{[[man:printf][The printf manpage]]} to show Unix manual pages inside
4009494e
GM
9044emacs:
9045
9046@lisp
a7808fba 9047;;; org-man.el - Support for links to manpages in Org
4009494e
GM
9048
9049(require 'org)
9050
9051(org-add-link-type "man" 'org-man-open)
9052(add-hook 'org-store-link-functions 'org-man-store-link)
9053
9054(defcustom org-man-command 'man
9055 "The Emacs command to be used to display a man page."
9056 :group 'org-link
9057 :type '(choice (const man) (const woman)))
9058
9059(defun org-man-open (path)
9060 "Visit the manpage on PATH.
9061PATH should be a topic that can be thrown at the man command."
9062 (funcall org-man-command path))
9063
9064(defun org-man-store-link ()
9065 "Store a link to a manpage."
9066 (when (memq major-mode '(Man-mode woman-mode))
9067 ;; This is a man page, we do make this link
9068 (let* ((page (org-man-get-page-name))
9069 (link (concat "man:" page))
9070 (description (format "Manpage for %s" page)))
9071 (org-store-link-props
9072 :type "man"
9073 :link link
9074 :description description))))
9075
9076(defun org-man-get-page-name ()
9077 "Extract the page name from the buffer name."
9078 ;; This works for both `Man-mode' and `woman-mode'.
9079 (if (string-match " \\(\\S-+\\)\\*" (buffer-name))
9080 (match-string 1 (buffer-name))
9081 (error "Cannot create link to this man page")))
9082
9083(provide 'org-man)
9084
9085;;; org-man.el ends here
9086@end lisp
9087
9088@noindent
9089You would activate this new link type in @file{.emacs} with
9090
9091@lisp
9092(require 'org-man)
9093@end lisp
9094
9095@noindent
864c9740 9096Let's go through the file and see what it does.
4009494e 9097@enumerate
28a16a1b 9098@item
4009494e
GM
9099It does @code{(require 'org)} to make sure that @file{org.el} has been
9100loaded.
9101@item
9102The next line calls @code{org-add-link-type} to define a new link type
9103with prefix @samp{man}. The call also contains the name of a function
9104that will be called to follow such a link.
9105@item
9106The next line adds a function to @code{org-store-link-functions}, in
9107order to allow the command @kbd{C-c l} to record a useful link in a
9108buffer displaying a man page.
9109@end enumerate
9110
9111The rest of the file defines the necessary variables and functions.
9112First there is a customization variable that determines which emacs
a7808fba 9113command should be used to display man pages. There are two options,
4009494e
GM
9114@code{man} and @code{woman}. Then the function to follow a link is
9115defined. It gets the link path as an argument - in this case the link
9116path is just a topic for the manual command. The function calls the
9117value of @code{org-man-command} to display the man page.
9118
9119Finally the function @code{org-man-store-link} is defined. When you try
9120to store a link with @kbd{C-c l}, also this function will be called to
9121try to make a link. The function must first decide if it is supposed to
9122create the link for this buffer type, we do this by checking the value
9123of the variable @code{major-mode}. If not, the function must exit and
a7808fba
CD
9124return the value @code{nil}. If yes, the link is created by getting the
9125manual topic from the buffer name and prefixing it with the string
4009494e
GM
9126@samp{man:}. Then it must call the command @code{org-store-link-props}
9127and set the @code{:type} and @code{:link} properties. Optionally you
9128can also set the @code{:description} property to provide a default for
a7808fba 9129the link description when the link is later inserted into an Org
4009494e
GM
9130buffer with @kbd{C-c C-l}.
9131
b349f79f 9132@node Tables in arbitrary syntax, Dynamic blocks, Adding hyperlink types, Hacking
a7808fba 9133@section Tables and lists in arbitrary syntax
4009494e 9134@cindex tables, in other modes
dbc28aaa 9135@cindex lists, in other modes
a7808fba 9136@cindex Orgtbl mode
4009494e 9137
a7808fba 9138Since Orgtbl mode can be used as a minor mode in arbitrary buffers, a
4009494e 9139frequent feature request has been to make it work with native tables in
dbc28aaa
CD
9140specific languages, for example La@TeX{}. However, this is extremely
9141hard to do in a general way, would lead to a customization nightmare,
a7808fba 9142and would take away much of the simplicity of the Orgtbl mode table
dbc28aaa
CD
9143editor.
9144
4009494e 9145
a7808fba 9146This appendix describes a different approach. We keep the Orgtbl mode
4009494e
GM
9147table in its native format (the @i{source table}), and use a custom
9148function to @i{translate} the table to the correct syntax, and to
9149@i{install} it in the right location (the @i{target table}). This puts
9150the burden of writing conversion functions on the user, but it allows
9151for a very flexible system.
9152
dbc28aaa
CD
9153Bastien added the ability to do the same with lists. You can use Org's
9154facilities to edit and structure lists by turning @code{orgstruct-mode}
9155on, then locally exporting such lists in another format (HTML, La@TeX{}
a7808fba 9156or Texinfo.)
dbc28aaa
CD
9157
9158
4009494e
GM
9159@menu
9160* Radio tables:: Sending and receiving
9161* A LaTeX example:: Step by step, almost a tutorial
9162* Translator functions:: Copy and modify
a7808fba 9163* Radio lists:: Doing the same for lists
4009494e
GM
9164@end menu
9165
9166@node Radio tables, A LaTeX example, Tables in arbitrary syntax, Tables in arbitrary syntax
9167@subsection Radio tables
9168@cindex radio tables
9169
9170To define the location of the target table, you first need to create two
9171lines that are comments in the current mode, but contain magic words for
a7808fba 9172Orgtbl mode to find. Orgtbl mode will insert the translated table
4009494e
GM
9173between these lines, replacing whatever was there before. For example:
9174
9175@example
9176/* BEGIN RECEIVE ORGTBL table_name */
9177/* END RECEIVE ORGTBL table_name */
9178@end example
9179
9180@noindent
9181Just above the source table, we put a special line that tells
a7808fba 9182Orgtbl mode how to translate this table and where to install it. For
4009494e
GM
9183example:
9184@example
9185#+ORGTBL: SEND table_name translation_function arguments....
9186@end example
9187
9188@noindent
9189@code{table_name} is the reference name for the table that is also used
9190in the receiver lines. @code{translation_function} is the Lisp function
9191that does the translation. Furthermore, the line can contain a list of
9192arguments (alternating key and value) at the end. The arguments will be
9193passed as a property list to the translation function for
9194interpretation. A few standard parameters are already recognized and
9195acted upon before the translation function is called:
9196
9197@table @code
9198@item :skip N
b349f79f
CD
9199Skip the first N lines of the table. Hlines do count as separate lines for
9200this parameter!
9201
4009494e
GM
9202@item :skipcols (n1 n2 ...)
9203List of columns that should be skipped. If the table has a column with
9204calculation marks, that column is automatically discarded as well.
9205Please note that the translator function sees the table @emph{after} the
9206removal of these columns, the function never knows that there have been
9207additional columns.
9208@end table
9209
9210@noindent
9211The one problem remaining is how to keep the source table in the buffer
9212without disturbing the normal workings of the file, for example during
9213compilation of a C file or processing of a La@TeX{} file. There are a
9214number of different solutions:
9215
9216@itemize @bullet
9217@item
9218The table could be placed in a block comment if that is supported by the
a7808fba 9219language. For example, in C mode you could wrap the table between
4009494e 9220@samp{/*} and @samp{*/} lines.
28a16a1b 9221@item
4009494e
GM
9222Sometimes it is possible to put the table after some kind of @i{END}
9223statement, for example @samp{\bye} in TeX and @samp{\end@{document@}}
9224in La@TeX{}.
9225@item
9226You can just comment the table line by line whenever you want to process
9227the file, and uncomment it whenever you need to edit the table. This
9228only sounds tedious - the command @kbd{M-x orgtbl-toggle-comment} does
9229make this comment-toggling very easy, in particular if you bind it to a
9230key.
9231@end itemize
9232
9233@node A LaTeX example, Translator functions, Radio tables, Tables in arbitrary syntax
dbc28aaa 9234@subsection A LaTeX example of radio tables
a7808fba 9235@cindex LaTeX, and Orgtbl mode
4009494e
GM
9236
9237The best way to wrap the source table in La@TeX{} is to use the
9238@code{comment} environment provided by @file{comment.sty}. It has to be
9239activated by placing @code{\usepackage@{comment@}} into the document
a7808fba
CD
9240header. Orgtbl mode can insert a radio table skeleton@footnote{By
9241default this works only for La@TeX{}, HTML, and Texinfo. Configure the
4009494e
GM
9242variable @code{orgtbl-radio-tables} to install templates for other
9243modes.} with the command @kbd{M-x orgtbl-insert-radio-table}. You will
9244be prompted for a table name, lets say we use @samp{salesfigures}. You
9245will then get the following template:
9246
b349f79f 9247@cindex #+ORGTBL: SEND
4009494e
GM
9248@example
9249% BEGIN RECEIVE ORGTBL salesfigures
9250% END RECEIVE ORGTBL salesfigures
9251\begin@{comment@}
9252#+ORGTBL: SEND salesfigures orgtbl-to-latex
9253| | |
9254\end@{comment@}
9255@end example
9256
9257@noindent
a7808fba 9258The @code{#+ORGTBL: SEND} line tells Orgtbl mode to use the function
4009494e
GM
9259@code{orgtbl-to-latex} to convert the table into La@TeX{} and to put it
9260into the receiver location with name @code{salesfigures}. You may now
9261fill in the table, feel free to use the spreadsheet features@footnote{If
9262the @samp{#+TBLFM} line contains an odd number of dollar characters,
a7808fba 9263this may cause problems with font-lock in LaTeX mode. As shown in the
4009494e
GM
9264example you can fix this by adding an extra line inside the
9265@code{comment} environment that is used to balance the dollar
9266expressions. If you are using AUCTeX with the font-latex library, a
9267much better solution is to add the @code{comment} environment to the
9268variable @code{LaTeX-verbatim-environments}.}:
9269
9270@example
9271% BEGIN RECEIVE ORGTBL salesfigures
9272% END RECEIVE ORGTBL salesfigures
9273\begin@{comment@}
9274#+ORGTBL: SEND salesfigures orgtbl-to-latex
9275| Month | Days | Nr sold | per day |
9276|-------+------+---------+---------|
9277| Jan | 23 | 55 | 2.4 |
9278| Feb | 21 | 16 | 0.8 |
9279| March | 22 | 278 | 12.6 |
9280#+TBLFM: $4=$3/$2;%.1f
9281% $ (optional extra dollar to keep font-lock happy, see footnote)
9282\end@{comment@}
9283@end example
9284
9285@noindent
9286When you are done, press @kbd{C-c C-c} in the table to get the converted
9287table inserted between the two marker lines.
9288
9289Now lets assume you want to make the table header by hand, because you
9290want to control how columns are aligned etc. In this case we make sure
9291that the table translator does skip the first 2 lines of the source
9292table, and tell the command to work as a @i{splice}, i.e. to not produce
9293header and footer commands of the target table:
9294
9295@example
9296\begin@{tabular@}@{lrrr@}
9297Month & \multicolumn@{1@}@{c@}@{Days@} & Nr.\ sold & per day\\
9298% BEGIN RECEIVE ORGTBL salesfigures
9299% END RECEIVE ORGTBL salesfigures
9300\end@{tabular@}
9301%
9302\begin@{comment@}
9303#+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2
9304| Month | Days | Nr sold | per day |
9305|-------+------+---------+---------|
9306| Jan | 23 | 55 | 2.4 |
9307| Feb | 21 | 16 | 0.8 |
9308| March | 22 | 278 | 12.6 |
9309#+TBLFM: $4=$3/$2;%.1f
9310\end@{comment@}
9311@end example
9312
9313The La@TeX{} translator function @code{orgtbl-to-latex} is already part of
a7808fba 9314Orgtbl mode. It uses a @code{tabular} environment to typeset the table
4009494e 9315and marks horizontal lines with @code{\hline}. Furthermore, it
b349f79f 9316interprets the following parameters (see also @ref{Translator functions}):
4009494e
GM
9317
9318@table @code
9319@item :splice nil/t
9320When set to t, return only table body lines, don't wrap them into a
9321tabular environment. Default is nil.
9322
9323@item :fmt fmt
9324A format to be used to wrap each field, should contain @code{%s} for the
9325original field value. For example, to wrap each field value in dollars,
9326you could use @code{:fmt "$%s$"}. This may also be a property list with
9327column numbers and formats. for example @code{:fmt (2 "$%s$" 4 "%s\\%%")}.
a7808fba
CD
9328A function of one argument can be used in place of the strings; the
9329function must return a formatted string.
4009494e
GM
9330
9331@item :efmt efmt
9332Use this format to print numbers with exponentials. The format should
9333have @code{%s} twice for inserting mantissa and exponent, for example
9334@code{"%s\\times10^@{%s@}"}. The default is @code{"%s\\,(%s)"}. This
9335may also be a property list with column numbers and formats, for example
9336@code{:efmt (2 "$%s\\times10^@{%s@}$" 4 "$%s\\cdot10^@{%s@}$")}. After
9337@code{efmt} has been applied to a value, @code{fmt} will also be
a7808fba
CD
9338applied. Similar to @code{fmt}, functions of two arguments can be
9339supplied instead of strings.
4009494e
GM
9340@end table
9341
dbc28aaa 9342@node Translator functions, Radio lists, A LaTeX example, Tables in arbitrary syntax
4009494e 9343@subsection Translator functions
a7808fba 9344@cindex HTML, and Orgtbl mode
4009494e
GM
9345@cindex translator function
9346
b349f79f
CD
9347Orgtbl mode has several translator functions built-in: @code{orgtbl-to-csv}
9348(comma-separated values), @code{orgtbl-to-tsv} (TAB-separated values)
9349@code{orgtbl-to-latex}, @code{orgtbl-to-html}, and @code{orgtbl-to-texinfo}.
9350Except for @code{orgtbl-to-html}@footnote{The HTML translator uses the same
9351code that produces tables during HTML export.}, these all use a generic
9352translator, @code{orgtbl-to-generic}. For example, @code{orgtbl-to-latex}
9353itself is a very short function that computes the column definitions for the
9354@code{tabular} environment, defines a few field and line separators and then
9355hands over to the generic translator. Here is the entire code:
4009494e
GM
9356
9357@lisp
9358@group
9359(defun orgtbl-to-latex (table params)
a7808fba 9360 "Convert the Orgtbl mode TABLE to LaTeX."
4009494e
GM
9361 (let* ((alignment (mapconcat (lambda (x) (if x "r" "l"))
9362 org-table-last-alignment ""))
9363 (params2
9364 (list
9365 :tstart (concat "\\begin@{tabular@}@{" alignment "@}")
9366 :tend "\\end@{tabular@}"
9367 :lstart "" :lend " \\\\" :sep " & "
9368 :efmt "%s\\,(%s)" :hline "\\hline")))
9369 (orgtbl-to-generic table (org-combine-plists params2 params))))
9370@end group
9371@end lisp
9372
9373As you can see, the properties passed into the function (variable
9374@var{PARAMS}) are combined with the ones newly defined in the function
9375(variable @var{PARAMS2}). The ones passed into the function (i.e. the
9376ones set by the @samp{ORGTBL SEND} line) take precedence. So if you
9377would like to use the La@TeX{} translator, but wanted the line endings to
9378be @samp{\\[2mm]} instead of the default @samp{\\}, you could just
9379overrule the default with
9380
9381@example
9382#+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]"
9383@end example
9384
9385For a new language, you can either write your own converter function in
9386analogy with the La@TeX{} translator, or you can use the generic function
9387directly. For example, if you have a language where a table is started
9388with @samp{!BTBL!}, ended with @samp{!ETBL!}, and where table lines are
9389started with @samp{!BL!}, ended with @samp{!EL!} and where the field
9390separator is a TAB, you could call the generic translator like this (on
9391a single line!):
9392
9393@example
9394#+ORGTBL: SEND test orgtbl-to-generic :tstart "!BTBL!" :tend "!ETBL!"
9395 :lstart "!BL! " :lend " !EL!" :sep "\t"
9396@end example
9397
9398@noindent
9399Please check the documentation string of the function
9400@code{orgtbl-to-generic} for a full list of parameters understood by
9401that function and remember that you can pass each of them into
9402@code{orgtbl-to-latex}, @code{orgtbl-to-texinfo}, and any other function
9403using the generic function.
9404
9405Of course you can also write a completely new function doing complicated
9406things the generic translator cannot do. A translator function takes
9407two arguments. The first argument is the table, a list of lines, each
9408line either the symbol @code{hline} or a list of fields. The second
9409argument is the property list containing all parameters specified in the
9410@samp{#+ORGTBL: SEND} line. The function must return a single string
9411containing the formatted table. If you write a generally useful
9412translator, please post it on @code{emacs-orgmode@@gnu.org} so that
9413others can benefit from your work.
9414
dbc28aaa
CD
9415@node Radio lists, , Translator functions, Tables in arbitrary syntax
9416@subsection Radio lists
9417@cindex radio lists
9418@cindex org-list-insert-radio-list
9419
9420Sending and receiving radio lists works exactly the same way than
9421sending and receiving radio tables (@pxref{Radio tables}) @footnote{You
9422need to load the @code{org-export-latex.el} package to use radio lists
9423since the relevant code is there for now.}. As for radio tables, you
a7808fba 9424can insert radio lists templates in HTML, La@TeX{} and Texinfo modes by
dbc28aaa
CD
9425calling @code{org-list-insert-radio-list}.
9426
9427Here are the differences with radio tables:
9428
9429@itemize @minus
9430@item
9431Use @code{ORGLST} instead of @code{ORGTBL}.
9432@item
9433The available translation functions for radio lists don't take
9434parameters.
28a16a1b 9435@item
dbc28aaa
CD
9436`C-c C-c' will work when pressed on the first item of the list.
9437@end itemize
9438
9439Here is a La@TeX{} example. Let's say that you have this in your
9440La@TeX{} file:
9441
9442@example
9443% BEGIN RECEIVE ORGLST to-buy
9444% END RECEIVE ORGLST to-buy
9445\begin@{comment@}
9446#+ORGLIST: SEND to-buy orgtbl-to-latex
9447- a new house
9448- a new computer
9449 + a new keyboard
9450 + a new mouse
9451- a new life
9452\end@{comment@}
9453@end example
9454
9455Pressing `C-c C-c' on @code{a new house} and will insert the converted
9456La@TeX{} list between the two marker lines.
9457
b349f79f 9458@node Dynamic blocks, Special agenda views, Tables in arbitrary syntax, Hacking
4009494e
GM
9459@section Dynamic blocks
9460@cindex dynamic blocks
9461
a7808fba 9462Org documents can contain @emph{dynamic blocks}. These are
4009494e
GM
9463specially marked regions that are updated by some user-written function.
9464A good example for such a block is the clock table inserted by the
9465command @kbd{C-c C-x C-r} (@pxref{Clocking work time}).
9466
9467Dynamic block are enclosed by a BEGIN-END structure that assigns a name
9468to the block and can also specify parameters for the function producing
9469the content of the block.
9470
b349f79f 9471#+BEGIN:dynamic block
4009494e
GM
9472@example
9473#+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
9474
9475#+END:
9476@end example
9477
9478Dynamic blocks are updated with the following commands
9479
9480@table @kbd
9481@kindex C-c C-x C-u
9482@item C-c C-x C-u
9483Update dynamic block at point.
9484@kindex C-u C-c C-x C-u
9485@item C-u C-c C-x C-u
9486Update all dynamic blocks in the current file.
9487@end table
9488
9489Updating a dynamic block means to remove all the text between BEGIN and
9490END, parse the BEGIN line for parameters and then call the specific
28a16a1b
CD
9491writer function for this block to insert the new content. If you want
9492to use the original content in the writer function, you can use the
9493extra parameter @code{:content}.
9494
9495For a block with name @code{myblock}, the writer function is
4009494e
GM
9496@code{org-dblock-write:myblock} with as only parameter a property list
9497with the parameters given in the begin line. Here is a trivial example
9498of a block that keeps track of when the block update function was last
9499run:
9500
9501@example
9502#+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M"
9503
9504#+END:
9505@end example
9506
9507@noindent
9508The corresponding block writer function could look like this:
9509
9510@lisp
9511(defun org-dblock-write:block-update-time (params)
9512 (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
9513 (insert "Last block update at: "
9514 (format-time-string fmt (current-time)))))
9515@end lisp
9516
9517If you want to make sure that all dynamic blocks are always up-to-date,
9518you could add the function @code{org-update-all-dblocks} to a hook, for
9519example @code{before-save-hook}. @code{org-update-all-dblocks} is
a7808fba
CD
9520written in a way that is does nothing in buffers that are not in
9521@code{org-mode}.
4009494e 9522
b349f79f 9523@node Special agenda views, Using the property API, Dynamic blocks, Hacking
a7808fba 9524@section Special agenda views
4009494e
GM
9525@cindex agenda views, user-defined
9526
a7808fba 9527Org provides a special hook that can be used to narrow down the
4009494e
GM
9528selection made by any of the agenda views. You may specify a function
9529that is used at each match to verify if the match should indeed be part
9530of the agenda view, and if not, how much should be skipped.
9531
9532Let's say you want to produce a list of projects that contain a WAITING
9533tag anywhere in the project tree. Let's further assume that you have
a7808fba
CD
9534marked all tree headings that define a project with the TODO keyword
9535PROJECT. In this case you would run a TODO search for the keyword
4009494e
GM
9536PROJECT, but skip the match unless there is a WAITING tag anywhere in
9537the subtree belonging to the project line.
9538
9539To achieve this, you must write a function that searches the subtree for
9540the tag. If the tag is found, the function must return @code{nil} to
9541indicate that this match should not be skipped. If there is no such
9542tag, return the location of the end of the subtree, to indicate that
9543search should continue from there.
9544
9545@lisp
9546(defun my-skip-unless-waiting ()
9547 "Skip trees that are not waiting"
9548 (let ((subtree-end (save-excursion (org-end-of-subtree t))))
dbc28aaa 9549 (if (re-search-forward ":waiting:" subtree-end t)
4009494e
GM
9550 nil ; tag found, do not skip
9551 subtree-end))) ; tag not found, continue after end of subtree
9552@end lisp
9553
9554Now you may use this function in an agenda custom command, for example
9555like this:
9556
9557@lisp
9558(org-add-agenda-custom-command
9559 '("b" todo "PROJECT"
e45e3595 9560 ((org-agenda-skip-function 'my-skip-unless-waiting)
4009494e
GM
9561 (org-agenda-overriding-header "Projects waiting for something: "))))
9562@end lisp
9563
9564Note that this also binds @code{org-agenda-overriding-header} to get a
9565meaningful header in the agenda view.
9566
a7808fba
CD
9567A general way to create custom searches is to base them on a search for
9568entries with a certain level limit. If you want to study all entries with
9569your custom search function, simply do a search for @samp{LEVEL>0}, and then
9570use @code{org-agenda-skip-function} to select the entries you really want to
9571have.
9572
4009494e
GM
9573You may also put a Lisp form into @code{org-agenda-skip-function}. In
9574particular, you may use the functions @code{org-agenda-skip-entry-if}
9575and @code{org-agenda-skip-subtree-if} in this form, for example:
9576
9577@table @code
9578@item '(org-agenda-skip-entry-if 'scheduled)
9579Skip current entry if it has been scheduled.
9580@item '(org-agenda-skip-entry-if 'notscheduled)
9581Skip current entry if it has not been scheduled.
9582@item '(org-agenda-skip-entry-if 'deadline)
9583Skip current entry if it has a deadline.
9584@item '(org-agenda-skip-entry-if 'scheduled 'deadline)
9585Skip current entry if it has a deadline, or if it is scheduled.
9586@item '(org-agenda-skip-entry 'regexp "regular expression")
dbc28aaa
CD
9587Skip current entry if the regular expression matches in the entry.
9588@item '(org-agenda-skip-entry 'notregexp "regular expression")
9589Skip current entry unless the regular expression matches.
4009494e
GM
9590@item '(org-agenda-skip-subtree-if 'regexp "regular expression")
9591Same as above, but check and skip the entire subtree.
9592@end table
9593
9594Therefore we could also have written the search for WAITING projects
9595like this, even without defining a special function:
9596
9597@lisp
9598(org-add-agenda-custom-command
9599 '("b" todo "PROJECT"
9600 ((org-agenda-skip-function '(org-agenda-skip-subtree-if
dbc28aaa 9601 'regexp ":waiting:"))
4009494e
GM
9602 (org-agenda-overriding-header "Projects waiting for something: "))))
9603@end lisp
9604
b349f79f 9605@node Using the property API, Using the mapping API, Special agenda views, Hacking
4009494e
GM
9606@section Using the property API
9607@cindex API, for properties
9608@cindex properties, API
9609
9610Here is a description of the functions that can be used to work with
9611properties.
9612
9613@defun org-entry-properties &optional pom which
9614Get all properties of the entry at point-or-marker POM.
9615This includes the TODO keyword, the tags, time strings for deadline,
9616scheduled, and clocking, and any additional properties defined in the
9617entry. The return value is an alist, keys may occur multiple times
9618if the property key was used several times.
9619POM may also be nil, in which case the current entry is used.
9620If WHICH is nil or `all', get all properties. If WHICH is
9621`special' or `standard', only get that subclass.
9622@end defun
9623@defun org-entry-get pom property &optional inherit
a7808fba
CD
9624Get value of PROPERTY for entry at point-or-marker POM. By default,
9625this only looks at properties defined locally in the entry. If INHERIT
9626is non-nil and the entry does not have the property, then also check
9627higher levels of the hierarchy. If INHERIT is the symbol
9628@code{selective}, use inheritance if and only if the setting of
9629@code{org-use-property-inheritance} selects PROPERTY for inheritance.
4009494e
GM
9630@end defun
9631
9632@defun org-entry-delete pom property
9633Delete the property PROPERTY from entry at point-or-marker POM.
9634@end defun
9635
9636@defun org-entry-put pom property value
9637Set PROPERTY to VALUE for entry at point-or-marker POM.
9638@end defun
9639
9640@defun org-buffer-property-keys &optional include-specials
9641Get all property keys in the current buffer.
9642@end defun
9643
9644@defun org-insert-property-drawer
9645Insert a property drawer at point.
9646@end defun
9647
864c9740
CD
9648@defun org-entry-put-multivalued-property pom property &rest values
9649Set PROPERTY at point-or-marker POM to VALUES. VALUES should be a list of
9650strings. They will be concatenated, with spaces as separators.
9651@end defun
9652
9653@defun org-entry-get-multivalued-property pom property
9654Treat the value of the property PROPERTY as a whitespace-separated list of
9655values and return the values as a list of strings.
9656@end defun
9657
a7808fba
CD
9658@defun org-entry-add-to-multivalued-property pom property value
9659Treat the value of the property PROPERTY as a whitespace-separated list of
9660values and make sure that VALUE is in this list.
9661@end defun
9662
9663@defun org-entry-remove-from-multivalued-property pom property value
9664Treat the value of the property PROPERTY as a whitespace-separated list of
9665values and make sure that VALUE is @emph{not} in this list.
9666@end defun
9667
9668@defun org-entry-member-in-multivalued-property pom property value
9669Treat the value of the property PROPERTY as a whitespace-separated list of
9670values and check if VALUE is in this list.
9671@end defun
9672
b349f79f
CD
9673@node Using the mapping API, , Using the property API, Hacking
9674@section Using the mapping API
9675@cindex API, for mapping
9676@cindex mapping entries, API
9677
9678Org has sophisticated mapping capabilities to find all entries satisfying
9679certain criteria. Internally, this functionality is used to produce agenda
9680views, but there is also an API that can be used to execute arbitrary
9681functions for each or selected entries. The main entry point for this API
9682is:
9683
9684@defun org-map-entries func &optional match scope &rest skip
9685Call FUNC at each headline selected by MATCH in SCOPE.
9686
9687FUNC is a function or a lisp form. The function will be called without
9688arguments, with the cursor positioned at the beginning of the headline.
9689The return values of all calls to the function will be collected and
9690returned as a list.
9691
864c9740 9692MATCH is a tags/property/todo match as it is used in the agenda match view.
b349f79f
CD
9693Only headlines that are matched by this query will be considered during
9694the iteration. When MATCH is nil or t, all headlines will be
9695visited by the iteration.
9696
9697SCOPE determines the scope of this command. It can be any of:
9698
9699@example
9700nil @r{the current buffer, respecting the restriction if any}
9701tree @r{the subtree started with the entry at point}
9702file @r{the current buffer, without restriction}
9703file-with-archives
9704 @r{the current buffer, and any archives associated with it}
9705agenda @r{all agenda files}
9706agenda-with-archives
9707 @r{all agenda files with any archive files associated with them}
9708(file1 file2 ...)
9709 @r{if this is a list, all files in the list will be scanned}
9710@end example
9711
9712The remaining args are treated as settings for the skipping facilities of
9713the scanner. The following items can be given here:
9714
9715@example
9716archive @r{skip trees with the archive tag}
9717comment @r{skip trees with the COMMENT keyword}
9718function or Lisp form
9719 @r{will be used as value for @code{org-agenda-skip-function},}
9720 @r{so whenever the the function returns t, FUNC}
9721 @r{will not be called for that entry and search will}
9722 @r{continue from the point where the function leaves it}
9723@end example
9724@end defun
9725
9726The function given to that mapping routine can really do anything you like.
9727It can uce the property API (@pxref{Using the property API}) to gather more
9728information about the entry, or in order to change metadate in the entry.
9729Here are a couple of functions that might be handy:
9730
9731@defun org-todo &optional arg
9732Change the TODO state of the entry, see the docstring of the functions for
9733the many possible values for the argument ARG.
9734@end defun
9735
9736@defun org-priority &optional action
9737Change the priority of the entry, see the docstring of this function for the
9738possible values for ACTION.
9739@end defun
9740
9741@defun org-toggle-tag tag &optional onoff
9742Toggle the tag TAG in the current entry. Setting ONOFF to either @code{on}
9743or @code{off} will not toggle tag, but ensure that it is either on or off.
9744@end defun
9745
9746@defun org-promote
9747Promote the current entry.
9748@end defun
9749
9750@defun org-demote
9751Demote the current entry.
9752@end defun
9753
9754Here is a simple example that will turn all entries in the current file with
9755a tag @code{TOMORROW} into TODO entries with the keyword @code{UPCOMING}.
9756Entries in comment trees and in archive trees will be ignored.
9757
9758@lisp
9759(org-map-entries
9760 '(org-todo "UPCOMING")
9761 "+TOMORROW" 'file 'archive 'comment)
9762@end lisp
9763
9764The following example counts the number of entries with TODO keyword
9765@code{WAITING}, in all agenda files.
9766
9767@lisp
9768(length (org-map-entries t "/+WAITING" nil 'agenda))
9769@end lisp
9770
9771@node History and Acknowledgments, Main Index, Hacking, Top
4009494e
GM
9772@appendix History and Acknowledgments
9773@cindex acknowledgments
9774@cindex history
9775@cindex thanks
9776
a7808fba
CD
9777Org was borne in 2003, out of frustration over the user interface
9778of the Emacs Outline mode. I was trying to organize my notes and
4009494e
GM
9779projects, and using Emacs seemed to be the natural way to go. However,
9780having to remember eleven different commands with two or three keys per
a7808fba 9781command, only to hide and show parts of the outline tree, that seemed
4009494e
GM
9782entirely unacceptable to me. Also, when using outlines to take notes, I
9783constantly want to restructure the tree, organizing it parallel to my
9784thoughts and plans. @emph{Visibility cycling} and @emph{structure
9785editing} were originally implemented in the package
9786@file{outline-magic.el}, but quickly moved to the more general
9787@file{org.el}. As this environment became comfortable for project
9788planning, the next step was adding @emph{TODO entries}, basic @emph{time
9789stamps}, and @emph{table support}. These areas highlight the two main
a7808fba 9790goals that Org still has today: To create a new, outline-based,
4009494e
GM
9791plain text mode with innovative and intuitive editing features, and to
9792incorporate project planning functionality directly into a notes file.
9793
a7808fba
CD
9794A special thanks goes to @i{Bastien Guerry} who has not only writen a large
9795number of extensions to Org (most of them integrated into the core by now),
9796but has also helped the development and maintenance of Org so much that he
9797should be considered co-author of this package.
9798
4009494e
GM
9799Since the first release, literally thousands of emails to me or on
9800@code{emacs-orgmode@@gnu.org} have provided a constant stream of bug
9801reports, feedback, new ideas, and sometimes patches and add-on code.
9802Many thanks to everyone who has helped to improve this package. I am
9803trying to keep here a list of the people who had significant influence
a7808fba 9804in shaping one or more aspects of Org. The list may not be
4009494e
GM
9805complete, if I have forgotten someone, please accept my apologies and
9806let me know.
9807
9808@itemize @bullet
9809
9810@item
9811@i{Russel Adams} came up with the idea for drawers.
9812@item
a7808fba 9813@i{Thomas Baumann} wrote @file{org-bbdb.el} and @file{org-mhe.el}.
4009494e 9814@item
b349f79f
CD
9815@i{Christophe Bataillon} created the great unicorn logo that we use on the
9816Org-mode website.
9817@item
4009494e
GM
9818@i{Alex Bochannek} provided a patch for rounding time stamps.
9819@item
9820@i{Charles Cave}'s suggestion sparked the implementation of templates
9821for Remember.
9822@item
9823@i{Pavel Chalmoviansky} influenced the agenda treatment of items with
9824specified time.
9825@item
9826@i{Gregory Chernov} patched support for lisp forms into table
9827calculations and improved XEmacs compatibility, in particular by porting
9828@file{nouline.el} to XEmacs.
9829@item
9830@i{Sacha Chua} suggested to copy some linking code from Planner.
9831@item
9832@i{Eddward DeVilla} proposed and tested checkbox statistics. He also
9833came up with the idea of properties, and that there should be an API for
9834them.
9835@item
9836@i{Kees Dullemond} used to edit projects lists directly in HTML and so
9837inspired some of the early development, including HTML export. He also
9838asked for a way to narrow wide table columns.
9839@item
a7808fba 9840@i{Christian Egli} converted the documentation into Texinfo format,
4009494e
GM
9841patched CSS formatting into the HTML exporter, and inspired the agenda.
9842@item
9843@i{David Emery} provided a patch for custom CSS support in exported
9844HTML agendas.
9845@item
9846@i{Nic Ferrier} contributed mailcap and XOXO support.
9847@item
28a16a1b
CD
9848@i{Miguel A. Figueroa-Villanueva} implemented hierarchical checkboxes.
9849@item
4009494e
GM
9850@i{John Foerch} figured out how to make incremental search show context
9851around a match in a hidden outline tree.
9852@item
dbc28aaa 9853@i{Niels Giesen} had the idea to automatically archive DONE trees.
4009494e 9854@item
a7808fba
CD
9855@i{Bastien Guerry} wrote the La@TeX{} exporter and @file{org-bibtex.el}, and
9856has been prolific with patches, ideas, and bug reports.
4009494e
GM
9857@item
9858@i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
9859@item
a7808fba
CD
9860@i{Bernt Hansen} has driven much of the support for auto-repeating tasks,
9861task state change logging, and the clocktable. His clear explanations have
9862been critical when we started to adopt the GIT version control system.
9863@item
864c9740
CD
9864@i{Manuel Hermenegildo} has contributed various ideas, small fixed and
9865patches.
9866@item
a7808fba
CD
9867@i{Phil Jackson} wrote @file{org-irc.el}.
9868@item
4009494e
GM
9869@i{Scott Jaderholm} proposed footnotes, control over whitespace between
9870folded entries, and column view for properties.
9871@item
a7808fba
CD
9872@i{Tokuya Kameshima} wrote @file{org-wl.el} and @file{org-mew.el}.
9873@item
4009494e
GM
9874@i{Shidai Liu} ("Leo") asked for embedded La@TeX{} and tested it. He also
9875provided frequent feedback and some patches.
9876@item
9877@i{Jason F. McBrayer} suggested agenda export to CSV format.
9878@item
dbc28aaa
CD
9879@i{Max Mikhanosha} came up with the idea of refiling.
9880@item
4009494e
GM
9881@i{Dmitri Minaev} sent a patch to set priority limits on a per-file
9882basis.
9883@item
9884@i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
9885happy.
9886@item
dbc28aaa
CD
9887@i{Rick Moynihan} proposed to allow multiple TODO sequences in a file
9888and to be able to quickly restrict the agenda to a subtree.
4009494e
GM
9889@item
9890@i{Todd Neal} provided patches for links to Info files and elisp forms.
9891@item
9892@i{Tim O'Callaghan} suggested in-file links, search options for general
9893file links, and TAGS.
9894@item
9895@i{Takeshi Okano} translated the manual and David O'Toole's tutorial
9896into Japanese.
9897@item
9898@i{Oliver Oppitz} suggested multi-state TODO items.
9899@item
9900@i{Scott Otterson} sparked the introduction of descriptive text for
9901links, among other things.
9902@item
9903@i{Pete Phillips} helped during the development of the TAGS feature, and
9904provided frequent feedback.
9905@item
9906@i{T.V. Raman} reported bugs and suggested improvements.
9907@item
9908@i{Matthias Rempe} (Oelde) provided ideas, Windows support, and quality
9909control.
9910@item
9911@i{Kevin Rogers} contributed code to access VM files on remote hosts.
9912@item
a7808fba
CD
9913@i{Sebastian Rose} wrote @file{org-info.js}, a Java script for displaying
9914webpages derived from Org using an Info-like, or a folding interface with
9915single key navigation.
9916@item
4009494e
GM
9917@i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a
9918conflict with @file{allout.el}.
9919@item
b349f79f
CD
9920@i{Jason Riedy} generalized the send-receive mechanism for orgtbl tables with
9921extensive patches.
4009494e 9922@item
b349f79f
CD
9923@i{Philip Rooke} created the Org reference card, provided lots
9924of feedback, developed and applied standards to the Org documentation.
4009494e
GM
9925@item
9926@i{Christian Schlauer} proposed angular brackets around links, among
9927other things.
9928@item
864c9740
CD
9929@i{Eric Schulte} wrote @file{org-plot.el}.
9930@item
b349f79f 9931Linking to VM/BBDB/Gnus was first inspired by @i{Tom Shannon}'s
4009494e
GM
9932@file{organizer-mode.el}.
9933@item
a7808fba
CD
9934@i{Ilya Shlyakhter} proposed the Archive Sibling.
9935@item
4009494e
GM
9936@i{Daniel Sinder} came up with the idea of internal archiving by locking
9937subtrees.
9938@item
9939@i{Dale Smith} proposed link abbreviations.
9940@item
864c9740
CD
9941@i{James TD Smith} has contributed a large number of patches for useful
9942tweaks and features.
9943@item
b349f79f
CD
9944@i{Adam Spiers} asked for global linking commands, inspired the link
9945extension system, added support for mairix, and proposed the mapping API.
4009494e
GM
9946@item
9947@i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
9948chapter about publishing.
9949@item
9950@i{J@"urgen Vollmer} contributed code generating the table of contents
9951in HTML output.
9952@item
9953@i{Chris Wallace} provided a patch implementing the @samp{QUOTE}
9954keyword.
9955@item
9956@i{David Wainberg} suggested archiving, and improvements to the linking
9957system.
9958@item
b349f79f
CD
9959@i{John Wiegley} wrote @file{emacs-wiki.el}, @file{planner.el}, and
9960@file{muse.el}, which have similar goals as Org. Initially the
9961development of Org was fully independent because I was not aware of the
9962existence of these packages. But with time I have accasionally looked
9963at John's code and learned a lot from it. John has also contributed a
864c9740
CD
9964number of great ideas and patches directly to Org, including the attachment
9965system (@file{org-attach.el}) and integration with Apple Mail
9966(@file{org-mac-message.el}).
4009494e
GM
9967@item
9968@i{Carsten Wimmer} suggested some changes and helped fix a bug in
a7808fba 9969linking to Gnus.
4009494e 9970@item
a7808fba 9971@i{Roland Winkler} requested additional key bindings to make Org
4009494e
GM
9972work on a tty.
9973@item
9974@i{Piotr Zielinski} wrote @file{org-mouse.el}, proposed agenda blocks
9975and contributed various ideas and code snippets.
9976@end itemize
9977
9978
dbc28aaa
CD
9979@node Main Index, Key Index, History and Acknowledgments, Top
9980@unnumbered The Main Index
4009494e
GM
9981
9982@printindex cp
9983
dbc28aaa 9984@node Key Index, , Main Index, Top
4009494e
GM
9985@unnumbered Key Index
9986
9987@printindex ky
9988
9989@bye
9990
9991@ignore
a7808fba 9992 arch-tag: 7893d1Fe-cc57-4d13-b5e5-f494a1CBC7ac
4009494e 9993@end ignore
a7808fba
CD
9994
9995@c Local variables:
9996@c ispell-local-dictionary: "en_US-w_accents"
9997@c ispell-local-pdict: "./.aspell.org.pws"
9998@c fill-column: 77
9999@c End:
44ce9197 10000