Spelling fixes.
[bpt/emacs.git] / doc / misc / org.texi
CommitLineData
86fbb8ca 1
4009494e
GM
2\input texinfo
3@c %**start of header
311f0356 4@setfilename ../../info/org
a7808fba 5@settitle The Org Manual
4009494e 6
ce57c2fe
BG
7@set VERSION 7.7
8@set DATE July 2011
86fbb8ca
CD
9
10@c Use proper quote and backtick for code sections in PDF output
11@c Cf. Texinfo manual 14.2
12@set txicodequoteundirected
13@set txicodequotebacktick
4009494e 14
4009494e 15@c Version and Contact Info
dbc28aaa 16@set MAINTAINERSITE @uref{http://orgmode.org,maintainers webpage}
4009494e
GM
17@set AUTHOR Carsten Dominik
18@set MAINTAINER Carsten Dominik
dbc28aaa
CD
19@set MAINTAINEREMAIL @email{carsten at orgmode dot org}
20@set MAINTAINERCONTACT @uref{mailto:carsten at orgmode dot org,contact the maintainer}
4009494e
GM
21@c %**end of header
22@finalout
23
acedf35c
CD
24
25@c -----------------------------------------------------------------------------
26
27@c Macro definitions for commands and keys
28@c =======================================
29
30@c The behavior of the key/command macros will depend on the flag cmdnames
31@c When set, commands names are shown. When clear, they are not shown.
32
33@set cmdnames
34
35@c Below we define the following macros for Org key tables:
36
ce57c2fe 37@c orgkey{key} A key item
acedf35c
CD
38@c orgcmd{key,cmd} Key with command name
39@c xorgcmd{key,cmmand} Key with command name as @itemx
40@c orgcmdnki{key,cmd} Like orgcmd, but do not index the key
41@c orgcmdtkc{text,key,cmd} Like orgcmd,special text instead of key
42@c orgcmdkkc{key1,key2,cmd} Two keys with one command name, use "or"
43@c orgcmdkxkc{key1,key2,cmd} Two keys with one command name, but
44@c different functions, so format as @itemx
45@c orgcmdkskc{key1,key2,cmd} Same as orgcmdkkc, but use "or short"
46@c xorgcmdkskc{key1,key2,cmd} Same as previous, but use @itemx
47@c orgcmdkkcc{key1,key2,cmd1,cmd2} Two keys and two commands
48
49@c a key but no command
50@c Inserts: @item key
51@macro orgkey{key}
52@kindex \key\
53@item @kbd{\key\}
54@end macro
55
56@macro xorgkey{key}
57@kindex \key\
58@itemx @kbd{\key\}
59@end macro
60
61@c one key with a command
62@c Inserts: @item KEY COMMAND
afe98dfa 63@macro orgcmd{key,command}
acedf35c 64@ifset cmdnames
afe98dfa
CD
65@kindex \key\
66@findex \command\
acedf35c 67@iftex
afe98dfa
CD
68@item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
69@end iftex
70@ifnottex
acedf35c
CD
71@item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
72@end ifnottex
73@end ifset
74@ifclear cmdnames
75@kindex \key\
76@item @kbd{\key\}
77@end ifclear
78@end macro
79
80@c One key with one command, formatted using @itemx
81@c Inserts: @itemx KEY COMMAND
82@macro xorgcmd{key,command}
83@ifset cmdnames
84@kindex \key\
85@findex \command\
86@iftex
87@itemx @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
88@end iftex
89@ifnottex
90@itemx @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
91@end ifnottex
92@end ifset
93@ifclear cmdnames
afe98dfa 94@kindex \key\
acedf35c
CD
95@itemx @kbd{\key\}
96@end ifclear
97@end macro
98
99@c one key with a command, bit do not index the key
100@c Inserts: @item KEY COMMAND
101@macro orgcmdnki{key,command}
102@ifset cmdnames
afe98dfa 103@findex \command\
acedf35c
CD
104@iftex
105@item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
106@end iftex
107@ifnottex
afe98dfa
CD
108@item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
109@end ifnottex
acedf35c
CD
110@end ifset
111@ifclear cmdnames
112@item @kbd{\key\}
113@end ifclear
afe98dfa
CD
114@end macro
115
acedf35c
CD
116@c one key with a command, and special text to replace key in item
117@c Inserts: @item TEXT COMMAND
118@macro orgcmdtkc{text,key,command}
119@ifset cmdnames
afe98dfa 120@kindex \key\
acedf35c
CD
121@findex \command\
122@iftex
123@item @kbd{\text\} @hskip 0pt plus 1filll @code{\command\}
124@end iftex
125@ifnottex
126@item @kbd{\text\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
127@end ifnottex
128@end ifset
129@ifclear cmdnames
130@kindex \key\
131@item @kbd{\text\}
132@end ifclear
afe98dfa
CD
133@end macro
134
acedf35c
CD
135@c two keys with one command
136@c Inserts: @item KEY1 or KEY2 COMMAND
137@macro orgcmdkkc{key1,key2,command}
138@ifset cmdnames
139@kindex \key1\
140@kindex \key2\
141@findex \command\
c8d0cf5c 142@iftex
acedf35c 143@item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
c8d0cf5c 144@end iftex
acedf35c
CD
145@ifnottex
146@item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
147@end ifnottex
148@end ifset
149@ifclear cmdnames
150@kindex \key1\
151@kindex \key2\
152@item @kbd{\key1\} @ @r{or} @ @kbd{\key2\}
153@end ifclear
c8d0cf5c 154@end macro
acedf35c
CD
155
156@c Two keys with one command name, but different functions, so format as
157@c @itemx
158@c Inserts: @item KEY1
159@c @itemx KEY2 COMMAND
160@macro orgcmdkxkc{key1,key2,command}
161@ifset cmdnames
162@kindex \key1\
163@kindex \key2\
164@findex \command\
165@iftex
166@item @kbd{\key1\}
167@itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
168@end iftex
169@ifnottex
170@item @kbd{\key1\}
171@itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
172@end ifnottex
173@end ifset
174@ifclear cmdnames
175@kindex \key1\
176@kindex \key2\
177@item @kbd{\key1\}
178@itemx @kbd{\key2\}
179@end ifclear
c8d0cf5c 180@end macro
acedf35c
CD
181
182@c Same as previous, but use "or short"
183@c Inserts: @item KEY1 or short KEY2 COMMAND
184@macro orgcmdkskc{key1,key2,command}
185@ifset cmdnames
186@kindex \key1\
187@kindex \key2\
188@findex \command\
189@iftex
190@item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
191@end iftex
192@ifnottex
193@item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
194@end ifnottex
195@end ifset
196@ifclear cmdnames
197@kindex \key1\
198@kindex \key2\
199@item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
200@end ifclear
c8d0cf5c 201@end macro
acedf35c
CD
202
203@c Same as previous, but use @itemx
204@c Inserts: @itemx KEY1 or short KEY2 COMMAND
205@macro xorgcmdkskc{key1,key2,command}
206@ifset cmdnames
207@kindex \key1\
208@kindex \key2\
209@findex \command\
210@iftex
211@itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
212@end iftex
213@ifnottex
214@itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
215@end ifnottex
216@end ifset
217@ifclear cmdnames
218@kindex \key1\
219@kindex \key2\
220@itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
221@end ifclear
c8d0cf5c 222@end macro
4009494e 223
acedf35c
CD
224@c two keys with two commands
225@c Inserts: @item KEY1 COMMAND1
226@c @itemx KEY2 COMMAND2
227@macro orgcmdkkcc{key1,key2,command1,command2}
228@ifset cmdnames
229@kindex \key1\
230@kindex \key2\
231@findex \command1\
232@findex \command2\
233@iftex
234@item @kbd{\key1\} @hskip 0pt plus 1filll @code{\command1\}
235@itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command2\}
236@end iftex
237@ifnottex
238@item @kbd{\key1\} @tie{}@tie{}@tie{}@tie{}(@code{\command1\})
239@itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command2\})
240@end ifnottex
241@end ifset
242@ifclear cmdnames
243@kindex \key1\
244@kindex \key2\
245@item @kbd{\key1\}
246@itemx @kbd{\key2\}
247@end ifclear
248@end macro
249@c -----------------------------------------------------------------------------
250
251@iftex
252@c @hyphenation{time-stamp time-stamps time-stamp-ing time-stamp-ed}
253@end iftex
254
4009494e
GM
255@c Subheadings inside a table.
256@macro tsubheading{text}
257@ifinfo
258@subsubheading \text\
259@end ifinfo
260@ifnotinfo
261@item @b{\text\}
262@end ifnotinfo
263@end macro
264
265@copying
c8d0cf5c 266This manual is for Org version @value{VERSION}.
4009494e 267
cbd20947 268Copyright @copyright{} 2004-2011 Free Software Foundation, Inc.
4009494e
GM
269
270@quotation
271Permission is granted to copy, distribute and/or modify this document
d60b1ba1 272under the terms of the GNU Free Documentation License, Version 1.3 or
4009494e
GM
273any later version published by the Free Software Foundation; with no
274Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
47271179
GM
275and with the Back-Cover Texts as in (a) below. A copy of the license
276is included in the section entitled ``GNU Free Documentation License.''
4009494e 277
6f093307
GM
278(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
279modify this GNU manual. Buying copies from the FSF supports it in
280developing GNU and promoting software freedom.''
5b14aca9
GM
281
282This document is part of a collection distributed under the GNU Free
283Documentation License. If you want to distribute this document
284separately from the collection, you can do so by adding a copy of the
285license to the document, as described in section 6 of the license.
4009494e
GM
286@end quotation
287@end copying
288
ce57c2fe 289@dircategory Emacs
5dc584b5 290@direntry
86fbb8ca 291* Org Mode: (org). Outline-based notes management and organizer
5dc584b5
KB
292@end direntry
293
4009494e 294@titlepage
a7808fba 295@title The Org Manual
4009494e
GM
296
297@subtitle Release @value{VERSION}
298@author by Carsten Dominik
86fbb8ca 299with contributions by David O'Toole, Bastien Guerry, Philip Rooke, Dan Davison, Eric Schulte, and Thomas Dye
4009494e
GM
300
301@c The following two commands start the copyright page.
302@page
303@vskip 0pt plus 1filll
304@insertcopying
305@end titlepage
306
307@c Output the table of contents at the beginning.
308@contents
309
310@ifnottex
311@node Top, Introduction, (dir), (dir)
312@top Org Mode Manual
313
314@insertcopying
315@end ifnottex
316
317@menu
c0468714
GM
318* Introduction:: Getting started
319* Document Structure:: A tree works like your brain
320* Tables:: Pure magic for quick formatting
321* Hyperlinks:: Notes in context
322* TODO Items:: Every tree branch can be a TODO item
323* Tags:: Tagging headlines and matching sets of tags
324* Properties and Columns:: Storing information about an entry
325* Dates and Times:: Making items useful for planning
326* Capture - Refile - Archive:: The ins and outs for projects
327* Agenda Views:: Collecting information into views
328* Markup:: Prepare text for rich export
329* Exporting:: Sharing and publishing of notes
330* Publishing:: Create a web site of linked Org files
331* Working With Source Code:: Export, evaluate, and tangle code blocks
332* Miscellaneous:: All the rest which did not fit elsewhere
333* Hacking:: How to hack your way around
334* MobileOrg:: Viewing and capture on a mobile device
335* History and Acknowledgments:: How Org came into being
336* Main Index:: An index of Org's concepts and features
337* Key Index:: Key bindings and where they are described
afe98dfa 338* Command and Function Index:: Command names and some internal functions
c0468714 339* Variable Index:: Variables mentioned in the manual
4009494e
GM
340
341@detailmenu
342 --- The Detailed Node Listing ---
343
344Introduction
345
c0468714
GM
346* Summary:: Brief summary of what Org does
347* Installation:: How to install a downloaded version of Org
348* Activation:: How to activate Org for certain buffers
349* Feedback:: Bug reports, ideas, patches etc.
350* Conventions:: Type-setting conventions in the manual
86fbb8ca
CD
351
352Document structure
353
c0468714
GM
354* Outlines:: Org is based on Outline mode
355* Headlines:: How to typeset Org tree headlines
356* Visibility cycling:: Show and hide, much simplified
357* Motion:: Jumping to other headlines
358* Structure editing:: Changing sequence and level of headlines
359* Sparse trees:: Matches embedded in context
360* Plain lists:: Additional structure within an entry
361* Drawers:: Tucking stuff away
362* Blocks:: Folding blocks
363* Footnotes:: How footnotes are defined in Org's syntax
364* Orgstruct mode:: Structure editing outside Org
4009494e 365
4009494e
GM
366Tables
367
c0468714
GM
368* Built-in table editor:: Simple tables
369* Column width and alignment:: Overrule the automatic settings
370* Column groups:: Grouping to trigger vertical lines
371* Orgtbl mode:: The table editor as minor mode
372* The spreadsheet:: The table editor has spreadsheet capabilities
373* Org-Plot:: Plotting from org tables
4009494e
GM
374
375The spreadsheet
376
c0468714
GM
377* References:: How to refer to another field or range
378* Formula syntax for Calc:: Using Calc to compute stuff
379* Formula syntax for Lisp:: Writing formulas in Emacs Lisp
ce57c2fe
BG
380* Durations and time values:: How to compute durations and time values
381* Field and range formulas:: Formula for specific (ranges of) fields
c0468714 382* Column formulas:: Formulas valid for an entire column
4009494e 383* Editing and debugging formulas:: Fixing formulas
c0468714
GM
384* Updating the table:: Recomputing all dependent fields
385* Advanced features:: Field names, parameters and automatic recalc
4009494e
GM
386
387Hyperlinks
388
c0468714
GM
389* Link format:: How links in Org are formatted
390* Internal links:: Links to other places in the current file
391* External links:: URL-like links to the world
392* Handling links:: Creating, inserting and following
393* Using links outside Org:: Linking from my C source code?
394* Link abbreviations:: Shortcuts for writing complex links
395* Search options:: Linking to a specific location
396* Custom searches:: When the default search is not enough
4009494e
GM
397
398Internal links
399
c0468714 400* Radio targets:: Make targets trigger links in plain text
4009494e 401
86fbb8ca 402TODO items
4009494e 403
c0468714
GM
404* TODO basics:: Marking and displaying TODO entries
405* TODO extensions:: Workflow and assignments
406* Progress logging:: Dates and notes for progress
407* Priorities:: Some things are more important than others
408* Breaking down tasks:: Splitting a task into manageable pieces
409* Checkboxes:: Tick-off lists
4009494e
GM
410
411Extended use of TODO keywords
412
c0468714
GM
413* Workflow states:: From TODO to DONE in steps
414* TODO types:: I do this, Fred does the rest
415* Multiple sets in one file:: Mixing it all, and still finding your way
416* Fast access to TODO states:: Single letter selection of a state
417* Per-file keywords:: Different files, different requirements
418* Faces for TODO keywords:: Highlighting states
419* TODO dependencies:: When one task needs to wait for others
dbc28aaa 420
a7808fba 421Progress logging
dbc28aaa 422
c0468714
GM
423* Closing items:: When was this entry marked DONE?
424* Tracking TODO state changes:: When did the status change?
425* Tracking your habits:: How consistent have you been?
4009494e
GM
426
427Tags
428
c0468714
GM
429* Tag inheritance:: Tags use the tree structure of the outline
430* Setting tags:: How to assign tags to a headline
431* Tag searches:: Searching for combinations of tags
4009494e 432
86fbb8ca 433Properties and columns
4009494e 434
c0468714
GM
435* Property syntax:: How properties are spelled out
436* Special properties:: Access to other Org-mode features
437* Property searches:: Matching property values
438* Property inheritance:: Passing values down the tree
439* Column view:: Tabular viewing and editing
440* Property API:: Properties for Lisp programmers
4009494e 441
a7808fba 442Column view
4009494e 443
c0468714
GM
444* Defining columns:: The COLUMNS format property
445* Using column view:: How to create and use column view
446* Capturing column view:: A dynamic block for column view
4009494e 447
a7808fba 448Defining columns
4009494e 449
c0468714
GM
450* Scope of column definitions:: Where defined, where valid?
451* Column attributes:: Appearance and content of a column
4009494e 452
86fbb8ca 453Dates and times
4009494e 454
c0468714
GM
455* Timestamps:: Assigning a time to a tree entry
456* Creating timestamps:: Commands which insert timestamps
457* Deadlines and scheduling:: Planning your work
458* Clocking work time:: Tracking how long you spend on a task
c0468714
GM
459* Effort estimates:: Planning work effort in advance
460* Relative timer:: Notes with a running timer
afe98dfa 461* Countdown timer:: Starting a countdown timer for a task
4009494e
GM
462
463Creating timestamps
464
c0468714
GM
465* The date/time prompt:: How Org-mode helps you entering date and time
466* Custom time format:: Making dates look different
4009494e 467
a7808fba 468Deadlines and scheduling
4009494e 469
c0468714
GM
470* Inserting deadline/schedule:: Planning items
471* Repeated tasks:: Items that show up again and again
4009494e 472
acedf35c
CD
473Clocking work time
474
475* Clocking commands:: Starting and stopping a clock
476* The clock table:: Detailed reports
477* Resolving idle time:: Resolving time when you've been idle
478
a351880d 479Capture - Refile - Archive
864c9740 480
c0468714
GM
481* Capture:: Capturing new stuff
482* Attachments:: Add files to tasks
483* RSS Feeds:: Getting input from RSS feeds
ce57c2fe 484* Protocols:: External (e.g.@: Browser) access to Emacs and Org
c0468714
GM
485* Refiling notes:: Moving a tree from one place to another
486* Archiving:: What to do with finished projects
86fbb8ca
CD
487
488Capture
489
c0468714
GM
490* Setting up capture:: Where notes will be stored
491* Using capture:: Commands to invoke and terminate capture
492* Capture templates:: Define the outline of different note types
864c9740 493
86fbb8ca 494Capture templates
4009494e 495
c0468714
GM
496* Template elements:: What is needed for a complete template entry
497* Template expansion:: Filling in information about time and context
a351880d
CD
498
499Archiving
500
c0468714
GM
501* Moving subtrees:: Moving a tree to an archive file
502* Internal archiving:: Switch off a tree but keep it in the file
4009494e 503
86fbb8ca 504Agenda views
4009494e 505
c0468714
GM
506* Agenda files:: Files being searched for agenda information
507* Agenda dispatcher:: Keyboard access to agenda views
508* Built-in agenda views:: What is available out of the box?
509* Presentation and sorting:: How agenda items are prepared for display
510* Agenda commands:: Remote editing of Org trees
511* Custom agenda views:: Defining special searches and views
512* Exporting Agenda Views:: Writing a view to a file
513* Agenda column view:: Using column view for collected entries
4009494e
GM
514
515The built-in agenda views
516
c0468714
GM
517* Weekly/daily agenda:: The calendar page with current tasks
518* Global TODO list:: All unfinished action items
4009494e 519* Matching tags and properties:: Structured information with fine-tuned search
c0468714
GM
520* Timeline:: Time-sorted view for single file
521* Search view:: Find entries by searching for text
522* Stuck projects:: Find projects you need to review
4009494e
GM
523
524Presentation and sorting
525
c0468714
GM
526* Categories:: Not all tasks are equal
527* Time-of-day specifications:: How the agenda knows the time
528* Sorting of agenda items:: The order of things
4009494e
GM
529
530Custom agenda views
531
c0468714
GM
532* Storing searches:: Type once, use often
533* Block agenda:: All the stuff you need in a single buffer
534* Setting Options:: Changing the rules
4009494e 535
a351880d
CD
536Markup for rich export
537
c0468714
GM
538* Structural markup elements:: The basic structure as seen by the exporter
539* Images and tables:: Tables and Images will be included
540* Literal examples:: Source code examples with special formatting
541* Include files:: Include additional files into a document
542* Index entries:: Making an index
543* Macro replacement:: Use macros to create complex output
544* Embedded LaTeX:: LaTeX can be freely used inside Org documents
a351880d
CD
545
546Structural markup elements
547
c0468714
GM
548* Document title:: Where the title is taken from
549* Headings and sections:: The document structure as seen by the exporter
550* Table of contents:: The if and where of the table of contents
551* Initial text:: Text before the first heading?
552* Lists:: Lists
553* Paragraphs:: Paragraphs
554* Footnote markup:: Footnotes
555* Emphasis and monospace:: Bold, italic, etc.
556* Horizontal rules:: Make a line
557* Comment lines:: What will *not* be exported
a351880d 558
acedf35c 559Embedded @LaTeX{}
4009494e 560
c0468714
GM
561* Special symbols:: Greek letters and other symbols
562* Subscripts and superscripts:: Simple syntax for raising/lowering text
563* LaTeX fragments:: Complex formulas made easy
564* Previewing LaTeX fragments:: What will this snippet look like?
565* CDLaTeX mode:: Speed up entering of formulas
4009494e
GM
566
567Exporting
568
c0468714
GM
569* Selective export:: Using tags to select and exclude trees
570* Export options:: Per-file export settings
571* The export dispatcher:: How to access exporter commands
572* ASCII/Latin-1/UTF-8 export:: Exporting to flat files with encoding
573* HTML export:: Exporting to HTML
acedf35c 574* LaTeX and PDF export:: Exporting to @LaTeX{}, and processing to PDF
c0468714 575* DocBook export:: Exporting to DocBook
ce57c2fe 576* OpenDocumentText export:: Exporting to OpenDocumentText
c0468714
GM
577* TaskJuggler export:: Exporting to TaskJuggler
578* Freemind export:: Exporting to Freemind mind maps
579* XOXO export:: Exporting to XOXO
580* iCalendar export:: Exporting in iCalendar format
b349f79f 581
4009494e
GM
582HTML export
583
c0468714 584* HTML Export commands:: How to invoke HTML export
ce57c2fe 585* HTML preamble and postamble:: How to insert a preamble and a postamble
c0468714
GM
586* Quoting HTML tags:: Using direct HTML in Org-mode
587* Links in HTML export:: How links will be interpreted and formatted
588* Tables in HTML export:: How to modify the formatting of tables
589* Images in HTML export:: How to insert figures into HTML output
afe98dfa 590* Math formatting in HTML export:: Beautiful math also on the web
c0468714
GM
591* Text areas in HTML export:: An alternative way to show an example
592* CSS support:: Changing the appearance of the output
593* JavaScript support:: Info and Folding in a web browser
4009494e 594
acedf35c 595@LaTeX{} and PDF export
4009494e 596
c0468714
GM
597* LaTeX/PDF export commands:: Which key invokes which commands
598* Header and sectioning:: Setting up the export file structure
acedf35c
CD
599* Quoting LaTeX code:: Incorporating literal @LaTeX{} code
600* Tables in LaTeX export:: Options for exporting tables to @LaTeX{}
601* Images in LaTeX export:: How to insert figures into @LaTeX{} output
c0468714 602* Beamer class export:: Turning the file into a presentation
c8d0cf5c
CD
603
604DocBook export
605
c0468714
GM
606* DocBook export commands:: How to invoke DocBook export
607* Quoting DocBook code:: Incorporating DocBook code in Org files
608* Recursive sections:: Recursive sections in DocBook
609* Tables in DocBook export:: Tables are exported as HTML tables
610* Images in DocBook export:: How to insert figures into DocBook output
611* Special characters:: How to handle special characters
4009494e 612
ce57c2fe
BG
613OpenDocument export
614
615* OpenDocumentText export commands:: How to invoke OpenDocumentText export
616* Applying Custom Styles:: How to apply custom styles to the output
617* Converting to Other formats:: How to convert to formats like doc, docx etc
618* Links in OpenDocumentText export:: How links will be interpreted and formatted
619* Tables in OpenDocumentText export:: How Tables are handled
620* Images in OpenDocumentText export:: How to insert figures
621* Additional Documentation:: How to handle special characters
622
4009494e
GM
623Publishing
624
c0468714
GM
625* Configuration:: Defining projects
626* Uploading files:: How to get files up on the server
627* Sample configuration:: Example projects
628* Triggering publication:: Publication commands
4009494e
GM
629
630Configuration
631
c0468714
GM
632* Project alist:: The central configuration variable
633* Sources and destinations:: From here to there
634* Selecting files:: What files are part of the project?
635* Publishing action:: Setting the function doing the publishing
ce57c2fe 636* Publishing options:: Tweaking HTML/@LaTeX{} export
c0468714
GM
637* Publishing links:: Which links keep working after publishing?
638* Sitemap:: Generating a list of all pages
639* Generating an index:: An index that reaches across pages
4009494e
GM
640
641Sample configuration
642
c0468714
GM
643* Simple example:: One-component publishing
644* Complex example:: A multi-component publishing example
86fbb8ca
CD
645
646Working with source code
647
c0468714
GM
648* Structure of code blocks:: Code block syntax described
649* Editing source code:: Language major-mode editing
650* Exporting code blocks:: Export contents and/or results
651* Extracting source code:: Create pure source code files
652* Evaluating code blocks:: Place results of evaluation in the Org-mode buffer
653* Library of Babel:: Use and contribute to a library of useful code blocks
654* Languages:: List of supported code block languages
655* Header arguments:: Configure code block functionality
656* Results of evaluation:: How evaluation results are handled
657* Noweb reference syntax:: Literate programming in Org-mode
86fbb8ca 658* Key bindings and useful functions:: Work quickly with code blocks
c0468714 659* Batch execution:: Call functions from the command line
86fbb8ca
CD
660
661Header arguments
662
c0468714
GM
663* Using header arguments:: Different ways to set header arguments
664* Specific header arguments:: List of header arguments
86fbb8ca
CD
665
666Using header arguments
667
668* System-wide header arguments:: Set global default values
c0468714 669* Language-specific header arguments:: Set default values by language
86fbb8ca
CD
670* Buffer-wide header arguments:: Set default values for a specific buffer
671* Header arguments in Org-mode properties:: Set default values for a buffer or heading
672* Code block specific header arguments:: The most common way to set values
afe98dfa 673* Header arguments in function calls:: The most specific level
86fbb8ca
CD
674
675Specific header arguments
676
c0468714 677* var:: Pass arguments to code blocks
afe98dfa
CD
678* results:: Specify the type of results and how they will
679 be collected and handled
c0468714 680* file:: Specify a path for file output
afe98dfa
CD
681* dir:: Specify the default (possibly remote)
682 directory for code block execution
c0468714
GM
683* exports:: Export code and/or results
684* tangle:: Toggle tangling and specify file name
ce57c2fe
BG
685* mkdirp:: Toggle creation of parent directories of target
686 files during tangling
afe98dfa
CD
687* comments:: Toggle insertion of comments in tangled
688 code files
ce57c2fe
BG
689* padline:: Control insertion of padding lines in tangled
690 code files
afe98dfa
CD
691* no-expand:: Turn off variable assignment and noweb
692 expansion during tangling
c0468714
GM
693* session:: Preserve the state of code evaluation
694* noweb:: Toggle expansion of noweb references
ce57c2fe 695* noweb-ref:: Specify block's noweb reference resolution target
c0468714 696* cache:: Avoid re-evaluating unchanged code blocks
ce57c2fe 697* sep:: Delimiter for writing tabular results outside Org
c0468714
GM
698* hlines:: Handle horizontal lines in tables
699* colnames:: Handle column names in tables
700* rownames:: Handle row names in tables
701* shebang:: Make tangled files executable
afe98dfa 702* eval:: Limit evaluation of specific code blocks
4009494e
GM
703
704Miscellaneous
705
c0468714 706* Completion:: M-TAB knows what you need
afe98dfa 707* Easy Templates:: Quick insertion of structural elements
c0468714
GM
708* Speed keys:: Electric commands at the beginning of a headline
709* Code evaluation security:: Org mode files evaluate inline code
710* Customization:: Adapting Org to your taste
711* In-buffer settings:: Overview of the #+KEYWORDS
712* The very busy C-c C-c key:: When in doubt, press C-c C-c
713* Clean view:: Getting rid of leading stars in the outline
714* TTY keys:: Using Org on a tty
715* Interaction:: Other Emacs packages
ce57c2fe 716* org-crypt.el:: Encrypting Org files
4009494e
GM
717
718Interaction with other packages
719
c0468714
GM
720* Cooperation:: Packages Org cooperates with
721* Conflicts:: Packages that lead to conflicts
4009494e 722
b349f79f 723Hacking
4009494e 724
c0468714
GM
725* Hooks:: Who to reach into Org's internals
726* Add-on packages:: Available extensions
727* Adding hyperlink types:: New custom link types
728* Context-sensitive commands:: How to add functionality to such commands
acedf35c 729* Tables in arbitrary syntax:: Orgtbl for @LaTeX{} and other programs
c0468714
GM
730* Dynamic blocks:: Automatically filled blocks
731* Special agenda views:: Customized views
c8d0cf5c 732* Extracting agenda information:: Postprocessing of agenda information
c0468714
GM
733* Using the property API:: Writing programs that use entry properties
734* Using the mapping API:: Mapping over all or selected entries
4009494e 735
a7808fba 736Tables and lists in arbitrary syntax
4009494e 737
c0468714
GM
738* Radio tables:: Sending and receiving radio tables
739* A LaTeX example:: Step by step, almost a tutorial
740* Translator functions:: Copy and modify
741* Radio lists:: Doing the same for lists
4009494e 742
7006d207
CD
743MobileOrg
744
c0468714
GM
745* Setting up the staging area:: Where to interact with the mobile device
746* Pushing to MobileOrg:: Uploading Org files and agendas
747* Pulling from MobileOrg:: Integrating captured and flagged items
7006d207 748
4009494e
GM
749@end detailmenu
750@end menu
751
a7808fba 752@node Introduction, Document Structure, Top, Top
4009494e
GM
753@chapter Introduction
754@cindex introduction
755
756@menu
c0468714
GM
757* Summary:: Brief summary of what Org does
758* Installation:: How to install a downloaded version of Org
759* Activation:: How to activate Org for certain buffers
760* Feedback:: Bug reports, ideas, patches etc.
761* Conventions:: Type-setting conventions in the manual
4009494e
GM
762@end menu
763
764@node Summary, Installation, Introduction, Introduction
765@section Summary
766@cindex summary
767
a7808fba 768Org is a mode for keeping notes, maintaining TODO lists, and doing
4009494e
GM
769project planning with a fast and effective plain-text system.
770
a7808fba
CD
771Org develops organizational tasks around NOTES files that contain
772lists or information about projects as plain text. Org is
773implemented on top of Outline mode, which makes it possible to keep the
4009494e
GM
774content of large files well structured. Visibility cycling and
775structure editing help to work with the tree. Tables are easily created
a7808fba 776with a built-in table editor. Org supports TODO items, deadlines,
c8d0cf5c 777timestamps, and scheduling. It dynamically compiles entries into an
4009494e
GM
778agenda that utilizes and smoothly integrates much of the Emacs calendar
779and diary. Plain text URL-like links connect to websites, emails,
780Usenet messages, BBDB entries, and any files related to the projects.
a7808fba 781For printing and sharing of notes, an Org file can be exported as a
dbc28aaa 782structured ASCII file, as HTML, or (TODO and agenda items only) as an
4009494e 783iCalendar file. It can also serve as a publishing tool for a set of
a7808fba 784linked web pages.
4009494e 785
86fbb8ca
CD
786As a project planning environment, Org works by adding metadata to outline
787nodes. Based on this data, specific entries can be extracted in queries and
788create dynamic @i{agenda views}.
789
acedf35c
CD
790Org mode contains the Org Babel environment which allows you to work with
791embedded source code blocks in a file, to facilitate code evaluation,
ce57c2fe 792documentation, and literate programming techniques.
86fbb8ca
CD
793
794Org's automatic, context-sensitive table editor with spreadsheet
795capabilities can be integrated into any major mode by activating the
796minor Orgtbl mode. Using a translation step, it can be used to maintain
acedf35c 797tables in arbitrary file types, for example in @LaTeX{}. The structure
86fbb8ca
CD
798editing and list creation capabilities can be used outside Org with
799the minor Orgstruct mode.
4009494e 800
a7808fba 801Org keeps simple things simple. When first fired up, it should
4009494e
GM
802feel like a straightforward, easy to use outliner. Complexity is not
803imposed, but a large amount of functionality is available when you need
86fbb8ca
CD
804it. Org is a toolbox and can be used in different ways and for different
805ends, for example:
4009494e
GM
806
807@example
c8d0cf5c
CD
808@r{@bullet{} an outline extension with visibility cycling and structure editing}
809@r{@bullet{} an ASCII system and table editor for taking structured notes}
c8d0cf5c
CD
810@r{@bullet{} a TODO list editor}
811@r{@bullet{} a full agenda and planner with deadlines and work scheduling}
812@pindex GTD, Getting Things Done
86fbb8ca 813@r{@bullet{} an environment in which to implement David Allen's GTD system}
acedf35c 814@r{@bullet{} a simple hypertext system, with HTML and @LaTeX{} export}
c8d0cf5c 815@r{@bullet{} a publishing tool to create a set of interlinked webpages}
86fbb8ca 816@r{@bullet{} an environment for literate programming}
4009494e
GM
817@end example
818
4009494e
GM
819
820@cindex FAQ
a7808fba
CD
821There is a website for Org which provides links to the newest
822version of Org, as well as additional information, frequently asked
c8d0cf5c 823questions (FAQ), links to tutorials, etc@. This page is located at
dbc28aaa 824@uref{http://orgmode.org}.
4009494e 825
ce57c2fe
BG
826@cindex print edition
827The version 7.3 of this manual is available as a
828@uref{http://www.network-theory.co.uk/org/manual/, paperback book from Network
829Theory Ltd.}
830
4009494e
GM
831@page
832
833
834@node Installation, Activation, Summary, Introduction
835@section Installation
836@cindex installation
837@cindex XEmacs
838
7006d207
CD
839@b{Important:} @i{If you are using a version of Org that is part of the Emacs
840distribution or an XEmacs package, please skip this section and go directly
ce57c2fe
BG
841to @ref{Activation}. To see what version of Org (if any) is part of your
842Emacs distribution, type @kbd{M-x load-library RET org} and then @kbd{M-x
843org-version}.}
4009494e 844
a7808fba 845If you have downloaded Org from the Web, either as a distribution @file{.zip}
c8d0cf5c
CD
846or @file{.tar} file, or as a Git archive, you must take the following steps
847to install it: go into the unpacked Org distribution directory and edit the
a7808fba
CD
848top section of the file @file{Makefile}. You must set the name of the Emacs
849binary (likely either @file{emacs} or @file{xemacs}), and the paths to the
850directories where local Lisp and Info files are kept. If you don't have
851access to the system-wide directories, you can simply run Org directly from
852the distribution directory by adding the @file{lisp} subdirectory to the
853Emacs load path. To do this, add the following line to @file{.emacs}:
4009494e
GM
854
855@example
a7808fba
CD
856(setq load-path (cons "~/path/to/orgdir/lisp" load-path))
857@end example
858
859@noindent
860If you plan to use code from the @file{contrib} subdirectory, do a similar
861step for this directory:
862
863@example
864(setq load-path (cons "~/path/to/orgdir/contrib/lisp" load-path))
4009494e
GM
865@end example
866
a7808fba 867@noindent Now byte-compile the Lisp files with the shell command:
4009494e
GM
868
869@example
870make
4009494e
GM
871@end example
872
a7808fba 873@noindent If you are running Org from the distribution directory, this is
c8d0cf5c
CD
874all. If you want to install Org into the system directories, use (as
875administrator)
4009494e
GM
876
877@example
a7808fba 878make install
c8d0cf5c
CD
879@end example
880
881Installing Info files is system dependent, because of differences in the
ce57c2fe
BG
882@file{install-info} program. The following should correctly install the Info
883files on most systems, please send a bug report if not@footnote{The output
884from install-info (if any) is also system dependent. In particular Debian
885and its derivatives use two different versions of install-info and you may
886see the message:
887
888@example
889This is not dpkg install-info anymore, but GNU install-info
890See the man page for ginstall-info for command line arguments
891@end example
892
893@noindent which can be safely ignored.}.
c8d0cf5c
CD
894
895@example
4009494e
GM
896make install-info
897@end example
898
7006d207
CD
899Then add the following line to @file{.emacs}. It is needed so that
900Emacs can autoload functions that are located in files not immediately loaded
901when Org-mode starts.
4009494e 902@lisp
4009494e
GM
903(require 'org-install)
904@end lisp
905
55e0839d 906Do not forget to activate Org as described in the following section.
7006d207 907@page
a7808fba 908
4009494e
GM
909@node Activation, Feedback, Installation, Introduction
910@section Activation
911@cindex activation
912@cindex autoload
a7808fba
CD
913@cindex global key bindings
914@cindex key bindings, global
4009494e 915
ce57c2fe
BG
916To make sure files with extension @file{.org} use Org mode, add the following
917line to your @file{.emacs} file.
4009494e 918@lisp
4009494e 919(add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
ce57c2fe
BG
920@end lisp
921@noindent Org mode buffers need font-lock to be turned on - this is the
922default in Emacs@footnote{If you don't use font-lock globally, turn it on in
923Org buffer with @code{(add-hook 'org-mode-hook 'turn-on-font-lock)}}.
924
925The four Org commands @command{org-store-link}, @command{org-capture},
926@command{org-agenda}, and @command{org-iswitchb} should be accessible through
927global keys (i.e.@: anywhere in Emacs, not just in Org buffers). Here are
928suggested bindings for these keys, please modify the keys to your own
929liking.
930@lisp
4009494e 931(global-set-key "\C-cl" 'org-store-link)
ce57c2fe 932(global-set-key "\C-cc" 'org-capture)
4009494e 933(global-set-key "\C-ca" 'org-agenda)
a7808fba 934(global-set-key "\C-cb" 'org-iswitchb)
4009494e
GM
935@end lisp
936
86fbb8ca 937@cindex Org-mode, turning on
4009494e 938With this setup, all files with extension @samp{.org} will be put
86fbb8ca 939into Org-mode. As an alternative, make the first line of a file look
4009494e
GM
940like this:
941
942@example
943MY PROJECTS -*- mode: org; -*-
944@end example
945
c8d0cf5c 946@vindex org-insert-mode-line-in-empty-file
86fbb8ca 947@noindent which will select Org-mode for this buffer no matter what
4009494e
GM
948the file's name is. See also the variable
949@code{org-insert-mode-line-in-empty-file}.
950
c8d0cf5c
CD
951Many commands in Org work on the region if the region is @i{active}. To make
952use of this, you need to have @code{transient-mark-mode}
953(@code{zmacs-regions} in XEmacs) turned on. In Emacs 23 this is the default,
954in Emacs 22 you need to do this yourself with
b6cb4cd5
CD
955@lisp
956(transient-mark-mode 1)
957@end lisp
c8d0cf5c
CD
958@noindent If you do not like @code{transient-mark-mode}, you can create an
959active region by using the mouse to select a region, or pressing
960@kbd{C-@key{SPC}} twice before moving the cursor.
b6cb4cd5 961
dbc28aaa 962@node Feedback, Conventions, Activation, Introduction
4009494e
GM
963@section Feedback
964@cindex feedback
965@cindex bug reports
966@cindex maintainer
967@cindex author
968
b349f79f 969If you find problems with Org, or if you have questions, remarks, or ideas
c8d0cf5c 970about it, please mail to the Org mailing list @email{emacs-orgmode@@gnu.org}.
6eb02347 971If you are not a member of the mailing list, your mail will be passed to the
afe98dfa
CD
972list after a moderator has approved it@footnote{Please consider subscribing
973to the mailing list, in order to minimize the work the mailing list
974moderators have to do.}.
975
976For bug reports, please first try to reproduce the bug with the latest
acedf35c 977version of Org available---if you are running an outdated version, it is
afe98dfa
CD
978quite possible that the bug has been fixed already. If the bug persists,
979prepare a report and provide as much information as possible, including the
980version information of Emacs (@kbd{M-x emacs-version @key{RET}}) and Org
6eb02347
CD
981(@kbd{M-x org-version @key{RET}}), as well as the Org related setup in
982@file{.emacs}. The easiest way to do this is to use the command
983@example
984@kbd{M-x org-submit-bug-report}
985@end example
986@noindent which will put all this information into an Emacs mail buffer so
987that you only need to add your description. If you re not sending the Email
988from within Emacs, please copy and paste the content into your Email program.
989
990If an error occurs, a backtrace can be very useful (see below on how to
991create one). Often a small example file helps, along with clear information
992about:
4009494e
GM
993
994@enumerate
995@item What exactly did you do?
996@item What did you expect to happen?
997@item What happened instead?
998@end enumerate
afe98dfa 999@noindent Thank you for helping to improve this program.
4009494e
GM
1000
1001@subsubheading How to create a useful backtrace
1002
1003@cindex backtrace of an error
a7808fba 1004If working with Org produces an error with a message you don't
4009494e 1005understand, you may have hit a bug. The best way to report this is by
c8d0cf5c 1006providing, in addition to what was mentioned above, a @emph{backtrace}.
4009494e
GM
1007This is information from the built-in debugger about where and how the
1008error occurred. Here is how to produce a useful backtrace:
1009
1010@enumerate
1011@item
c8d0cf5c
CD
1012Reload uncompiled versions of all Org-mode Lisp files. The backtrace
1013contains much more information if it is produced with uncompiled code.
1014To do this, use
4009494e 1015@example
c8d0cf5c 1016C-u M-x org-reload RET
4009494e 1017@end example
c8d0cf5c
CD
1018@noindent
1019or select @code{Org -> Refresh/Reload -> Reload Org uncompiled} from the
1020menu.
4009494e
GM
1021@item
1022Go to the @code{Options} menu and select @code{Enter Debugger on Error}
1023(XEmacs has this option in the @code{Troubleshooting} sub-menu).
1024@item
1025Do whatever you have to do to hit the error. Don't forget to
1026document the steps you take.
1027@item
1028When you hit the error, a @file{*Backtrace*} buffer will appear on the
1029screen. Save this buffer to a file (for example using @kbd{C-x C-w}) and
1030attach it to your bug report.
1031@end enumerate
1032
dbc28aaa
CD
1033@node Conventions, , Feedback, Introduction
1034@section Typesetting conventions used in this manual
1035
a7808fba 1036Org uses three types of keywords: TODO keywords, tags, and property
dbc28aaa
CD
1037names. In this manual we use the following conventions:
1038
1039@table @code
1040@item TODO
1041@itemx WAITING
1042TODO keywords are written with all capitals, even if they are
1043user-defined.
1044@item boss
1045@itemx ARCHIVE
1046User-defined tags are written in lowercase; built-in tags with special
1047meaning are written with all capitals.
1048@item Release
1049@itemx PRIORITY
1050User-defined properties are capitalized; built-in properties with
1051special meaning are written with all capitals.
1052@end table
1053
acedf35c
CD
1054The manual lists both the keys and the corresponding commands for accessing
1055functionality. Org mode often uses the same key for different functions,
1056depending on context. The command that is bound to such keys has a generic
1057name, like @code{org-metaright}. In the manual we will, wherever possible,
1058give the function that is internally called by the generic command. For
1059example, in the chapter on document structure, @kbd{M-@key{right}} will be
1060listed to call @code{org-do-demote}, while in the chapter on tables, it will
1061be listed to call org-table-move-column-right.
1062
1063If you prefer, you can compile the manual without the command names by
1064unsetting the flag @code{cmdnames} in @file{org.texi}.
1065
a7808fba 1066@node Document Structure, Tables, Introduction, Top
86fbb8ca 1067@chapter Document structure
4009494e
GM
1068@cindex document structure
1069@cindex structure of document
1070
c8d0cf5c 1071Org is based on Outline mode and provides flexible commands to
4009494e
GM
1072edit the structure of the document.
1073
1074@menu
c0468714
GM
1075* Outlines:: Org is based on Outline mode
1076* Headlines:: How to typeset Org tree headlines
1077* Visibility cycling:: Show and hide, much simplified
1078* Motion:: Jumping to other headlines
1079* Structure editing:: Changing sequence and level of headlines
1080* Sparse trees:: Matches embedded in context
1081* Plain lists:: Additional structure within an entry
1082* Drawers:: Tucking stuff away
1083* Blocks:: Folding blocks
1084* Footnotes:: How footnotes are defined in Org's syntax
1085* Orgstruct mode:: Structure editing outside Org
4009494e
GM
1086@end menu
1087
a7808fba 1088@node Outlines, Headlines, Document Structure, Document Structure
4009494e
GM
1089@section Outlines
1090@cindex outlines
a7808fba 1091@cindex Outline mode
4009494e 1092
a7808fba 1093Org is implemented on top of Outline mode. Outlines allow a
4009494e
GM
1094document to be organized in a hierarchical structure, which (at least
1095for me) is the best representation of notes and thoughts. An overview
1096of this structure is achieved by folding (hiding) large parts of the
1097document to show only the general document structure and the parts
a7808fba 1098currently being worked on. Org greatly simplifies the use of
4009494e 1099outlines by compressing the entire show/hide functionality into a single
c8d0cf5c 1100command, @command{org-cycle}, which is bound to the @key{TAB} key.
4009494e 1101
a7808fba 1102@node Headlines, Visibility cycling, Outlines, Document Structure
4009494e
GM
1103@section Headlines
1104@cindex headlines
1105@cindex outline tree
c8d0cf5c 1106@vindex org-special-ctrl-a/e
86fbb8ca
CD
1107@vindex org-special-ctrl-k
1108@vindex org-ctrl-k-protect-subtree
4009494e 1109
86fbb8ca
CD
1110Headlines define the structure of an outline tree. The headlines in Org
1111start with one or more stars, on the left margin@footnote{See the variables
1112@code{org-special-ctrl-a/e}, @code{org-special-ctrl-k}, and
1113@code{org-ctrl-k-protect-subtree} to configure special behavior of @kbd{C-a},
1114@kbd{C-e}, and @kbd{C-k} in headlines.}. For example:
4009494e
GM
1115
1116@example
1117* Top level headline
1118** Second level
1119*** 3rd level
1120 some text
1121*** 3rd level
1122 more text
1123
1124* Another top level headline
1125@end example
1126
1127@noindent Some people find the many stars too noisy and would prefer an
1128outline that has whitespace followed by a single star as headline
c8d0cf5c 1129starters. @ref{Clean view}, describes a setup to realize this.
4009494e 1130
c8d0cf5c 1131@vindex org-cycle-separator-lines
4009494e
GM
1132An empty line after the end of a subtree is considered part of it and
1133will be hidden when the subtree is folded. However, if you leave at
1134least two empty lines, one empty line will remain visible after folding
1135the subtree, in order to structure the collapsed view. See the
1136variable @code{org-cycle-separator-lines} to modify this behavior.
1137
a7808fba 1138@node Visibility cycling, Motion, Headlines, Document Structure
4009494e
GM
1139@section Visibility cycling
1140@cindex cycling, visibility
1141@cindex visibility cycling
1142@cindex trees, visibility
1143@cindex show hidden text
1144@cindex hide text
1145
1146Outlines make it possible to hide parts of the text in the buffer.
a7808fba 1147Org uses just two commands, bound to @key{TAB} and
4009494e
GM
1148@kbd{S-@key{TAB}} to change the visibility in the buffer.
1149
1150@cindex subtree visibility states
1151@cindex subtree cycling
1152@cindex folded, subtree visibility state
1153@cindex children, subtree visibility state
1154@cindex subtree, subtree visibility state
afe98dfa
CD
1155@table @asis
1156@orgcmd{@key{TAB},org-cycle}
4009494e
GM
1157@emph{Subtree cycling}: Rotate current subtree among the states
1158
1159@example
1160,-> FOLDED -> CHILDREN -> SUBTREE --.
1161'-----------------------------------'
1162@end example
1163
c8d0cf5c
CD
1164@vindex org-cycle-emulate-tab
1165@vindex org-cycle-global-at-bob
4009494e
GM
1166The cursor must be on a headline for this to work@footnote{see, however,
1167the option @code{org-cycle-emulate-tab}.}. When the cursor is at the
1168beginning of the buffer and the first line is not a headline, then
1169@key{TAB} actually runs global cycling (see below)@footnote{see the
1170option @code{org-cycle-global-at-bob}.}. Also when called with a prefix
1171argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
1172
1173@cindex global visibility states
1174@cindex global cycling
1175@cindex overview, global visibility state
1176@cindex contents, global visibility state
1177@cindex show all, global visibility state
afe98dfa 1178@orgcmd{S-@key{TAB},org-global-cycle}
4009494e
GM
1179@itemx C-u @key{TAB}
1180@emph{Global cycling}: Rotate the entire buffer among the states
1181
1182@example
1183,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
1184'--------------------------------------'
1185@end example
1186
a7808fba
CD
1187When @kbd{S-@key{TAB}} is called with a numeric prefix argument N, the
1188CONTENTS view up to headlines of level N will be shown. Note that inside
1189tables, @kbd{S-@key{TAB}} jumps to the previous field.
4009494e
GM
1190
1191@cindex show all, command
afe98dfa 1192@orgcmd{C-u C-u C-u @key{TAB},show-all}
864c9740 1193Show all, including drawers.
afe98dfa 1194@orgcmd{C-c C-r,org-reveal}
a7808fba
CD
1195Reveal context around point, showing the current entry, the following heading
1196and the hierarchy above. Useful for working near a location that has been
1197exposed by a sparse tree command (@pxref{Sparse trees}) or an agenda command
1198(@pxref{Agenda commands}). With a prefix argument show, on each
ed21c5c8
CD
1199level, all sibling headings. With double prefix arg, also show the entire
1200subtree of the parent.
afe98dfa 1201@orgcmd{C-c C-k,show-branches}
86fbb8ca 1202Expose all the headings of the subtree, CONTENT view for just one subtree.
afe98dfa 1203@orgcmd{C-c C-x b,org-tree-to-indirect-buffer}
4009494e
GM
1204Show the current subtree in an indirect buffer@footnote{The indirect
1205buffer
1206@ifinfo
1207(@pxref{Indirect Buffers,,,emacs,GNU Emacs Manual})
1208@end ifinfo
1209@ifnotinfo
1210(see the Emacs manual for more information about indirect buffers)
1211@end ifnotinfo
1212will contain the entire buffer, but will be narrowed to the current
1213tree. Editing the indirect buffer will also change the original buffer,
a7808fba
CD
1214but without affecting visibility in that buffer.}. With a numeric
1215prefix argument N, go up to level N and then take that tree. If N is
1216negative then go up that many levels. With a @kbd{C-u} prefix, do not remove
4009494e 1217the previously used indirect buffer.
ce57c2fe
BG
1218@orgcmd{C-c C-x v,org-copy-visible}
1219Copy the @i{visible} text in the region into the kill ring.
4009494e
GM
1220@end table
1221
c8d0cf5c
CD
1222@vindex org-startup-folded
1223@cindex @code{overview}, STARTUP keyword
1224@cindex @code{content}, STARTUP keyword
1225@cindex @code{showall}, STARTUP keyword
7006d207 1226@cindex @code{showeverything}, STARTUP keyword
c8d0cf5c 1227
a7808fba 1228When Emacs first visits an Org file, the global state is set to
ce57c2fe 1229OVERVIEW, i.e.@: only the top level headlines are visible. This can be
4009494e
GM
1230configured through the variable @code{org-startup-folded}, or on a
1231per-file basis by adding one of the following lines anywhere in the
1232buffer:
1233
1234@example
1235#+STARTUP: overview
1236#+STARTUP: content
1237#+STARTUP: showall
7006d207 1238#+STARTUP: showeverything
4009494e
GM
1239@end example
1240
c8d0cf5c 1241@cindex property, VISIBILITY
b349f79f 1242@noindent
a50253cc 1243Furthermore, any entries with a @samp{VISIBILITY} property (@pxref{Properties
b349f79f
CD
1244and Columns}) will get their visibility adapted accordingly. Allowed values
1245for this property are @code{folded}, @code{children}, @code{content}, and
1246@code{all}.
afe98dfa
CD
1247@table @asis
1248@orgcmd{C-u C-u @key{TAB},org-set-startup-visibility}
ce57c2fe 1249Switch back to the startup visibility of the buffer, i.e.@: whatever is
b349f79f
CD
1250requested by startup options and @samp{VISIBILITY} properties in individual
1251entries.
1252@end table
1253
a7808fba 1254@node Motion, Structure editing, Visibility cycling, Document Structure
4009494e
GM
1255@section Motion
1256@cindex motion, between headlines
1257@cindex jumping, to headlines
1258@cindex headline navigation
1259The following commands jump to other headlines in the buffer.
1260
afe98dfa
CD
1261@table @asis
1262@orgcmd{C-c C-n,outline-next-visible-heading}
4009494e 1263Next heading.
afe98dfa 1264@orgcmd{C-c C-p,outline-previous-visible-heading}
4009494e 1265Previous heading.
afe98dfa 1266@orgcmd{C-c C-f,org-forward-same-level}
4009494e 1267Next heading same level.
afe98dfa 1268@orgcmd{C-c C-b,org-backward-same-level}
4009494e 1269Previous heading same level.
afe98dfa 1270@orgcmd{C-c C-u,outline-up-heading}
4009494e 1271Backward to higher level heading.
afe98dfa 1272@orgcmd{C-c C-j,org-goto}
4009494e
GM
1273Jump to a different place without changing the current outline
1274visibility. Shows the document structure in a temporary buffer, where
1275you can use the following keys to find your destination:
c8d0cf5c 1276@vindex org-goto-auto-isearch
4009494e
GM
1277@example
1278@key{TAB} @r{Cycle visibility.}
1279@key{down} / @key{up} @r{Next/previous visible headline.}
71d35b24
CD
1280@key{RET} @r{Select this location.}
1281@kbd{/} @r{Do a Sparse-tree search}
1282@r{The following keys work if you turn off @code{org-goto-auto-isearch}}
4009494e
GM
1283n / p @r{Next/previous visible headline.}
1284f / b @r{Next/previous headline same level.}
1285u @r{One level up.}
12860-9 @r{Digit argument.}
71d35b24 1287q @r{Quit}
4009494e 1288@end example
c8d0cf5c
CD
1289@vindex org-goto-interface
1290@noindent
1291See also the variable @code{org-goto-interface}.
4009494e
GM
1292@end table
1293
a351880d 1294@node Structure editing, Sparse trees, Motion, Document Structure
4009494e
GM
1295@section Structure editing
1296@cindex structure editing
1297@cindex headline, promotion and demotion
1298@cindex promotion, of subtrees
1299@cindex demotion, of subtrees
1300@cindex subtree, cut and paste
1301@cindex pasting, of subtrees
1302@cindex cutting, of subtrees
1303@cindex copying, of subtrees
6eb02347 1304@cindex sorting, of subtrees
4009494e
GM
1305@cindex subtrees, cut and paste
1306
afe98dfa
CD
1307@table @asis
1308@orgcmd{M-@key{RET},org-insert-heading}
c8d0cf5c 1309@vindex org-M-RET-may-split-line
ce57c2fe
BG
1310Insert new heading with same level as current. If the cursor is in a plain
1311list item, a new item is created (@pxref{Plain lists}). To force creation of
1312a new headline, use a prefix argument. When this command is used in the
1313middle of a line, the line is split and the rest of the line becomes the new
1314headline@footnote{If you do not want the line to be split, customize the
1315variable @code{org-M-RET-may-split-line}.}. If the command is used at the
1316beginning of a headline, the new headline is created before the current line.
1317If at the beginning of any other line, the content of that line is made the
1318new heading. If the command is used at the end of a folded subtree (i.e.@:
1319behind the ellipses at the end of a headline), then a headline like the
1320current one will be inserted after the end of the subtree.
afe98dfa 1321@orgcmd{C-@key{RET},org-insert-heading-respect-content}
71d35b24
CD
1322Just like @kbd{M-@key{RET}}, except when adding a new heading below the
1323current heading, the new heading is placed after the body instead of before
1324it. This command works from anywhere in the entry.
afe98dfa 1325@orgcmd{M-S-@key{RET},org-insert-todo-heading}
c8d0cf5c
CD
1326@vindex org-treat-insert-todo-heading-as-state-change
1327Insert new TODO entry with same level as current heading. See also the
1328variable @code{org-treat-insert-todo-heading-as-state-change}.
afe98dfa 1329@orgcmd{C-S-@key{RET},org-insert-todo-heading-respect-content}
864c9740
CD
1330Insert new TODO entry with same level as current heading. Like
1331@kbd{C-@key{RET}}, the new headline will be inserted after the current
1332subtree.
afe98dfa 1333@orgcmd{@key{TAB},org-cycle}
a351880d
CD
1334In a new entry with no text yet, the first @key{TAB} demotes the entry to
1335become a child of the previous one. The next @key{TAB} makes it a parent,
1336and so on, all the way to top level. Yet another @key{TAB}, and you are back
1337to the initial level.
afe98dfa 1338@orgcmd{M-@key{left},org-do-promote}
4009494e 1339Promote current heading by one level.
afe98dfa 1340@orgcmd{M-@key{right},org-do-demote}
4009494e 1341Demote current heading by one level.
afe98dfa 1342@orgcmd{M-S-@key{left},org-promote-subtree}
4009494e 1343Promote the current subtree by one level.
afe98dfa 1344@orgcmd{M-S-@key{right},org-demote-subtree}
4009494e 1345Demote the current subtree by one level.
afe98dfa 1346@orgcmd{M-S-@key{up},org-move-subtree-up}
4009494e
GM
1347Move subtree up (swap with previous subtree of same
1348level).
afe98dfa 1349@orgcmd{M-S-@key{down},org-move-subtree-down}
4009494e 1350Move subtree down (swap with next subtree of same level).
afe98dfa 1351@orgcmd{C-c C-x C-w,org-cut-subtree}
ce57c2fe 1352Kill subtree, i.e.@: remove it from buffer but save in kill ring.
a7808fba 1353With a numeric prefix argument N, kill N sequential subtrees.
afe98dfa 1354@orgcmd{C-c C-x M-w,org-copy-subtree}
a7808fba
CD
1355Copy subtree to kill ring. With a numeric prefix argument N, copy the N
1356sequential subtrees.
afe98dfa 1357@orgcmd{C-c C-x C-y,org-paste-subtree}
4009494e 1358Yank subtree from kill ring. This does modify the level of the subtree to
a7808fba
CD
1359make sure the tree fits in nicely at the yank position. The yank level can
1360also be specified with a numeric prefix argument, or by yanking after a
4009494e 1361headline marker like @samp{****}.
afe98dfa 1362@orgcmd{C-y,org-yank}
c8d0cf5c
CD
1363@vindex org-yank-adjusted-subtrees
1364@vindex org-yank-folded-subtrees
e45e3595
CD
1365Depending on the variables @code{org-yank-adjusted-subtrees} and
1366@code{org-yank-folded-subtrees}, Org's internal @code{yank} command will
1367paste subtrees folded and in a clever way, using the same command as @kbd{C-c
55033558
CD
1368C-x C-y}. With the default settings, no level adjustment will take place,
1369but the yanked tree will be folded unless doing so would swallow text
1370previously visible. Any prefix argument to this command will force a normal
1371@code{yank} to be executed, with the prefix passed along. A good way to
1372force a normal yank is @kbd{C-u C-y}. If you use @code{yank-pop} after a
1373yank, it will yank previous kill items plainly, without adjustment and
1374folding.
afe98dfa 1375@orgcmd{C-c C-x c,org-clone-subtree-with-time-shift}
c8d0cf5c
CD
1376Clone a subtree by making a number of sibling copies of it. You will be
1377prompted for the number of copies to make, and you can also specify if any
1378timestamps in the entry should be shifted. This can be useful, for example,
1379to create a number of tasks related to a series of lectures to prepare. For
1380more details, see the docstring of the command
1381@code{org-clone-subtree-with-time-shift}.
afe98dfa 1382@orgcmd{C-c C-w,org-refile}
e45e3595 1383Refile entry or region to a different location. @xref{Refiling notes}.
afe98dfa 1384@orgcmd{C-c ^,org-sort-entries-or-items}
a7808fba
CD
1385Sort same-level entries. When there is an active region, all entries in the
1386region will be sorted. Otherwise the children of the current headline are
1387sorted. The command prompts for the sorting method, which can be
c8d0cf5c
CD
1388alphabetically, numerically, by time (first timestamp with active preferred,
1389creation time, scheduled time, deadline time), by priority, by TODO keyword
1390(in the sequence the keywords have been defined in the setup) or by the value
1391of a property. Reverse sorting is possible as well. You can also supply
1392your own function to extract the sorting key. With a @kbd{C-u} prefix,
1393sorting will be case-sensitive. With two @kbd{C-u C-u} prefixes, duplicate
1394entries will also be removed.
afe98dfa 1395@orgcmd{C-x n s,org-narrow-to-subtree}
b349f79f 1396Narrow buffer to current subtree.
ce57c2fe
BG
1397@orgcmd{C-x n b,org-narrow-to-block}
1398Narrow buffer to current block.
afe98dfa 1399@orgcmd{C-x n w,widen}
c8d0cf5c 1400Widen buffer to remove narrowing.
afe98dfa 1401@orgcmd{C-c *,org-toggle-heading}
55e0839d
CD
1402Turn a normal line or plain list item into a headline (so that it becomes a
1403subheading at its location). Also turn a headline into a normal line by
1404removing the stars. If there is an active region, turn all lines in the
1405region into headlines. If the first line in the region was an item, turn
1406only the item lines into headlines. Finally, if the first line is a
28a16a1b 1407headline, remove the stars from all headlines in the region.
4009494e
GM
1408@end table
1409
1410@cindex region, active
1411@cindex active region
c8d0cf5c
CD
1412@cindex transient mark mode
1413When there is an active region (Transient Mark mode), promotion and
4009494e
GM
1414demotion work on all headlines in the region. To select a region of
1415headlines, it is best to place both point and mark at the beginning of a
1416line, mark at the beginning of the first headline, and point at the line
1417just after the last headline to change. Note that when the cursor is
1418inside a table (@pxref{Tables}), the Meta-Cursor keys have different
1419functionality.
1420
28a16a1b 1421
a351880d 1422@node Sparse trees, Plain lists, Structure editing, Document Structure
4009494e
GM
1423@section Sparse trees
1424@cindex sparse trees
1425@cindex trees, sparse
1426@cindex folding, sparse trees
1427@cindex occur, command
1428
c8d0cf5c
CD
1429@vindex org-show-hierarchy-above
1430@vindex org-show-following-heading
1431@vindex org-show-siblings
1432@vindex org-show-entry-below
86fbb8ca 1433An important feature of Org-mode is the ability to construct @emph{sparse
b349f79f
CD
1434trees} for selected information in an outline tree, so that the entire
1435document is folded as much as possible, but the selected information is made
1436visible along with the headline structure above it@footnote{See also the
1437variables @code{org-show-hierarchy-above}, @code{org-show-following-heading},
1438@code{org-show-siblings}, and @code{org-show-entry-below} for detailed
1439control on how much context is shown around each match.}. Just try it out
1440and you will see immediately how it works.
dbc28aaa 1441
86fbb8ca 1442Org-mode contains several commands creating such trees, all these
dbc28aaa 1443commands can be accessed through a dispatcher:
4009494e 1444
afe98dfa
CD
1445@table @asis
1446@orgcmd{C-c /,org-sparse-tree}
dbc28aaa 1447This prompts for an extra key to select a sparse-tree creating command.
acedf35c 1448@orgcmd{C-c / r,org-occur}
c8d0cf5c 1449@vindex org-remove-highlights-with-change
ce57c2fe 1450Prompts for a regexp and shows a sparse tree with all matches. If
b349f79f
CD
1451the match is in a headline, the headline is made visible. If the match is in
1452the body of an entry, headline and body are made visible. In order to
1453provide minimal context, also the full hierarchy of headlines above the match
1454is shown, as well as the headline following the match. Each match is also
1455highlighted; the highlights disappear when the buffer is changed by an
c8d0cf5c 1456editing command@footnote{This depends on the option
b349f79f
CD
1457@code{org-remove-highlights-with-change}}, or by pressing @kbd{C-c C-c}.
1458When called with a @kbd{C-u} prefix argument, previous highlights are kept,
1459so several calls to this command can be stacked.
ce57c2fe
BG
1460@orgcmdkkc{M-g n,M-g M-n,next-error}
1461Jump to the next sparse tree match in this buffer.
1462@orgcmdkkc{M-g p,M-g M-p,previous-error}
1463Jump to the previous sparse tree match in this buffer.
4009494e 1464@end table
dbc28aaa 1465
ce57c2fe 1466
4009494e 1467@noindent
c8d0cf5c 1468@vindex org-agenda-custom-commands
4009494e
GM
1469For frequently used sparse trees of specific search strings, you can
1470use the variable @code{org-agenda-custom-commands} to define fast
1471keyboard access to specific sparse trees. These commands will then be
1472accessible through the agenda dispatcher (@pxref{Agenda dispatcher}).
1473For example:
1474
1475@lisp
1476(setq org-agenda-custom-commands
1477 '(("f" occur-tree "FIXME")))
1478@end lisp
1479
1480@noindent will define the key @kbd{C-c a f} as a shortcut for creating
1481a sparse tree matching the string @samp{FIXME}.
1482
dbc28aaa
CD
1483The other sparse tree commands select headings based on TODO keywords,
1484tags, or properties and will be discussed later in this manual.
4009494e
GM
1485
1486@kindex C-c C-e v
1487@cindex printing sparse trees
1488@cindex visible text, printing
1489To print a sparse tree, you can use the Emacs command
1490@code{ps-print-buffer-with-faces} which does not print invisible parts
1491of the document @footnote{This does not work under XEmacs, because
1492XEmacs uses selective display for outlining, not text properties.}.
1493Or you can use the command @kbd{C-c C-e v} to export only the visible
1494part of the document and print the resulting file.
1495
a7808fba 1496@node Plain lists, Drawers, Sparse trees, Document Structure
4009494e
GM
1497@section Plain lists
1498@cindex plain lists
1499@cindex lists, plain
1500@cindex lists, ordered
1501@cindex ordered lists
1502
1503Within an entry of the outline tree, hand-formatted lists can provide
afe98dfa
CD
1504additional structure. They also provide a way to create lists of checkboxes
1505(@pxref{Checkboxes}). Org supports editing such lists, and every exporter
1506(@pxref{Exporting}) can parse and format them.
4009494e 1507
b349f79f
CD
1508Org knows ordered lists, unordered lists, and description lists.
1509@itemize @bullet
1510@item
1511@emph{Unordered} list items start with @samp{-}, @samp{+}, or
1512@samp{*}@footnote{When using @samp{*} as a bullet, lines must be indented or
1513they will be seen as top-level headlines. Also, when you are hiding leading
ce57c2fe
BG
1514stars to get a clean outline view, plain list items starting with a star may
1515be hard to distinguish from true headlines. In short: even though @samp{*}
1516is supported, it may be better to not use it for plain list items.} as
1517bullets.
b349f79f 1518@item
afe98dfa 1519@vindex org-plain-list-ordered-item-terminator
ce57c2fe 1520@vindex org-alphabetical-lists
b349f79f 1521@emph{Ordered} list items start with a numeral followed by either a period or
afe98dfa
CD
1522a right parenthesis@footnote{You can filter out any of them by configuring
1523@code{org-plain-list-ordered-item-terminator}.}, such as @samp{1.} or
ce57c2fe
BG
1524@samp{1)}@footnote{You can also get @samp{a.}, @samp{A.}, @samp{a)} and
1525@samp{A)} by configuring @code{org-alphabetical-lists}. To minimize
1526confusion with normal text, those are limited to one character only. Beyond
1527that limit, bullets will automatically fallback to numbers.}. If you want a
1528list to start with a different value (e.g.@: 20), start the text of the item
1529with @code{[@@20]}@footnote{If there's a checkbox in the item, the cookie
1530must be put @emph{before} the checkbox. If you have activated alphabetical
1531lists, you can also use counters like @code{[@@b]}.}. Those constructs can
1532be used in any item of the list in order to enforce a particular numbering.
b349f79f 1533@item
a351880d 1534@emph{Description} list items are unordered list items, and contain the
ce57c2fe 1535separator @samp{ :: } to distinguish the description @emph{term} from the
a50253cc 1536description.
b349f79f
CD
1537@end itemize
1538
1539Items belonging to the same list must have the same indentation on the first
1540line. In particular, if an ordered list reaches number @samp{10.}, then the
15412--digit numbers must be written left-aligned with the other numbers in the
ce57c2fe
BG
1542list. An item ends before the next line that is less or equally indented
1543than its bullet/number.
afe98dfa
CD
1544
1545@vindex org-list-ending-method
1546@vindex org-list-end-regexp
1547@vindex org-empty-line-terminates-plain-lists
1548Two methods@footnote{To disable either of them, configure
1549@code{org-list-ending-method}.} are provided to terminate lists. A list ends
ce57c2fe
BG
1550whenever every item has ended, which means before any line less or equally
1551indented than items at top level. It also ends before two blank
1552lines@footnote{See also @code{org-empty-line-terminates-plain-lists}.}. In
1553that case, all items are closed. For finer control, you can end lists with
1554any pattern set in @code{org-list-end-regexp}. Here is an example:
4009494e
GM
1555
1556@example
1557@group
1558** Lord of the Rings
1559 My favorite scenes are (in this order)
1560 1. The attack of the Rohirrim
a50253cc 1561 2. Eowyn's fight with the witch king
4009494e
GM
1562 + this was already my favorite scene in the book
1563 + I really like Miranda Otto.
1564 3. Peter Jackson being shot by Legolas
afe98dfa 1565 - on DVD only
ce57c2fe 1566 He makes a really funny face when it happens.
a50253cc 1567 But in the end, no individual scenes matter but the film as a whole.
b349f79f 1568 Important actors in this film are:
a50253cc 1569 - @b{Elijah Wood} :: He plays Frodo
ac20fddf 1570 - @b{Sean Austin} :: He plays Sam, Frodo's friend. I still remember
c8d0cf5c 1571 him very well from his role as Mikey Walsh in @i{The Goonies}.
4009494e
GM
1572@end group
1573@end example
1574
c8d0cf5c
CD
1575Org supports these lists by tuning filling and wrapping commands to deal with
1576them correctly@footnote{Org only changes the filling settings for Emacs. For
1577XEmacs, you should use Kyle E. Jones' @file{filladapt.el}. To turn this on,
1578put into @file{.emacs}: @code{(require 'filladapt)}}, and by exporting them
1579properly (@pxref{Exporting}). Since indentation is what governs the
1580structure of these lists, many structural constructs like @code{#+BEGIN_...}
ce57c2fe 1581blocks can be indented to signal that they belong to a particular item.
4009494e 1582
86fbb8ca 1583@vindex org-list-demote-modify-bullet
ce57c2fe 1584@vindex org-list-indent-offset
86fbb8ca
CD
1585If you find that using a different bullet for a sub-list (than that used for
1586the current list-level) improves readability, customize the variable
ce57c2fe
BG
1587@code{org-list-demote-modify-bullet}. To get a greater difference of
1588indentation between items and theirs sub-items, customize
1589@code{org-list-indent-offset}.
86fbb8ca 1590
afe98dfa
CD
1591@vindex org-list-automatic-rules
1592The following commands act on items when the cursor is in the first line of
1593an item (the line with the bullet or number). Some of them imply the
acedf35c 1594application of automatic rules to keep list structure intact. If some of
afe98dfa
CD
1595these actions get in your way, configure @code{org-list-automatic-rules}
1596to disable them individually.
4009494e 1597
afe98dfa
CD
1598@table @asis
1599@orgcmd{@key{TAB},org-cycle}
c8d0cf5c
CD
1600@vindex org-cycle-include-plain-lists
1601Items can be folded just like headline levels. Normally this works only if
1602the cursor is on a plain list item. For more details, see the variable
acedf35c
CD
1603@code{org-cycle-include-plain-lists}. If this variable is set to
1604@code{integrate}, plain list items will be treated like low-level
1605headlines. The level of an item is then given by the
c8d0cf5c
CD
1606indentation of the bullet/number. Items are always subordinate to real
1607headlines, however; the hierarchies remain completely separated.
afe98dfa 1608@orgcmd{M-@key{RET},org-insert-heading}
c8d0cf5c 1609@vindex org-M-RET-may-split-line
afe98dfa 1610@vindex org-list-automatic-rules
a7808fba
CD
1611Insert new item at current level. With a prefix argument, force a new
1612heading (@pxref{Structure editing}). If this command is used in the middle
ce57c2fe
BG
1613of an item, that item is @emph{split} in two, and the second part becomes the
1614new item@footnote{If you do not want the item to be split, customize the
1615variable @code{org-M-RET-may-split-line}.}. If this command is executed
1616@emph{before item's body}, the new item is created @emph{before} the current
1617one.
4009494e
GM
1618@kindex M-S-@key{RET}
1619@item M-S-@key{RET}
1620Insert a new item with a checkbox (@pxref{Checkboxes}).
afe98dfa 1621@orgcmd{@key{TAB},org-cycle}
a351880d 1622In a new item with no text yet, the first @key{TAB} demotes the item to
acedf35c 1623become a child of the previous one. Subsequent @key{TAB}s move the item to
afe98dfa
CD
1624meaningful levels in the list and eventually get it back to its initial
1625position.
4009494e
GM
1626@kindex S-@key{down}
1627@item S-@key{up}
1628@itemx S-@key{down}
3da3282e 1629@cindex shift-selection-mode
c8d0cf5c 1630@vindex org-support-shift-select
ce57c2fe
BG
1631@vindex org-list-use-circular-motion
1632Jump to the previous/next item in the current list@footnote{If you want to
1633cycle around items that way, you may customize
1634@code{org-list-use-circular-motion}.}, but only if
3da3282e
CD
1635@code{org-support-shift-select} is off. If not, you can still use paragraph
1636jumping commands like @kbd{C-@key{up}} and @kbd{C-@key{down}} to quite
1637similar effect.
ce57c2fe
BG
1638@kindex M-@key{up}
1639@kindex M-@key{down}
1640@item M-@key{up}
1641@itemx M-@key{down}
1642Move the item including subitems up/down@footnote{See
1643@code{org-liste-use-circular-motion} for a cyclic behavior.} (swap with
1644previous/next item of same indentation). If the list is ordered, renumbering
1645is automatic.
86fbb8ca
CD
1646@kindex M-@key{left}
1647@kindex M-@key{right}
1648@item M-@key{left}
1649@itemx M-@key{right}
1650Decrease/increase the indentation of an item, leaving children alone.
4009494e
GM
1651@kindex M-S-@key{left}
1652@kindex M-S-@key{right}
1653@item M-S-@key{left}
1654@itemx M-S-@key{right}
1655Decrease/increase the indentation of the item, including subitems.
afe98dfa
CD
1656Initially, the item tree is selected based on current indentation. When
1657these commands are executed several times in direct succession, the initially
1658selected region is used, even if the new indentation would imply a different
1659hierarchy. To use the new hierarchy, break the command chain with a cursor
1660motion or so.
1661
1662As a special case, using this command on the very first item of a list will
1663move the whole list. This behavior can be disabled by configuring
1664@code{org-list-automatic-rules}. The global indentation of a list has no
1665influence on the text @emph{after} the list.
4009494e
GM
1666@kindex C-c C-c
1667@item C-c C-c
1668If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the
ce57c2fe
BG
1669state of the checkbox. In any case, verify bullets and indentation
1670consistency in the whole list.
4009494e 1671@kindex C-c -
afe98dfa
CD
1672@vindex org-plain-list-ordered-item-terminator
1673@vindex org-list-automatic-rules
4009494e 1674@item C-c -
a7808fba 1675Cycle the entire list level through the different itemize/enumerate bullets
afe98dfa
CD
1676(@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}) or a subset of them,
1677depending on @code{org-plain-list-ordered-item-terminator}, the type of list,
1678and its position@footnote{See @code{bullet} rule in
1679@code{org-list-automatic-rules} for more information.}. With a numeric
1680prefix argument N, select the Nth bullet from this list. If there is an
ce57c2fe
BG
1681active region when calling this, selected text will be changed into an item.
1682With a prefix argument, all lines will be converted to list items. If the
1683first line already was a list item, any item marker will be removed from the
1684list. Finally, even without an active region, a normal line will be
a7808fba 1685converted into a list item.
c8d0cf5c
CD
1686@kindex C-c *
1687@item C-c *
1688Turn a plain list item into a headline (so that it becomes a subheading at
ce57c2fe
BG
1689its location). @xref{Structure editing}, for a detailed explanation.
1690@kindex C-c C-*
1691@item C-c C-*
1692Turn the whole plain list into a subtree of the current heading. Checkboxes
1693(@pxref{Checkboxes}) will become TODO (resp. DONE) keywords when unchecked
1694(resp. checked).
64fb801f
CD
1695@kindex S-@key{left}
1696@kindex S-@key{right}
1697@item S-@key{left}/@key{right}
c8d0cf5c 1698@vindex org-support-shift-select
3da3282e
CD
1699This command also cycles bullet styles when the cursor in on the bullet or
1700anywhere in an item line, details depending on
1701@code{org-support-shift-select}.
c8d0cf5c
CD
1702@kindex C-c ^
1703@item C-c ^
1704Sort the plain list. You will be prompted for the sorting method:
1705numerically, alphabetically, by time, or by custom function.
4009494e
GM
1706@end table
1707
c8d0cf5c 1708@node Drawers, Blocks, Plain lists, Document Structure
4009494e
GM
1709@section Drawers
1710@cindex drawers
c8d0cf5c 1711@cindex #+DRAWERS
4009494e
GM
1712@cindex visibility cycling, drawers
1713
c8d0cf5c 1714@vindex org-drawers
4009494e 1715Sometimes you want to keep information associated with an entry, but you
86fbb8ca 1716normally don't want to see it. For this, Org-mode has @emph{drawers}.
dbc28aaa
CD
1717Drawers need to be configured with the variable
1718@code{org-drawers}@footnote{You can define drawers on a per-file basis
1719with a line like @code{#+DRAWERS: HIDDEN PROPERTIES STATE}}. Drawers
4009494e
GM
1720look like this:
1721
1722@example
1723** This is a headline
1724 Still outside the drawer
1725 :DRAWERNAME:
ce57c2fe 1726 This is inside the drawer.
4009494e
GM
1727 :END:
1728 After the drawer.
1729@end example
1730
c8d0cf5c
CD
1731Visibility cycling (@pxref{Visibility cycling}) on the headline will hide and
1732show the entry, but keep the drawer collapsed to a single line. In order to
1733look inside the drawer, you need to move the cursor to the drawer line and
86fbb8ca 1734press @key{TAB} there. Org-mode uses the @code{PROPERTIES} drawer for
c8d0cf5c
CD
1735storing properties (@pxref{Properties and Columns}), and you can also arrange
1736for state change notes (@pxref{Tracking TODO state changes}) and clock times
ed21c5c8 1737(@pxref{Clocking work time}) to be stored in a drawer @code{LOGBOOK}. If you
acedf35c 1738want to store a quick note in the LOGBOOK drawer, in a similar way to state changes, use
ed21c5c8
CD
1739
1740@table @kbd
1741@kindex C-c C-z
1742@item C-c C-z
1743Add a time-stamped note to the LOGBOOK drawer.
1744@end table
c8d0cf5c
CD
1745
1746@node Blocks, Footnotes, Drawers, Document Structure
1747@section Blocks
1748
1749@vindex org-hide-block-startup
1750@cindex blocks, folding
1751Org-mode uses begin...end blocks for various purposes from including source
1752code examples (@pxref{Literal examples}) to capturing time logging
1753information (@pxref{Clocking work time}). These blocks can be folded and
1754unfolded by pressing TAB in the begin line. You can also get all blocks
1755folded at startup by configuring the variable @code{org-hide-block-startup}
1756or on a per-file basis by using
4009494e 1757
c8d0cf5c
CD
1758@cindex @code{hideblocks}, STARTUP keyword
1759@cindex @code{nohideblocks}, STARTUP keyword
1760@example
1761#+STARTUP: hideblocks
1762#+STARTUP: nohideblocks
1763@end example
1764
1765@node Footnotes, Orgstruct mode, Blocks, Document Structure
55e0839d
CD
1766@section Footnotes
1767@cindex footnotes
1768
86fbb8ca
CD
1769Org-mode supports the creation of footnotes. In contrast to the
1770@file{footnote.el} package, Org-mode's footnotes are designed for work on a
55e0839d 1771larger document, not only for one-off documents like emails. The basic
ce57c2fe 1772syntax is similar to the one used by @file{footnote.el}, i.e.@: a footnote is
55e0839d
CD
1773defined in a paragraph that is started by a footnote marker in square
1774brackets in column 0, no indentation allowed. If you need a paragraph break
acedf35c 1775inside a footnote, use the @LaTeX{} idiom @samp{\par}. The footnote reference
55e0839d
CD
1776is simply the marker in square brackets, inside text. For example:
1777
1778@example
1779The Org homepage[fn:1] now looks a lot better than it used to.
1780...
1781[fn:1] The link is: http://orgmode.org
1782@end example
1783
86fbb8ca 1784Org-mode extends the number-based syntax to @emph{named} footnotes and
55e0839d
CD
1785optional inline definition. Using plain numbers as markers (as
1786@file{footnote.el} does) is supported for backward compatibility, but not
acedf35c 1787encouraged because of possible conflicts with @LaTeX{} snippets (@pxref{Embedded
c8d0cf5c 1788LaTeX}). Here are the valid references:
55e0839d
CD
1789
1790@table @code
1791@item [1]
c8d0cf5c 1792A plain numeric footnote marker. Compatible with @file{footnote.el}, but not
86fbb8ca 1793recommended because something like @samp{[1]} could easily be part of a code
c8d0cf5c 1794snippet.
55e0839d
CD
1795@item [fn:name]
1796A named footnote reference, where @code{name} is a unique label word, or, for
1797simplicity of automatic creation, a number.
1798@item [fn:: This is the inline definition of this footnote]
acedf35c 1799A @LaTeX{}-like anonymous footnote where the definition is given directly at the
55e0839d
CD
1800reference point.
1801@item [fn:name: a definition]
1802An inline definition of a footnote, which also specifies a name for the note.
867d4bb3 1803Since Org allows multiple references to the same note, you can then use
55e0839d
CD
1804@code{[fn:name]} to create additional references.
1805@end table
1806
c8d0cf5c
CD
1807@vindex org-footnote-auto-label
1808Footnote labels can be created automatically, or you can create names yourself.
55e0839d 1809This is handled by the variable @code{org-footnote-auto-label} and its
acedf35c 1810corresponding @code{#+STARTUP} keywords. See the docstring of that variable
55e0839d
CD
1811for details.
1812
1813@noindent The following command handles footnotes:
1814
1815@table @kbd
1816@kindex C-c C-x f
1817@item C-c C-x f
1818The footnote action command.
1819
1820When the cursor is on a footnote reference, jump to the definition. When it
1821is at a definition, jump to the (first) reference.
1822
c8d0cf5c
CD
1823@vindex org-footnote-define-inline
1824@vindex org-footnote-section
1825@vindex org-footnote-auto-adjust
55e0839d
CD
1826Otherwise, create a new footnote. Depending on the variable
1827@code{org-footnote-define-inline}@footnote{The corresponding in-buffer
1828setting is: @code{#+STARTUP: fninline} or @code{#+STARTUP: nofninline}}, the
1829definition will be placed right into the text as part of the reference, or
1830separately into the location determined by the variable
1831@code{org-footnote-section}.
1832
1833When this command is called with a prefix argument, a menu of additional
1834options is offered:
1835@example
1836s @r{Sort the footnote definitions by reference sequence. During editing,}
1837 @r{Org makes no effort to sort footnote definitions into a particular}
1838 @r{sequence. If you want them sorted, use this command, which will}
c8d0cf5c
CD
1839 @r{also move entries according to @code{org-footnote-section}. Automatic}
1840 @r{sorting after each insertion/deletion can be configured using the}
1841 @r{variable @code{org-footnote-auto-adjust}.}
1842r @r{Renumber the simple @code{fn:N} footnotes. Automatic renumbering}
1843 @r{after each insertion/deletion can be configured using the variable}
1844 @r{@code{org-footnote-auto-adjust}.}
1845S @r{Short for first @code{r}, then @code{s} action.}
55e0839d
CD
1846n @r{Normalize the footnotes by collecting all definitions (including}
1847 @r{inline definitions) into a special section, and then numbering them}
1848 @r{in sequence. The references will then also be numbers. This is}
ce57c2fe 1849 @r{meant to be the final step before finishing a document (e.g.@: sending}
55e0839d
CD
1850 @r{off an email). The exporters do this automatically, and so could}
1851 @r{something like @code{message-send-hook}.}
1852d @r{Delete the footnote at point, and all definitions of and references}
1853 @r{to it.}
1854@end example
c8d0cf5c
CD
1855Depending on the variable @code{org-footnote-auto-adjust}@footnote{the
1856corresponding in-buffer options are @code{fnadjust} and @code{nofnadjust}.},
1857renumbering and sorting footnotes can be automatic after each insertion or
1858deletion.
1859
55e0839d
CD
1860@kindex C-c C-c
1861@item C-c C-c
1862If the cursor is on a footnote reference, jump to the definition. If it is a
1863the definition, jump back to the reference. When called at a footnote
1864location with a prefix argument, offer the same menu as @kbd{C-c C-x f}.
1865@kindex C-c C-o
1866@kindex mouse-1
1867@kindex mouse-2
c8d0cf5c 1868@item C-c C-o @r{or} mouse-1/2
55e0839d
CD
1869Footnote labels are also links to the corresponding definition/reference, and
1870you can use the usual commands to follow these links.
1871@end table
1872
1873@node Orgstruct mode, , Footnotes, Document Structure
4009494e 1874@section The Orgstruct minor mode
a7808fba 1875@cindex Orgstruct mode
4009494e
GM
1876@cindex minor mode for structure editing
1877
86fbb8ca 1878If you like the intuitive way the Org-mode structure editing and list
c8d0cf5c
CD
1879formatting works, you might want to use these commands in other modes like
1880Text mode or Mail mode as well. The minor mode @code{orgstruct-mode} makes
1881this possible. Toggle the mode with @kbd{M-x orgstruct-mode}, or
ce57c2fe 1882turn it on by default, for example in Message mode, with one of:
4009494e
GM
1883
1884@lisp
ce57c2fe
BG
1885(add-hook 'message-mode-hook 'turn-on-orgstruct)
1886(add-hook 'message-mode-hook 'turn-on-orgstruct++)
4009494e
GM
1887@end lisp
1888
c8d0cf5c
CD
1889When this mode is active and the cursor is on a line that looks to Org like a
1890headline or the first line of a list item, most structure editing commands
1891will work, even if the same keys normally have different functionality in the
1892major mode you are using. If the cursor is not in one of those special
acedf35c 1893lines, Orgstruct mode lurks silently in the shadows. When you use
c8d0cf5c
CD
1894@code{orgstruct++-mode}, Org will also export indentation and autofill
1895settings into that mode, and detect item context after the first line of an
1896item.
4009494e 1897
a7808fba 1898@node Tables, Hyperlinks, Document Structure, Top
4009494e
GM
1899@chapter Tables
1900@cindex tables
1901@cindex editing tables
1902
a7808fba 1903Org comes with a fast and intuitive table editor. Spreadsheet-like
acedf35c 1904calculations are supported using the Emacs @file{calc} package
dbc28aaa 1905@ifinfo
a7808fba 1906(@pxref{Top,Calc,,Calc,Gnu Emacs Calculator Manual}).
dbc28aaa
CD
1907@end ifinfo
1908@ifnotinfo
1909(see the Emacs Calculator manual for more information about the Emacs
1910calculator).
1911@end ifnotinfo
4009494e
GM
1912
1913@menu
c0468714
GM
1914* Built-in table editor:: Simple tables
1915* Column width and alignment:: Overrule the automatic settings
1916* Column groups:: Grouping to trigger vertical lines
1917* Orgtbl mode:: The table editor as minor mode
1918* The spreadsheet:: The table editor has spreadsheet capabilities
1919* Org-Plot:: Plotting from org tables
4009494e
GM
1920@end menu
1921
c8d0cf5c 1922@node Built-in table editor, Column width and alignment, Tables, Tables
4009494e
GM
1923@section The built-in table editor
1924@cindex table editor, built-in
1925
ce57c2fe
BG
1926Org makes it easy to format tables in plain ASCII. Any line with @samp{|} as
1927the first non-whitespace character is considered part of a table. @samp{|}
1928is also the column separator@footnote{To insert a vertical bar into a table
1929field, use @code{\vert} or, inside a word @code{abc\vert@{@}def}.}. A table
1930might look like this:
4009494e
GM
1931
1932@example
1933| Name | Phone | Age |
1934|-------+-------+-----|
1935| Peter | 1234 | 17 |
1936| Anna | 4321 | 25 |
1937@end example
1938
1939A table is re-aligned automatically each time you press @key{TAB} or
1940@key{RET} or @kbd{C-c C-c} inside the table. @key{TAB} also moves to
1941the next field (@key{RET} to the next row) and creates new table rows
1942at the end of the table or before horizontal lines. The indentation
1943of the table is set by the first line. Any line starting with
1944@samp{|-} is considered as a horizontal separator line and will be
1945expanded on the next re-align to span the whole table width. So, to
1946create the above table, you would only type
1947
1948@example
1949|Name|Phone|Age|
1950|-
1951@end example
1952
1953@noindent and then press @key{TAB} to align the table and start filling in
55e0839d
CD
1954fields. Even faster would be to type @code{|Name|Phone|Age} followed by
1955@kbd{C-c @key{RET}}.
4009494e 1956
c8d0cf5c
CD
1957@vindex org-enable-table-editor
1958@vindex org-table-auto-blank-field
a7808fba 1959When typing text into a field, Org treats @key{DEL},
4009494e
GM
1960@key{Backspace}, and all character keys in a special way, so that
1961inserting and deleting avoids shifting other fields. Also, when
1962typing @emph{immediately after the cursor was moved into a new field
1963with @kbd{@key{TAB}}, @kbd{S-@key{TAB}} or @kbd{@key{RET}}}, the
1964field is automatically made blank. If this behavior is too
1965unpredictable for you, configure the variables
1966@code{org-enable-table-editor} and @code{org-table-auto-blank-field}.
1967
1968@table @kbd
1969@tsubheading{Creation and conversion}
afe98dfa 1970@orgcmd{C-c |,org-table-create-or-convert-from-region}
ce57c2fe 1971Convert the active region to table. If every line contains at least one
4009494e 1972TAB character, the function assumes that the material is tab separated.
dbc28aaa 1973If every line contains a comma, comma-separated values (CSV) are assumed.
4009494e 1974If not, lines are split at whitespace into fields. You can use a prefix
dbc28aaa
CD
1975argument to force a specific separator: @kbd{C-u} forces CSV, @kbd{C-u
1976C-u} forces TAB, and a numeric argument N indicates that at least N
a7808fba 1977consecutive spaces, or alternatively a TAB will be the separator.
28a16a1b 1978@*
a7808fba 1979If there is no active region, this command creates an empty Org
ce57c2fe 1980table. But it is easier just to start typing, like
4009494e
GM
1981@kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
1982
1983@tsubheading{Re-aligning and field motion}
acedf35c 1984@orgcmd{C-c C-c,org-table-align}
4009494e
GM
1985Re-align the table without moving the cursor.
1986@c
acedf35c 1987@orgcmd{<TAB>,org-table-next-field}
4009494e
GM
1988Re-align the table, move to the next field. Creates a new row if
1989necessary.
1990@c
acedf35c 1991@orgcmd{S-@key{TAB},org-table-previous-field}
4009494e
GM
1992Re-align, move to previous field.
1993@c
acedf35c 1994@orgcmd{@key{RET},org-table-next-row}
4009494e
GM
1995Re-align the table and move down to next row. Creates a new row if
1996necessary. At the beginning or end of a line, @key{RET} still does
1997NEWLINE, so it can be used to split a table.
c8d0cf5c 1998@c
acedf35c 1999@orgcmd{M-a,org-table-beginning-of-field}
c8d0cf5c 2000Move to beginning of the current table field, or on to the previous field.
acedf35c 2001@orgcmd{M-e,org-table-end-of-field}
c8d0cf5c 2002Move to end of the current table field, or on to the next field.
4009494e
GM
2003
2004@tsubheading{Column and row editing}
acedf35c 2005@orgcmdkkcc{M-@key{left},M-@key{right},org-table-move-column-left,org-table-move-column-right}
4009494e
GM
2006Move the current column left/right.
2007@c
acedf35c 2008@orgcmd{M-S-@key{left},org-table-delete-column}
4009494e
GM
2009Kill the current column.
2010@c
acedf35c 2011@orgcmd{M-S-@key{right},org-table-insert-column}
4009494e
GM
2012Insert a new column to the left of the cursor position.
2013@c
acedf35c 2014@orgcmdkkcc{M-@key{up},M-@key{down},org-table-move-row-up,org-table-move-row-down}
4009494e
GM
2015Move the current row up/down.
2016@c
acedf35c 2017@orgcmd{M-S-@key{up},org-table-kill-row}
4009494e
GM
2018Kill the current row or horizontal line.
2019@c
acedf35c 2020@orgcmd{M-S-@key{down},org-table-insert-row}
a7808fba
CD
2021Insert a new row above the current row. With a prefix argument, the line is
2022created below the current one.
4009494e 2023@c
acedf35c 2024@orgcmd{C-c -,org-table-insert-hline}
2096a1b6 2025Insert a horizontal line below current row. With a prefix argument, the line
4009494e
GM
2026is created above the current line.
2027@c
acedf35c 2028@orgcmd{C-c @key{RET},org-table-hline-and-move}
2096a1b6 2029Insert a horizontal line below current row, and move the cursor into the row
55e0839d
CD
2030below that line.
2031@c
acedf35c 2032@orgcmd{C-c ^,org-table-sort-lines}
4009494e
GM
2033Sort the table lines in the region. The position of point indicates the
2034column to be used for sorting, and the range of lines is the range
2035between the nearest horizontal separator lines, or the entire table. If
2036point is before the first column, you will be prompted for the sorting
2037column. If there is an active region, the mark specifies the first line
2038and the sorting column, while point should be in the last line to be
2039included into the sorting. The command prompts for the sorting type
2040(alphabetically, numerically, or by time). When called with a prefix
2041argument, alphabetic sorting will be case-sensitive.
2042
2043@tsubheading{Regions}
acedf35c 2044@orgcmd{C-c C-x M-w,org-table-copy-region}
c8d0cf5c
CD
2045Copy a rectangular region from a table to a special clipboard. Point and
2046mark determine edge fields of the rectangle. If there is no active region,
2047copy just the current field. The process ignores horizontal separator lines.
4009494e 2048@c
acedf35c 2049@orgcmd{C-c C-x C-w,org-table-cut-region}
4009494e
GM
2050Copy a rectangular region from a table to a special clipboard, and
2051blank all fields in the rectangle. So this is the ``cut'' operation.
2052@c
acedf35c 2053@orgcmd{C-c C-x C-y,org-table-paste-rectangle}
4009494e 2054Paste a rectangular region into a table.
864c9740 2055The upper left corner ends up in the current field. All involved fields
4009494e
GM
2056will be overwritten. If the rectangle does not fit into the present table,
2057the table is enlarged as needed. The process ignores horizontal separator
2058lines.
2059@c
acedf35c
CD
2060@orgcmd{M-@key{RET},org-table-wrap-region}
2061Split the current field at the cursor position and move the rest to the line
2062below. If there is an active region, and both point and mark are in the same
2063column, the text in the column is wrapped to minimum width for the given
2064number of lines. A numeric prefix argument may be used to change the number
2065of desired lines. If there is no region, but you specify a prefix argument,
2066the current field is made blank, and the content is appended to the field
2067above.
4009494e
GM
2068
2069@tsubheading{Calculations}
2070@cindex formula, in tables
2071@cindex calculations, in tables
2072@cindex region, active
2073@cindex active region
c8d0cf5c 2074@cindex transient mark mode
acedf35c 2075@orgcmd{C-c +,org-table-sum}
4009494e
GM
2076Sum the numbers in the current column, or in the rectangle defined by
2077the active region. The result is shown in the echo area and can
2078be inserted with @kbd{C-y}.
2079@c
acedf35c 2080@orgcmd{S-@key{RET},org-table-copy-down}
c8d0cf5c 2081@vindex org-table-copy-increment
864c9740
CD
2082When current field is empty, copy from first non-empty field above. When not
2083empty, copy current field down to next row and move cursor along with it.
2084Depending on the variable @code{org-table-copy-increment}, integer field
2085values will be incremented during copy. Integers that are too large will not
a50253cc 2086be incremented. Also, a @code{0} prefix argument temporarily disables the
c8d0cf5c
CD
2087increment. This key is also used by shift-selection and related modes
2088(@pxref{Conflicts}).
4009494e
GM
2089
2090@tsubheading{Miscellaneous}
acedf35c 2091@orgcmd{C-c `,org-table-edit-field}
c8d0cf5c
CD
2092Edit the current field in a separate window. This is useful for fields that
2093are not fully visible (@pxref{Column width and alignment}). When called with
2094a @kbd{C-u} prefix, just make the full field visible, so that it can be
ce57c2fe
BG
2095edited in place. When called with two @kbd{C-u} prefixes, make the editor
2096window follow the cursor through the table and always show the current
2097field. The follow mode exits automatically when the cursor leaves the table,
2098or when you repeat this command with @kbd{C-u C-u C-c `}.
4009494e 2099@c
4009494e 2100@item M-x org-table-import
c8d0cf5c
CD
2101Import a file as a table. The table should be TAB or whitespace
2102separated. Use, for example, to import a spreadsheet table or data
dbc28aaa
CD
2103from a database, because these programs generally can write
2104TAB-separated text files. This command works by inserting the file into
2105the buffer and then converting the region to a table. Any prefix
2106argument is passed on to the converter, which uses it to determine the
2107separator.
acedf35c 2108@orgcmd{C-c |,org-table-create-or-convert-from-region}
a7808fba 2109Tables can also be imported by pasting tabular text into the Org
4009494e 2110buffer, selecting the pasted text with @kbd{C-x C-x} and then using the
44ce9197 2111@kbd{C-c |} command (see above under @i{Creation and conversion}).
4009494e
GM
2112@c
2113@item M-x org-table-export
acedf35c 2114@findex org-table-export
c8d0cf5c
CD
2115@vindex org-table-export-default-format
2116Export the table, by default as a TAB-separated file. Use for data
a7808fba
CD
2117exchange with, for example, spreadsheet or database programs. The format
2118used to export the file can be configured in the variable
2119@code{org-table-export-default-format}. You may also use properties
2120@code{TABLE_EXPORT_FILE} and @code{TABLE_EXPORT_FORMAT} to specify the file
b349f79f
CD
2121name and the format for table export in a subtree. Org supports quite
2122general formats for exported tables. The exporter format is the same as the
c8d0cf5c 2123format used by Orgtbl radio tables, see @ref{Translator functions}, for a
b349f79f 2124detailed description.
4009494e
GM
2125@end table
2126
2127If you don't like the automatic table editor because it gets in your
2128way on lines which you would like to start with @samp{|}, you can turn
2129it off with
2130
2131@lisp
2132(setq org-enable-table-editor nil)
2133@end lisp
2134
2135@noindent Then the only table command that still works is
2136@kbd{C-c C-c} to do a manual re-align.
2137
c8d0cf5c
CD
2138@node Column width and alignment, Column groups, Built-in table editor, Tables
2139@section Column width and alignment
4009494e 2140@cindex narrow columns in tables
c8d0cf5c
CD
2141@cindex alignment in tables
2142
2143The width of columns is automatically determined by the table editor. And
2144also the alignment of a column is determined automatically from the fraction
2145of number-like versus non-number fields in the column.
4009494e 2146
ed21c5c8
CD
2147Sometimes a single field or a few fields need to carry more text, leading to
2148inconveniently wide columns. Or maybe you want to make a table with several
2149columns having a fixed width, regardless of content. To set@footnote{This
2150feature does not work on XEmacs.} the width of a column, one field anywhere
2151in the column may contain just the string @samp{<N>} where @samp{N} is an
2152integer specifying the width of the column in characters. The next re-align
2153will then set the width of this column to this value.
4009494e
GM
2154
2155@example
2156@group
2157|---+------------------------------| |---+--------|
2158| | | | | <6> |
2159| 1 | one | | 1 | one |
2160| 2 | two | ----\ | 2 | two |
2161| 3 | This is a long chunk of text | ----/ | 3 | This=> |
2162| 4 | four | | 4 | four |
2163|---+------------------------------| |---+--------|
2164@end group
2165@end example
2166
2167@noindent
2168Fields that are wider become clipped and end in the string @samp{=>}.
acedf35c 2169Note that the full text is still in the buffer but is hidden.
c8d0cf5c 2170To see the full text, hold the mouse over the field---a tool-tip window
4009494e
GM
2171will show the full content. To edit such a field, use the command
2172@kbd{C-c `} (that is @kbd{C-c} followed by the backquote). This will
2173open a new window with the full field. Edit it and finish with @kbd{C-c
2174C-c}.
2175
c8d0cf5c 2176@vindex org-startup-align-all-tables
4009494e
GM
2177When visiting a file containing a table with narrowed columns, the
2178necessary character hiding has not yet happened, and the table needs to
2179be aligned before it looks nice. Setting the option
2180@code{org-startup-align-all-tables} will realign all tables in a file
2181upon visiting, but also slow down startup. You can also set this option
2182on a per-file basis with:
2183
2184@example
2185#+STARTUP: align
2186#+STARTUP: noalign
2187@end example
2188
c8d0cf5c 2189If you would like to overrule the automatic alignment of number-rich columns
acedf35c 2190to the right and of string-rich column to the left, you can use @samp{<r>},
afe98dfa
CD
2191@samp{c}@footnote{Centering does not work inside Emacs, but it does have an
2192effect when exporting to HTML.} or @samp{<l>} in a similar fashion. You may
2193also combine alignment and field width like this: @samp{<l10>}.
c8d0cf5c 2194
86fbb8ca
CD
2195Lines which only contain these formatting cookies will be removed
2196automatically when exporting the document.
2197
c8d0cf5c 2198@node Column groups, Orgtbl mode, Column width and alignment, Tables
4009494e
GM
2199@section Column groups
2200@cindex grouping columns in tables
2201
a7808fba 2202When Org exports tables, it does so by default without vertical
4009494e
GM
2203lines because that is visually more satisfying in general. Occasionally
2204however, vertical lines can be useful to structure a table into groups
2205of columns, much like horizontal lines can do for groups of rows. In
2206order to specify column groups, you can use a special row where the
2207first field contains only @samp{/}. The further fields can either
2208contain @samp{<} to indicate that this column should start a group,
2209@samp{>} to indicate the end of a column, or @samp{<>} to make a column
a7808fba 2210a group of its own. Boundaries between column groups will upon export be
4009494e
GM
2211marked with vertical lines. Here is an example:
2212
2213@example
86fbb8ca
CD
2214| N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
2215|---+-----+-----+-----+---------+------------|
2216| / | < | | > | < | > |
2217| 1 | 1 | 1 | 1 | 1 | 1 |
2218| 2 | 4 | 8 | 16 | 1.4142 | 1.1892 |
2219| 3 | 9 | 27 | 81 | 1.7321 | 1.3161 |
2220|---+-----+-----+-----+---------+------------|
2221#+TBLFM: $2=$1^2::$3=$1^3::$4=$1^4::$5=sqrt($1)::$6=sqrt(sqrt(($1)))
4009494e
GM
2222@end example
2223
a7808fba 2224It is also sufficient to just insert the column group starters after
86fbb8ca 2225every vertical line you would like to have:
4009494e
GM
2226
2227@example
2228| N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
2229|----+-----+-----+-----+---------+------------|
2230| / | < | | | < | |
2231@end example
2232
a7808fba 2233@node Orgtbl mode, The spreadsheet, Column groups, Tables
4009494e 2234@section The Orgtbl minor mode
a7808fba 2235@cindex Orgtbl mode
4009494e
GM
2236@cindex minor mode for tables
2237
a7808fba
CD
2238If you like the intuitive way the Org table editor works, you
2239might also want to use it in other modes like Text mode or Mail mode.
2240The minor mode Orgtbl mode makes this possible. You can always toggle
4009494e 2241the mode with @kbd{M-x orgtbl-mode}. To turn it on by default, for
ce57c2fe 2242example in Message mode, use
4009494e
GM
2243
2244@lisp
ce57c2fe 2245(add-hook 'message-mode-hook 'turn-on-orgtbl)
4009494e
GM
2246@end lisp
2247
2248Furthermore, with some special setup, it is possible to maintain tables
a7808fba 2249in arbitrary syntax with Orgtbl mode. For example, it is possible to
acedf35c 2250construct @LaTeX{} tables with the underlying ease and power of
a7808fba 2251Orgtbl mode, including spreadsheet capabilities. For details, see
4009494e
GM
2252@ref{Tables in arbitrary syntax}.
2253
c8d0cf5c 2254@node The spreadsheet, Org-Plot, Orgtbl mode, Tables
4009494e
GM
2255@section The spreadsheet
2256@cindex calculations, in tables
2257@cindex spreadsheet capabilities
2258@cindex @file{calc} package
2259
2260The table editor makes use of the Emacs @file{calc} package to implement
2261spreadsheet-like capabilities. It can also evaluate Emacs Lisp forms to
ed21c5c8
CD
2262derive fields from other fields. While fully featured, Org's implementation
2263is not identical to other spreadsheets. For example, Org knows the concept
2264of a @emph{column formula} that will be applied to all non-header fields in a
2265column without having to copy the formula to each relevant field. There is
2266also a formula debugger, and a formula editor with features for highlighting
2267fields in the table corresponding to the references at the point in the
2268formula, moving these references by arrow keys
4009494e
GM
2269
2270@menu
c0468714
GM
2271* References:: How to refer to another field or range
2272* Formula syntax for Calc:: Using Calc to compute stuff
2273* Formula syntax for Lisp:: Writing formulas in Emacs Lisp
ce57c2fe
BG
2274* Durations and time values:: How to compute durations and time values
2275* Field and range formulas:: Formula for specific (ranges of) fields
c0468714 2276* Column formulas:: Formulas valid for an entire column
4009494e 2277* Editing and debugging formulas:: Fixing formulas
c0468714
GM
2278* Updating the table:: Recomputing all dependent fields
2279* Advanced features:: Field names, parameters and automatic recalc
4009494e
GM
2280@end menu
2281
2282@node References, Formula syntax for Calc, The spreadsheet, The spreadsheet
2283@subsection References
2284@cindex references
2285
2286To compute fields in the table from other fields, formulas must
a7808fba 2287reference other fields or ranges. In Org, fields can be referenced
4009494e
GM
2288by name, by absolute coordinates, and by relative coordinates. To find
2289out what the coordinates of a field are, press @kbd{C-c ?} in that
2290field, or press @kbd{C-c @}} to toggle the display of a grid.
2291
2292@subsubheading Field references
2293@cindex field references
2294@cindex references, to fields
2295
2296Formulas can reference the value of another field in two ways. Like in
2297any other spreadsheet, you may reference fields with a letter/number
2298combination like @code{B3}, meaning the 2nd field in the 3rd row.
ce57c2fe
BG
2299@vindex org-table-use-standard-references
2300However, Org prefers@footnote{Org will understand references typed by the
2301user as @samp{B4}, but it will not use this syntax when offering a formula
2302for editing. You can customize this behavior using the variable
2303@code{org-table-use-standard-references}.} to use another, more general
2304representation that looks like this:
4009494e 2305@example
c8d0cf5c 2306@@@var{row}$@var{column}
4009494e
GM
2307@end example
2308
ce57c2fe
BG
2309Column specifications can be absolute like @code{$1},
2310@code{$2},...@code{$@var{N}}, or relative to the current column (i.e.@: the
2311column of the field which is being computed) like @code{$+1} or @code{$-2}.
2312@code{$<} and @code{$>} are immutable references to the first and last
2313column, respectively, and you can use @code{$>>>} to indicate the third
2314column from the right.
2315
2316The row specification only counts data lines and ignores horizontal separator
2317lines (hlines). Like with columns, you can use absolute row numbers
2318@code{@@1}, @code{@@2},...@code{@@@var{N}}, and row numbers relative to the
2319current row like @code{@@+3} or @code{@@-1}. @code{@@<} and @code{@@>} are
2320immutable references the first and last@footnote{For backward compatibility
2321you can also use special names like @code{$LR5} and @code{$LR12} to refer in
2322a stable way to the 5th and 12th field in the last row of the table.
2323However, this syntax is deprecated, it should not be used for new documents.
2324Use @code{@@>$} instead.} row in the table, respectively. You may also
2325specify the row relative to one of the hlines: @code{@@I} refers to the first
2326hline, @code{@@II} to the second, etc@. @code{@@-I} refers to the first such
2327line above the current line, @code{@@+I} to the first such line below the
2328current line. You can also write @code{@@III+2} which is the second data line
2329after the third hline in the table.
2330
2331@code{@@0} and @code{$0} refer to the current row and column, respectively,
2332i.e. to the row/column for the field being computed. Also, if you omit
2333either the column or the row part of the reference, the current row/column is
2334implied.
4009494e 2335
a7808fba 2336Org's references with @emph{unsigned} numbers are fixed references
4009494e
GM
2337in the sense that if you use the same reference in the formula for two
2338different fields, the same field will be referenced each time.
a7808fba 2339Org's references with @emph{signed} numbers are floating
4009494e
GM
2340references because the same reference operator can reference different
2341fields depending on the field being calculated by the formula.
2342
2343Here are a few examples:
2344
2345@example
ce57c2fe
BG
2346@@2$3 @r{2nd row, 3rd column (same as @code{C2})}
2347$5 @r{column 5 in the current row (same as @code{E&})}
4009494e
GM
2348@@2 @r{current column, row 2}
2349@@-1$-3 @r{the field one row up, three columns to the left}
2350@@-I$2 @r{field just under hline above current row, column 2}
ce57c2fe 2351@@>$5 @r{field in the last row, in column 5}
4009494e
GM
2352@end example
2353
2354@subsubheading Range references
2355@cindex range references
2356@cindex references, to ranges
2357
2358You may reference a rectangular range of fields by specifying two field
2359references connected by two dots @samp{..}. If both fields are in the
2360current row, you may simply use @samp{$2..$7}, but if at least one field
2361is in a different row, you need to use the general @code{@@row$column}
2362format at least for the first field (i.e the reference must start with
2363@samp{@@} in order to be interpreted correctly). Examples:
2364
2365@example
ce57c2fe
BG
2366$1..$3 @r{first three fields in the current row}
2367$P..$Q @r{range, using column names (see under Advanced)}
2368$<<<..$>> @r{start in third column, continue to the one but last}
2369@@2$1..@@4$3 @r{6 fields between these two fields (same as @code{A2..C4})}
4009494e 2370@@-1$-2..@@-1 @r{3 numbers from the column to the left, 2 up to current row}
ce57c2fe 2371@@I..II @r{between first and second hline, short for @code{@@I..@@II}}
4009494e
GM
2372@end example
2373
2374@noindent Range references return a vector of values that can be fed
2375into Calc vector functions. Empty fields in ranges are normally
2376suppressed, so that the vector contains only the non-empty fields (but
2377see the @samp{E} mode switch below). If there are no non-empty fields,
2378@samp{[0]} is returned to avoid syntax errors in formulas.
2379
ed21c5c8
CD
2380@subsubheading Field coordinates in formulas
2381@cindex field coordinates
2382@cindex coordinates, of field
2383@cindex row, of field coordinates
2384@cindex column, of field coordinates
2385
2386For Calc formulas and Lisp formulas @code{@@#} and @code{$#} can be used to
2387get the row or column number of the field where the formula result goes.
2388The traditional Lisp formula equivalents are @code{org-table-current-dline}
2389and @code{org-table-current-column}. Examples:
2390
2391@example
2392if(@@# % 2, $#, string("")) @r{column number on odd lines only}
2393$3 = remote(FOO, @@@@#$2) @r{copy column 2 from table FOO into}
2394 @r{column 3 of the current table}
2395@end example
2396
2397@noindent For the second example, table FOO must have at least as many rows
ce57c2fe 2398as the current table. Note that this is inefficient@footnote{The computation time scales as
ed21c5c8
CD
2399O(N^2) because table FOO is parsed for each field to be copied.} for large
2400number of rows.
2401
4009494e
GM
2402@subsubheading Named references
2403@cindex named references
2404@cindex references, named
2405@cindex name, of column or field
2406@cindex constants, in calculations
c8d0cf5c 2407@cindex #+CONSTANTS
4009494e 2408
c8d0cf5c 2409@vindex org-table-formula-constants
4009494e
GM
2410@samp{$name} is interpreted as the name of a column, parameter or
2411constant. Constants are defined globally through the variable
2412@code{org-table-formula-constants}, and locally (for the file) through a
2413line like
2414
2415@example
2416#+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6
2417@end example
2418
2419@noindent
c8d0cf5c
CD
2420@vindex constants-unit-system
2421@pindex constants.el
a7808fba 2422Also properties (@pxref{Properties and Columns}) can be used as
c8d0cf5c 2423constants in table formulas: for a property @samp{:Xyz:} use the name
dbc28aaa 2424@samp{$PROP_Xyz}, and the property will be searched in the current
4009494e
GM
2425outline entry and in the hierarchy above it. If you have the
2426@file{constants.el} package, it will also be used to resolve constants,
2427including natural constants like @samp{$h} for Planck's constant, and
c8d0cf5c 2428units like @samp{$km} for kilometers@footnote{@file{constants.el} can
4009494e
GM
2429supply the values of constants in two different unit systems, @code{SI}
2430and @code{cgs}. Which one is used depends on the value of the variable
2431@code{constants-unit-system}. You can use the @code{#+STARTUP} options
2432@code{constSI} and @code{constcgs} to set this value for the current
2433buffer.}. Column names and parameters can be specified in special table
2434lines. These are described below, see @ref{Advanced features}. All
2435names must start with a letter, and further consist of letters and
2436numbers.
2437
55e0839d
CD
2438@subsubheading Remote references
2439@cindex remote references
2440@cindex references, remote
2441@cindex references, to a different table
2442@cindex name, of column or field
2443@cindex constants, in calculations
c8d0cf5c 2444@cindex #+TBLNAME
55e0839d
CD
2445
2446You may also reference constants, fields and ranges from a different table,
2447either in the current file or even in a different file. The syntax is
2448
2449@example
2450remote(NAME-OR-ID,REF)
2451@end example
2452
2453@noindent
2454where NAME can be the name of a table in the current file as set by a
2455@code{#+TBLNAME: NAME} line before the table. It can also be the ID of an
2456entry, even in a different file, and the reference then refers to the first
2457table in that entry. REF is an absolute field or range reference as
c8d0cf5c
CD
2458described above for example @code{@@3$3} or @code{$somename}, valid in the
2459referenced table.
55e0839d 2460
4009494e
GM
2461@node Formula syntax for Calc, Formula syntax for Lisp, References, The spreadsheet
2462@subsection Formula syntax for Calc
2463@cindex formula syntax, Calc
2464@cindex syntax, of formulas
2465
2466A formula can be any algebraic expression understood by the Emacs
2467@file{Calc} package. @b{Note that @file{calc} has the
2468non-standard convention that @samp{/} has lower precedence than
2469@samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.} Before
2470evaluation by @code{calc-eval} (@pxref{Calling Calc from
a7808fba 2471Your Programs,calc-eval,Calling Calc from Your Lisp Programs,Calc,GNU
4009494e 2472Emacs Calc Manual}),
a7808fba 2473@c FIXME: The link to the Calc manual in HTML does not work.
4009494e
GM
2474variable substitution takes place according to the rules described above.
2475@cindex vectors, in table calculations
a7808fba 2476The range vectors can be directly fed into the Calc vector functions
4009494e
GM
2477like @samp{vmean} and @samp{vsum}.
2478
2479@cindex format specifier
2480@cindex mode, for @file{calc}
c8d0cf5c 2481@vindex org-calc-default-modes
4009494e
GM
2482A formula can contain an optional mode string after a semicolon. This
2483string consists of flags to influence Calc and other modes during
a7808fba 2484execution. By default, Org uses the standard Calc modes (precision
44ce9197 248512, angular units degrees, fraction and symbolic modes off). The display
c8d0cf5c 2486format, however, has been changed to @code{(float 8)} to keep tables
4009494e
GM
2487compact. The default settings can be configured using the variable
2488@code{org-calc-default-modes}.
2489
2490@example
ed21c5c8
CD
2491p20 @r{set the internal Calc calculation precision to 20 digits}
2492n3 s3 e2 f4 @r{Normal, scientific, engineering, or fixed}
2493 @r{format of the result of Calc passed back to Org.}
2494 @r{Calc formatting is unlimited in precision as}
2495 @r{long as the Calc calculation precision is greater.}
4009494e
GM
2496D R @r{angle modes: degrees, radians}
2497F S @r{fraction and symbolic modes}
2498N @r{interpret all fields as numbers, use 0 for non-numbers}
4009494e 2499E @r{keep empty fields in ranges}
c8d0cf5c 2500L @r{literal}
4009494e
GM
2501@end example
2502
2503@noindent
ed21c5c8
CD
2504Unless you use large integer numbers or high-precision-calculation
2505and -display for floating point numbers you may alternatively provide a
2506@code{printf} format specifier to reformat the Calc result after it has been
2507passed back to Org instead of letting Calc already do the
2508formatting@footnote{The @code{printf} reformatting is limited in precision
2509because the value passed to it is converted into an @code{integer} or
2510@code{double}. The @code{integer} is limited in size by truncating the
2511signed value to 32 bits. The @code{double} is limited in precision to 64
2512bits overall which leaves approximately 16 significant decimal digits.}.
2513A few examples:
4009494e
GM
2514
2515@example
2516$1+$2 @r{Sum of first and second field}
2517$1+$2;%.2f @r{Same, format result to two decimals}
2518exp($2)+exp($1) @r{Math functions can be used}
2519$0;%.1f @r{Reformat current cell to 1 decimal}
2520($3-32)*5/9 @r{Degrees F -> C conversion}
2521$c/$1/$cm @r{Hz -> cm conversion, using @file{constants.el}}
2522tan($1);Dp3s1 @r{Compute in degrees, precision 3, display SCI 1}
2523sin($1);Dp3%.1e @r{Same, but use printf specifier for display}
2524vmean($2..$7) @r{Compute column range mean, using vector function}
2525vmean($2..$7);EN @r{Same, but treat empty fields as 0}
acedf35c 2526taylor($3,x=7,2) @r{Taylor series of $3, at x=7, second degree}
4009494e
GM
2527@end example
2528
2529Calc also contains a complete set of logical operations. For example
2530
2531@example
ce57c2fe 2532if($1<20,teen,string("")) @r{"teen" if age $1 less than 20, else empty}
4009494e
GM
2533@end example
2534
ce57c2fe
BG
2535Note that you can also use two org-specific flags @code{T} and @code{t} for
2536durations computations @ref{Durations and time values}.
2537
2538@node Formula syntax for Lisp, Durations and time values, Formula syntax for Calc, The spreadsheet
4009494e
GM
2539@subsection Emacs Lisp forms as formulas
2540@cindex Lisp forms, as table formulas
2541
acedf35c
CD
2542It is also possible to write a formula in Emacs Lisp; this can be useful for
2543string manipulation and control structures, if Calc's functionality is not
2544enough. If a formula starts with a single-quote followed by an opening
2545parenthesis, then it is evaluated as a Lisp form. The evaluation should
2546return either a string or a number. Just as with @file{calc} formulas, you
2547can specify modes and a printf format after a semicolon. With Emacs Lisp
2548forms, you need to be conscious about the way field references are
2549interpolated into the form. By default, a reference will be interpolated as
2550a Lisp string (in double-quotes) containing the field. If you provide the
2551@samp{N} mode switch, all referenced elements will be numbers (non-number
2552fields will be zero) and interpolated as Lisp numbers, without quotes. If
2553you provide the @samp{L} flag, all fields will be interpolated literally,
2554without quotes. I.e., if you want a reference to be interpreted as a string
2555by the Lisp form, enclose the reference operator itself in double-quotes,
2556like @code{"$3"}. Ranges are inserted as space-separated fields, so you can
ce57c2fe 2557embed them in list or vector syntax. Here are a few examples---note how the
acedf35c 2558@samp{N} mode is used when we do computations in Lisp:
4009494e
GM
2559
2560@example
2561@r{Swap the first two characters of the content of column 1}
2562 '(concat (substring $1 1 2) (substring $1 0 1) (substring $1 2))
2096a1b6 2563@r{Add columns 1 and 2, equivalent to Calc's @code{$1+$2}}
4009494e
GM
2564 '(+ $1 $2);N
2565@r{Compute the sum of columns 1-4, like Calc's @code{vsum($1..$4)}}
2566 '(apply '+ '($1..$4));N
2567@end example
2568
ce57c2fe
BG
2569@node Durations and time values, Field and range formulas, Formula syntax for Lisp, The spreadsheet
2570@subsection Durations and time values
2571@cindex Duration, computing
2572@cindex Time, computing
2573@vindex org-table-duration-custom-format
2574
2575If you want to compute time values use the @code{T} flag, either in Calc
2576formulas or Elisp formulas:
2577
2578@example
2579@group
2580 | Task 1 | Task 2 | Total |
2581 |---------+----------+----------|
2582 | 2:12 | 1:47 | 03:59:00 |
2583 | 3:02:20 | -2:07:00 | 0.92 |
2584 #+TBLFM: @@2$3=$1+$2;T::@@3$3=$1+$2;t
2585@end group
2586@end example
2587
2588Input duration values must be of the form @code{[HH:MM[:SS]}, where seconds
2589are optional. With the @code{T} flag, computed durations will be displayed
2590as @code{[HH:MM:SS} (see the first formula above). With the @code{t} flag,
2591computed durations will be displayed according to the value of the variable
2592@code{org-table-duration-custom-format}, which defaults to @code{'hours} and
2593will display the result as a fraction of hours (see the second formula in the
2594example above).
2595
2596Negative duration values can be manipulated as well, and integers will be
2597considered as seconds in addition and subtraction.
2598
2599@node Field and range formulas, Column formulas, Durations and time values, The spreadsheet
2600@subsection Field and range formulas
4009494e 2601@cindex field formula
ce57c2fe 2602@cindex range formula
4009494e 2603@cindex formula, for individual table field
ce57c2fe 2604@cindex formula, for range of fields
4009494e 2605
ce57c2fe
BG
2606To assign a formula to a particular field, type it directly into the field,
2607preceded by @samp{:=}, for example @samp{:=vsum(@@II..III)}. When you press
2608@key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the field,
2609the formula will be stored as the formula for this field, evaluated, and the
2610current field will be replaced with the result.
4009494e 2611
c8d0cf5c 2612@cindex #+TBLFM
ce57c2fe
BG
2613Formulas are stored in a special line starting with @samp{#+TBLFM:} directly
2614below the table. If you type the equation in the 4th field of the 3rd data
2615line in the table, the formula will look like @samp{@@3$4=$1+$2}. When
2616inserting/deleting/swapping column and rows with the appropriate commands,
2617@i{absolute references} (but not relative ones) in stored formulas are
2618modified in order to still reference the same field. To avoid this from
2619happening, in particular in range references, anchor ranges at the table
2620borders (using @code{@@<}, @code{@@>}, @code{$<}, @code{$>}), or at hlines
2621using the @code{@@I} notation. Automatic adaptation of field references does
2622of cause not happen if you edit the table structure with normal editing
2623commands---then you must fix the equations yourself.
2624
2625Instead of typing an equation into the field, you may also use the following
2626command
4009494e
GM
2627
2628@table @kbd
acedf35c 2629@orgcmd{C-u C-c =,org-table-eval-formula}
4009494e 2630Install a new formula for the current field. The command prompts for a
c8d0cf5c
CD
2631formula with default taken from the @samp{#+TBLFM:} line, applies
2632it to the current field, and stores it.
4009494e
GM
2633@end table
2634
ce57c2fe
BG
2635The left-hand side of a formula can also be a special expression in order to
2636assign the formula to a number of different fields. There is no keyboard
2637shortcut to enter such range formulas. To add them, use the formula editor
2638(@pxref{Editing and debugging formulas}) or edit the @code{#+TBLFM:} line
2639directly.
2640
2641@table @code
2642@item $2=
2643Column formula, valid for the entire column. This is so common that Org
2644treats these formulas in a special way, see @ref{Column formulas}.
2645@item @@3=
2646Row formula, applies to all fields in the specified row. @code{@@>=} means
2647the last row.
2648@item @@1$2..@@4$3=
2649Range formula, applies to all fields in the given rectangular range. This
2650can also be used to assign a formula to some but not all fields in a row.
2651@item $name=
2652Named field, see @ref{Advanced features}.
2653@end table
2654
2655@node Column formulas, Editing and debugging formulas, Field and range formulas, The spreadsheet
4009494e
GM
2656@subsection Column formulas
2657@cindex column formula
2658@cindex formula, for table column
2659
ce57c2fe
BG
2660When you assign a formula to a simple column reference like @code{$3=}, the
2661same formula will be used in all fields of that column, with the following
2662very convenient exceptions: (i) If the table contains horizontal separator
2663hlines, everything before the first such line is considered part of the table
2664@emph{header} and will not be modified by column formulas. (ii) Fields that
2665already get a value from a field/range formula will be left alone by column
2666formulas. These conditions make column formulas very easy to use.
4009494e
GM
2667
2668To assign a formula to a column, type it directly into any field in the
2669column, preceded by an equal sign, like @samp{=$1+$2}. When you press
c8d0cf5c
CD
2670@key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the field,
2671the formula will be stored as the formula for the current column, evaluated
2672and the current field replaced with the result. If the field contains only
2673@samp{=}, the previously stored formula for this column is used. For each
2674column, Org will only remember the most recently used formula. In the
ce57c2fe
BG
2675@samp{#+TBLFM:} line, column formulas will look like @samp{$4=$1+$2}. The
2676left-hand side of a column formula can not be the name of column, it must be
2677the numeric column reference or @code{$>}.
4009494e
GM
2678
2679Instead of typing an equation into the field, you may also use the
2680following command:
2681
2682@table @kbd
acedf35c 2683@orgcmd{C-c =,org-table-eval-formula}
a7808fba
CD
2684Install a new formula for the current column and replace current field with
2685the result of the formula. The command prompts for a formula, with default
2686taken from the @samp{#+TBLFM} line, applies it to the current field and
ce57c2fe 2687stores it. With a numeric prefix argument(e.g.@: @kbd{C-5 C-c =}) the command
4009494e
GM
2688will apply it to that many consecutive fields in the current column.
2689@end table
2690
4009494e 2691@node Editing and debugging formulas, Updating the table, Column formulas, The spreadsheet
a7808fba 2692@subsection Editing and debugging formulas
4009494e
GM
2693@cindex formula editing
2694@cindex editing, of table formulas
2695
c8d0cf5c 2696@vindex org-table-use-standard-references
4009494e 2697You can edit individual formulas in the minibuffer or directly in the
a7808fba
CD
2698field. Org can also prepare a special buffer with all active
2699formulas of a table. When offering a formula for editing, Org
4009494e
GM
2700converts references to the standard format (like @code{B3} or @code{D&})
2701if possible. If you prefer to only work with the internal format (like
2702@code{@@3$2} or @code{$4}), configure the variable
2703@code{org-table-use-standard-references}.
2704
2705@table @kbd
acedf35c 2706@orgcmdkkc{C-c =,C-u C-c =,org-table-eval-formula}
4009494e 2707Edit the formula associated with the current column/field in the
ce57c2fe 2708minibuffer. See @ref{Column formulas}, and @ref{Field and range formulas}.
acedf35c 2709@orgcmd{C-u C-u C-c =,org-table-eval-formula}
4009494e
GM
2710Re-insert the active formula (either a
2711field formula, or a column formula) into the current field, so that you
2712can edit it directly in the field. The advantage over editing in the
2713minibuffer is that you can use the command @kbd{C-c ?}.
acedf35c 2714@orgcmd{C-c ?,org-table-field-info}
4009494e
GM
2715While editing a formula in a table field, highlight the field(s)
2716referenced by the reference at the cursor position in the formula.
2717@kindex C-c @}
acedf35c 2718@findex org-table-toggle-coordinate-overlays
4009494e 2719@item C-c @}
acedf35c
CD
2720Toggle the display of row and column numbers for a table, using overlays
2721(@command{org-table-toggle-coordinate-overlays}). These are updated each
2722time the table is aligned; you can force it with @kbd{C-c C-c}.
4009494e 2723@kindex C-c @{
acedf35c 2724@findex org-table-toggle-formula-debugger
4009494e 2725@item C-c @{
acedf35c
CD
2726Toggle the formula debugger on and off
2727(@command{org-table-toggle-formula-debugger}). See below.
2728@orgcmd{C-c ',org-table-edit-formulas}
4009494e
GM
2729Edit all formulas for the current table in a special buffer, where the
2730formulas will be displayed one per line. If the current field has an
2731active formula, the cursor in the formula editor will mark it.
a7808fba 2732While inside the special buffer, Org will automatically highlight
4009494e
GM
2733any field or range reference at the cursor position. You may edit,
2734remove and add formulas, and use the following commands:
2735@table @kbd
acedf35c 2736@orgcmdkkc{C-c C-c,C-x C-s,org-table-fedit-finish}
4009494e
GM
2737Exit the formula editor and store the modified formulas. With @kbd{C-u}
2738prefix, also apply the new formulas to the entire table.
acedf35c 2739@orgcmd{C-c C-q,org-table-fedit-abort}
4009494e 2740Exit the formula editor without installing changes.
acedf35c 2741@orgcmd{C-c C-r,org-table-fedit-toggle-ref-type}
4009494e
GM
2742Toggle all references in the formula editor between standard (like
2743@code{B3}) and internal (like @code{@@3$2}).
acedf35c 2744@orgcmd{@key{TAB},org-table-fedit-lisp-indent}
c8d0cf5c
CD
2745Pretty-print or indent Lisp formula at point. When in a line containing
2746a Lisp formula, format the formula according to Emacs Lisp rules.
4009494e 2747Another @key{TAB} collapses the formula back again. In the open
c8d0cf5c 2748formula, @key{TAB} re-indents just like in Emacs Lisp mode.
acedf35c 2749@orgcmd{M-@key{TAB},lisp-complete-symbol}
c8d0cf5c 2750Complete Lisp symbols, just like in Emacs Lisp mode.
4009494e
GM
2751@kindex S-@key{up}
2752@kindex S-@key{down}
2753@kindex S-@key{left}
2754@kindex S-@key{right}
acedf35c
CD
2755@findex org-table-fedit-ref-up
2756@findex org-table-fedit-ref-down
2757@findex org-table-fedit-ref-left
2758@findex org-table-fedit-ref-right
4009494e
GM
2759@item S-@key{up}/@key{down}/@key{left}/@key{right}
2760Shift the reference at point. For example, if the reference is
2761@code{B3} and you press @kbd{S-@key{right}}, it will become @code{C3}.
c8d0cf5c 2762This also works for relative references and for hline references.
acedf35c 2763@orgcmdkkcc{M-S-@key{up},M-S-@key{down},org-table-fedit-line-up,org-table-fedit-line-down}
a7808fba 2764Move the test line for column formulas in the Org buffer up and
4009494e 2765down.
acedf35c 2766@orgcmdkkcc{M-@key{up},M-@key{down},org-table-fedit-scroll-down,org-table-fedit-scroll-up}
4009494e
GM
2767Scroll the window displaying the table.
2768@kindex C-c @}
acedf35c 2769@findex org-table-toggle-coordinate-overlays
4009494e
GM
2770@item C-c @}
2771Turn the coordinate grid in the table on and off.
2772@end table
2773@end table
2774
2775Making a table field blank does not remove the formula associated with
c8d0cf5c
CD
2776the field, because that is stored in a different line (the @samp{#+TBLFM}
2777line)---during the next recalculation the field will be filled again.
4009494e
GM
2778To remove a formula from a field, you have to give an empty reply when
2779prompted for the formula, or to edit the @samp{#+TBLFM} line.
2780
2781@kindex C-c C-c
2782You may edit the @samp{#+TBLFM} directly and re-apply the changed
c8d0cf5c 2783equations with @kbd{C-c C-c} in that line or with the normal
4009494e
GM
2784recalculation commands in the table.
2785
2786@subsubheading Debugging formulas
2787@cindex formula debugging
2788@cindex debugging, of table formulas
2789When the evaluation of a formula leads to an error, the field content
2790becomes the string @samp{#ERROR}. If you would like see what is going
2791on during variable substitution and calculation in order to find a bug,
2792turn on formula debugging in the @code{Tbl} menu and repeat the
2793calculation, for example by pressing @kbd{C-u C-u C-c = @key{RET}} in a
2794field. Detailed information will be displayed.
2795
2796@node Updating the table, Advanced features, Editing and debugging formulas, The spreadsheet
a7808fba 2797@subsection Updating the table
4009494e
GM
2798@cindex recomputing table fields
2799@cindex updating, table
2800
2801Recalculation of a table is normally not automatic, but needs to be
c8d0cf5c
CD
2802triggered by a command. See @ref{Advanced features}, for a way to make
2803recalculation at least semi-automatic.
4009494e
GM
2804
2805In order to recalculate a line of a table or the entire table, use the
2806following commands:
2807
2808@table @kbd
acedf35c 2809@orgcmd{C-c *,org-table-recalculate}
4009494e 2810Recalculate the current row by first applying the stored column formulas
ce57c2fe 2811from left to right, and all field/range formulas in the current row.
4009494e
GM
2812@c
2813@kindex C-u C-c *
2814@item C-u C-c *
2815@kindex C-u C-c C-c
2816@itemx C-u C-c C-c
2817Recompute the entire table, line by line. Any lines before the first
2818hline are left alone, assuming that these are part of the table header.
2819@c
acedf35c 2820@orgcmdkkc{C-u C-u C-c *,C-u C-u C-c C-c,org-table-iterate}
4009494e
GM
2821Iterate the table by recomputing it until no further changes occur.
2822This may be necessary if some computed fields use the value of other
2823fields that are computed @i{later} in the calculation sequence.
86fbb8ca 2824@item M-x org-table-recalculate-buffer-tables
acedf35c 2825@findex org-table-recalculate-buffer-tables
86fbb8ca
CD
2826Recompute all tables in the current buffer.
2827@item M-x org-table-iterate-buffer-tables
acedf35c 2828@findex org-table-iterate-buffer-tables
86fbb8ca
CD
2829Iterate all tables in the current buffer, in order to converge table-to-table
2830dependencies.
4009494e
GM
2831@end table
2832
2833@node Advanced features, , Updating the table, The spreadsheet
2834@subsection Advanced features
2835
2836If you want the recalculation of fields to happen automatically, or if
2837you want to be able to assign @i{names} to fields and columns, you need
2838to reserve the first column of the table for special marking characters.
ce57c2fe 2839
4009494e 2840@table @kbd
acedf35c 2841@orgcmd{C-#,org-table-rotate-recalc-marks}
a351880d 2842Rotate the calculation mark in first column through the states @samp{ },
864c9740
CD
2843@samp{#}, @samp{*}, @samp{!}, @samp{$}. When there is an active region,
2844change all marks in the region.
4009494e
GM
2845@end table
2846
2847Here is an example of a table that collects exam results of students and
2848makes use of these features:
2849
2850@example
2851@group
2852|---+---------+--------+--------+--------+-------+------|
2853| | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
2854|---+---------+--------+--------+--------+-------+------|
2855| ! | | P1 | P2 | P3 | Tot | |
2856| # | Maximum | 10 | 15 | 25 | 50 | 10.0 |
2857| ^ | | m1 | m2 | m3 | mt | |
2858|---+---------+--------+--------+--------+-------+------|
2859| # | Peter | 10 | 8 | 23 | 41 | 8.2 |
4009494e
GM
2860| # | Sam | 2 | 4 | 3 | 9 | 1.8 |
2861|---+---------+--------+--------+--------+-------+------|
2862| | Average | | | | 29.7 | |
2863| ^ | | | | | at | |
2864| $ | max=50 | | | | | |
2865|---+---------+--------+--------+--------+-------+------|
2866#+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@@-II..@@-I);%.1f
2867@end group
2868@end example
2869
c8d0cf5c 2870@noindent @b{Important}: please note that for these special tables,
4009494e
GM
2871recalculating the table with @kbd{C-u C-c *} will only affect rows that
2872are marked @samp{#} or @samp{*}, and fields that have a formula assigned
2873to the field itself. The column formulas are not applied in rows with
2874empty first field.
2875
2876@cindex marking characters, tables
2877The marking characters have the following meaning:
2878@table @samp
2879@item !
2880The fields in this line define names for the columns, so that you may
2881refer to a column as @samp{$Tot} instead of @samp{$6}.
2882@item ^
2883This row defines names for the fields @emph{above} the row. With such
2884a definition, any formula in the table may use @samp{$m1} to refer to
2885the value @samp{10}. Also, if you assign a formula to a names field, it
2886will be stored as @samp{$name=...}.
2887@item _
2888Similar to @samp{^}, but defines names for the fields in the row
2889@emph{below}.
2890@item $
2891Fields in this row can define @emph{parameters} for formulas. For
2892example, if a field in a @samp{$} row contains @samp{max=50}, then
2893formulas in this table can refer to the value 50 using @samp{$max}.
2894Parameters work exactly like constants, only that they can be defined on
2895a per-table basis.
2896@item #
2897Fields in this row are automatically recalculated when pressing
2898@key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row. Also, this row
2899is selected for a global recalculation with @kbd{C-u C-c *}. Unmarked
2900lines will be left alone by this command.
2901@item *
2902Selects this line for global recalculation with @kbd{C-u C-c *}, but
2903not for automatic recalculation. Use this when automatic
2904recalculation slows down editing too much.
2905@item
2906Unmarked lines are exempt from recalculation with @kbd{C-u C-c *}.
2907All lines that should be recalculated should be marked with @samp{#}
2908or @samp{*}.
2909@item /
2910Do not export this line. Useful for lines that contain the narrowing
6eb02347 2911@samp{<N>} markers or column group markers.
4009494e
GM
2912@end table
2913
c8d0cf5c
CD
2914Finally, just to whet your appetite for what can be done with the
2915fantastic @file{calc.el} package, here is a table that computes the Taylor
28a16a1b
CD
2916series of degree @code{n} at location @code{x} for a couple of
2917functions.
4009494e
GM
2918
2919@example
2920@group
2921|---+-------------+---+-----+--------------------------------------|
2922| | Func | n | x | Result |
2923|---+-------------+---+-----+--------------------------------------|
2924| # | exp(x) | 1 | x | 1 + x |
2925| # | exp(x) | 2 | x | 1 + x + x^2 / 2 |
2926| # | exp(x) | 3 | x | 1 + x + x^2 / 2 + x^3 / 6 |
2927| # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
2928| # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2 |
2929| * | tan(x) | 3 | x | 0.0175 x + 1.77e-6 x^3 |
2930|---+-------------+---+-----+--------------------------------------|
2931#+TBLFM: $5=taylor($2,$4,$3);n3
2932@end group
2933@end example
2934
c8d0cf5c
CD
2935@node Org-Plot, , The spreadsheet, Tables
2936@section Org-Plot
864c9740 2937@cindex graph, in tables
86fbb8ca 2938@cindex plot tables using Gnuplot
c8d0cf5c 2939@cindex #+PLOT
864c9740 2940
c8d0cf5c 2941Org-Plot can produce 2D and 3D graphs of information stored in org tables
71d35b24
CD
2942using @file{Gnuplot} @uref{http://www.gnuplot.info/} and @file{gnuplot-mode}
2943@uref{http://cars9.uchicago.edu/~ravel/software/gnuplot-mode.html}. To see
c8d0cf5c 2944this in action, ensure that you have both Gnuplot and Gnuplot mode installed
71d35b24 2945on your system, then call @code{org-plot/gnuplot} on the following table.
864c9740
CD
2946
2947@example
2948@group
2949#+PLOT: title:"Citas" ind:1 deps:(3) type:2d with:histograms set:"yrange [0:]"
2950| Sede | Max cites | H-index |
2951|-----------+-----------+---------|
2952| Chile | 257.72 | 21.39 |
2953| Leeds | 165.77 | 19.68 |
2954| Sao Paolo | 71.00 | 11.50 |
2955| Stockholm | 134.19 | 14.33 |
2956| Morelia | 257.56 | 17.67 |
2957@end group
2958@end example
2959
c8d0cf5c 2960Notice that Org Plot is smart enough to apply the table's headers as labels.
864c9740 2961Further control over the labels, type, content, and appearance of plots can
c8d0cf5c
CD
2962be exercised through the @code{#+PLOT:} lines preceding a table. See below
2963for a complete list of Org-plot options. For more information and examples
2964see the Org-plot tutorial at
ce57c2fe 2965@uref{http://orgmode.org/worg/org-tutorials/org-plot.html}.
864c9740
CD
2966
2967@subsubheading Plot Options
2968
2969@table @code
2970@item set
c8d0cf5c 2971Specify any @command{gnuplot} option to be set when graphing.
864c9740
CD
2972
2973@item title
2974Specify the title of the plot.
2975
2976@item ind
2977Specify which column of the table to use as the @code{x} axis.
2978
2979@item deps
c8d0cf5c 2980Specify the columns to graph as a Lisp style list, surrounded by parentheses
71d35b24 2981and separated by spaces for example @code{dep:(3 4)} to graph the third and
c8d0cf5c 2982fourth columns (defaults to graphing all other columns aside from the @code{ind}
71d35b24 2983column).
864c9740
CD
2984
2985@item type
2986Specify whether the plot will be @code{2d}, @code{3d}, or @code{grid}.
2987
2988@item with
2989Specify a @code{with} option to be inserted for every col being plotted
ce57c2fe 2990(e.g.@: @code{lines}, @code{points}, @code{boxes}, @code{impulses}, etc...).
223b43fa 2991Defaults to @code{lines}.
864c9740
CD
2992
2993@item file
c8d0cf5c 2994If you want to plot to a file, specify @code{"@var{path/to/desired/output-file}"}.
864c9740
CD
2995
2996@item labels
acedf35c
CD
2997List of labels to be used for the @code{deps} (defaults to the column headers
2998if they exist).
864c9740
CD
2999
3000@item line
c8d0cf5c 3001Specify an entire line to be inserted in the Gnuplot script.
864c9740
CD
3002
3003@item map
3004When plotting @code{3d} or @code{grid} types, set this to @code{t} to graph a
3005flat mapping rather than a @code{3d} slope.
3006
e45e3595 3007@item timefmt
c8d0cf5c 3008Specify format of Org-mode timestamps as they will be parsed by Gnuplot.
223b43fa 3009Defaults to @samp{%Y-%m-%d-%H:%M:%S}.
e45e3595 3010
864c9740 3011@item script
c8d0cf5c
CD
3012If you want total control, you can specify a script file (place the file name
3013between double-quotes) which will be used to plot. Before plotting, every
864c9740 3014instance of @code{$datafile} in the specified script will be replaced with
c8d0cf5c 3015the path to the generated data file. Note: even if you set this option, you
864c9740
CD
3016may still want to specify the plot type, as that can impact the content of
3017the data file.
3018@end table
3019
a7808fba 3020@node Hyperlinks, TODO Items, Tables, Top
4009494e
GM
3021@chapter Hyperlinks
3022@cindex hyperlinks
3023
a7808fba 3024Like HTML, Org provides links inside a file, external links to
dbc28aaa 3025other files, Usenet articles, emails, and much more.
4009494e
GM
3026
3027@menu
c0468714
GM
3028* Link format:: How links in Org are formatted
3029* Internal links:: Links to other places in the current file
3030* External links:: URL-like links to the world
3031* Handling links:: Creating, inserting and following
3032* Using links outside Org:: Linking from my C source code?
3033* Link abbreviations:: Shortcuts for writing complex links
3034* Search options:: Linking to a specific location
3035* Custom searches:: When the default search is not enough
4009494e
GM
3036@end menu
3037
3038@node Link format, Internal links, Hyperlinks, Hyperlinks
3039@section Link format
3040@cindex link format
3041@cindex format, of links
3042
a7808fba 3043Org will recognize plain URL-like links and activate them as
4009494e
GM
3044clickable links. The general link format, however, looks like this:
3045
3046@example
28a16a1b 3047[[link][description]] @r{or alternatively} [[link]]
4009494e
GM
3048@end example
3049
c8d0cf5c 3050@noindent
a7808fba 3051Once a link in the buffer is complete (all brackets present), Org
4009494e
GM
3052will change the display so that @samp{description} is displayed instead
3053of @samp{[[link][description]]} and @samp{link} is displayed instead of
3054@samp{[[link]]}. Links will be highlighted in the face @code{org-link},
3055which by default is an underlined face. You can directly edit the
3056visible part of a link. Note that this can be either the @samp{link}
3057part (if there is no description) or the @samp{description} part. To
3058edit also the invisible @samp{link} part, use @kbd{C-c C-l} with the
3059cursor on the link.
3060
3061If you place the cursor at the beginning or just behind the end of the
3062displayed text and press @key{BACKSPACE}, you will remove the
3063(invisible) bracket at that location. This makes the link incomplete
3064and the internals are again displayed as plain text. Inserting the
3065missing bracket hides the link internals again. To show the
3066internal structure of all links, use the menu entry
3067@code{Org->Hyperlinks->Literal links}.
3068
3069@node Internal links, External links, Link format, Hyperlinks
3070@section Internal links
3071@cindex internal links
3072@cindex links, internal
3073@cindex targets, for links
3074
c8d0cf5c
CD
3075@cindex property, CUSTOM_ID
3076If the link does not look like a URL, it is considered to be internal in the
3077current file. The most important case is a link like
3078@samp{[[#my-custom-id]]} which will link to the entry with the
3079@code{CUSTOM_ID} property @samp{my-custom-id}. Such custom IDs are very good
3080for HTML export (@pxref{HTML export}) where they produce pretty section
3081links. You are responsible yourself to make sure these custom IDs are unique
3082in a file.
3083
3084Links such as @samp{[[My Target]]} or @samp{[[My Target][Find my target]]}
3085lead to a text search in the current file.
3086
3087The link can be followed with @kbd{C-c C-o} when the cursor is on the link,
3088or with a mouse click (@pxref{Handling links}). Links to custom IDs will
3089point to the corresponding headline. The preferred match for a text link is
3090a @i{dedicated target}: the same string in double angular brackets. Targets
3091may be located anywhere; sometimes it is convenient to put them into a
ce57c2fe 3092comment line. For example
4009494e
GM
3093
3094@example
3095# <<My Target>>
3096@end example
3097
3098@noindent In HTML export (@pxref{HTML export}), such targets will become
64fb801f
CD
3099named anchors for direct access through @samp{http} links@footnote{Note that
3100text before the first headline is usually not exported, so the first such
3101target should be after the first headline, or in the line directly before the
3102first headline.}.
4009494e 3103
afe98dfa
CD
3104If no dedicated target exists, Org will search for a headline that is exactly
3105the link text but may also include a TODO keyword and tags@footnote{To insert
3106a link targeting a headline, in-buffer completion can be used. Just type a
3107star followed by a few optional letters into the buffer and press
3108@kbd{M-@key{TAB}}. All headlines in the current buffer will be offered as
3109completions.}. In non-Org files, the search will look for the words in the
acedf35c 3110link text. In the above example the search would be for @samp{my target}.
4009494e 3111
a7808fba 3112Following a link pushes a mark onto Org's own mark ring. You can
4009494e
GM
3113return to the previous position with @kbd{C-c &}. Using this command
3114several times in direct succession goes back to positions recorded
3115earlier.
3116
3117@menu
c0468714 3118* Radio targets:: Make targets trigger links in plain text
4009494e
GM
3119@end menu
3120
3121@node Radio targets, , Internal links, Internal links
3122@subsection Radio targets
3123@cindex radio targets
3124@cindex targets, radio
3125@cindex links, radio targets
3126
a7808fba 3127Org can automatically turn any occurrences of certain target names
4009494e
GM
3128in normal text into a link. So without explicitly creating a link, the
3129text connects to the target radioing its position. Radio targets are
3130enclosed by triple angular brackets. For example, a target @samp{<<<My
3131Target>>>} causes each occurrence of @samp{my target} in normal text to
a7808fba 3132become activated as a link. The Org file is scanned automatically
4009494e
GM
3133for radio targets only when the file is first loaded into Emacs. To
3134update the target list during editing, press @kbd{C-c C-c} with the
3135cursor on or at a target.
3136
3137@node External links, Handling links, Internal links, Hyperlinks
3138@section External links
3139@cindex links, external
3140@cindex external links
3141@cindex links, external
a7808fba 3142@cindex Gnus links
4009494e 3143@cindex BBDB links
28a16a1b 3144@cindex IRC links
4009494e
GM
3145@cindex URL links
3146@cindex file links
3147@cindex VM links
3148@cindex RMAIL links
3149@cindex WANDERLUST links
3150@cindex MH-E links
3151@cindex USENET links
3152@cindex SHELL links
3153@cindex Info links
c8d0cf5c 3154@cindex Elisp links
4009494e 3155
a7808fba 3156Org supports links to files, websites, Usenet and email messages,
28a16a1b
CD
3157BBDB database entries and links to both IRC conversations and their
3158logs. External links are URL-like locators. They start with a short
3159identifying string followed by a colon. There can be no space after
3160the colon. The following list shows examples for each link type.
4009494e
GM
3161
3162@example
a7808fba 3163http://www.astro.uva.nl/~dominik @r{on the web}
86fbb8ca 3164doi:10.1000/182 @r{DOI for an electronic resource}
4009494e 3165file:/home/dominik/images/jupiter.jpg @r{file, absolute path}
44ce9197 3166/home/dominik/images/jupiter.jpg @r{same as above}
4009494e 3167file:papers/last.pdf @r{file, relative path}
44ce9197 3168./papers/last.pdf @r{same as above}
ed21c5c8
CD
3169file:/myself@@some.where:papers/last.pdf @r{file, path on remote machine}
3170/myself@@some.where:papers/last.pdf @r{same as above}
a351880d 3171file:sometextfile::NNN @r{file with line number to jump to}
c8d0cf5c
CD
3172file:projects.org @r{another Org file}
3173file:projects.org::some words @r{text search in Org file}
3174file:projects.org::*task title @r{heading search in Org file}
ed21c5c8 3175docview:papers/last.pdf::NNN @r{open file in doc-view mode at page NNN}
55e0839d 3176id:B7423F4D-2E8A-471B-8810-C40F074717E9 @r{Link to heading by ID}
4009494e 3177news:comp.emacs @r{Usenet link}
55e0839d 3178mailto:adent@@galaxy.net @r{Mail link}
4009494e
GM
3179vm:folder @r{VM folder link}
3180vm:folder#id @r{VM message link}
55e0839d 3181vm://myself@@some.where.org/folder#id @r{VM on remote machine}
4009494e
GM
3182wl:folder @r{WANDERLUST folder link}
3183wl:folder#id @r{WANDERLUST message link}
3184mhe:folder @r{MH-E folder link}
3185mhe:folder#id @r{MH-E message link}
3186rmail:folder @r{RMAIL folder link}
3187rmail:folder#id @r{RMAIL message link}
a7808fba
CD
3188gnus:group @r{Gnus group link}
3189gnus:group#id @r{Gnus article link}
64fb801f 3190bbdb:R.*Stallman @r{BBDB link (with regexp)}
28a16a1b 3191irc:/irc.com/#emacs/bob @r{IRC link}
ce57c2fe 3192info:org#External%20links @r{Info node link (with encoded space)}
4009494e 3193shell:ls *.org @r{A shell command}
c8d0cf5c 3194elisp:org-agenda @r{Interactive Elisp command}
64fb801f 3195elisp:(find-file-other-frame "Elisp.org") @r{Elisp form to evaluate}
4009494e
GM
3196@end example
3197
ce57c2fe
BG
3198For customizing Org to add new link types @ref{Adding hyperlink types}.
3199
4009494e 3200A link should be enclosed in double brackets and may contain a
a7808fba 3201descriptive text to be displayed instead of the URL (@pxref{Link
4009494e
GM
3202format}), for example:
3203
3204@example
3205[[http://www.gnu.org/software/emacs/][GNU Emacs]]
3206@end example
3207
3208@noindent
3209If the description is a file name or URL that points to an image, HTML
3210export (@pxref{HTML export}) will inline the image as a clickable
3211button. If there is no description at all and the link points to an
3212image,
3213that image will be inlined into the exported HTML file.
3214
c8d0cf5c 3215@cindex square brackets, around links
4009494e 3216@cindex plain text external links
a7808fba 3217Org also finds external links in the normal text and activates them
4009494e
GM
3218as links. If spaces must be part of the link (for example in
3219@samp{bbdb:Richard Stallman}), or if you need to remove ambiguities
c8d0cf5c 3220about the end of the link, enclose them in square brackets.
4009494e 3221
a7808fba 3222@node Handling links, Using links outside Org, External links, Hyperlinks
4009494e
GM
3223@section Handling links
3224@cindex links, handling
3225
a7808fba
CD
3226Org provides methods to create a link in the correct syntax, to
3227insert it into an Org file, and to follow the link.
4009494e
GM
3228
3229@table @kbd
acedf35c 3230@orgcmd{C-c l,org-store-link}
4009494e 3231@cindex storing links
55e0839d
CD
3232Store a link to the current location. This is a @emph{global} command (you
3233must create the key binding yourself) which can be used in any buffer to
3234create a link. The link will be stored for later insertion into an Org
c8d0cf5c
CD
3235buffer (see below). What kind of link will be created depends on the current
3236buffer:
55e0839d 3237
c8d0cf5c 3238@b{Org-mode buffers}@*
55e0839d 3239For Org files, if there is a @samp{<<target>>} at the cursor, the link points
c8d0cf5c 3240to the target. Otherwise it points to the current headline, which will also
ce57c2fe
BG
3241be the description@footnote{If the headline contains a timestamp, it will be
3242removed from the link and result in a wrong link -- you should avoid putting
3243timestamp in the headline.}.
c8d0cf5c
CD
3244
3245@vindex org-link-to-org-use-id
3246@cindex property, CUSTOM_ID
3247@cindex property, ID
3248If the headline has a @code{CUSTOM_ID} property, a link to this custom ID
3249will be stored. In addition or alternatively (depending on the value of
3250@code{org-link-to-org-use-id}), a globally unique @code{ID} property will be
3251created and/or used to construct a link. So using this command in Org
3252buffers will potentially create two links: a human-readable from the custom
3253ID, and one that is globally unique and works even if the entry is moved from
3254file to file. Later, when inserting the link, you need to decide which one
3255to use.
3256
3257@b{Email/News clients: VM, Rmail, Wanderlust, MH-E, Gnus}@*
3258Pretty much all Emacs mail clients are supported. The link will point to the
3259current article, or, in some GNUS buffers, to the group. The description is
3260constructed from the author and the subject.
3261
3262@b{Web browsers: W3 and W3M}@*
3263Here the link will be the current URL, with the page title as description.
3264
3265@b{Contacts: BBDB}@*
3266Links created in a BBDB buffer will point to the current entry.
3267
3268@b{Chat: IRC}@*
3269@vindex org-irc-link-to-logs
3270For IRC links, if you set the variable @code{org-irc-link-to-logs} to
3271@code{t}, a @samp{file:/} style link to the relevant point in the logs for
3272the current conversation is created. Otherwise an @samp{irc:/} style link to
3273the user/channel/server under the point will be stored.
3274
3275@b{Other files}@*
55e0839d
CD
3276For any other files, the link will point to the file, with a search string
3277(@pxref{Search options}) pointing to the contents of the current line. If
3278there is an active region, the selected words will form the basis of the
3279search string. If the automatically created link is not working correctly or
3280accurately enough, you can write custom functions to select the search string
c8d0cf5c
CD
3281and to do the search for particular file types---see @ref{Custom searches}.
3282The key binding @kbd{C-c l} is only a suggestion---see @ref{Installation}.
7006d207
CD
3283
3284@b{Agenda view}@*
3285When the cursor is in an agenda view, the created link points to the
3286entry referenced by the current line.
3287
4009494e 3288@c
acedf35c 3289@orgcmd{C-c C-l,org-insert-link}
4009494e
GM
3290@cindex link completion
3291@cindex completion, of links
3292@cindex inserting links
c8d0cf5c
CD
3293@vindex org-keep-stored-link-after-insertion
3294Insert a link@footnote{ Note that you don't have to use this command to
3295insert a link. Links in Org are plain text, and you can type or paste them
3296straight into the buffer. By using this command, the links are automatically
3297enclosed in double brackets, and you will be asked for the optional
3298descriptive text.}. This prompts for a link to be inserted into the buffer.
3299You can just type a link, using text for an internal link, or one of the link
3300type prefixes mentioned in the examples above. The link will be inserted
3301into the buffer@footnote{After insertion of a stored link, the link will be
3302removed from the list of stored links. To keep it in the list later use, use
3303a triple @kbd{C-u} prefix argument to @kbd{C-c C-l}, or configure the option
a7808fba
CD
3304@code{org-keep-stored-link-after-insertion}.}, along with a descriptive text.
3305If some text was selected when this command is called, the selected text
c8d0cf5c
CD
3306becomes the default description.
3307
3308@b{Inserting stored links}@*
3309All links stored during the
3310current session are part of the history for this prompt, so you can access
3311them with @key{up} and @key{down} (or @kbd{M-p/n}).
3312
3313@b{Completion support}@* Completion with @key{TAB} will help you to insert
3314valid link prefixes like @samp{http:} or @samp{ftp:}, including the prefixes
3315defined through link abbreviations (@pxref{Link abbreviations}). If you
3316press @key{RET} after inserting only the @var{prefix}, Org will offer
3317specific completion support for some link types@footnote{This works by
3318calling a special function @code{org-PREFIX-complete-link}.} For
3319example, if you type @kbd{file @key{RET}}, file name completion (alternative
3320access: @kbd{C-u C-c C-l}, see below) will be offered, and after @kbd{bbdb
3321@key{RET}} you can complete contact names.
acedf35c 3322@orgkey C-u C-c C-l
4009494e
GM
3323@cindex file name completion
3324@cindex completion, of file names
4009494e
GM
3325When @kbd{C-c C-l} is called with a @kbd{C-u} prefix argument, a link to
3326a file will be inserted and you may use file name completion to select
3327the name of the file. The path to the file is inserted relative to the
c8d0cf5c 3328directory of the current Org file, if the linked file is in the current
a7808fba 3329directory or in a sub-directory of it, or if the path is written relative
4009494e
GM
3330to the current directory using @samp{../}. Otherwise an absolute path
3331is used, if possible with @samp{~/} for your home directory. You can
3332force an absolute path with two @kbd{C-u} prefixes.
3333@c
86fbb8ca 3334@item C-c C-l @ @r{(with cursor on existing link)}
4009494e
GM
3335When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
3336link and description parts of the link.
3337@c
3338@cindex following links
acedf35c 3339@orgcmd{C-c C-o,org-open-at-point}
c8d0cf5c 3340@vindex org-file-apps
4009494e 3341Open link at point. This will launch a web browser for URLs (using
864c9740
CD
3342@command{browse-url-at-point}), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for
3343the corresponding links, and execute the command in a shell link. When the
04d3bb6c 3344cursor is on an internal link, this command runs the corresponding search.
864c9740 3345When the cursor is on a TAG list in a headline, it creates the corresponding
c8d0cf5c 3346TAGS view. If the cursor is on a timestamp, it compiles the agenda for that
864c9740
CD
3347date. Furthermore, it will visit text and remote files in @samp{file:} links
3348with Emacs and select a suitable application for local non-text files.
3349Classification of files is based on file extension only. See option
3350@code{org-file-apps}. If you want to override the default application and
e45e3595 3351visit the file with Emacs, use a @kbd{C-u} prefix. If you want to avoid
6eb02347
CD
3352opening in Emacs, use a @kbd{C-u C-u} prefix.@*
3353If the cursor is on a headline, but not on a link, offer all links in the
3354headline and entry text.
acedf35c
CD
3355@orgkey @key{RET}
3356@vindex org-return-follows-link
3357When @code{org-return-follows-link} is set, @kbd{@key{RET}} will also follow
3358the link at point.
4009494e
GM
3359@c
3360@kindex mouse-2
3361@kindex mouse-1
3362@item mouse-2
3363@itemx mouse-1
3364On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o}
acedf35c 3365would. Under Emacs 22 and later, @kbd{mouse-1} will also follow a link.
4009494e
GM
3366@c
3367@kindex mouse-3
3368@item mouse-3
c8d0cf5c 3369@vindex org-display-internal-link-with-indirect-buffer
4009494e
GM
3370Like @kbd{mouse-2}, but force file links to be opened with Emacs, and
3371internal links to be displayed in another window@footnote{See the
3372variable @code{org-display-internal-link-with-indirect-buffer}}.
3373@c
acedf35c 3374@orgcmd{C-c C-x C-v,org-toggle-inline-images}
86fbb8ca
CD
3375@cindex inlining images
3376@cindex images, inlining
afe98dfa
CD
3377@vindex org-startup-with-inline-images
3378@cindex @code{inlineimages}, STARTUP keyword
3379@cindex @code{noinlineimages}, STARTUP keyword
86fbb8ca 3380Toggle the inline display of linked images. Normally this will only inline
ce57c2fe 3381images that have no description part in the link, i.e.@: images that will also
86fbb8ca 3382be inlined during export. When called with a prefix argument, also display
afe98dfa
CD
3383images that do have a link description. You can ask for inline images to be
3384displayed at startup by configuring the variable
3385@code{org-startup-with-inline-images}@footnote{with corresponding
3386@code{#+STARTUP} keywords @code{inlineimages} and @code{inlineimages}}.
acedf35c 3387@orgcmd{C-c %,org-mark-ring-push}
4009494e 3388@cindex mark ring
4009494e 3389Push the current position onto the mark ring, to be able to return
ce57c2fe 3390easily. Commands following an internal link do this automatically.
4009494e 3391@c
acedf35c 3392@orgcmd{C-c &,org-mark-ring-goto}
4009494e 3393@cindex links, returning to
4009494e
GM
3394Jump back to a recorded position. A position is recorded by the
3395commands following internal links, and by @kbd{C-c %}. Using this
3396command several times in direct succession moves through a ring of
3397previously recorded positions.
3398@c
acedf35c 3399@orgcmdkkcc{C-c C-x C-n,C-c C-x C-p,org-next-link,org-previous-link}
4009494e 3400@cindex links, finding next/previous
4009494e
GM
3401Move forward/backward to the next link in the buffer. At the limit of
3402the buffer, the search fails once, and then wraps around. The key
acedf35c 3403bindings for this are really too long; you might want to bind this also
4009494e
GM
3404to @kbd{C-n} and @kbd{C-p}
3405@lisp
3406(add-hook 'org-load-hook
3407 (lambda ()
ce57c2fe
BG
3408 (define-key org-mode-map "\C-n" 'org-next-link)
3409 (define-key org-mode-map "\C-p" 'org-previous-link)))
4009494e
GM
3410@end lisp
3411@end table
3412
a7808fba
CD
3413@node Using links outside Org, Link abbreviations, Handling links, Hyperlinks
3414@section Using links outside Org
4009494e 3415
a7808fba
CD
3416You can insert and follow links that have Org syntax not only in
3417Org, but in any Emacs buffer. For this, you should create two
4009494e
GM
3418global commands, like this (please select suitable global keys
3419yourself):
3420
3421@lisp
3422(global-set-key "\C-c L" 'org-insert-link-global)
3423(global-set-key "\C-c o" 'org-open-at-point-global)
3424@end lisp
3425
a7808fba 3426@node Link abbreviations, Search options, Using links outside Org, Hyperlinks
4009494e
GM
3427@section Link abbreviations
3428@cindex link abbreviations
3429@cindex abbreviation, links
3430
3431Long URLs can be cumbersome to type, and often many similar links are
3432needed in a document. For this you can use link abbreviations. An
3433abbreviated link looks like this
3434
3435@example
3436[[linkword:tag][description]]
3437@end example
3438
3439@noindent
c8d0cf5c 3440@vindex org-link-abbrev-alist
86fbb8ca
CD
3441where the tag is optional.
3442The @i{linkword} must be a word, starting with a letter, followed by
3443letters, numbers, @samp{-}, and @samp{_}. Abbreviations are resolved
c8d0cf5c
CD
3444according to the information in the variable @code{org-link-abbrev-alist}
3445that relates the linkwords to replacement text. Here is an example:
4009494e 3446
afe98dfa 3447@smalllisp
4009494e
GM
3448@group
3449(setq org-link-abbrev-alist
3450 '(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
3451 ("google" . "http://www.google.com/search?q=")
afe98dfa
CD
3452 ("gmap" . "http://maps.google.com/maps?q=%s")
3453 ("omap" . "http://nominatim.openstreetmap.org/search?q=%s&polygon=1")
3454 ("ads" . "http://adsabs.harvard.edu/cgi-bin/nph-abs_connect?author=%s&db_key=AST")))
4009494e 3455@end group
afe98dfa 3456@end smalllisp
4009494e
GM
3457
3458If the replacement text contains the string @samp{%s}, it will be
3459replaced with the tag. Otherwise the tag will be appended to the string
3460in order to create the link. You may also specify a function that will
3461be called with the tag as the only argument to create the link.
3462
3463With the above setting, you could link to a specific bug with
3464@code{[[bugzilla:129]]}, search the web for @samp{OrgMode} with
afe98dfa
CD
3465@code{[[google:OrgMode]]}, show the map location of the Free Software
3466Foundation @code{[[gmap:51 Franklin Street, Boston]]} or of Carsten office
3467@code{[[omap:Science Park 904, Amsterdam, The Netherlands]]} and find out
3468what the Org author is doing besides Emacs hacking with
3469@code{[[ads:Dominik,C]]}.
4009494e 3470
a7808fba 3471If you need special abbreviations just for a single Org buffer, you
4009494e
GM
3472can define them in the file with
3473
c8d0cf5c 3474@cindex #+LINK
4009494e
GM
3475@example
3476#+LINK: bugzilla http://10.1.2.9/bugzilla/show_bug.cgi?id=
3477#+LINK: google http://www.google.com/search?q=%s
3478@end example
3479
3480@noindent
c8d0cf5c
CD
3481In-buffer completion (@pxref{Completion}) can be used after @samp{[} to
3482complete link abbreviations. You may also define a function
ce57c2fe 3483@code{org-PREFIX-complete-link} that implements special (e.g.@: completion)
c8d0cf5c
CD
3484support for inserting such a link with @kbd{C-c C-l}. Such a function should
3485not accept any arguments, and return the full link with prefix.
4009494e
GM
3486
3487@node Search options, Custom searches, Link abbreviations, Hyperlinks
3488@section Search options in file links
3489@cindex search option in file links
3490@cindex file links, searching
3491
3492File links can contain additional information to make Emacs jump to a
3493particular location in the file when following a link. This can be a
3494line number or a search option after a double@footnote{For backward
ce57c2fe 3495compatibility, line numbers can also follow a single colon.} colon. For
4009494e
GM
3496example, when the command @kbd{C-c l} creates a link (@pxref{Handling
3497links}) to a file, it encodes the words in the current line as a search
3498string that can be used to find this line back later when following the
28a16a1b 3499link with @kbd{C-c C-o}.
4009494e
GM
3500
3501Here is the syntax of the different ways to attach a search to a file
3502link, together with an explanation:
3503
3504@example
3505[[file:~/code/main.c::255]]
3506[[file:~/xx.org::My Target]]
3507[[file:~/xx.org::*My Target]]
ed21c5c8 3508[[file:~/xx.org::#my-custom-id]]
4009494e
GM
3509[[file:~/xx.org::/regexp/]]
3510@end example
3511
3512@table @code
3513@item 255
3514Jump to line 255.
3515@item My Target
3516Search for a link target @samp{<<My Target>>}, or do a text search for
3517@samp{my target}, similar to the search in internal links, see
3518@ref{Internal links}. In HTML export (@pxref{HTML export}), such a file
3519link will become an HTML reference to the corresponding named anchor in
3520the linked file.
3521@item *My Target
a7808fba 3522In an Org file, restrict search to headlines.
ed21c5c8
CD
3523@item #my-custom-id
3524Link to a heading with a @code{CUSTOM_ID} property
4009494e
GM
3525@item /regexp/
3526Do a regular expression search for @code{regexp}. This uses the Emacs
3527command @code{occur} to list all matches in a separate window. If the
86fbb8ca 3528target file is in Org-mode, @code{org-occur} is used to create a
4009494e
GM
3529sparse tree with the matches.
3530@c If the target file is a directory,
3531@c @code{grep} will be used to search all files in the directory.
3532@end table
3533
3534As a degenerate case, a file link with an empty file name can be used
3535to search the current file. For example, @code{[[file:::find me]]} does
3536a search for @samp{find me} in the current file, just as
3537@samp{[[find me]]} would.
3538
dbc28aaa 3539@node Custom searches, , Search options, Hyperlinks
4009494e
GM
3540@section Custom Searches
3541@cindex custom search strings
3542@cindex search strings, custom
3543
3544The default mechanism for creating search strings and for doing the
3545actual search related to a file link may not work correctly in all
c8d0cf5c 3546cases. For example, Bib@TeX{} database files have many entries like
4009494e 3547@samp{year="1993"} which would not result in good search strings,
c8d0cf5c 3548because the only unique identification for a Bib@TeX{} entry is the
4009494e
GM
3549citation key.
3550
c8d0cf5c
CD
3551@vindex org-create-file-search-functions
3552@vindex org-execute-file-search-functions
4009494e
GM
3553If you come across such a problem, you can write custom functions to set
3554the right search string for a particular file type, and to do the search
3555for the string in the file. Using @code{add-hook}, these functions need
3556to be added to the hook variables
3557@code{org-create-file-search-functions} and
3558@code{org-execute-file-search-functions}. See the docstring for these
a7808fba 3559variables for more information. Org actually uses this mechanism
4009494e 3560for Bib@TeX{} database files, and you can use the corresponding code as
44ce9197 3561an implementation example. See the file @file{org-bibtex.el}.
4009494e 3562
a7808fba 3563@node TODO Items, Tags, Hyperlinks, Top
86fbb8ca 3564@chapter TODO items
4009494e
GM
3565@cindex TODO items
3566
86fbb8ca 3567Org-mode does not maintain TODO lists as separate documents@footnote{Of
a50253cc 3568course, you can make a document that contains only long lists of TODO items,
44ce9197
CD
3569but this is not required.}. Instead, TODO items are an integral part of the
3570notes file, because TODO items usually come up while taking notes! With Org
3571mode, simply mark any entry in a tree as being a TODO item. In this way,
3572information is not duplicated, and the entire context from which the TODO
3573item emerged is always present.
4009494e 3574
dbc28aaa 3575Of course, this technique for managing TODO items scatters them
86fbb8ca 3576throughout your notes file. Org-mode compensates for this by providing
dbc28aaa 3577methods to give you an overview of all the things that you have to do.
4009494e
GM
3578
3579@menu
c0468714
GM
3580* TODO basics:: Marking and displaying TODO entries
3581* TODO extensions:: Workflow and assignments
3582* Progress logging:: Dates and notes for progress
3583* Priorities:: Some things are more important than others
3584* Breaking down tasks:: Splitting a task into manageable pieces
3585* Checkboxes:: Tick-off lists
4009494e
GM
3586@end menu
3587
a7808fba 3588@node TODO basics, TODO extensions, TODO Items, TODO Items
4009494e
GM
3589@section Basic TODO functionality
3590
dbc28aaa
CD
3591Any headline becomes a TODO item when it starts with the word
3592@samp{TODO}, for example:
4009494e
GM
3593
3594@example
3595*** TODO Write letter to Sam Fortune
3596@end example
3597
3598@noindent
3599The most important commands to work with TODO entries are:
3600
3601@table @kbd
acedf35c 3602@orgcmd{C-c C-t,org-todo}
4009494e 3603@cindex cycling, of TODO states
4009494e
GM
3604Rotate the TODO state of the current item among
3605
3606@example
3607,-> (unmarked) -> TODO -> DONE --.
3608'--------------------------------'
3609@end example
3610
3611The same rotation can also be done ``remotely'' from the timeline and
3612agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
dbc28aaa 3613
acedf35c 3614@orgkey{C-u C-c C-t}
dbc28aaa 3615Select a specific keyword using completion or (if it has been set up)
28a16a1b 3616the fast selection interface. For the latter, you need to assign keys
c8d0cf5c 3617to TODO states, see @ref{Per-file keywords}, and @ref{Setting tags}, for
28a16a1b 3618more information.
dbc28aaa 3619
4009494e
GM
3620@kindex S-@key{right}
3621@kindex S-@key{left}
acedf35c 3622@item S-@key{right} @ @r{/} @ S-@key{left}
c8d0cf5c 3623@vindex org-treat-S-cursor-todo-selection-as-state-change
dbc28aaa
CD
3624Select the following/preceding TODO state, similar to cycling. Useful
3625mostly if more than two TODO states are possible (@pxref{TODO
c8d0cf5c
CD
3626extensions}). See also @ref{Conflicts}, for a discussion of the interaction
3627with @code{shift-selection-mode}. See also the variable
3628@code{org-treat-S-cursor-todo-selection-as-state-change}.
acedf35c 3629@orgcmd{C-c / t,org-show-todo-key}
4009494e 3630@cindex sparse tree, for TODO
c8d0cf5c
CD
3631@vindex org-todo-keywords
3632View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}). Folds the
86fbb8ca
CD
3633entire buffer, but shows all TODO items (with not-DONE state) and the
3634headings hierarchy above them. With a prefix argument (or by using @kbd{C-c
3635/ T}), search for a specific TODO. You will be prompted for the keyword, and
3636you can also give a list of keywords like @code{KWD1|KWD2|...} to list
ce57c2fe 3637entries that match any one of these keywords. With a numeric prefix argument
86fbb8ca
CD
3638N, show the tree for the Nth keyword in the variable
3639@code{org-todo-keywords}. With two prefix arguments, find all TODO states,
3640both un-done and done.
acedf35c 3641@orgcmd{C-c a t,org-todo-list}
86fbb8ca
CD
3642Show the global TODO list. Collects the TODO items (with not-DONE states)
3643from all agenda files (@pxref{Agenda Views}) into a single buffer. The new
3644buffer will be in @code{agenda-mode}, which provides commands to examine and
3645manipulate the TODO entries from the new buffer (@pxref{Agenda commands}).
3646@xref{Global TODO list}, for more information.
acedf35c 3647@orgcmd{S-M-@key{RET},org-insert-todo-heading}
4009494e
GM
3648Insert a new TODO entry below the current one.
3649@end table
3650
71d35b24 3651@noindent
c8d0cf5c 3652@vindex org-todo-state-tags-triggers
71d35b24
CD
3653Changing a TODO state can also trigger tag changes. See the docstring of the
3654option @code{org-todo-state-tags-triggers} for details.
3655
a7808fba 3656@node TODO extensions, Progress logging, TODO basics, TODO Items
4009494e
GM
3657@section Extended use of TODO keywords
3658@cindex extended TODO keywords
3659
c8d0cf5c 3660@vindex org-todo-keywords
dbc28aaa 3661By default, marked TODO entries have one of only two states: TODO and
86fbb8ca 3662DONE. Org-mode allows you to classify TODO items in more complex ways
dbc28aaa
CD
3663with @emph{TODO keywords} (stored in @code{org-todo-keywords}). With
3664special setup, the TODO keyword system can work differently in different
3665files.
4009494e
GM
3666
3667Note that @i{tags} are another way to classify headlines in general and
3668TODO items in particular (@pxref{Tags}).
3669
3670@menu
c0468714
GM
3671* Workflow states:: From TODO to DONE in steps
3672* TODO types:: I do this, Fred does the rest
3673* Multiple sets in one file:: Mixing it all, and still finding your way
3674* Fast access to TODO states:: Single letter selection of a state
3675* Per-file keywords:: Different files, different requirements
3676* Faces for TODO keywords:: Highlighting states
3677* TODO dependencies:: When one task needs to wait for others
4009494e
GM
3678@end menu
3679
3680@node Workflow states, TODO types, TODO extensions, TODO extensions
3681@subsection TODO keywords as workflow states
3682@cindex TODO workflow
3683@cindex workflow states as TODO keywords
3684
3685You can use TODO keywords to indicate different @emph{sequential} states
3686in the process of working on an item, for example@footnote{Changing
86fbb8ca 3687this variable only becomes effective after restarting Org-mode in a
4009494e
GM
3688buffer.}:
3689
3690@lisp
3691(setq org-todo-keywords
3692 '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
3693@end lisp
3694
3695The vertical bar separates the TODO keywords (states that @emph{need
44ce9197 3696action}) from the DONE states (which need @emph{no further action}). If
4009494e
GM
3697you don't provide the separator bar, the last state is used as the DONE
3698state.
3699@cindex completion, of TODO keywords
3700With this setup, the command @kbd{C-c C-t} will cycle an entry from TODO
3701to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED. You may
a7808fba 3702also use a numeric prefix argument to quickly select a specific state. For
4009494e 3703example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
560bb6ea 3704Or you can use @kbd{S-@key{left}} to go backward through the sequence. If you
28a16a1b
CD
3705define many keywords, you can use in-buffer completion
3706(@pxref{Completion}) or even a special one-key selection scheme
3707(@pxref{Fast access to TODO states}) to insert these words into the
a7808fba 3708buffer. Changing a TODO state can be logged with a timestamp, see
c8d0cf5c 3709@ref{Tracking TODO state changes}, for more information.
4009494e
GM
3710
3711@node TODO types, Multiple sets in one file, Workflow states, TODO extensions
3712@subsection TODO keywords as types
3713@cindex TODO types
3714@cindex names as TODO keywords
3715@cindex types as TODO keywords
3716
3717The second possibility is to use TODO keywords to indicate different
3718@emph{types} of action items. For example, you might want to indicate
3719that items are for ``work'' or ``home''. Or, when you work with several
3720people on a single project, you might want to assign action items
3721directly to persons, by using their names as TODO keywords. This would
3722be set up like this:
3723
3724@lisp
3725(setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
3726@end lisp
3727
3728In this case, different keywords do not indicate a sequence, but rather
3729different types. So the normal work flow would be to assign a task to a
86fbb8ca 3730person, and later to mark it DONE. Org-mode supports this style by adapting
a7808fba
CD
3731the workings of the command @kbd{C-c C-t}@footnote{This is also true for the
3732@kbd{t} command in the timeline and agenda buffers.}. When used several
3733times in succession, it will still cycle through all names, in order to first
3734select the right type for a task. But when you return to the item after some
3735time and execute @kbd{C-c C-t} again, it will switch from any name directly
3736to DONE. Use prefix arguments or completion to quickly select a specific
3737name. You can also review the items of a specific TODO type in a sparse tree
86fbb8ca
CD
3738by using a numeric prefix to @kbd{C-c / t}. For example, to see all things
3739Lucy has to do, you would use @kbd{C-3 C-c / t}. To collect Lucy's items
a7808fba 3740from all agenda files into a single buffer, you would use the numeric prefix
86fbb8ca 3741argument as well when creating the global TODO list: @kbd{C-3 C-c a t}.
4009494e 3742
dbc28aaa 3743@node Multiple sets in one file, Fast access to TODO states, TODO types, TODO extensions
4009494e 3744@subsection Multiple keyword sets in one file
a7808fba 3745@cindex TODO keyword sets
4009494e
GM
3746
3747Sometimes you may want to use different sets of TODO keywords in
3748parallel. For example, you may want to have the basic
3749@code{TODO}/@code{DONE}, but also a workflow for bug fixing, and a
3750separate state indicating that an item has been canceled (so it is not
3751DONE, but also does not require action). Your setup would then look
3752like this:
3753
3754@lisp
3755(setq org-todo-keywords
3756 '((sequence "TODO" "|" "DONE")
3757 (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
3758 (sequence "|" "CANCELED")))
3759@end lisp
3760
86fbb8ca 3761The keywords should all be different, this helps Org-mode to keep track
4009494e
GM
3762of which subsequence should be used for a given entry. In this setup,
3763@kbd{C-c C-t} only operates within a subsequence, so it switches from
3764@code{DONE} to (nothing) to @code{TODO}, and from @code{FIXED} to
3765(nothing) to @code{REPORT}. Therefore you need a mechanism to initially
3766select the correct sequence. Besides the obvious ways like typing a
3767keyword or using completion, you may also apply the following commands:
3768
3769@table @kbd
3770@kindex C-S-@key{right}
3771@kindex C-S-@key{left}
3da3282e
CD
3772@kindex C-u C-u C-c C-t
3773@item C-u C-u C-c C-t
3774@itemx C-S-@key{right}
4009494e
GM
3775@itemx C-S-@key{left}
3776These keys jump from one TODO subset to the next. In the above example,
3da3282e
CD
3777@kbd{C-u C-u C-c C-t} or @kbd{C-S-@key{right}} would jump from @code{TODO} or
3778@code{DONE} to @code{REPORT}, and any of the words in the second row to
3779@code{CANCELED}. Note that the @kbd{C-S-} key binding conflict with
3780@code{shift-selection-mode} (@pxref{Conflicts}).
4009494e
GM
3781@kindex S-@key{right}
3782@kindex S-@key{left}
3783@item S-@key{right}
3784@itemx S-@key{left}
3da3282e
CD
3785@kbd{S-@key{<left>}} and @kbd{S-@key{<right>}} and walk through @emph{all}
3786keywords from all sets, so for example @kbd{S-@key{<right>}} would switch
3787from @code{DONE} to @code{REPORT} in the example above. See also
c8d0cf5c 3788@ref{Conflicts}, for a discussion of the interaction with
3da3282e 3789@code{shift-selection-mode}.
4009494e
GM
3790@end table
3791
dbc28aaa
CD
3792@node Fast access to TODO states, Per-file keywords, Multiple sets in one file, TODO extensions
3793@subsection Fast access to TODO states
3794
3795If you would like to quickly change an entry to an arbitrary TODO state
3796instead of cycling through the states, you can set up keys for
3797single-letter access to the states. This is done by adding the section
c8d0cf5c 3798key after each keyword, in parentheses. For example:
dbc28aaa
CD
3799
3800@lisp
3801(setq org-todo-keywords
3802 '((sequence "TODO(t)" "|" "DONE(d)")
3803 (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
3804 (sequence "|" "CANCELED(c)")))
3805@end lisp
3806
c8d0cf5c 3807@vindex org-fast-tag-selection-include-todo
ce57c2fe
BG
3808If you then press @kbd{C-c C-t} followed by the selection key, the entry
3809will be switched to this state. @kbd{SPC} can be used to remove any TODO
55033558 3810keyword from an entry.@footnote{Check also the variable
c8d0cf5c 3811@code{org-fast-tag-selection-include-todo}, it allows you to change the TODO
55033558
CD
3812state through the tags interface (@pxref{Setting tags}), in case you like to
3813mingle the two concepts. Note that this means you need to come up with
3814unique keys across both sets of keywords.}
dbc28aaa
CD
3815
3816@node Per-file keywords, Faces for TODO keywords, Fast access to TODO states, TODO extensions
4009494e
GM
3817@subsection Setting up keywords for individual files
3818@cindex keyword options
dbc28aaa 3819@cindex per-file keywords
c8d0cf5c
CD
3820@cindex #+TODO
3821@cindex #+TYP_TODO
3822@cindex #+SEQ_TODO
4009494e
GM
3823
3824It can be very useful to use different aspects of the TODO mechanism in
3825different files. For file-local settings, you need to add special lines
3826to the file which set the keywords and interpretation for that file
3827only. For example, to set one of the two examples discussed above, you
3828need one of the following lines, starting in column zero anywhere in the
3829file:
3830
3831@example
c8d0cf5c 3832#+TODO: TODO FEEDBACK VERIFY | DONE CANCELED
4009494e 3833@end example
c8d0cf5c
CD
3834@noindent (you may also write @code{#+SEQ_TODO} to be explicit about the
3835interpretation, but it means the same as @code{#+TODO}), or
4009494e
GM
3836@example
3837#+TYP_TODO: Fred Sara Lucy Mike | DONE
3838@end example
3839
3840A setup for using several sets in parallel would be:
3841
3842@example
c8d0cf5c
CD
3843#+TODO: TODO | DONE
3844#+TODO: REPORT BUG KNOWNCAUSE | FIXED
3845#+TODO: | CANCELED
4009494e
GM
3846@end example
3847
3848@cindex completion, of option keywords
3849@kindex M-@key{TAB}
3850@noindent To make sure you are using the correct keyword, type
3851@samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
3852
3853@cindex DONE, final TODO keyword
3854Remember that the keywords after the vertical bar (or the last keyword
3855if no bar is there) must always mean that the item is DONE (although you
3856may use a different word). After changing one of these lines, use
3857@kbd{C-c C-c} with the cursor still in the line to make the changes
86fbb8ca
CD
3858known to Org-mode@footnote{Org-mode parses these lines only when
3859Org-mode is activated after visiting a file. @kbd{C-c C-c} with the
3860cursor in a line starting with @samp{#+} is simply restarting Org-mode
4009494e
GM
3861for the current buffer.}.
3862
7ddb1b5f 3863@node Faces for TODO keywords, TODO dependencies, Per-file keywords, TODO extensions
dbc28aaa
CD
3864@subsection Faces for TODO keywords
3865@cindex faces, for TODO keywords
3866
c8d0cf5c
CD
3867@vindex org-todo @r{(face)}
3868@vindex org-done @r{(face)}
3869@vindex org-todo-keyword-faces
86fbb8ca 3870Org-mode highlights TODO keywords with special faces: @code{org-todo}
dbc28aaa
CD
3871for keywords indicating that an item still has to be acted upon, and
3872@code{org-done} for keywords indicating that an item is finished. If
3873you are using more than 2 different states, you might want to use
3874special faces for some of them. This can be done using the variable
3875@code{org-todo-keyword-faces}. For example:
3876
3877@lisp
96c8522a 3878@group
dbc28aaa 3879(setq org-todo-keyword-faces
ed21c5c8
CD
3880 '(("TODO" . org-warning) ("STARTED" . "yellow")
3881 ("CANCELED" . (:foreground "blue" :weight bold))))
96c8522a 3882@end group
dbc28aaa
CD
3883@end lisp
3884
ed21c5c8 3885While using a list with face properties as shown for CANCELED @emph{should}
91af3942 3886work, this does not always seem to be the case. If necessary, define a
ed21c5c8
CD
3887special face and use that. A string is interpreted as a color. The variable
3888@code{org-faces-easy-properties} determines if that color is interpreted as a
3889foreground or a background color.
28a16a1b 3890
7ddb1b5f
CD
3891@node TODO dependencies, , Faces for TODO keywords, TODO extensions
3892@subsection TODO dependencies
2e461fc1
CD
3893@cindex TODO dependencies
3894@cindex dependencies, of TODO states
7ddb1b5f 3895
c8d0cf5c
CD
3896@vindex org-enforce-todo-dependencies
3897@cindex property, ORDERED
7ddb1b5f
CD
3898The structure of Org files (hierarchy and lists) makes it easy to define TODO
3899dependencies. Usually, a parent TODO task should not be marked DONE until
3900all subtasks (defined as children tasks) are marked as DONE. And sometimes
3901there is a logical sequence to a number of (sub)tasks, so that one task
3902cannot be acted upon before all siblings above it are done. If you customize
3903the variable @code{org-enforce-todo-dependencies}, Org will block entries
2e461fc1
CD
3904from changing state to DONE while they have children that are not DONE.
3905Furthermore, if an entry has a property @code{ORDERED}, each of its children
3906will be blocked until all earlier siblings are marked DONE. Here is an
3907example:
7ddb1b5f
CD
3908
3909@example
3910* TODO Blocked until (two) is done
3911** DONE one
3912** TODO two
3913
3914* Parent
3915 :PROPERTIES:
ce57c2fe 3916 :ORDERED: t
7ddb1b5f
CD
3917 :END:
3918** TODO a
3919** TODO b, needs to wait for (a)
3920** TODO c, needs to wait for (a) and (b)
3921@end example
3922
bc283609 3923@table @kbd
acedf35c 3924@orgcmd{C-c C-x o,org-toggle-ordered-property}
c8d0cf5c
CD
3925@vindex org-track-ordered-property-with-tag
3926@cindex property, ORDERED
3927Toggle the @code{ORDERED} property of the current entry. A property is used
3928for this behavior because this should be local to the current entry, not
3929inherited like a tag. However, if you would like to @i{track} the value of
3930this property with a tag for better visibility, customize the variable
3931@code{org-track-ordered-property-with-tag}.
acedf35c 3932@orgkey{C-u C-u C-u C-c C-t}
c8d0cf5c 3933Change TODO state, circumventing any state blocking.
bc283609
CD
3934@end table
3935
c8d0cf5c 3936@vindex org-agenda-dim-blocked-tasks
7ddb1b5f
CD
3937If you set the variable @code{org-agenda-dim-blocked-tasks}, TODO entries
3938that cannot be closed because of such dependencies will be shown in a dimmed
3939font or even made invisible in agenda views (@pxref{Agenda Views}).
3940
2e461fc1 3941@cindex checkboxes and TODO dependencies
c8d0cf5c 3942@vindex org-enforce-todo-dependencies
2e461fc1
CD
3943You can also block changes of TODO states by looking at checkboxes
3944(@pxref{Checkboxes}). If you set the variable
3945@code{org-enforce-todo-checkbox-dependencies}, an entry that has unchecked
3946checkboxes will be blocked from switching to DONE.
3947
7ddb1b5f
CD
3948If you need more complex dependency structures, for example dependencies
3949between entries in different trees or files, check out the contributed
3950module @file{org-depend.el}.
3951
dbc28aaa 3952@page
a7808fba
CD
3953@node Progress logging, Priorities, TODO extensions, TODO Items
3954@section Progress logging
dbc28aaa
CD
3955@cindex progress logging
3956@cindex logging, of progress
3957
86fbb8ca 3958Org-mode can automatically record a timestamp and possibly a note when
28a16a1b
CD
3959you mark a TODO item as DONE, or even each time you change the state of
3960a TODO item. This system is highly configurable, settings can be on a
3961per-keyword basis and can be localized to a file or even a subtree. For
3962information on how to clock working time for a task, see @ref{Clocking
3963work time}.
dbc28aaa
CD
3964
3965@menu
c0468714
GM
3966* Closing items:: When was this entry marked DONE?
3967* Tracking TODO state changes:: When did the status change?
3968* Tracking your habits:: How consistent have you been?
dbc28aaa
CD
3969@end menu
3970
3971@node Closing items, Tracking TODO state changes, Progress logging, Progress logging
3972@subsection Closing items
3973
28a16a1b
CD
3974The most basic logging is to keep track of @emph{when} a certain TODO
3975item was finished. This is achieved with@footnote{The corresponding
acedf35c 3976in-buffer setting is: @code{#+STARTUP: logdone}}
dbc28aaa
CD
3977
3978@lisp
28a16a1b 3979(setq org-log-done 'time)
dbc28aaa
CD
3980@end lisp
3981
3982@noindent
28a16a1b
CD
3983Then each time you turn an entry from a TODO (not-done) state into any
3984of the DONE states, a line @samp{CLOSED: [timestamp]} will be inserted
3985just after the headline. If you turn the entry back into a TODO item
3986through further state cycling, that line will be removed again. If you
3987want to record a note along with the timestamp, use@footnote{The
3988corresponding in-buffer setting is: @code{#+STARTUP: lognotedone}}
dbc28aaa
CD
3989
3990@lisp
28a16a1b 3991(setq org-log-done 'note)
dbc28aaa
CD
3992@end lisp
3993
28a16a1b
CD
3994@noindent
3995You will then be prompted for a note, and that note will be stored below
3996the entry with a @samp{Closing Note} heading.
3997
3998In the timeline (@pxref{Timeline}) and in the agenda
a7808fba 3999(@pxref{Weekly/daily agenda}), you can then use the @kbd{l} key to
28a16a1b
CD
4000display the TODO items with a @samp{CLOSED} timestamp on each day,
4001giving you an overview of what has been done.
4002
a351880d 4003@node Tracking TODO state changes, Tracking your habits, Closing items, Progress logging
dbc28aaa 4004@subsection Tracking TODO state changes
c8d0cf5c
CD
4005@cindex drawer, for state change recording
4006
4007@vindex org-log-states-order-reversed
4008@vindex org-log-into-drawer
4009@cindex property, LOG_INTO_DRAWER
4010When TODO keywords are used as workflow states (@pxref{Workflow states}), you
4011might want to keep track of when a state change occurred and maybe take a
4012note about this change. You can either record just a timestamp, or a
4013time-stamped note for a change. These records will be inserted after the
4014headline as an itemized list, newest first@footnote{See the variable
4015@code{org-log-states-order-reversed}}. When taking a lot of notes, you might
4016want to get the notes out of the way into a drawer (@pxref{Drawers}).
4017Customize the variable @code{org-log-into-drawer} to get this
4018behavior---the recommended drawer for this is called @code{LOGBOOK}. You can
4019also overrule the setting of this variable for a subtree by setting a
4020@code{LOG_INTO_DRAWER} property.
4021
86fbb8ca 4022Since it is normally too much to record a note for every state, Org-mode
c8d0cf5c
CD
4023expects configuration on a per-keyword basis for this. This is achieved by
4024adding special markers @samp{!} (for a timestamp) and @samp{@@} (for a note)
4025in parentheses after each keyword. For example, with the setting
dbc28aaa
CD
4026
4027@lisp
28a16a1b
CD
4028(setq org-todo-keywords
4029 '((sequence "TODO(t)" "WAIT(w@@/!)" "|" "DONE(d!)" "CANCELED(c@@)")))
dbc28aaa
CD
4030@end lisp
4031
4032@noindent
c8d0cf5c 4033@vindex org-log-done
28a16a1b 4034you not only define global TODO keywords and fast access keys, but also
c8d0cf5c 4035request that a time is recorded when the entry is set to
86fbb8ca 4036DONE@footnote{It is possible that Org-mode will record two timestamps
28a16a1b 4037when you are using both @code{org-log-done} and state change logging.
c8d0cf5c 4038However, it will never prompt for two notes---if you have configured
28a16a1b
CD
4039both, the state change recording note will take precedence and cancel
4040the @samp{Closing Note}.}, and that a note is recorded when switching to
c8d0cf5c 4041WAIT or CANCELED. The setting for WAIT is even more special: the
28a16a1b 4042@samp{!} after the slash means that in addition to the note taken when
c8d0cf5c 4043entering the state, a timestamp should be recorded when @i{leaving} the
28a16a1b
CD
4044WAIT state, if and only if the @i{target} state does not configure
4045logging for entering it. So it has no effect when switching from WAIT
4046to DONE, because DONE is configured to record a timestamp only. But
4047when switching from WAIT back to TODO, the @samp{/!} in the WAIT
4048setting now triggers a timestamp even though TODO has no logging
4049configured.
4050
4051You can use the exact same syntax for setting logging preferences local
4052to a buffer:
4053@example
c8d0cf5c 4054#+TODO: TODO(t) WAIT(w@@/!) | DONE(d!) CANCELED(c@@)
28a16a1b
CD
4055@end example
4056
c8d0cf5c 4057@cindex property, LOGGING
28a16a1b
CD
4058In order to define logging settings that are local to a subtree or a
4059single item, define a LOGGING property in this entry. Any non-empty
4060LOGGING property resets all logging settings to nil. You may then turn
4061on logging for this specific tree using STARTUP keywords like
4062@code{lognotedone} or @code{logrepeat}, as well as adding state specific
4063settings like @code{TODO(!)}. For example
4064
4065@example
4066* TODO Log each state with only a time
4067 :PROPERTIES:
4068 :LOGGING: TODO(!) WAIT(!) DONE(!) CANCELED(!)
4069 :END:
4070* TODO Only log when switching to WAIT, and when repeating
4071 :PROPERTIES:
4072 :LOGGING: WAIT(@@) logrepeat
4073 :END:
4074* TODO No logging at all
4075 :PROPERTIES:
4076 :LOGGING: nil
4077 :END:
dbc28aaa
CD
4078@end example
4079
a351880d
CD
4080@node Tracking your habits, , Tracking TODO state changes, Progress logging
4081@subsection Tracking your habits
4082@cindex habits
4083
4084Org has the ability to track the consistency of a special category of TODOs,
4085called ``habits''. A habit has the following properties:
4086
4087@enumerate
4088@item
4089You have enabled the @code{habits} module by customizing the variable
4090@code{org-modules}.
4091@item
ce57c2fe 4092The habit is a TODO item, with a TODO keyword representing an open state.
a351880d
CD
4093@item
4094The property @code{STYLE} is set to the value @code{habit}.
4095@item
afe98dfa
CD
4096The TODO has a scheduled date, usually with a @code{.+} style repeat
4097interval. A @code{++} style may be appropriate for habits with time
4098constraints, e.g., must be done on weekends, or a @code{+} style for an
4099unusual habit that can have a backlog, e.g., weekly reports.
a351880d
CD
4100@item
4101The TODO may also have minimum and maximum ranges specified by using the
4102syntax @samp{.+2d/3d}, which says that you want to do the task at least every
4103three days, but at most every two days.
4104@item
4105You must also have state logging for the @code{DONE} state enabled, in order
ce57c2fe
BG
4106for historical data to be represented in the consistency graph. If it is not
4107enabled it is not an error, but the consistency graphs will be largely
a351880d
CD
4108meaningless.
4109@end enumerate
4110
4111To give you an idea of what the above rules look like in action, here's an
4112actual habit with some history:
4113
4114@example
4115** TODO Shave
4116 SCHEDULED: <2009-10-17 Sat .+2d/4d>
4117 - State "DONE" from "TODO" [2009-10-15 Thu]
4118 - State "DONE" from "TODO" [2009-10-12 Mon]
4119 - State "DONE" from "TODO" [2009-10-10 Sat]
4120 - State "DONE" from "TODO" [2009-10-04 Sun]
4121 - State "DONE" from "TODO" [2009-10-02 Fri]
4122 - State "DONE" from "TODO" [2009-09-29 Tue]
4123 - State "DONE" from "TODO" [2009-09-25 Fri]
4124 - State "DONE" from "TODO" [2009-09-19 Sat]
4125 - State "DONE" from "TODO" [2009-09-16 Wed]
4126 - State "DONE" from "TODO" [2009-09-12 Sat]
4127 :PROPERTIES:
4128 :STYLE: habit
4129 :LAST_REPEAT: [2009-10-19 Mon 00:36]
4130 :END:
4131@end example
4132
4133What this habit says is: I want to shave at most every 2 days (given by the
4134@code{SCHEDULED} date and repeat interval) and at least every 4 days. If
4135today is the 15th, then the habit first appears in the agenda on Oct 17,
4136after the minimum of 2 days has elapsed, and will appear overdue on Oct 19,
4137after four days have elapsed.
4138
4139What's really useful about habits is that they are displayed along with a
4140consistency graph, to show how consistent you've been at getting that task
4141done in the past. This graph shows every day that the task was done over the
4142past three weeks, with colors for each day. The colors used are:
4143
4144@table @code
4145@item Blue
4146If the task wasn't to be done yet on that day.
4147@item Green
4148If the task could have been done on that day.
4149@item Yellow
4150If the task was going to be overdue the next day.
4151@item Red
4152If the task was overdue on that day.
4153@end table
4154
86fbb8ca 4155In addition to coloring each day, the day is also marked with an asterisk if
a351880d
CD
4156the task was actually done that day, and an exclamation mark to show where
4157the current day falls in the graph.
4158
4159There are several configuration variables that can be used to change the way
4160habits are displayed in the agenda.
4161
4162@table @code
4163@item org-habit-graph-column
4164The buffer column at which the consistency graph should be drawn. This will
ce57c2fe 4165overwrite any text in that column, so it is a good idea to keep your habits'
a351880d
CD
4166titles brief and to the point.
4167@item org-habit-preceding-days
4168The amount of history, in days before today, to appear in consistency graphs.
4169@item org-habit-following-days
4170The number of days after today that will appear in consistency graphs.
4171@item org-habit-show-habits-only-for-today
4172If non-nil, only show habits in today's agenda view. This is set to true by
4173default.
4174@end table
4175
4176Lastly, pressing @kbd{K} in the agenda buffer will cause habits to
4177temporarily be disabled and they won't appear at all. Press @kbd{K} again to
4178bring them back. They are also subject to tag filtering, if you have habits
4179which should only be done in certain contexts, for example.
4180
a7808fba 4181@node Priorities, Breaking down tasks, Progress logging, TODO Items
4009494e
GM
4182@section Priorities
4183@cindex priorities
4184
86fbb8ca 4185If you use Org-mode extensively, you may end up with enough TODO items that
dbc28aaa 4186it starts to make sense to prioritize them. Prioritizing can be done by
86fbb8ca 4187placing a @emph{priority cookie} into the headline of a TODO item, like this
4009494e
GM
4188
4189@example
4190*** TODO [#A] Write letter to Sam Fortune
4191@end example
4192
4193@noindent
ed21c5c8 4194@vindex org-priority-faces
86fbb8ca 4195By default, Org-mode supports three priorities: @samp{A}, @samp{B}, and
ed21c5c8 4196@samp{C}. @samp{A} is the highest priority. An entry without a cookie is
afe98dfa
CD
4197treated just like priority @samp{B}. Priorities make a difference only for
4198sorting in the agenda (@pxref{Weekly/daily agenda}); outside the agenda, they
4199have no inherent meaning to Org-mode. The cookies can be highlighted with
4200special faces by customizing the variable @code{org-priority-faces}.
dbc28aaa 4201
afe98dfa
CD
4202Priorities can be attached to any outline node; they do not need to be TODO
4203items.
4009494e
GM
4204
4205@table @kbd
4009494e 4206@item @kbd{C-c ,}
acedf35c
CD
4207@kindex @kbd{C-c ,}
4208@findex org-priority
4209Set the priority of the current headline (@command{org-priority}). The
4210command prompts for a priority character @samp{A}, @samp{B} or @samp{C}.
4211When you press @key{SPC} instead, the priority cookie is removed from the
4212headline. The priorities can also be changed ``remotely'' from the timeline
4213and agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
4009494e 4214@c
acedf35c 4215@orgcmdkkcc{S-@key{up},S-@key{down},org-priority-up,org-priority-down}
c8d0cf5c 4216@vindex org-priority-start-cycle-with-default
3da3282e 4217Increase/decrease priority of current headline@footnote{See also the option
c8d0cf5c
CD
4218@code{org-priority-start-cycle-with-default}.}. Note that these keys are
4219also used to modify timestamps (@pxref{Creating timestamps}). See also
4220@ref{Conflicts}, for a discussion of the interaction with
3da3282e 4221@code{shift-selection-mode}.
4009494e
GM
4222@end table
4223
c8d0cf5c
CD
4224@vindex org-highest-priority
4225@vindex org-lowest-priority
4226@vindex org-default-priority
4009494e
GM
4227You can change the range of allowed priorities by setting the variables
4228@code{org-highest-priority}, @code{org-lowest-priority}, and
4229@code{org-default-priority}. For an individual buffer, you may set
4230these values (highest, lowest, default) like this (please make sure that
4231the highest priority is earlier in the alphabet than the lowest
4232priority):
4233
c8d0cf5c 4234@cindex #+PRIORITIES
4009494e
GM
4235@example
4236#+PRIORITIES: A C B
4237@end example
4238
a7808fba 4239@node Breaking down tasks, Checkboxes, Priorities, TODO Items
4009494e
GM
4240@section Breaking tasks down into subtasks
4241@cindex tasks, breaking down
6eb02347 4242@cindex statistics, for TODO items
4009494e 4243
c8d0cf5c 4244@vindex org-agenda-todo-list-sublevels
4009494e 4245It is often advisable to break down large tasks into smaller, manageable
b349f79f
CD
4246subtasks. You can do this by creating an outline tree below a TODO item,
4247with detailed subtasks on the tree@footnote{To keep subtasks out of the
4248global TODO list, see the @code{org-agenda-todo-list-sublevels}.}. To keep
4249the overview over the fraction of subtasks that are already completed, insert
4250either @samp{[/]} or @samp{[%]} anywhere in the headline. These cookies will
86fbb8ca 4251be updated each time the TODO status of a child changes, or when pressing
6eb02347 4252@kbd{C-c C-c} on the cookie. For example:
b349f79f
CD
4253
4254@example
4255* Organize Party [33%]
4256** TODO Call people [1/2]
4257*** TODO Peter
4258*** DONE Sarah
4259** TODO Buy food
4260** DONE Talk to neighbor
4261@end example
4262
c8d0cf5c
CD
4263@cindex property, COOKIE_DATA
4264If a heading has both checkboxes and TODO children below it, the meaning of
4265the statistics cookie become ambiguous. Set the property
4266@code{COOKIE_DATA} to either @samp{checkbox} or @samp{todo} to resolve
4267this issue.
4268
6eb02347
CD
4269@vindex org-hierarchical-todo-statistics
4270If you would like to have the statistics cookie count any TODO entries in the
a351880d 4271subtree (not just direct children), configure the variable
6eb02347
CD
4272@code{org-hierarchical-todo-statistics}. To do this for a single subtree,
4273include the word @samp{recursive} into the value of the @code{COOKIE_DATA}
4274property.
4275
4276@example
4277* Parent capturing statistics [2/20]
4278 :PROPERTIES:
4279 :COOKIE_DATA: todo recursive
4280 :END:
4281@end example
4282
c8d0cf5c
CD
4283If you would like a TODO entry to automatically change to DONE
4284when all children are done, you can use the following setup:
b349f79f
CD
4285
4286@example
4287(defun org-summary-todo (n-done n-not-done)
4288 "Switch entry to DONE when all subentries are done, to TODO otherwise."
4289 (let (org-log-done org-log-states) ; turn off logging
4290 (org-todo (if (= n-not-done 0) "DONE" "TODO"))))
4291
4292(add-hook 'org-after-todo-statistics-hook 'org-summary-todo)
4293@end example
4294
4295
4296Another possibility is the use of checkboxes to identify (a hierarchy of) a
4297large number of subtasks (@pxref{Checkboxes}).
4009494e
GM
4298
4299
a7808fba 4300@node Checkboxes, , Breaking down tasks, TODO Items
4009494e
GM
4301@section Checkboxes
4302@cindex checkboxes
4303
afe98dfa
CD
4304@vindex org-list-automatic-rules
4305Every item in a plain list@footnote{With the exception of description
ce57c2fe 4306lists. But you can allow it by modifying @code{org-list-automatic-rules}
afe98dfa
CD
4307accordingly.} (@pxref{Plain lists}) can be made into a checkbox by starting
4308it with the string @samp{[ ]}. This feature is similar to TODO items
4309(@pxref{TODO Items}), but is more lightweight. Checkboxes are not included
4310into the global TODO list, so they are often great to split a task into a
4311number of simple steps. Or you can use them in a shopping list. To toggle a
4312checkbox, use @kbd{C-c C-c}, or use the mouse (thanks to Piotr Zielinski's
4313@file{org-mouse.el}).
dbc28aaa
CD
4314
4315Here is an example of a checkbox list.
4009494e
GM
4316
4317@example
28a16a1b
CD
4318* TODO Organize party [2/4]
4319 - [-] call people [1/3]
4009494e
GM
4320 - [ ] Peter
4321 - [X] Sarah
4322 - [ ] Sam
4323 - [X] order food
4324 - [ ] think about what music to play
4325 - [X] talk to the neighbors
4326@end example
4327
28a16a1b
CD
4328Checkboxes work hierarchically, so if a checkbox item has children that
4329are checkboxes, toggling one of the children checkboxes will make the
4330parent checkbox reflect if none, some, or all of the children are
4331checked.
4332
4009494e
GM
4333@cindex statistics, for checkboxes
4334@cindex checkbox statistics
c8d0cf5c 4335@cindex property, COOKIE_DATA
6eb02347 4336@vindex org-hierarchical-checkbox-statistics
c8d0cf5c
CD
4337The @samp{[2/4]} and @samp{[1/3]} in the first and second line are cookies
4338indicating how many checkboxes present in this entry have been checked off,
4339and the total number of checkboxes present. This can give you an idea on how
4340many checkboxes remain, even without opening a folded entry. The cookies can
4341be placed into a headline or into (the first line of) a plain list item.
4342Each cookie covers checkboxes of direct children structurally below the
4343headline/item on which the cookie appears@footnote{Set the variable
6eb02347 4344@code{org-hierarchical-checkbox-statistics} if you want such cookies to
ce57c2fe 4345count all checkboxes below the cookie, not just those belonging to direct
c8d0cf5c
CD
4346children.}. You have to insert the cookie yourself by typing either
4347@samp{[/]} or @samp{[%]}. With @samp{[/]} you get an @samp{n out of m}
4348result, as in the examples above. With @samp{[%]} you get information about
4349the percentage of checkboxes checked (in the above example, this would be
4350@samp{[50%]} and @samp{[33%]}, respectively). In a headline, a cookie can
4351count either checkboxes below the heading or TODO states of children, and it
4352will display whatever was changed last. Set the property @code{COOKIE_DATA}
4353to either @samp{checkbox} or @samp{todo} to resolve this issue.
4354
4355@cindex blocking, of checkboxes
4356@cindex checkbox blocking
4357@cindex property, ORDERED
4358If the current outline node has an @code{ORDERED} property, checkboxes must
4359be checked off in sequence, and an error will be thrown if you try to check
4360off a box while there are unchecked boxes above it.
4009494e
GM
4361
4362@noindent The following commands work with checkboxes:
4363
4364@table @kbd
acedf35c 4365@orgcmd{C-c C-c,org-toggle-checkbox}
c8d0cf5c
CD
4366Toggle checkbox status or (with prefix arg) checkbox presence at point. With
4367double prefix argument, set it to @samp{[-]}, which is considered to be an
4368intermediate state.
acedf35c 4369@orgcmd{C-c C-x C-b,org-toggle-checkbox}
c8d0cf5c
CD
4370Toggle checkbox status or (with prefix arg) checkbox presence at point. With
4371double prefix argument, set it to @samp{[-]}, which is considered to be an
4372intermediate state.
4009494e
GM
4373@itemize @minus
4374@item
4375If there is an active region, toggle the first checkbox in the region
7ddb1b5f
CD
4376and set all remaining boxes to the same status as the first. With a prefix
4377arg, add or remove the checkbox for all items in the region.
4009494e
GM
4378@item
4379If the cursor is in a headline, toggle checkboxes in the region between
4380this headline and the next (so @emph{not} the entire subtree).
4381@item
4382If there is no active region, just toggle the checkbox at point.
4383@end itemize
acedf35c 4384@orgcmd{M-S-@key{RET},org-insert-todo-heading}
ce57c2fe
BG
4385Insert a new item with a checkbox. This works only if the cursor is already
4386in a plain list item (@pxref{Plain lists}).
acedf35c 4387@orgcmd{C-c C-x o,org-toggle-ordered-property}
c8d0cf5c
CD
4388@vindex org-track-ordered-property-with-tag
4389@cindex property, ORDERED
4390Toggle the @code{ORDERED} property of the entry, to toggle if checkboxes must
4391be checked off in sequence. A property is used for this behavior because
4392this should be local to the current entry, not inherited like a tag.
4393However, if you would like to @i{track} the value of this property with a tag
4394for better visibility, customize the variable
4395@code{org-track-ordered-property-with-tag}.
acedf35c 4396@orgcmd{C-c #,org-update-statistics-cookies}
6eb02347
CD
4397Update the statistics cookie in the current outline entry. When called with
4398a @kbd{C-u} prefix, update the entire file. Checkbox statistic cookies are
4399updated automatically if you toggle checkboxes with @kbd{C-c C-c} and make
4400new ones with @kbd{M-S-@key{RET}}. TODO statistics cookies update when
4401changing TODO states. If you delete boxes/entries or add/change them by
ce57c2fe 4402hand, use this command to get things back into sync.
4009494e
GM
4403@end table
4404
a7808fba 4405@node Tags, Properties and Columns, TODO Items, Top
4009494e
GM
4406@chapter Tags
4407@cindex tags
4408@cindex headline tagging
4409@cindex matching, tags
4410@cindex sparse tree, tag based
4411
dbc28aaa 4412An excellent way to implement labels and contexts for cross-correlating
86fbb8ca 4413information is to assign @i{tags} to headlines. Org-mode has extensive
dbc28aaa 4414support for tags.
4009494e 4415
c8d0cf5c 4416@vindex org-tag-faces
dbc28aaa 4417Every headline can contain a list of tags; they occur at the end of the
96c8522a 4418headline. Tags are normal words containing letters, numbers, @samp{_}, and
a351880d 4419@samp{@@}. Tags must be preceded and followed by a single colon, e.g.,
96c8522a 4420@samp{:work:}. Several tags can be specified, as in @samp{:work:urgent:}.
c8d0cf5c 4421Tags will by default be in bold face with the same color as the headline.
96c8522a 4422You may specify special faces for specific tags using the variable
c8d0cf5c 4423@code{org-tag-faces}, in much the same way as you can for TODO keywords
96c8522a 4424(@pxref{Faces for TODO keywords}).
4009494e
GM
4425
4426@menu
c0468714
GM
4427* Tag inheritance:: Tags use the tree structure of the outline
4428* Setting tags:: How to assign tags to a headline
4429* Tag searches:: Searching for combinations of tags
4009494e
GM
4430@end menu
4431
4432@node Tag inheritance, Setting tags, Tags, Tags
4433@section Tag inheritance
dbc28aaa 4434@cindex tag inheritance
4009494e
GM
4435@cindex inheritance, of tags
4436@cindex sublevels, inclusion into tags match
4437
4438@i{Tags} make use of the hierarchical structure of outline trees. If a
4439heading has a certain tag, all subheadings will inherit the tag as
4440well. For example, in the list
4441
4442@example
dbc28aaa
CD
4443* Meeting with the French group :work:
4444** Summary by Frank :boss:notes:
4445*** TODO Prepare slides for him :action:
4009494e
GM
4446@end example
4447
4448@noindent
dbc28aaa
CD
4449the final heading will have the tags @samp{:work:}, @samp{:boss:},
4450@samp{:notes:}, and @samp{:action:} even though the final heading is not
b349f79f 4451explicitly marked with those tags. You can also set tags that all entries in
c8d0cf5c 4452a file should inherit just as if these tags were defined in a hypothetical
7006d207
CD
4453level zero that surrounds the entire file. Use a line like this@footnote{As
4454with all these in-buffer settings, pressing @kbd{C-c C-c} activates any
4455changes in the line.}:
b349f79f 4456
c8d0cf5c 4457@cindex #+FILETAGS
b349f79f
CD
4458@example
4459#+FILETAGS: :Peter:Boss:Secret:
4460@end example
4461
4462@noindent
c8d0cf5c
CD
4463@vindex org-use-tag-inheritance
4464@vindex org-tags-exclude-from-inheritance
b349f79f 4465To limit tag inheritance to specific tags, or to turn it off entirely, use
96c8522a
CD
4466the variables @code{org-use-tag-inheritance} and
4467@code{org-tags-exclude-from-inheritance}.
b349f79f 4468
c8d0cf5c 4469@vindex org-tags-match-list-sublevels
b349f79f 4470When a headline matches during a tags search while tag inheritance is turned
96c8522a 4471on, all the sublevels in the same tree will (for a simple match form) match
07450bee 4472as well@footnote{This is only true if the search does not involve more
96c8522a
CD
4473complex tests including properties (@pxref{Property searches}).}. The list
4474of matches may then become very long. If you only want to see the first tags
4475match in a subtree, configure the variable
4476@code{org-tags-match-list-sublevels} (not recommended).
4009494e
GM
4477
4478@node Setting tags, Tag searches, Tag inheritance, Tags
4479@section Setting tags
4480@cindex setting tags
4481@cindex tags, setting
4482
4483@kindex M-@key{TAB}
4484Tags can simply be typed into the buffer at the end of a headline.
4485After a colon, @kbd{M-@key{TAB}} offers completion on tags. There is
4486also a special command for inserting tags:
4487
4488@table @kbd
acedf35c 4489@orgcmd{C-c C-q,org-set-tags-command}
4009494e 4490@cindex completion, of tags
c8d0cf5c 4491@vindex org-tags-column
86fbb8ca 4492Enter new tags for the current headline. Org-mode will either offer
4009494e
GM
4493completion or a special single-key interface for setting tags, see
4494below. After pressing @key{RET}, the tags will be inserted and aligned
4495to @code{org-tags-column}. When called with a @kbd{C-u} prefix, all
4496tags in the current buffer will be aligned to that column, just to make
4497things look nice. TAGS are automatically realigned after promotion,
4498demotion, and TODO state changes (@pxref{TODO basics}).
acedf35c 4499@orgcmd{C-c C-c,org-set-tags-command}
71d35b24 4500When the cursor is in a headline, this does the same as @kbd{C-c C-q}.
4009494e
GM
4501@end table
4502
c8d0cf5c 4503@vindex org-tag-alist
ce57c2fe 4504Org supports tag insertion based on a @emph{list of tags}. By
4009494e
GM
4505default this list is constructed dynamically, containing all tags
4506currently used in the buffer. You may also globally specify a hard list
4507of tags with the variable @code{org-tag-alist}. Finally you can set
4508the default tags for a given file with lines like
4509
c8d0cf5c 4510@cindex #+TAGS
4009494e 4511@example
dbc28aaa
CD
4512#+TAGS: @@work @@home @@tennisclub
4513#+TAGS: laptop car pc sailboat
4009494e
GM
4514@end example
4515
4516If you have globally defined your preferred set of tags using the
4517variable @code{org-tag-alist}, but would like to use a dynamic tag list
dbc28aaa 4518in a specific file, add an empty TAGS option line to that file:
4009494e
GM
4519
4520@example
4521#+TAGS:
4522@end example
4523
c8d0cf5c
CD
4524@vindex org-tag-persistent-alist
4525If you have a preferred set of tags that you would like to use in every file,
4526in addition to those defined on a per-file basis by TAGS option lines, then
4527you may specify a list of tags with the variable
4528@code{org-tag-persistent-alist}. You may turn this off on a per-file basis
4529by adding a STARTUP option line to that file:
4530
4531@example
4532#+STARTUP: noptag
4533@end example
4534
86fbb8ca 4535By default Org-mode uses the standard minibuffer completion facilities for
a7808fba
CD
4536entering tags. However, it also implements another, quicker, tag selection
4537method called @emph{fast tag selection}. This allows you to select and
4538deselect tags with just a single key press. For this to work well you should
4539assign unique letters to most of your commonly used tags. You can do this
4540globally by configuring the variable @code{org-tag-alist} in your
4541@file{.emacs} file. For example, you may find the need to tag many items in
4542different files with @samp{:@@home:}. In this case you can set something
4543like:
4009494e
GM
4544
4545@lisp
dbc28aaa 4546(setq org-tag-alist '(("@@work" . ?w) ("@@home" . ?h) ("laptop" . ?l)))
4009494e
GM
4547@end lisp
4548
c8d0cf5c
CD
4549@noindent If the tag is only relevant to the file you are working on, then you
4550can instead set the TAGS option line as:
4009494e
GM
4551
4552@example
dbc28aaa 4553#+TAGS: @@work(w) @@home(h) @@tennisclub(t) laptop(l) pc(p)
4009494e
GM
4554@end example
4555
c8d0cf5c
CD
4556@noindent The tags interface will show the available tags in a splash
4557window. If you want to start a new line after a specific tag, insert
4558@samp{\n} into the tag list
4559
4560@example
4561#+TAGS: @@work(w) @@home(h) @@tennisclub(t) \n laptop(l) pc(p)
4562@end example
4563
4564@noindent or write them in two lines:
4565
4566@example
4567#+TAGS: @@work(w) @@home(h) @@tennisclub(t)
4568#+TAGS: laptop(l) pc(p)
4569@end example
4570
4009494e 4571@noindent
c8d0cf5c 4572You can also group together tags that are mutually exclusive by using
a7808fba 4573braces, as in:
4009494e
GM
4574
4575@example
dbc28aaa 4576#+TAGS: @{ @@work(w) @@home(h) @@tennisclub(t) @} laptop(l) pc(p)
4009494e
GM
4577@end example
4578
dbc28aaa 4579@noindent you indicate that at most one of @samp{@@work}, @samp{@@home},
a7808fba 4580and @samp{@@tennisclub} should be selected. Multiple such groups are allowed.
4009494e
GM
4581
4582@noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
4583these lines to activate any changes.
4584
a7808fba 4585@noindent
c8d0cf5c 4586To set these mutually exclusive groups in the variable @code{org-tags-alist},
a7808fba 4587you must use the dummy tags @code{:startgroup} and @code{:endgroup} instead
c8d0cf5c
CD
4588of the braces. Similarly, you can use @code{:newline} to indicate a line
4589break. The previous example would be set globally by the following
a7808fba
CD
4590configuration:
4591
4592@lisp
4593(setq org-tag-alist '((:startgroup . nil)
4594 ("@@work" . ?w) ("@@home" . ?h)
4595 ("@@tennisclub" . ?t)
4596 (:endgroup . nil)
4597 ("laptop" . ?l) ("pc" . ?p)))
4598@end lisp
4599
4600If at least one tag has a selection key then pressing @kbd{C-c C-c} will
4601automatically present you with a special interface, listing inherited tags,
4602the tags of the current headline, and a list of all valid tags with
4603corresponding keys@footnote{Keys will automatically be assigned to tags which
4604have no configured keys.}. In this interface, you can use the following
4605keys:
4009494e
GM
4606
4607@table @kbd
4608@item a-z...
4609Pressing keys assigned to tags will add or remove them from the list of
4610tags in the current line. Selecting a tag in a group of mutually
4611exclusive tags will turn off any other tags from that group.
4612@kindex @key{TAB}
4613@item @key{TAB}
4614Enter a tag in the minibuffer, even if the tag is not in the predefined
4615list. You will be able to complete on all tags present in the buffer.
ce57c2fe
BG
4616You can also add several tags: just separate them with a comma.
4617
4009494e
GM
4618@kindex @key{SPC}
4619@item @key{SPC}
4620Clear all tags for this line.
4621@kindex @key{RET}
4622@item @key{RET}
4623Accept the modified set.
4624@item C-g
4625Abort without installing changes.
4626@item q
4627If @kbd{q} is not assigned to a tag, it aborts like @kbd{C-g}.
4628@item !
4629Turn off groups of mutually exclusive tags. Use this to (as an
4630exception) assign several tags from such a group.
4631@item C-c
4632Toggle auto-exit after the next change (see below).
4633If you are using expert mode, the first @kbd{C-c} will display the
4634selection window.
4635@end table
4636
4637@noindent
4638This method lets you assign tags to a headline with very few keys. With
dbc28aaa
CD
4639the above setup, you could clear the current tags and set @samp{@@home},
4640@samp{laptop} and @samp{pc} tags with just the following keys: @kbd{C-c
4641C-c @key{SPC} h l p @key{RET}}. Switching from @samp{@@home} to
4642@samp{@@work} would be done with @kbd{C-c C-c w @key{RET}} or
4009494e
GM
4643alternatively with @kbd{C-c C-c C-c w}. Adding the non-predefined tag
4644@samp{Sarah} could be done with @kbd{C-c C-c @key{TAB} S a r a h
4645@key{RET} @key{RET}}.
4646
c8d0cf5c
CD
4647@vindex org-fast-tag-selection-single-key
4648If you find that most of the time you need only a single key press to
4009494e
GM
4649modify your list of tags, set the variable
4650@code{org-fast-tag-selection-single-key}. Then you no longer have to
c8d0cf5c 4651press @key{RET} to exit fast tag selection---it will immediately exit
4009494e
GM
4652after the first change. If you then occasionally need more keys, press
4653@kbd{C-c} to turn off auto-exit for the current tag selection process
4654(in effect: start selection with @kbd{C-c C-c C-c} instead of @kbd{C-c
4655C-c}). If you set the variable to the value @code{expert}, the special
4656window is not even shown for single-key tag selection, it comes up only
4657when you press an extra @kbd{C-c}.
4658
4659@node Tag searches, , Setting tags, Tags
4660@section Tag searches
4661@cindex tag searches
4662@cindex searching for tags
4663
dbc28aaa 4664Once a system of tags has been set up, it can be used to collect related
4009494e
GM
4665information into special lists.
4666
4667@table @kbd
ce57c2fe 4668@orgcmdkkc{C-c / m,C-c \\,org-match-sparse-tree}
4009494e
GM
4669Create a sparse tree with all headlines matching a tags search. With a
4670@kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
acedf35c 4671@orgcmd{C-c a m,org-tags-view}
4009494e
GM
4672Create a global list of tag matches from all agenda files.
4673@xref{Matching tags and properties}.
acedf35c 4674@orgcmd{C-c a M,org-tags-view}
c8d0cf5c 4675@vindex org-tags-match-list-sublevels
4009494e
GM
4676Create a global list of tag matches from all agenda files, but check
4677only TODO items and force checking subitems (see variable
4678@code{org-tags-match-list-sublevels}).
4679@end table
4680
c8d0cf5c
CD
4681These commands all prompt for a match string which allows basic Boolean logic
4682like @samp{+boss+urgent-project1}, to find entries with tags @samp{boss} and
4683@samp{urgent}, but not @samp{project1}, or @samp{Kathy|Sally} to find entries
4684which are tagged, like @samp{Kathy} or @samp{Sally}. The full syntax of the search
4685string is rich and allows also matching against TODO keywords, entry levels
4686and properties. For a complete description with many examples, see
4687@ref{Matching tags and properties}.
dbc28aaa 4688
e45e3595 4689
a7808fba 4690@node Properties and Columns, Dates and Times, Tags, Top
86fbb8ca 4691@chapter Properties and columns
4009494e
GM
4692@cindex properties
4693
4694Properties are a set of key-value pairs associated with an entry. There
86fbb8ca 4695are two main applications for properties in Org-mode. First, properties
dbc28aaa 4696are like tags, but with a value. Second, you can use properties to
a7808fba 4697implement (very basic) database capabilities in an Org buffer. For
dbc28aaa 4698an example of the first application, imagine maintaining a file where
c8d0cf5c 4699you document bugs and plan releases for a piece of software. Instead of
dbc28aaa
CD
4700using tags like @code{:release_1:}, @code{:release_2:}, one can use a
4701property, say @code{:Release:}, that in different subtrees has different
4702values, such as @code{1.0} or @code{2.0}. For an example of the second
a50253cc 4703application of properties, imagine keeping track of your music CDs,
c8d0cf5c 4704where properties could be things such as the album, artist, date of
dbc28aaa
CD
4705release, number of tracks, and so on.
4706
28a16a1b 4707Properties can be conveniently edited and viewed in column view
dbc28aaa
CD
4708(@pxref{Column view}).
4709
4009494e 4710@menu
c0468714
GM
4711* Property syntax:: How properties are spelled out
4712* Special properties:: Access to other Org-mode features
4713* Property searches:: Matching property values
4714* Property inheritance:: Passing values down the tree
4715* Column view:: Tabular viewing and editing
4716* Property API:: Properties for Lisp programmers
4009494e
GM
4717@end menu
4718
a7808fba
CD
4719@node Property syntax, Special properties, Properties and Columns, Properties and Columns
4720@section Property syntax
4009494e
GM
4721@cindex property syntax
4722@cindex drawer, for properties
4723
4724Properties are key-value pairs. They need to be inserted into a special
4725drawer (@pxref{Drawers}) with the name @code{PROPERTIES}. Each property
4726is specified on a single line, with the key (surrounded by colons)
4727first, and the value after it. Here is an example:
4728
4729@example
4730* CD collection
4731** Classic
4732*** Goldberg Variations
4733 :PROPERTIES:
4734 :Title: Goldberg Variations
4735 :Composer: J.S. Bach
28a16a1b 4736 :Artist: Glen Gould
c8d0cf5c 4737 :Publisher: Deutsche Grammophon
4009494e 4738 :NDisks: 1
28a16a1b 4739 :END:
4009494e
GM
4740@end example
4741
dbc28aaa
CD
4742You may define the allowed values for a particular property @samp{:Xyz:}
4743by setting a property @samp{:Xyz_ALL:}. This special property is
4009494e
GM
4744@emph{inherited}, so if you set it in a level 1 entry, it will apply to
4745the entire tree. When allowed values are defined, setting the
4746corresponding property becomes easier and is less prone to typing
4747errors. For the example with the CD collection, we can predefine
4748publishers and the number of disks in a box like this:
4749
4750@example
4751* CD collection
4752 :PROPERTIES:
4753 :NDisks_ALL: 1 2 3 4
64fb801f 4754 :Publisher_ALL: "Deutsche Grammophon" Philips EMI
4009494e
GM
4755 :END:
4756@end example
4757
4758If you want to set properties that can be inherited by any entry in a
4759file, use a line like
c8d0cf5c
CD
4760@cindex property, _ALL
4761@cindex #+PROPERTY
4009494e
GM
4762@example
4763#+PROPERTY: NDisks_ALL 1 2 3 4
4764@end example
4765
c8d0cf5c 4766@vindex org-global-properties
4009494e
GM
4767Property values set with the global variable
4768@code{org-global-properties} can be inherited by all entries in all
a7808fba 4769Org files.
4009494e
GM
4770
4771@noindent
4772The following commands help to work with properties:
4773
4774@table @kbd
ce57c2fe 4775@orgcmd{M-@key{TAB},pcomplete}
4009494e
GM
4776After an initial colon in a line, complete property keys. All keys used
4777in the current file will be offered as possible completions.
acedf35c 4778@orgcmd{C-c C-x p,org-set-property}
dbc28aaa
CD
4779Set a property. This prompts for a property name and a value. If
4780necessary, the property drawer is created as well.
4009494e 4781@item M-x org-insert-property-drawer
acedf35c 4782@findex org-insert-property-drawer
4009494e
GM
4783Insert a property drawer into the current entry. The drawer will be
4784inserted early in the entry, but after the lines with planning
4785information like deadlines.
acedf35c 4786@orgcmd{C-c C-c,org-property-action}
4009494e 4787With the cursor in a property drawer, this executes property commands.
acedf35c 4788@orgcmd{C-c C-c s,org-set-property}
4009494e
GM
4789Set a property in the current entry. Both the property and the value
4790can be inserted using completion.
acedf35c 4791@orgcmdkkcc{S-@key{right},S-@key{left},org-property-next-allowed-value,org-property-previous-allowed-value}
4009494e 4792Switch property at point to the next/previous allowed value.
acedf35c 4793@orgcmd{C-c C-c d,org-delete-property}
4009494e 4794Remove a property from the current entry.
acedf35c 4795@orgcmd{C-c C-c D,org-delete-property-globally}
4009494e 4796Globally remove a property, from all entries in the current file.
acedf35c 4797@orgcmd{C-c C-c c,org-compute-property-at-point}
dbc28aaa
CD
4798Compute the property at point, using the operator and scope from the
4799nearest column format definition.
4009494e
GM
4800@end table
4801
a7808fba
CD
4802@node Special properties, Property searches, Property syntax, Properties and Columns
4803@section Special properties
4009494e
GM
4804@cindex properties, special
4805
ce57c2fe
BG
4806Special properties provide an alternative access method to Org-mode features,
4807like the TODO state or the priority of an entry, discussed in the previous
4808chapters. This interface exists so that you can include these states in a
4809column view (@pxref{Column view}), or to use them in queries. The following
4810property names are special and (except for @code{:CATEGORY:}) should not be
dbc28aaa 4811used as keys in the properties drawer:
4009494e 4812
c8d0cf5c
CD
4813@cindex property, special, TODO
4814@cindex property, special, TAGS
4815@cindex property, special, ALLTAGS
4816@cindex property, special, CATEGORY
4817@cindex property, special, PRIORITY
4818@cindex property, special, DEADLINE
4819@cindex property, special, SCHEDULED
4820@cindex property, special, CLOSED
4821@cindex property, special, TIMESTAMP
4822@cindex property, special, TIMESTAMP_IA
4823@cindex property, special, CLOCKSUM
ed21c5c8 4824@cindex property, special, BLOCKED
c8d0cf5c
CD
4825@c guessing that ITEM is needed in this area; also, should this list be sorted?
4826@cindex property, special, ITEM
ce57c2fe 4827@cindex property, special, FILE
4009494e
GM
4828@example
4829TODO @r{The TODO keyword of the entry.}
4830TAGS @r{The tags defined directly in the headline.}
4831ALLTAGS @r{All tags, including inherited ones.}
c8d0cf5c 4832CATEGORY @r{The category of an entry.}
4009494e
GM
4833PRIORITY @r{The priority of the entry, a string with a single letter.}
4834DEADLINE @r{The deadline time string, without the angular brackets.}
c8d0cf5c
CD
4835SCHEDULED @r{The scheduling timestamp, without the angular brackets.}
4836CLOSED @r{When was this entry closed?}
4837TIMESTAMP @r{The first keyword-less timestamp in the entry.}
4838TIMESTAMP_IA @r{The first inactive timestamp in the entry.}
dbc28aaa 4839CLOCKSUM @r{The sum of CLOCK intervals in the subtree. @code{org-clock-sum}}
ce57c2fe 4840 @r{must be run first to compute the values in the current buffer.}
ed21c5c8 4841BLOCKED @r{"t" if task is currently blocked by children or siblings}
c8d0cf5c 4842ITEM @r{The content of the entry.}
ce57c2fe 4843FILE @r{The filename the entry is located in.}
4009494e
GM
4844@end example
4845
a7808fba 4846@node Property searches, Property inheritance, Special properties, Properties and Columns
4009494e
GM
4847@section Property searches
4848@cindex properties, searching
dbc28aaa 4849@cindex searching, of properties
4009494e 4850
a7808fba 4851To create sparse trees and special lists with selection based on properties,
c8d0cf5c
CD
4852the same commands are used as for tag searches (@pxref{Tag searches}).
4853@table @kbd
acedf35c 4854@orgcmdkkc{C-c / m,C-c \,org-match-sparse-tree}
c8d0cf5c
CD
4855Create a sparse tree with all matching entries. With a
4856@kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
acedf35c 4857@orgcmd{C-c a m,org-tags-view}
c8d0cf5c
CD
4858Create a global list of tag/property matches from all agenda files.
4859@xref{Matching tags and properties}.
acedf35c 4860@orgcmd{C-c a M,org-tags-view}
c8d0cf5c
CD
4861@vindex org-tags-match-list-sublevels
4862Create a global list of tag matches from all agenda files, but check
4863only TODO items and force checking of subitems (see variable
4864@code{org-tags-match-list-sublevels}).
4865@end table
a7808fba 4866
c8d0cf5c
CD
4867The syntax for the search string is described in @ref{Matching tags and
4868properties}.
dbc28aaa
CD
4869
4870There is also a special command for creating sparse trees based on a
4871single property:
4872
4873@table @kbd
acedf35c 4874@orgkey{C-c / p}
dbc28aaa
CD
4875Create a sparse tree based on the value of a property. This first
4876prompts for the name of a property, and then for a value. A sparse tree
4877is created with all entries that define this property with the given
acedf35c 4878value. If you enclose the value in curly braces, it is interpreted as
dbc28aaa
CD
4879a regular expression and matched against the property values.
4880@end table
4881
a7808fba 4882@node Property inheritance, Column view, Property searches, Properties and Columns
dbc28aaa 4883@section Property Inheritance
a7808fba
CD
4884@cindex properties, inheritance
4885@cindex inheritance, of properties
dbc28aaa 4886
c8d0cf5c 4887@vindex org-use-property-inheritance
acedf35c 4888The outline structure of Org-mode documents lends itself to an
c8d0cf5c 4889inheritance model of properties: if the parent in a tree has a certain
86fbb8ca 4890property, the children can inherit this property. Org-mode does not
dbc28aaa
CD
4891turn this on by default, because it can slow down property searches
4892significantly and is often not needed. However, if you find inheritance
4893useful, you can turn it on by setting the variable
c8d0cf5c 4894@code{org-use-property-inheritance}. It may be set to @code{t} to make
a7808fba
CD
4895all properties inherited from the parent, to a list of properties
4896that should be inherited, or to a regular expression that matches
86fbb8ca 4897inherited properties. If a property has the value @samp{nil}, this is
acedf35c 4898interpreted as an explicit undefine of the property, so that inheritance
86fbb8ca 4899search will stop at this value and return @code{nil}.
dbc28aaa 4900
86fbb8ca 4901Org-mode has a few properties for which inheritance is hard-coded, at
dbc28aaa
CD
4902least for the special applications for which they are used:
4903
c8d0cf5c 4904@cindex property, COLUMNS
dbc28aaa
CD
4905@table @code
4906@item COLUMNS
4907The @code{:COLUMNS:} property defines the format of column view
4908(@pxref{Column view}). It is inherited in the sense that the level
4909where a @code{:COLUMNS:} property is defined is used as the starting
4910point for a column view table, independently of the location in the
4911subtree from where columns view is turned on.
4912@item CATEGORY
c8d0cf5c 4913@cindex property, CATEGORY
dbc28aaa
CD
4914For agenda view, a category set through a @code{:CATEGORY:} property
4915applies to the entire subtree.
4916@item ARCHIVE
c8d0cf5c 4917@cindex property, ARCHIVE
dbc28aaa
CD
4918For archiving, the @code{:ARCHIVE:} property may define the archive
4919location for the entire subtree (@pxref{Moving subtrees}).
28a16a1b 4920@item LOGGING
c8d0cf5c 4921@cindex property, LOGGING
28a16a1b
CD
4922The LOGGING property may define logging settings for an entry or a
4923subtree (@pxref{Tracking TODO state changes}).
dbc28aaa
CD
4924@end table
4925
a7808fba
CD
4926@node Column view, Property API, Property inheritance, Properties and Columns
4927@section Column view
4009494e
GM
4928
4929A great way to view and edit properties in an outline tree is
c8d0cf5c 4930@emph{column view}. In column view, each outline node is turned into a
4009494e 4931table row. Columns in this table provide access to properties of the
86fbb8ca 4932entries. Org-mode implements columns by overlaying a tabular structure
4009494e
GM
4933over the headline of each item. While the headlines have been turned
4934into a table row, you can still change the visibility of the outline
4935tree. For example, you get a compact table by switching to CONTENTS
4936view (@kbd{S-@key{TAB} S-@key{TAB}}, or simply @kbd{c} while column view
4937is active), but you can still open, read, and edit the entry below each
4938headline. Or, you can switch to column view after executing a sparse
4939tree command and in this way get a table only for the selected items.
a7808fba 4940Column view also works in agenda buffers (@pxref{Agenda Views}) where
4009494e
GM
4941queries have collected selected items, possibly from a number of files.
4942
4943@menu
c0468714
GM
4944* Defining columns:: The COLUMNS format property
4945* Using column view:: How to create and use column view
4946* Capturing column view:: A dynamic block for column view
4009494e
GM
4947@end menu
4948
4949@node Defining columns, Using column view, Column view, Column view
a7808fba 4950@subsection Defining columns
4009494e
GM
4951@cindex column view, for properties
4952@cindex properties, column view
4953
4954Setting up a column view first requires defining the columns. This is
4955done by defining a column format line.
4956
4957@menu
c0468714
GM
4958* Scope of column definitions:: Where defined, where valid?
4959* Column attributes:: Appearance and content of a column
4009494e
GM
4960@end menu
4961
4962@node Scope of column definitions, Column attributes, Defining columns, Defining columns
4963@subsubsection Scope of column definitions
4964
4965To define a column format for an entire file, use a line like
4966
c8d0cf5c 4967@cindex #+COLUMNS
4009494e
GM
4968@example
4969#+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
4970@end example
4971
dbc28aaa
CD
4972To specify a format that only applies to a specific tree, add a
4973@code{:COLUMNS:} property to the top node of that tree, for example:
4974
4009494e
GM
4975@example
4976** Top node for columns view
4977 :PROPERTIES:
4978 :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
4979 :END:
4980@end example
4981
dbc28aaa 4982If a @code{:COLUMNS:} property is present in an entry, it defines columns
4009494e
GM
4983for the entry itself, and for the entire subtree below it. Since the
4984column definition is part of the hierarchical structure of the document,
4985you can define columns on level 1 that are general enough for all
4986sublevels, and more specific columns further down, when you edit a
4987deeper part of the tree.
4988
4989@node Column attributes, , Scope of column definitions, Defining columns
4990@subsubsection Column attributes
4991A column definition sets the attributes of a column. The general
4992definition looks like this:
4993
4994@example
c8d0cf5c 4995 %[@var{width}]@var{property}[(@var{title})][@{@var{summary-type}@}]
4009494e
GM
4996@end example
4997
4998@noindent
4999Except for the percent sign and the property name, all items are
5000optional. The individual parts have the following meaning:
5001
5002@example
c8d0cf5c 5003@var{width} @r{An integer specifying the width of the column in characters.}
72d803ad 5004 @r{If omitted, the width will be determined automatically.}
c8d0cf5c 5005@var{property} @r{The property that should be edited in this column.}
72d803ad
CD
5006 @r{Special properties representing meta data are allowed here}
5007 @r{as well (@pxref{Special properties})}
ce57c2fe 5008@var{title} @r{The header text for the column. If omitted, the property}
afe98dfa 5009 @r{name is used.}
c8d0cf5c 5010@{@var{summary-type}@} @r{The summary type. If specified, the column values for}
72d803ad
CD
5011 @r{parent nodes are computed from the children.}
5012 @r{Supported summary types are:}
5013 @{+@} @r{Sum numbers in this column.}
5014 @{+;%.1f@} @r{Like @samp{+}, but format result with @samp{%.1f}.}
5015 @{$@} @r{Currency, short for @samp{+;%.2f}.}
86fbb8ca 5016 @{:@} @r{Sum times, HH:MM, plain numbers are hours.}
72d803ad
CD
5017 @{X@} @r{Checkbox status, @samp{[X]} if all children are @samp{[X]}.}
5018 @{X/@} @r{Checkbox status, @samp{[n/m]}.}
5019 @{X%@} @r{Checkbox status, @samp{[n%]}.}
5020 @{min@} @r{Smallest number in column.}
5021 @{max@} @r{Largest number.}
5022 @{mean@} @r{Arithmetic mean of numbers.}
5023 @{:min@} @r{Smallest time value in column.}
5024 @{:max@} @r{Largest time value.}
5025 @{:mean@} @r{Arithmetic mean of time values.}
afe98dfa
CD
5026 @{@@min@} @r{Minimum age (in days/hours/mins/seconds).}
5027 @{@@max@} @r{Maximum age (in days/hours/mins/seconds).}
5028 @{@@mean@} @r{Arithmetic mean of ages (in days/hours/mins/seconds).}
5029 @{est+@} @r{Add low-high estimates.}
4009494e
GM
5030@end example
5031
5032@noindent
a351880d 5033Be aware that you can only have one summary type for any property you
ce57c2fe 5034include. Subsequent columns referencing the same property will all display the
a351880d
CD
5035same summary information.
5036
afe98dfa
CD
5037The @code{est+} summary type requires further explanation. It is used for
5038combining estimates, expressed as low-high ranges. For example, instead
5039of estimating a particular task will take 5 days, you might estimate it as
acedf35c 50405-6 days if you're fairly confident you know how much work is required, or
afe98dfa
CD
50411-10 days if you don't really know what needs to be done. Both ranges
5042average at 5.5 days, but the first represents a more predictable delivery.
5043
5044When combining a set of such estimates, simply adding the lows and highs
ce57c2fe 5045produces an unrealistically wide result. Instead, @code{est+} adds the
afe98dfa
CD
5046statistical mean and variance of the sub-tasks, generating a final estimate
5047from the sum. For example, suppose you had ten tasks, each of which was
5048estimated at 0.5 to 2 days of work. Straight addition produces an estimate
5049of 5 to 20 days, representing what to expect if everything goes either
ce57c2fe 5050extremely well or extremely poorly. In contrast, @code{est+} estimates the
afe98dfa
CD
5051full job more realistically, at 10-15 days.
5052
4009494e
GM
5053Here is an example for a complete columns definition, along with allowed
5054values.
5055
5056@example
7006d207 5057:COLUMNS: %25ITEM %9Approved(Approved?)@{X@} %Owner %11Status \@footnote{Please note that the COLUMNS definition must be on a single line---it is wrapped here only because of formatting constraints.}
c0468714 5058 %10Time_Estimate@{:@} %CLOCKSUM
4009494e
GM
5059:Owner_ALL: Tammy Mark Karl Lisa Don
5060:Status_ALL: "In progress" "Not started yet" "Finished" ""
5061:Approved_ALL: "[ ]" "[X]"
5062@end example
5063
c8d0cf5c 5064@noindent
4009494e 5065The first column, @samp{%25ITEM}, means the first 25 characters of the
ce57c2fe 5066item itself, i.e.@: of the headline. You probably always should start the
28a16a1b
CD
5067column definition with the @samp{ITEM} specifier. The other specifiers
5068create columns @samp{Owner} with a list of names as allowed values, for
4009494e
GM
5069@samp{Status} with four different possible values, and for a checkbox
5070field @samp{Approved}. When no width is given after the @samp{%}
5071character, the column will be exactly as wide as it needs to be in order
5072to fully display all values. The @samp{Approved} column does have a
5073modified title (@samp{Approved?}, with a question mark). Summaries will
dbc28aaa 5074be created for the @samp{Time_Estimate} column by adding time duration
4009494e 5075expressions like HH:MM, and for the @samp{Approved} column, by providing
dbc28aaa
CD
5076an @samp{[X]} status if all children have been checked. The
5077@samp{CLOCKSUM} column is special, it lists the sum of CLOCK intervals
5078in the subtree.
4009494e 5079
a7808fba
CD
5080@node Using column view, Capturing column view, Defining columns, Column view
5081@subsection Using column view
4009494e
GM
5082
5083@table @kbd
5084@tsubheading{Turning column view on and off}
acedf35c 5085@orgcmd{C-c C-x C-c,org-columns}
c8d0cf5c
CD
5086@vindex org-columns-default-format
5087Turn on column view. If the cursor is before the first headline in the file,
5088column view is turned on for the entire file, using the @code{#+COLUMNS}
a351880d 5089definition. If the cursor is somewhere inside the outline, this command
c8d0cf5c
CD
5090searches the hierarchy, up from point, for a @code{:COLUMNS:} property that
5091defines a format. When one is found, the column view table is established
5092for the tree starting at the entry that contains the @code{:COLUMNS:}
5093property. If no such property is found, the format is taken from the
5094@code{#+COLUMNS} line or from the variable @code{org-columns-default-format},
5095and column view is established for the current entry and its subtree.
acedf35c 5096@orgcmd{r,org-columns-redo}
a7808fba 5097Recreate the column view, to include recent changes made in the buffer.
acedf35c 5098@orgcmd{g,org-columns-redo}
28a16a1b 5099Same as @kbd{r}.
acedf35c 5100@orgcmd{q,org-columns-quit}
4009494e
GM
5101Exit column view.
5102@tsubheading{Editing values}
5103@item @key{left} @key{right} @key{up} @key{down}
5104Move through the column view from field to field.
5105@kindex S-@key{left}
5106@kindex S-@key{right}
5107@item S-@key{left}/@key{right}
5108Switch to the next/previous allowed value of the field. For this, you
5109have to have specified allowed values for a property.
b349f79f 5110@item 1..9,0
acedf35c
CD
5111Directly select the Nth allowed value, @kbd{0} selects the 10th value.
5112@orgcmdkkcc{n,p,org-columns-next-allowed-value,org-columns-previous-allowed-value}
4009494e 5113Same as @kbd{S-@key{left}/@key{right}}
acedf35c 5114@orgcmd{e,org-columns-edit-value}
4009494e
GM
5115Edit the property at point. For the special properties, this will
5116invoke the same interface that you normally use to change that
5117property. For example, when editing a TAGS property, the tag completion
5118or fast selection interface will pop up.
acedf35c 5119@orgcmd{C-c C-c,org-columns-set-tags-or-toggle}
dbc28aaa 5120When there is a checkbox at point, toggle it.
acedf35c 5121@orgcmd{v,org-columns-show-value}
4009494e
GM
5122View the full value of this property. This is useful if the width of
5123the column is smaller than that of the value.
acedf35c 5124@orgcmd{a,org-columns-edit-allowed}
4009494e
GM
5125Edit the list of allowed values for this property. If the list is found
5126in the hierarchy, the modified values is stored there. If no list is
5127found, the new value is stored in the first entry that is part of the
5128current column view.
5129@tsubheading{Modifying the table structure}
acedf35c 5130@orgcmdkkcc{<,>,org-columns-narrow,org-columns-widen}
4009494e 5131Make the column narrower/wider by one character.
acedf35c 5132@orgcmd{S-M-@key{right},org-columns-new}
864c9740 5133Insert a new column, to the left of the current column.
acedf35c 5134@orgcmd{S-M-@key{left},org-columns-delete}
4009494e
GM
5135Delete the current column.
5136@end table
5137
a7808fba
CD
5138@node Capturing column view, , Using column view, Column view
5139@subsection Capturing column view
dbc28aaa
CD
5140
5141Since column view is just an overlay over a buffer, it cannot be
5142exported or printed directly. If you want to capture a column view, use
c8d0cf5c 5143a @code{columnview} dynamic block (@pxref{Dynamic blocks}). The frame
28a16a1b 5144of this block looks like this:
dbc28aaa 5145
c8d0cf5c 5146@cindex #+BEGIN, columnview
dbc28aaa
CD
5147@example
5148* The column view
5149#+BEGIN: columnview :hlines 1 :id "label"
5150
5151#+END:
5152@end example
5153
5154@noindent This dynamic block has the following parameters:
5155
5156@table @code
5157@item :id
c8d0cf5c 5158This is the most important parameter. Column view is a feature that is
dbc28aaa 5159often localized to a certain (sub)tree, and the capture block might be
c8d0cf5c
CD
5160at a different location in the file. To identify the tree whose view to
5161capture, you can use 4 values:
5162@cindex property, ID
dbc28aaa
CD
5163@example
5164local @r{use the tree in which the capture block is located}
5165global @r{make a global view, including all headings in the file}
c8d0cf5c 5166"file:@var{path-to-file}"
55e0839d 5167 @r{run column view at the top of this file}
c8d0cf5c 5168"@var{ID}" @r{call column view in the tree that has an @code{:ID:}}
b349f79f
CD
5169 @r{property with the value @i{label}. You can use}
5170 @r{@kbd{M-x org-id-copy} to create a globally unique ID for}
5171 @r{the current entry and copy it to the kill-ring.}
dbc28aaa
CD
5172@end example
5173@item :hlines
c8d0cf5c
CD
5174When @code{t}, insert an hline after every line. When a number @var{N}, insert
5175an hline before each headline with level @code{<= @var{N}}.
dbc28aaa 5176@item :vlines
c8d0cf5c 5177When set to @code{t}, force column groups to get vertical lines.
28a16a1b
CD
5178@item :maxlevel
5179When set to a number, don't capture entries below this level.
5180@item :skip-empty-rows
c8d0cf5c 5181When set to @code{t}, skip rows where the only non-empty specifier of the
28a16a1b
CD
5182column view is @code{ITEM}.
5183
dbc28aaa
CD
5184@end table
5185
5186@noindent
5187The following commands insert or update the dynamic block:
5188
5189@table @kbd
acedf35c 5190@orgcmd{C-c C-x i,org-insert-columns-dblock}
dbc28aaa 5191Insert a dynamic block capturing a column view. You will be prompted
c8d0cf5c 5192for the scope or ID of the view.
acedf35c 5193@orgcmdkkc{C-c C-c,C-c C-x C-u,org-dblock-update}
c8d0cf5c 5194Update dynamic block at point. The cursor needs to be in the
dbc28aaa 5195@code{#+BEGIN} line of the dynamic block.
acedf35c 5196@orgcmd{C-u C-c C-x C-u,org-update-all-dblocks}
dbc28aaa 5197Update all dynamic blocks (@pxref{Dynamic blocks}). This is useful if
acedf35c
CD
5198you have several clock table blocks, column-capturing blocks or other dynamic
5199blocks in a buffer.
dbc28aaa
CD
5200@end table
5201
864c9740 5202You can add formulas to the column view table and you may add plotting
c8d0cf5c 5203instructions in front of the table---these will survive an update of the
864c9740
CD
5204block. If there is a @code{#+TBLFM:} after the table, the table will
5205actually be recalculated automatically after an update.
5206
c8d0cf5c
CD
5207An alternative way to capture and process property values into a table is
5208provided by Eric Schulte's @file{org-collector.el} which is a contributed
5209package@footnote{Contributed packages are not part of Emacs, but are
5210distributed with the main distribution of Org (visit
5211@uref{http://orgmode.org}).}. It provides a general API to collect
5212properties from entries in a certain scope, and arbitrary Lisp expressions to
5213process these values before inserting them into a table or a dynamic block.
5214
a7808fba 5215@node Property API, , Column view, Properties and Columns
4009494e
GM
5216@section The Property API
5217@cindex properties, API
5218@cindex API, for properties
5219
5220There is a full API for accessing and changing properties. This API can
5221be used by Emacs Lisp programs to work with properties and to implement
5222features based on them. For more information see @ref{Using the
5223property API}.
5224
a351880d 5225@node Dates and Times, Capture - Refile - Archive, Properties and Columns, Top
86fbb8ca 5226@chapter Dates and times
dbc28aaa
CD
5227@cindex dates
5228@cindex times
c8d0cf5c
CD
5229@cindex timestamp
5230@cindex date stamp
4009494e 5231
dbc28aaa
CD
5232To assist project planning, TODO items can be labeled with a date and/or
5233a time. The specially formatted string carrying the date and time
86fbb8ca 5234information is called a @emph{timestamp} in Org-mode. This may be a
dbc28aaa 5235little confusing because timestamp is often used as indicating when
86fbb8ca 5236something was created or last changed. However, in Org-mode this term
dbc28aaa 5237is used in a much wider sense.
4009494e
GM
5238
5239@menu
c0468714
GM
5240* Timestamps:: Assigning a time to a tree entry
5241* Creating timestamps:: Commands which insert timestamps
5242* Deadlines and scheduling:: Planning your work
5243* Clocking work time:: Tracking how long you spend on a task
c0468714
GM
5244* Effort estimates:: Planning work effort in advance
5245* Relative timer:: Notes with a running timer
afe98dfa 5246* Countdown timer:: Starting a countdown timer for a task
4009494e
GM
5247@end menu
5248
5249
a7808fba 5250@node Timestamps, Creating timestamps, Dates and Times, Dates and Times
c8d0cf5c
CD
5251@section Timestamps, deadlines, and scheduling
5252@cindex timestamps
4009494e
GM
5253@cindex ranges, time
5254@cindex date stamps
5255@cindex deadlines
5256@cindex scheduling
5257
7006d207
CD
5258A timestamp is a specification of a date (possibly with a time or a range of
5259times) in a special format, either @samp{<2003-09-16 Tue>} or
4009494e 5260@samp{<2003-09-16 Tue 09:39>} or @samp{<2003-09-16 Tue
ed21c5c8 526112:00-12:30>}@footnote{This is inspired by the standard ISO 8601 date/time
7006d207
CD
5262format. To use an alternative format, see @ref{Custom time format}.}. A
5263timestamp can appear anywhere in the headline or body of an Org tree entry.
5264Its presence causes entries to be shown on specific dates in the agenda
a7808fba 5265(@pxref{Weekly/daily agenda}). We distinguish:
4009494e
GM
5266
5267@table @var
c8d0cf5c 5268@item Plain timestamp; Event; Appointment
4009494e 5269@cindex timestamp
c8d0cf5c 5270A simple timestamp just assigns a date/time to an item. This is just
dbc28aaa
CD
5271like writing down an appointment or event in a paper agenda. In the
5272timeline and agenda displays, the headline of an entry associated with a
c8d0cf5c 5273plain timestamp will be shown exactly on that date.
4009494e
GM
5274
5275@example
5276* Meet Peter at the movies <2006-11-01 Wed 19:15>
5277* Discussion on climate change <2006-11-02 Thu 20:00-22:00>
5278@end example
5279
c8d0cf5c 5280@item Timestamp with repeater interval
4009494e 5281@cindex timestamp, with repeater interval
c8d0cf5c 5282A timestamp may contain a @emph{repeater interval}, indicating that it
4009494e 5283applies not only on the given date, but again and again after a certain
c8d0cf5c 5284interval of N days (d), weeks (w), months (m), or years (y). The
4009494e
GM
5285following will show up in the agenda every Wednesday:
5286
5287@example
5288* Pick up Sam at school <2007-05-16 Wed 12:30 +1w>
5289@end example
5290
5291@item Diary-style sexp entries
ce57c2fe
BG
5292For more complex date specifications, Org-mode supports using the special
5293sexp diary entries implemented in the Emacs calendar/diary
5294package@footnote{When working with the standard diary sexp functions, you
5295need to be very careful with the order of the arguments. That order depend
5296evilly on the variable @code{calendar-date-style} (or, for older Emacs
5297versions, @code{european-calendar-style}). For example, to specify a date
5298December 12, 2005, the call might look like @code{(diary-date 12 1 2005)} or
5299@code{(diary-date 1 12 2005)} or @code{(diary-date 2005 12 1)}, depending on
5300the settings. This has been the source of much confusion. Org-mode users
5301can resort to special versions of these functions like @code{org-date} or
5302@code{org-anniversary}. These work just like the corresponding @code{diary-}
5303functions, but with stable ISO order of arguments (year, month, day) wherever
5304applicable, independent of the value of @code{calendar-date-style}.}. For example
4009494e
GM
5305
5306@example
5307* The nerd meeting on every 2nd Thursday of the month
ce57c2fe 5308 <%%(org-float t 4 2)>
4009494e
GM
5309@end example
5310
5311@item Time/Date range
5312@cindex timerange
5313@cindex date range
c8d0cf5c 5314Two timestamps connected by @samp{--} denote a range. The headline
4009494e
GM
5315will be shown on the first and last day of the range, and on any dates
5316that are displayed and fall in the range. Here is an example:
5317
5318@example
5319** Meeting in Amsterdam
5320 <2004-08-23 Mon>--<2004-08-26 Thu>
5321@end example
5322
c8d0cf5c 5323@item Inactive timestamp
4009494e
GM
5324@cindex timestamp, inactive
5325@cindex inactive timestamp
c8d0cf5c
CD
5326Just like a plain timestamp, but with square brackets instead of
5327angular ones. These timestamps are inactive in the sense that they do
4009494e
GM
5328@emph{not} trigger an entry to show up in the agenda.
5329
5330@example
5331* Gillian comes late for the fifth time [2006-11-01 Wed]
5332@end example
5333
5334@end table
5335
a7808fba 5336@node Creating timestamps, Deadlines and scheduling, Timestamps, Dates and Times
4009494e
GM
5337@section Creating timestamps
5338@cindex creating timestamps
5339@cindex timestamps, creating
5340
86fbb8ca 5341For Org-mode to recognize timestamps, they need to be in the specific
c8d0cf5c 5342format. All commands listed below produce timestamps in the correct
4009494e
GM
5343format.
5344
5345@table @kbd
afe98dfa 5346@orgcmd{C-c .,org-time-stamp}
c8d0cf5c
CD
5347Prompt for a date and insert a corresponding timestamp. When the cursor is
5348at an existing timestamp in the buffer, the command is used to modify this
864c9740
CD
5349timestamp instead of inserting a new one. When this command is used twice in
5350succession, a time range is inserted.
4009494e 5351@c
afe98dfa 5352@orgcmd{C-c !,org-time-stamp-inactive}
c8d0cf5c 5353Like @kbd{C-c .}, but insert an inactive timestamp that will not cause
4009494e
GM
5354an agenda entry.
5355@c
c8d0cf5c
CD
5356@kindex C-u C-c .
5357@kindex C-u C-c !
5358@item C-u C-c .
5359@itemx C-u C-c !
5360@vindex org-time-stamp-rounding-minutes
5361Like @kbd{C-c .} and @kbd{C-c !}, but use the alternative format which
5362contains date and time. The default time can be rounded to multiples of 5
5363minutes, see the option @code{org-time-stamp-rounding-minutes}.
5364@c
afe98dfa 5365@orgcmd{C-c <,org-date-from-calendar}
c8d0cf5c 5366Insert a timestamp corresponding to the cursor date in the Calendar.
4009494e 5367@c
afe98dfa 5368@orgcmd{C-c >,org-goto-calendar}
4009494e 5369Access the Emacs calendar for the current date. If there is a
a7808fba 5370timestamp in the current line, go to the corresponding date
4009494e
GM
5371instead.
5372@c
afe98dfa 5373@orgcmd{C-c C-o,org-open-at-point}
c8d0cf5c 5374Access the agenda for the date given by the timestamp or -range at
a7808fba 5375point (@pxref{Weekly/daily agenda}).
4009494e 5376@c
acedf35c 5377@orgcmdkkcc{S-@key{left},S-@key{right},org-timestamp-down-day,org-timestamp-up-day}
4009494e 5378Change date at cursor by one day. These key bindings conflict with
c8d0cf5c 5379shift-selection and related modes (@pxref{Conflicts}).
4009494e 5380@c
acedf35c 5381@orgcmdkkcc{S-@key{up},S-@key{down},org-timestamp-up,org-timestamp-down-down}
4009494e 5382Change the item under the cursor in a timestamp. The cursor can be on a
c8d0cf5c
CD
5383year, month, day, hour or minute. When the timestamp contains a time range
5384like @samp{15:30-16:30}, modifying the first time will also shift the second,
5385shifting the time block with constant length. To change the length, modify
5386the second time. Note that if the cursor is in a headline and not at a
5387timestamp, these same keys modify the priority of an item.
ce57c2fe 5388(@pxref{Priorities}). The key bindings also conflict with shift-selection and
c8d0cf5c 5389related modes (@pxref{Conflicts}).
4009494e 5390@c
acedf35c 5391@orgcmd{C-c C-y,org-evaluate-time-range}
4009494e 5392@cindex evaluate time range
a7808fba
CD
5393Evaluate a time range by computing the difference between start and end.
5394With a prefix argument, insert result after the time range (in a table: into
5395the following column).
4009494e
GM
5396@end table
5397
5398
5399@menu
c0468714
GM
5400* The date/time prompt:: How Org-mode helps you entering date and time
5401* Custom time format:: Making dates look different
4009494e
GM
5402@end menu
5403
5404@node The date/time prompt, Custom time format, Creating timestamps, Creating timestamps
5405@subsection The date/time prompt
5406@cindex date, reading in minibuffer
5407@cindex time, reading in minibuffer
5408
c8d0cf5c 5409@vindex org-read-date-prefer-future
86fbb8ca 5410When Org-mode prompts for a date/time, the default is shown in default
7006d207
CD
5411date/time format, and the prompt therefore seems to ask for a specific
5412format. But it will in fact accept any string containing some date and/or
5413time information, and it is really smart about interpreting your input. You
dbc28aaa 5414can, for example, use @kbd{C-y} to paste a (possibly multi-line) string
86fbb8ca 5415copied from an email message. Org-mode will find whatever information is in
7006d207
CD
5416there and derive anything you have not specified from the @emph{default date
5417and time}. The default is usually the current date and time, but when
5418modifying an existing timestamp, or when entering the second stamp of a
5419range, it is taken from the stamp in the buffer. When filling in
86fbb8ca 5420information, Org-mode assumes that most of the time you will want to enter a
7006d207
CD
5421date in the future: if you omit the month/year and the given day/month is
5422@i{before} today, it will assume that you mean a future date@footnote{See the
a351880d
CD
5423variable @code{org-read-date-prefer-future}. You may set that variable to
5424the symbol @code{time} to even make a time before now shift the date to
5425tomorrow.}. If the date has been automatically shifted into the future, the
5426time prompt will show this with @samp{(=>F).}
dbc28aaa 5427
07450bee 5428For example, let's assume that today is @b{June 13, 2006}. Here is how
86fbb8ca 5429various inputs will be interpreted, the items filled in by Org-mode are
dbc28aaa
CD
5430in @b{bold}.
5431
5432@example
ce57c2fe
BG
54333-2-5 @result{} 2003-02-05
54342/5/3 @result{} 2003-02-05
543514 @result{} @b{2006}-@b{06}-14
543612 @result{} @b{2006}-@b{07}-12
54372/5 @result{} @b{2007}-02-05
5438Fri @result{} nearest Friday (default date or later)
5439sep 15 @result{} @b{2006}-09-15
5440feb 15 @result{} @b{2007}-02-15
5441sep 12 9 @result{} 2009-09-12
544212:45 @result{} @b{2006}-@b{06}-@b{13} 12:45
544322 sept 0:34 @result{} @b{2006}-09-22 0:34
5444w4 @result{} ISO week for of the current year @b{2006}
54452012 w4 fri @result{} Friday of ISO week 4 in 2012
54462012-w04-5 @result{} Same as above
dbc28aaa
CD
5447@end example
5448
5449Furthermore you can specify a relative date by giving, as the
5450@emph{first} thing in the input: a plus/minus sign, a number and a
c8d0cf5c 5451letter ([dwmy]) to indicate change in days, weeks, months, or years. With a
dbc28aaa
CD
5452single plus or minus, the date is always relative to today. With a
5453double plus or minus, it is relative to the default date. If instead of
5454a single letter, you use the abbreviation of day name, the date will be
ce57c2fe 5455the Nth such day, e.g.@:
dbc28aaa
CD
5456
5457@example
ce57c2fe
BG
5458+0 @result{} today
5459. @result{} today
5460+4d @result{} four days from today
5461+4 @result{} same as above
5462+2w @result{} two weeks from today
5463++5 @result{} five days from default date
5464+2tue @result{} second Tuesday from now.
4009494e
GM
5465@end example
5466
c8d0cf5c
CD
5467@vindex parse-time-months
5468@vindex parse-time-weekdays
4009494e
GM
5469The function understands English month and weekday abbreviations. If
5470you want to use unabbreviated names and/or other languages, configure
5471the variables @code{parse-time-months} and @code{parse-time-weekdays}.
5472
ce57c2fe
BG
5473@vindex org-read-date-force-compatible-dates
5474Not all dates can be represented in a given Emacs implementation. By default
5475Org mode forces dates into the compatibility range 1970--2037 which works on
5476all Emacs implementations. If you want to use dates outside of this range,
5477read the docstring of the variable
5478@code{org-read-date-force-compatible-dates}.
5479
afe98dfa 5480You can specify a time range by giving start and end times or by giving a
ce57c2fe
BG
5481start time and a duration (in HH:MM format). Use one or two dash(es) as the
5482separator in the former case and use '+' as the separator in the latter
5483case, e.g.@:
afe98dfa
CD
5484
5485@example
ce57c2fe
BG
548611am-1:15pm @result{} 11:00-13:15
548711am--1:15pm @result{} same as above
548811am+2:15 @result{} same as above
afe98dfa
CD
5489@end example
5490
4009494e 5491@cindex calendar, for selecting date
c8d0cf5c 5492@vindex org-popup-calendar-for-date-prompt
4009494e
GM
5493Parallel to the minibuffer prompt, a calendar is popped up@footnote{If
5494you don't need/want the calendar, configure the variable
5495@code{org-popup-calendar-for-date-prompt}.}. When you exit the date
5496prompt, either by clicking on a date in the calendar, or by pressing
5497@key{RET}, the date selected in the calendar will be combined with the
5498information entered at the prompt. You can control the calendar fully
5499from the minibuffer:
5500
4009494e 5501@kindex <
4009494e 5502@kindex >
86fbb8ca
CD
5503@kindex M-v
5504@kindex C-v
4009494e 5505@kindex mouse-1
4009494e 5506@kindex S-@key{right}
4009494e 5507@kindex S-@key{left}
4009494e 5508@kindex S-@key{down}
4009494e 5509@kindex S-@key{up}
4009494e 5510@kindex M-S-@key{right}
4009494e 5511@kindex M-S-@key{left}
4009494e 5512@kindex @key{RET}
dbc28aaa 5513@example
86fbb8ca 5514@key{RET} @r{Choose date at cursor in calendar.}
dbc28aaa
CD
5515mouse-1 @r{Select date by clicking on it.}
5516S-@key{right}/@key{left} @r{One day forward/backward.}
5517S-@key{down}/@key{up} @r{One week forward/backward.}
5518M-S-@key{right}/@key{left} @r{One month forward/backward.}
86fbb8ca
CD
5519> / < @r{Scroll calendar forward/backward by one month.}
5520M-v / C-v @r{Scroll calendar forward/backward by 3 months.}
dbc28aaa
CD
5521@end example
5522
c8d0cf5c 5523@vindex org-read-date-display-live
a7808fba
CD
5524The actions of the date/time prompt may seem complex, but I assure you they
5525will grow on you, and you will start getting annoyed by pretty much any other
5526way of entering a date/time out there. To help you understand what is going
5527on, the current interpretation of your input will be displayed live in the
5528minibuffer@footnote{If you find this distracting, turn the display of with
5529@code{org-read-date-display-live}.}.
4009494e
GM
5530
5531@node Custom time format, , The date/time prompt, Creating timestamps
5532@subsection Custom time format
5533@cindex custom date/time format
5534@cindex time format, custom
5535@cindex date format, custom
5536
c8d0cf5c
CD
5537@vindex org-display-custom-times
5538@vindex org-time-stamp-custom-formats
86fbb8ca 5539Org-mode uses the standard ISO notation for dates and times as it is
4009494e
GM
5540defined in ISO 8601. If you cannot get used to this and require another
5541representation of date and time to keep you happy, you can get it by
5542customizing the variables @code{org-display-custom-times} and
5543@code{org-time-stamp-custom-formats}.
5544
5545@table @kbd
acedf35c 5546@orgcmd{C-c C-x C-t,org-toggle-time-stamp-overlays}
4009494e
GM
5547Toggle the display of custom formats for dates and times.
5548@end table
5549
5550@noindent
86fbb8ca 5551Org-mode needs the default format for scanning, so the custom date/time
c8d0cf5c 5552format does not @emph{replace} the default format---instead it is put
4009494e
GM
5553@emph{over} the default format using text properties. This has the
5554following consequences:
5555@itemize @bullet
28a16a1b 5556@item
c8d0cf5c 5557You cannot place the cursor onto a timestamp anymore, only before or
4009494e
GM
5558after.
5559@item
5560The @kbd{S-@key{up}/@key{down}} keys can no longer be used to adjust
c8d0cf5c 5561each component of a timestamp. If the cursor is at the beginning of
4009494e
GM
5562the stamp, @kbd{S-@key{up}/@key{down}} will change the stamp by one day,
5563just like @kbd{S-@key{left}/@key{right}}. At the end of the stamp, the
5564time will be changed by one minute.
5565@item
c8d0cf5c 5566If the timestamp contains a range of clock times or a repeater, these
acedf35c 5567will not be overlaid, but remain in the buffer as they were.
4009494e 5568@item
c8d0cf5c 5569When you delete a timestamp character-by-character, it will only
4009494e
GM
5570disappear from the buffer after @emph{all} (invisible) characters
5571belonging to the ISO timestamp have been removed.
5572@item
c8d0cf5c 5573If the custom timestamp format is longer than the default and you are
4009494e
GM
5574using dates in tables, table alignment will be messed up. If the custom
5575format is shorter, things do work as expected.
5576@end itemize
5577
5578
a7808fba
CD
5579@node Deadlines and scheduling, Clocking work time, Creating timestamps, Dates and Times
5580@section Deadlines and scheduling
4009494e 5581
c8d0cf5c 5582A timestamp may be preceded by special keywords to facilitate planning:
4009494e
GM
5583
5584@table @var
5585@item DEADLINE
5586@cindex DEADLINE keyword
dbc28aaa
CD
5587
5588Meaning: the task (most likely a TODO item, though not necessarily) is supposed
5589to be finished on that date.
5590
c8d0cf5c 5591@vindex org-deadline-warning-days
dbc28aaa
CD
5592On the deadline date, the task will be listed in the agenda. In
5593addition, the agenda for @emph{today} will carry a warning about the
5594approaching or missed deadline, starting
5595@code{org-deadline-warning-days} before the due date, and continuing
5596until the entry is marked DONE. An example:
4009494e
GM
5597
5598@example
5599*** TODO write article about the Earth for the Guide
5600 The editor in charge is [[bbdb:Ford Prefect]]
5601 DEADLINE: <2004-02-29 Sun>
5602@end example
5603
5604You can specify a different lead time for warnings for a specific
5605deadlines using the following syntax. Here is an example with a warning
5606period of 5 days @code{DEADLINE: <2004-02-29 Sun -5d>}.
5607
5608@item SCHEDULED
5609@cindex SCHEDULED keyword
dbc28aaa
CD
5610
5611Meaning: you are planning to start working on that task on the given
5612date.
5613
c8d0cf5c 5614@vindex org-agenda-skip-scheduled-if-done
dbc28aaa
CD
5615The headline will be listed under the given date@footnote{It will still
5616be listed on that date after it has been marked DONE. If you don't like
4009494e
GM
5617this, set the variable @code{org-agenda-skip-scheduled-if-done}.}. In
5618addition, a reminder that the scheduled date has passed will be present
ce57c2fe 5619in the compilation for @emph{today}, until the entry is marked DONE, i.e.@:
acedf35c 5620the task will automatically be forwarded until completed.
4009494e
GM
5621
5622@example
5623*** TODO Call Trillian for a date on New Years Eve.
5624 SCHEDULED: <2004-12-25 Sat>
5625@end example
dbc28aaa
CD
5626
5627@noindent
86fbb8ca 5628@b{Important:} Scheduling an item in Org-mode should @i{not} be
dbc28aaa
CD
5629understood in the same way that we understand @i{scheduling a meeting}.
5630Setting a date for a meeting is just a simple appointment, you should
c8d0cf5c
CD
5631mark this entry with a simple plain timestamp, to get this item shown
5632on the date where it applies. This is a frequent misunderstanding by
86fbb8ca 5633Org users. In Org-mode, @i{scheduling} means setting a date when you
dbc28aaa 5634want to start working on an action item.
4009494e
GM
5635@end table
5636
c8d0cf5c 5637You may use timestamps with repeaters in scheduling and deadline
86fbb8ca 5638entries. Org-mode will issue early and late warnings based on the
c8d0cf5c 5639assumption that the timestamp represents the @i{nearest instance} of
dbc28aaa
CD
5640the repeater. However, the use of diary sexp entries like
5641@c
ce57c2fe 5642@code{<%%(org-float t 42)>}
dbc28aaa 5643@c
86fbb8ca 5644in scheduling and deadline timestamps is limited. Org-mode does not
dbc28aaa
CD
5645know enough about the internals of each sexp function to issue early and
5646late warnings. However, it will show the item on each day where the
5647sexp entry matches.
5648
4009494e 5649@menu
c0468714
GM
5650* Inserting deadline/schedule:: Planning items
5651* Repeated tasks:: Items that show up again and again
4009494e
GM
5652@end menu
5653
5654@node Inserting deadline/schedule, Repeated tasks, Deadlines and scheduling, Deadlines and scheduling
a7808fba 5655@subsection Inserting deadlines or schedules
4009494e 5656
ce57c2fe
BG
5657The following commands allow you to quickly insert@footnote{The @samp{SCHEDULED} and
5658@samp{DEADLINE} dates are inserted on the line right below the headline. Don't put
5659any text between this line and the headline.} a deadline or to schedule
4009494e
GM
5660an item:
5661
5662@table @kbd
5663@c
acedf35c 5664@orgcmd{C-c C-d,org-deadline}
a351880d 5665Insert @samp{DEADLINE} keyword along with a stamp. The insertion will happen
ce57c2fe 5666in the line directly following the headline. Any CLOSED timestamp will be
91af3942 5667removed. When called with a prefix arg, an existing deadline will be removed
ce57c2fe 5668from the entry. Depending on the variable @code{org-log-redeadline}@footnote{with corresponding
a351880d
CD
5669@code{#+STARTUP} keywords @code{logredeadline}, @code{lognoteredeadline},
5670and @code{nologredeadline}}, a note will be taken when changing an existing
5671deadline.
ce57c2fe 5672
acedf35c 5673@orgcmd{C-c C-s,org-schedule}
4009494e 5674Insert @samp{SCHEDULED} keyword along with a stamp. The insertion will
a351880d
CD
5675happen in the line directly following the headline. Any CLOSED timestamp
5676will be removed. When called with a prefix argument, remove the scheduling
5677date from the entry. Depending on the variable
5678@code{org-log-reschedule}@footnote{with corresponding @code{#+STARTUP}
ce57c2fe
BG
5679keywords @code{logreschedule}, @code{lognotereschedule}, and
5680@code{nologreschedule}}, a note will be taken when changing an existing
a351880d 5681scheduling time.
b349f79f 5682@c
acedf35c 5683@orgcmd{C-c C-x C-k,org-mark-entry-for-agenda-action}
b349f79f
CD
5684@kindex k a
5685@kindex k s
b349f79f
CD
5686Mark the current entry for agenda action. After you have marked the entry
5687like this, you can open the agenda or the calendar to find an appropriate
5688date. With the cursor on the selected date, press @kbd{k s} or @kbd{k d} to
5689schedule the marked item.
c8d0cf5c 5690@c
acedf35c 5691@orgcmd{C-c / d,org-check-deadlines}
c8d0cf5c 5692@cindex sparse tree, for deadlines
c8d0cf5c
CD
5693@vindex org-deadline-warning-days
5694Create a sparse tree with all deadlines that are either past-due, or
5695which will become due within @code{org-deadline-warning-days}.
5696With @kbd{C-u} prefix, show all deadlines in the file. With a numeric
5697prefix, check that many days. For example, @kbd{C-1 C-c / d} shows
5698all deadlines due tomorrow.
5699@c
acedf35c 5700@orgcmd{C-c / b,org-check-before-date}
c8d0cf5c
CD
5701Sparse tree for deadlines and scheduled items before a given date.
5702@c
acedf35c 5703@orgcmd{C-c / a,org-check-after-date}
c8d0cf5c 5704Sparse tree for deadlines and scheduled items after a given date.
4009494e
GM
5705@end table
5706
ce57c2fe
BG
5707Note that @code{org-schedule} and @code{org-deadline} supports
5708setting the date by indicating a relative time: e.g. +1d will set
5709the date to the next day after today, and --1w will set the date
5710to the previous week before any current timestamp.
5711
4009494e 5712@node Repeated tasks, , Inserting deadline/schedule, Deadlines and scheduling
a7808fba 5713@subsection Repeated tasks
c8d0cf5c
CD
5714@cindex tasks, repeated
5715@cindex repeated tasks
4009494e 5716
86fbb8ca 5717Some tasks need to be repeated again and again. Org-mode helps to
28a16a1b 5718organize such tasks using a so-called repeater in a DEADLINE, SCHEDULED,
c8d0cf5c 5719or plain timestamp. In the following example
4009494e
GM
5720@example
5721** TODO Pay the rent
5722 DEADLINE: <2005-10-01 Sat +1m>
5723@end example
c8d0cf5c
CD
5724@noindent
5725the @code{+1m} is a repeater; the intended interpretation is that the task
5726has a deadline on <2005-10-01> and repeats itself every (one) month starting
5727from that time. If you need both a repeater and a special warning period in
5728a deadline entry, the repeater should come first and the warning period last:
5729@code{DEADLINE: <2005-10-01 Sat +1m -3d>}.
4009494e 5730
86fbb8ca
CD
5731@vindex org-todo-repeat-to-state
5732Deadlines and scheduled items produce entries in the agenda when they are
5733over-due, so it is important to be able to mark such an entry as completed
5734once you have done so. When you mark a DEADLINE or a SCHEDULE with the TODO
5735keyword DONE, it will no longer produce entries in the agenda. The problem
5736with this is, however, that then also the @emph{next} instance of the
5737repeated entry will not be active. Org-mode deals with this in the following
5738way: When you try to mark such an entry DONE (using @kbd{C-c C-t}), it will
5739shift the base date of the repeating timestamp by the repeater interval, and
5740immediately set the entry state back to TODO@footnote{In fact, the target
5741state is taken from, in this sequence, the @code{REPEAT_TO_STATE} property or
5742the variable @code{org-todo-repeat-to-state}. If neither of these is
5743specified, the target state defaults to the first state of the TODO state
5744sequence.}. In the example above, setting the state to DONE would actually
5745switch the date like this:
4009494e
GM
5746
5747@example
5748** TODO Pay the rent
5749 DEADLINE: <2005-11-01 Tue +1m>
5750@end example
5751
c8d0cf5c 5752@vindex org-log-repeat
a7808fba
CD
5753A timestamp@footnote{You can change this using the option
5754@code{org-log-repeat}, or the @code{#+STARTUP} options @code{logrepeat},
5755@code{lognoterepeat}, and @code{nologrepeat}. With @code{lognoterepeat}, you
a50253cc 5756will also be prompted for a note.} will be added under the deadline, to keep
a7808fba 5757a record that you actually acted on the previous instance of this deadline.
4009494e
GM
5758
5759As a consequence of shifting the base date, this entry will no longer be
5760visible in the agenda when checking past dates, but all future instances
5761will be visible.
5762
28a16a1b 5763With the @samp{+1m} cookie, the date shift will always be exactly one
c8d0cf5c 5764month. So if you have not paid the rent for three months, marking this
28a16a1b
CD
5765entry DONE will still keep it as an overdue deadline. Depending on the
5766task, this may not be the best way to handle it. For example, if you
acedf35c 5767forgot to call your father for 3 weeks, it does not make sense to call
a7808fba 5768him 3 times in a single day to make up for it. Finally, there are tasks
28a16a1b 5769like changing batteries which should always repeat a certain time
86fbb8ca 5770@i{after} the last time you did it. For these tasks, Org-mode has
acedf35c 5771special repeaters @samp{++} and @samp{.+}. For example:
28a16a1b
CD
5772
5773@example
5774** TODO Call Father
5775 DEADLINE: <2008-02-10 Sun ++1w>
5776 Marking this DONE will shift the date by at least one week,
5777 but also by as many weeks as it takes to get this date into
5778 the future. However, it stays on a Sunday, even if you called
5779 and marked it done on Saturday.
5780** TODO Check the batteries in the smoke detectors
5781 DEADLINE: <2005-11-01 Tue .+1m>
5782 Marking this DONE will shift the date to one month after
5783 today.
5784@end example
5785
4009494e 5786You may have both scheduling and deadline information for a specific
c8d0cf5c
CD
5787task---just make sure that the repeater intervals on both are the same.
5788
5789An alternative to using a repeater is to create a number of copies of a task
5790subtree, with dates shifted in each copy. The command @kbd{C-c C-x c} was
5791created for this purpose, it is described in @ref{Structure editing}.
5792
4009494e 5793
acedf35c 5794@node Clocking work time, Effort estimates, Deadlines and scheduling, Dates and Times
dbc28aaa 5795@section Clocking work time
acedf35c
CD
5796@cindex clocking time
5797@cindex time clocking
4009494e 5798
86fbb8ca 5799Org-mode allows you to clock the time you spend on specific tasks in a
4009494e
GM
5800project. When you start working on an item, you can start the clock.
5801When you stop working on that task, or when you mark the task done, the
5802clock is stopped and the corresponding time interval is recorded. It
a351880d
CD
5803also computes the total time spent on each subtree of a project. And it
5804remembers a history or tasks recently clocked, to that you can jump quickly
5805between a number of tasks absorbing your time.
c8d0cf5c 5806
a351880d 5807To save the clock history across Emacs sessions, use
c8d0cf5c 5808@lisp
a351880d 5809(setq org-clock-persist 'history)
c8d0cf5c
CD
5810(org-clock-persistence-insinuate)
5811@end lisp
a351880d
CD
5812When you clock into a new task after resuming Emacs, the incomplete
5813clock@footnote{To resume the clock under the assumption that you have worked
5814on this task while outside Emacs, use @code{(setq org-clock-persist t)}.}
5815will be found (@pxref{Resolving idle time}) and you will be prompted about
5816what to do with it.
c8d0cf5c 5817
acedf35c
CD
5818@menu
5819* Clocking commands:: Starting and stopping a clock
5820* The clock table:: Detailed reports
5821* Resolving idle time:: Resolving time when you've been idle
5822@end menu
5823
5824@node Clocking commands, The clock table, Clocking work time, Clocking work time
5825@subsection Clocking commands
5826
4009494e 5827@table @kbd
acedf35c 5828@orgcmd{C-c C-x C-i,org-clock-in}
c8d0cf5c 5829@vindex org-clock-into-drawer
ce57c2fe 5830@cindex property, LOG_INTO_DRAWER
4009494e 5831Start the clock on the current item (clock-in). This inserts the CLOCK
dbc28aaa
CD
5832keyword together with a timestamp. If this is not the first clocking of
5833this item, the multiple CLOCK lines will be wrapped into a
c8d0cf5c 5834@code{:LOGBOOK:} drawer (see also the variable
ce57c2fe
BG
5835@code{org-clock-into-drawer}). You can also overrule
5836the setting of this variable for a subtree by setting a
5837@code{CLOCK_INTO_DRAWER} or @code{LOG_INTO_DRAWER} property.
5838When called with a @kbd{C-u} prefix argument,
a7808fba
CD
5839select the task from a list of recently clocked tasks. With two @kbd{C-u
5840C-u} prefixes, clock into the task at point and mark it as the default task.
5841The default task will always be available when selecting a clocking task,
c8d0cf5c
CD
5842with letter @kbd{d}.@*
5843@cindex property: CLOCK_MODELINE_TOTAL
5844@cindex property: LAST_REPEAT
5845@vindex org-clock-modeline-total
5846While the clock is running, the current clocking time is shown in the mode
5847line, along with the title of the task. The clock time shown will be all
5848time ever clocked for this task and its children. If the task has an effort
5849estimate (@pxref{Effort estimates}), the mode line displays the current
5850clocking time against it@footnote{To add an effort estimate ``on the fly'',
5851hook a function doing this to @code{org-clock-in-prepare-hook}.} If the task
5852is a repeating one (@pxref{Repeated tasks}), only the time since the last
5853reset of the task @footnote{as recorded by the @code{LAST_REPEAT} property}
5854will be shown. More control over what time is shown can be exercised with
5855the @code{CLOCK_MODELINE_TOTAL} property. It may have the values
5856@code{current} to show only the current clocking instance, @code{today} to
5857show all time clocked on this tasks today (see also the variable
5858@code{org-extend-today-until}), @code{all} to include all time, or
5859@code{auto} which is the default@footnote{See also the variable
5860@code{org-clock-modeline-total}.}.@* Clicking with @kbd{mouse-1} onto the
5861mode line entry will pop up a menu with clocking options.
acedf35c
CD
5862@c
5863@orgcmd{C-c C-x C-o,org-clock-out}
c8d0cf5c 5864@vindex org-log-note-clock-out
a20d3598 5865Stop the clock (clock-out). This inserts another timestamp at the same
4009494e
GM
5866location where the clock was last started. It also directly computes
5867the resulting time in inserts it after the time range as @samp{=>
28a16a1b
CD
5868HH:MM}. See the variable @code{org-log-note-clock-out} for the
5869possibility to record an additional note together with the clock-out
c8d0cf5c 5870timestamp@footnote{The corresponding in-buffer setting is:
28a16a1b 5871@code{#+STARTUP: lognoteclock-out}}.
acedf35c 5872@orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
c8d0cf5c 5873Update the effort estimate for the current clock task.
4009494e 5874@kindex C-c C-y
c8d0cf5c 5875@kindex C-c C-c
acedf35c 5876@orgcmdkkc{C-c C-c,C-c C-y,org-evaluate-time-range}
c8d0cf5c
CD
5877Recompute the time interval after changing one of the timestamps. This
5878is only necessary if you edit the timestamps directly. If you change
4009494e 5879them with @kbd{S-@key{cursor}} keys, the update is automatic.
ce57c2fe
BG
5880@orgcmd{C-S-@key{up/down},org-clock-timestamps-up/down}
5881On @code{CLOCK} log lines, increase/decrease both timestamps at the same
5882time so that duration keeps the same.
acedf35c 5883@orgcmd{C-c C-t,org-todo}
4009494e
GM
5884Changing the TODO state of an item to DONE automatically stops the clock
5885if it is running in this same item.
acedf35c 5886@orgcmd{C-c C-x C-x,org-clock-cancel}
4009494e
GM
5887Cancel the current clock. This is useful if a clock was started by
5888mistake, or if you ended up working on something else.
acedf35c 5889@orgcmd{C-c C-x C-j,org-clock-goto}
afe98dfa
CD
5890Jump to the headline of the currently clocked in task. With a @kbd{C-u}
5891prefix arg, select the target task from a list of recently clocked tasks.
acedf35c 5892@orgcmd{C-c C-x C-d,org-clock-display}
c8d0cf5c 5893@vindex org-remove-highlights-with-change
ce57c2fe
BG
5894Display time summaries for each subtree in the current buffer. This puts
5895overlays at the end of each headline, showing the total time recorded under
5896that heading, including the time of any subheadings. You can use visibility
5897cycling to study the tree, but the overlays disappear when you change the
5898buffer (see variable @code{org-remove-highlights-with-change}) or press
5899@kbd{C-c C-c}.
acedf35c
CD
5900@end table
5901
5902The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
5903the agenda (@pxref{Weekly/daily agenda}) to show which tasks have been
5904worked on or closed during a day.
5905
5906@node The clock table, Resolving idle time, Clocking commands, Clocking work time
5907@subsection The clock table
5908@cindex clocktable, dynamic block
5909@cindex report, of clocked time
5910
5911Org mode can produce quite complex reports based on the time clocking
5912information. Such a report is called a @emph{clock table}, because it is
5913formatted as one or several Org tables.
5914
5915@table @kbd
5916@orgcmd{C-c C-x C-r,org-clock-report}
4009494e 5917Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
c8d0cf5c 5918report as an Org-mode table into the current file. When the cursor is
dbc28aaa
CD
5919at an existing clock table, just update it. When called with a prefix
5920argument, jump to the first clock report in the current document and
5921update it.
acedf35c
CD
5922@orgcmdkkc{C-c C-c,C-c C-x C-u,org-dblock-update}
5923Update dynamic block at point. The cursor needs to be in the
5924@code{#+BEGIN} line of the dynamic block.
5925@orgkey{C-u C-c C-x C-u}
5926Update all dynamic blocks (@pxref{Dynamic blocks}). This is useful if
5927you have several clock table blocks in a buffer.
5928@orgcmdkxkc{S-@key{left},S-@key{right},org-clocktable-try-shift}
5929Shift the current @code{:block} interval and update the table. The cursor
5930needs to be in the @code{#+BEGIN: clocktable} line for this command. If
5931@code{:block} is @code{today}, it will be shifted to @code{today-1} etc.
5932@end table
5933
5934
5935Here is an example of the frame for a clock table as it is inserted into the
5936buffer with the @kbd{C-c C-x C-r} command:
5937
c8d0cf5c 5938@cindex #+BEGIN, clocktable
4009494e 5939@example
dbc28aaa 5940#+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
4009494e
GM
5941#+END: clocktable
5942@end example
5943@noindent
acedf35c
CD
5944@vindex org-clocktable-defaults
5945The @samp{BEGIN} line and specify a number of options to define the scope,
5946structure, and formatting of the report. Defaults for all these options can
5947be configured in the variable @code{org-clocktable-defaults}.
5948
5949@noindent First there are options that determine which clock entries are to
5950be selected:
4009494e 5951@example
dbc28aaa 5952:maxlevel @r{Maximum level depth to which times are listed in the table.}
acedf35c 5953 @r{Clocks at deeper levels will be summed into the upper level.}
dbc28aaa
CD
5954:scope @r{The scope to consider. This can be any of the following:}
5955 nil @r{the current buffer or narrowed region}
5956 file @r{the full current buffer}
5957 subtree @r{the subtree where the clocktable is located}
c8d0cf5c 5958 tree@var{N} @r{the surrounding level @var{N} tree, for example @code{tree3}}
dbc28aaa
CD
5959 tree @r{the surrounding level 1 tree}
5960 agenda @r{all agenda files}
5961 ("file"..) @r{scan these files}
a7808fba
CD
5962 file-with-archives @r{current file and its archives}
5963 agenda-with-archives @r{all agenda files, including archives}
5964:block @r{The time block to consider. This block is specified either}
5965 @r{absolute, or relative to the current time and may be any of}
5966 @r{these formats:}
5967 2007-12-31 @r{New year eve 2007}
5968 2007-12 @r{December 2007}
5969 2007-W50 @r{ISO-week 50 in 2007}
acedf35c 5970 2007-Q2 @r{2nd quarter in 2007}
a7808fba 5971 2007 @r{the year 2007}
c8d0cf5c
CD
5972 today, yesterday, today-@var{N} @r{a relative day}
5973 thisweek, lastweek, thisweek-@var{N} @r{a relative week}
5974 thismonth, lastmonth, thismonth-@var{N} @r{a relative month}
5975 thisyear, lastyear, thisyear-@var{N} @r{a relative year}
a7808fba 5976 @r{Use @kbd{S-@key{left}/@key{right}} keys to shift the time interval.}
c8d0cf5c
CD
5977:tstart @r{A time string specifying when to start considering times.}
5978:tend @r{A time string specifying when to stop considering times.}
a7808fba
CD
5979:step @r{@code{week} or @code{day}, to split the table into chunks.}
5980 @r{To use this, @code{:block} or @code{:tstart}, @code{:tend} are needed.}
acedf35c
CD
5981:stepskip0 @r{Do not show steps that have zero time.}
5982:fileskip0 @r{Do not show table sections from files which did not contribute.}
ce57c2fe
BG
5983:tags @r{A tags match to select entries that should contribute. See}
5984 @r{@ref{Matching tags and properties} for the match syntax.}
acedf35c
CD
5985@end example
5986
5987Then there are options which determine the formatting of the table. There
5988options are interpreted by the function @code{org-clocktable-write-default},
5989but you can specify your own function using the @code{:formatter} parameter.
5990@example
5991:emphasize @r{When @code{t}, emphasize level one and level two items.}
ce57c2fe 5992:lang @r{Language@footnote{Language terms can be set through the variable @code{org-clock-clocktable-language-setup}.} to use for descriptive cells like "Task".}
c8d0cf5c 5993:link @r{Link the item headlines in the table to their origins.}
acedf35c
CD
5994:narrow @r{An integer to limit the width of the headline column in}
5995 @r{the org table. If you write it like @samp{50!}, then the}
5996 @r{headline will also be shortened in export.}
5997:indent @r{Indent each headline field according to its level.}
5998:tcolumns @r{Number of columns to be used for times. If this is smaller}
5999 @r{than @code{:maxlevel}, lower levels will be lumped into one column.}
6000:level @r{Should a level number column be included?}
6001:compact @r{Abbreviation for @code{:level nil :indent t :narrow 40! :tcolumns 1}}
6002 @r{All are overwritten except if there is an explicit @code{:narrow}}
6003:timestamp @r{A timestamp for the entry, when available. Look for SCHEDULED,}
6004 @r{DEADLINE, TIMESTAMP and TIMESTAMP_IA, in this order.}
ce57c2fe
BG
6005:properties @r{List of properties that should be shown in the table. Each}
6006 @r{property will get its own column.}
6007:inherit-props @r{When this flag is @code{t}, the values for @code{:properties} will be inherited.}
e45e3595 6008:formula @r{Content of a @code{#+TBLFM} line to be added and evaluated.}
c8d0cf5c 6009 @r{As a special case, @samp{:formula %} adds a column with % time.}
acedf35c 6010 @r{If you do not specify a formula here, any existing formula}
e45e3595 6011 @r{below the clock table will survive updates and be evaluated.}
acedf35c 6012:formatter @r{A function to format clock data and insert it into the buffer.}
4009494e 6013@end example
c8d0cf5c 6014To get a clock summary of the current level 1 tree, for the current
dbc28aaa 6015day, you could write
4009494e 6016@example
a7808fba 6017#+BEGIN: clocktable :maxlevel 2 :block today :scope tree1 :link t
4009494e
GM
6018#+END: clocktable
6019@end example
c8d0cf5c 6020@noindent
4009494e 6021and to use a specific time range you could write@footnote{Note that all
c8d0cf5c
CD
6022parameters must be specified in a single line---the line is broken here
6023only to fit it into the manual.}
4009494e 6024@example
28a16a1b 6025#+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>"
4009494e 6026 :tend "<2006-08-10 Thu 12:00>"
4009494e
GM
6027#+END: clocktable
6028@end example
e45e3595
CD
6029A summary of the current subtree with % times would be
6030@example
6031#+BEGIN: clocktable :scope subtree :link t :formula %
6032#+END: clocktable
6033@end example
acedf35c
CD
6034A horizontally compact representation of everything clocked during last week
6035would be
6036@example
6037#+BEGIN: clocktable :scope agenda :block lastweek :compact t
6038#+END: clocktable
6039@end example
4009494e 6040
acedf35c
CD
6041@node Resolving idle time, , The clock table, Clocking work time
6042@subsection Resolving idle time
a351880d
CD
6043@cindex resolve idle time
6044
6045@cindex idle, resolve, dangling
6046If you clock in on a work item, and then walk away from your
6047computer---perhaps to take a phone call---you often need to ``resolve'' the
6048time you were away by either subtracting it from the current clock, or
6049applying it to another one.
6050
6051@vindex org-clock-idle-time
6052By customizing the variable @code{org-clock-idle-time} to some integer, such
6053as 10 or 15, Emacs can alert you when you get back to your computer after
6054being idle for that many minutes@footnote{On computers using Mac OS X,
6055idleness is based on actual user idleness, not just Emacs' idle time. For
6056X11, you can install a utility program @file{x11idle.c}, available in the
6057UTILITIES directory of the Org git distribution, to get the same general
6058treatment of idleness. On other systems, idle time refers to Emacs idle time
6059only.}, and ask what you want to do with the idle time. There will be a
6060question waiting for you when you get back, indicating how much idle time has
6061passed (constantly updated with the current amount), as well as a set of
6062choices to correct the discrepancy:
6063
6064@table @kbd
6065@item k
6066To keep some or all of the minutes and stay clocked in, press @kbd{k}. Org
6067will ask how many of the minutes to keep. Press @key{RET} to keep them all,
6068effectively changing nothing, or enter a number to keep that many minutes.
6069@item K
6070If you use the shift key and press @kbd{K}, it will keep however many minutes
6071you request and then immediately clock out of that task. If you keep all of
6072the minutes, this is the same as just clocking out of the current task.
6073@item s
6074To keep none of the minutes, use @kbd{s} to subtract all the away time from
6075the clock, and then check back in from the moment you returned.
6076@item S
6077To keep none of the minutes and just clock out at the start of the away time,
6078use the shift key and press @kbd{S}. Remember that using shift will always
6079leave you clocked out, no matter which option you choose.
6080@item C
6081To cancel the clock altogether, use @kbd{C}. Note that if instead of
86fbb8ca
CD
6082canceling you subtract the away time, and the resulting clock amount is less
6083than a minute, the clock will still be canceled rather than clutter up the
a351880d
CD
6084log with an empty entry.
6085@end table
6086
6087What if you subtracted those away minutes from the current clock, and now
6088want to apply them to a new clock? Simply clock in to any task immediately
6089after the subtraction. Org will notice that you have subtracted time ``on
6090the books'', so to speak, and will ask if you want to apply those minutes to
6091the next task you clock in on.
6092
6093There is one other instance when this clock resolution magic occurs. Say you
6094were clocked in and hacking away, and suddenly your cat chased a mouse who
6095scared a hamster that crashed into your UPS's power button! You suddenly
6096lose all your buffers, but thanks to auto-save you still have your recent Org
6097mode changes, including your last clock in.
6098
6099If you restart Emacs and clock into any task, Org will notice that you have a
6100dangling clock which was never clocked out from your last session. Using
6101that clock's starting time as the beginning of the unaccounted-for period,
6102Org will ask how you want to resolve that time. The logic and behavior is
ce57c2fe 6103identical to dealing with away time due to idleness; it is just happening due
a351880d
CD
6104to a recovery event rather than a set amount of idle time.
6105
6106You can also check all the files visited by your Org agenda for dangling
6107clocks at any time using @kbd{M-x org-resolve-clocks}.
6108
acedf35c 6109@node Effort estimates, Relative timer, Clocking work time, Dates and Times
a7808fba 6110@section Effort estimates
96c8522a 6111@cindex effort estimates
a7808fba 6112
c8d0cf5c
CD
6113@cindex property, Effort
6114@vindex org-effort-property
a7808fba
CD
6115If you want to plan your work in a very detailed way, or if you need to
6116produce offers with quotations of the estimated work effort, you may want to
6117assign effort estimates to entries. If you are also clocking your work, you
6118may later want to compare the planned effort with the actual working time, a
6119great way to improve planning estimates. Effort estimates are stored in a
6120special property @samp{Effort}@footnote{You may change the property being
6eb02347
CD
6121used with the variable @code{org-effort-property}.}. You can set the effort
6122for an entry with the following commands:
6123
6124@table @kbd
acedf35c 6125@orgcmd{C-c C-x e,org-set-effort}
6eb02347 6126Set the effort estimate for the current entry. With a numeric prefix
acedf35c 6127argument, set it to the Nth allowed value (see below). This command is also
6eb02347 6128accessible from the agenda with the @kbd{e} key.
acedf35c 6129@orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
6eb02347
CD
6130Modify the effort estimate of the item currently being clocked.
6131@end table
6132
6133Clearly the best way to work with effort estimates is through column view
6134(@pxref{Column view}). You should start by setting up discrete values for
6135effort estimates, and a @code{COLUMNS} format that displays these values
6136together with clock sums (if you want to clock your time). For a specific
6137buffer you can use
a7808fba
CD
6138
6139@example
ce57c2fe 6140#+PROPERTY: Effort_ALL 0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00
a7808fba
CD
6141#+COLUMNS: %40ITEM(Task) %17Effort(Estimated Effort)@{:@} %CLOCKSUM
6142@end example
6143
6144@noindent
c8d0cf5c
CD
6145@vindex org-global-properties
6146@vindex org-columns-default-format
71d35b24
CD
6147or, even better, you can set up these values globally by customizing the
6148variables @code{org-global-properties} and @code{org-columns-default-format}.
6149In particular if you want to use this setup also in the agenda, a global
6150setup may be advised.
a7808fba
CD
6151
6152The way to assign estimates to individual items is then to switch to column
6153mode, and to use @kbd{S-@key{right}} and @kbd{S-@key{left}} to change the
6154value. The values you enter will immediately be summed up in the hierarchy.
6155In the column next to it, any clocked time will be displayed.
6156
c8d0cf5c 6157@vindex org-agenda-columns-add-appointments-to-effort-sum
a7808fba
CD
6158If you switch to column view in the daily/weekly agenda, the effort column
6159will summarize the estimated work effort for each day@footnote{Please note
6160the pitfalls of summing hierarchical data in a flat list (@pxref{Agenda
b349f79f 6161column view}).}, and you can use this to find space in your schedule. To get
a7808fba
CD
6162an overview of the entire part of the day that is committed, you can set the
6163option @code{org-agenda-columns-add-appointments-to-effort-sum}. The
6164appointments on a day that take place over a specified time interval will
6165then also be added to the load estimate of the day.
6166
71d35b24
CD
6167Effort estimates can be used in secondary agenda filtering that is triggered
6168with the @kbd{/} key in the agenda (@pxref{Agenda commands}). If you have
6169these estimates defined consistently, two or three key presses will narrow
6170down the list to stuff that fits into an available time slot.
864c9740 6171
afe98dfa 6172@node Relative timer, Countdown timer, Effort estimates, Dates and Times
96c8522a
CD
6173@section Taking notes with a relative timer
6174@cindex relative timer
6175
6176When taking notes during, for example, a meeting or a video viewing, it can
6177be useful to have access to times relative to a starting time. Org provides
6178such a relative timer and make it easy to create timed notes.
6179
6180@table @kbd
acedf35c 6181@orgcmd{C-c C-x .,org-timer}
96c8522a
CD
6182Insert a relative time into the buffer. The first time you use this, the
6183timer will be started. When called with a prefix argument, the timer is
6184restarted.
acedf35c 6185@orgcmd{C-c C-x -,org-timer-item}
96c8522a
CD
6186Insert a description list item with the current relative time. With a prefix
6187argument, first reset the timer to 0.
acedf35c 6188@orgcmd{M-@key{RET},org-insert-heading}
377952e0 6189Once the timer list is started, you can also use @kbd{M-@key{RET}} to insert
96c8522a 6190new timer items.
acedf35c 6191@c for key sequences with a comma, command name macros fail :(
55e0839d
CD
6192@kindex C-c C-x ,
6193@item C-c C-x ,
acedf35c
CD
6194Pause the timer, or continue it if it is already paused
6195(@command{org-timer-pause-or-continue}).
c8d0cf5c 6196@c removed the sentence because it is redundant to the following item
55e0839d
CD
6197@kindex C-u C-c C-x ,
6198@item C-u C-c C-x ,
6199Stop the timer. After this, you can only start a new timer, not continue the
6200old one. This command also removes the timer from the mode line.
acedf35c 6201@orgcmd{C-c C-x 0,org-timer-start}
96c8522a
CD
6202Reset the timer without inserting anything into the buffer. By default, the
6203timer is reset to 0. When called with a @kbd{C-u} prefix, reset the timer to
6204specific starting offset. The user is prompted for the offset, with a
6205default taken from a timer string at point, if any, So this can be used to
6206restart taking notes after a break in the process. When called with a double
86fbb8ca 6207prefix argument @kbd{C-u C-u}, change all timer strings in the active region
96c8522a
CD
6208by a certain amount. This can be used to fix timer strings if the timer was
6209not started at exactly the right moment.
6210@end table
6211
afe98dfa
CD
6212@node Countdown timer, , Relative timer, Dates and Times
6213@section Countdown timer
6214@cindex Countdown timer
6215@kindex C-c C-x ;
6216@kindex ;
6217
6218Calling @code{org-timer-set-timer} from an Org-mode buffer runs a countdown
ce57c2fe 6219timer. Use @kbd{;} from agenda buffers, @key{C-c C-x ;} everwhere else.
afe98dfa
CD
6220
6221@code{org-timer-set-timer} prompts the user for a duration and displays a
6222countdown timer in the modeline. @code{org-timer-default-timer} sets the
6223default countdown value. Giving a prefix numeric argument overrides this
6224default value.
6225
a351880d
CD
6226@node Capture - Refile - Archive, Agenda Views, Dates and Times, Top
6227@chapter Capture - Refile - Archive
864c9740
CD
6228@cindex capture
6229
6230An important part of any organization system is the ability to quickly
6231capture new ideas and tasks, and to associate reference material with them.
86fbb8ca 6232Org does this using a process called @i{capture}. It also can store files
a351880d
CD
6233related to a task (@i{attachments}) in a special directory. Once in the
6234system, tasks and projects need to be moved around. Moving completed project
6235trees to an archive file keeps the system compact and fast.
864c9740
CD
6236
6237@menu
c0468714
GM
6238* Capture:: Capturing new stuff
6239* Attachments:: Add files to tasks
6240* RSS Feeds:: Getting input from RSS feeds
ce57c2fe 6241* Protocols:: External (e.g.@: Browser) access to Emacs and Org
c0468714
GM
6242* Refiling notes:: Moving a tree from one place to another
6243* Archiving:: What to do with finished projects
864c9740
CD
6244@end menu
6245
86fbb8ca
CD
6246@node Capture, Attachments, Capture - Refile - Archive, Capture - Refile - Archive
6247@section Capture
6248@cindex capture
dbc28aaa 6249
86fbb8ca
CD
6250Org's method for capturing new items is heavily inspired by John Wiegley
6251excellent remember package. Up to version 6.36 Org used a special setup
6252for @file{remember.el}. @file{org-remember.el} is still part of Org-mode for
6253backward compatibility with existing setups. You can find the documentation
6254for org-remember at @url{http://orgmode.org/org-remember.pdf}.
6255
6256The new capturing setup described here is preferred and should be used by new
6257users. To convert your @code{org-remember-templates}, run the command
6258@example
6259@kbd{M-x org-capture-import-remember-templates @key{RET}}
6260@end example
6261@noindent and then customize the new variable with @kbd{M-x
6262customize-variable org-capture-templates}, check the result, and save the
6263customization. You can then use both remember and capture until
6264you are familiar with the new mechanism.
c8d0cf5c 6265
86fbb8ca
CD
6266Capture lets you quickly store notes with little interruption of your work
6267flow. The basic process of capturing is very similar to remember, but Org
6268does enhance it with templates and more.
dbc28aaa
CD
6269
6270@menu
c0468714
GM
6271* Setting up capture:: Where notes will be stored
6272* Using capture:: Commands to invoke and terminate capture
6273* Capture templates:: Define the outline of different note types
dbc28aaa
CD
6274@end menu
6275
86fbb8ca
CD
6276@node Setting up capture, Using capture, Capture, Capture
6277@subsection Setting up capture
dbc28aaa 6278
86fbb8ca
CD
6279The following customization sets a default target file for notes, and defines
6280a global key@footnote{Please select your own key, @kbd{C-c c} is only a
6281suggestion.} for capturing new material.
dbc28aaa 6282
afe98dfa 6283@vindex org-default-notes-file
dbc28aaa 6284@example
dbc28aaa 6285(setq org-default-notes-file (concat org-directory "/notes.org"))
86fbb8ca 6286(define-key global-map "\C-cc" 'org-capture)
dbc28aaa
CD
6287@end example
6288
86fbb8ca
CD
6289@node Using capture, Capture templates, Setting up capture, Capture
6290@subsection Using capture
28a16a1b 6291
86fbb8ca 6292@table @kbd
acedf35c
CD
6293@orgcmd{C-c c,org-capture}
6294Call the command @code{org-capture}. Note that this keybinding is global and
6295not active by default - you need to install it. If you have templates
ce57c2fe 6296@cindex date tree
acedf35c
CD
6297defined @pxref{Capture templates}, it will offer these templates for
6298selection or use a new Org outline node as the default template. It will
6299insert the template into the target file and switch to an indirect buffer
6300narrowed to this new node. You may then insert the information you want.
6301
6302@orgcmd{C-c C-c,org-capture-finalize}
6303Once you have finished entering information into the capture buffer, @kbd{C-c
6304C-c} will return you to the window configuration before the capture process,
6305so that you can resume your work without further distraction. When called
6306with a prefix arg, finalize and then jump to the captured item.
6307
6308@orgcmd{C-c C-w,org-capture-refile}
86fbb8ca 6309Finalize the capture process by refiling (@pxref{Refiling notes}) the note to
afe98dfa 6310a different place. Please realize that this is a normal refiling command
acedf35c 6311that will be executed---so the cursor position at the moment you run this
afe98dfa 6312command is important. If you have inserted a tree with a parent and
acedf35c
CD
6313children, first move the cursor back to the parent. Any prefix argument
6314given to this command will be passed on to the @code{org-refile} command.
86fbb8ca 6315
acedf35c 6316@orgcmd{C-c C-k,org-capture-kill}
86fbb8ca 6317Abort the capture process and return to the previous state.
acedf35c 6318
86fbb8ca
CD
6319@end table
6320
6321You can also call @code{org-capture} in a special way from the agenda, using
6322the @kbd{k c} key combination. With this access, any timestamps inserted by
6323the selected capture template will default to the cursor date in the agenda,
6324rather than to the current date.
6325
acedf35c
CD
6326To find the locations of the last stored capture, use @code{org-capture} with
6327prefix commands:
6328
6329@table @kbd
6330@orgkey{C-u C-c c}
ce57c2fe 6331Visit the target location of a capture template. You get to select the
acedf35c
CD
6332template in the usual way.
6333@orgkey{C-u C-u C-c c}
6334Visit the last stored capture item in its buffer.
6335@end table
6336
86fbb8ca
CD
6337@node Capture templates, , Using capture, Capture
6338@subsection Capture templates
6339@cindex templates, for Capture
6340
6341You can use templates for different types of capture items, and
6342for different target locations. The easiest way to create such templates is
6343through the customize interface.
6344
6345@table @kbd
acedf35c 6346@orgkey{C-c c C}
86fbb8ca
CD
6347Customize the variable @code{org-capture-templates}.
6348@end table
6349
6350Before we give the formal description of template definitions, let's look at
6351an example. Say you would like to use one template to create general TODO
6352entries, and you want to put these entries under the heading @samp{Tasks} in
6353your file @file{~/org/gtd.org}. Also, a date tree in the file
6354@file{journal.org} should capture journal entries. A possible configuration
6355would look like:
28a16a1b 6356
86fbb8ca
CD
6357@example
6358(setq org-capture-templates
6359 '(("t" "Todo" entry (file+headline "~/org/gtd.org" "Tasks")
6360 "* TODO %?\n %i\n %a")
6361 ("j" "Journal" entry (file+datetree "~/org/journal.org")
6362 "* %?\nEntered on %U\n %i\n %a")))
6363@end example
6364
6365@noindent If you then press @kbd{C-c c t}, Org will prepare the template
6366for you like this:
dbc28aaa
CD
6367@example
6368* TODO
86fbb8ca 6369 [[file:@var{link to where you initiated capture}]]
dbc28aaa
CD
6370@end example
6371
6372@noindent
86fbb8ca
CD
6373During expansion of the template, @code{%a} has been replaced by a link to
6374the location from where you called the capture command. This can be
6375extremely useful for deriving tasks from emails, for example. You fill in
6376the task definition, press @code{C-c C-c} and Org returns you to the same
6377place where you started the capture process.
6378
ce57c2fe
BG
6379To define special keys to capture to a particular template without going
6380through the interactive template selection, you can create your key binding
6381like this:
6382
6383@lisp
6384(define-key global-map "\C-cx"
6385 (lambda () (interactive) (org-capture nil "x")))
6386@end lisp
86fbb8ca
CD
6387
6388@menu
c0468714
GM
6389* Template elements:: What is needed for a complete template entry
6390* Template expansion:: Filling in information about time and context
86fbb8ca
CD
6391@end menu
6392
6393@node Template elements, Template expansion, Capture templates, Capture templates
6394@subsubsection Template elements
6395
6396Now lets look at the elements of a template definition. Each entry in
ce57c2fe 6397@code{org-capture-templates} is a list with the following items:
86fbb8ca
CD
6398
6399@table @var
6400@item keys
6401The keys that will select the template, as a string, characters
6402only, for example @code{"a"} for a template to be selected with a
6403single key, or @code{"bt"} for selection with two keys. When using
ce57c2fe 6404several keys, keys using the same prefix key must be sequential
86fbb8ca
CD
6405in the list and preceded by a 2-element entry explaining the
6406prefix key, for example
dbc28aaa 6407@example
86fbb8ca
CD
6408 ("b" "Templates for marking stuff to buy")
6409@end example
6410@noindent If you do not define a template for the @kbd{C} key, this key will
6411be used to open the customize buffer for this complex variable.
6412
6413@item description
6414A short string describing the template, which will be shown during
6415selection.
6416
6417@item type
6418The type of entry, a symbol. Valid values are:
6419@table @code
6420@item entry
ce57c2fe
BG
6421An Org-mode node, with a headline. Will be filed as the child of the target
6422entry or as a top-level entry. The target file should be an Org-mode file.
86fbb8ca
CD
6423@item item
6424A plain list item, placed in the first plain list at the target
6425location. Again the target file should be an Org file.
6426@item checkitem
6427A checkbox item. This only differs from the plain list item by the
6428default template.
6429@item table-line
6430a new line in the first table at the target location. Where exactly the
6431line will be inserted depends on the properties @code{:prepend} and
6432@code{:table-line-pos} (see below).
6433@item plain
6434Text to be inserted as it is.
6435@end table
6436
6437@item target
afe98dfa
CD
6438@vindex org-default-notes-file
6439Specification of where the captured item should be placed. In Org-mode
6440files, targets usually define a node. Entries will become children of this
acedf35c 6441node. Other types will be added to the table or list in the body of this
afe98dfa 6442node. Most target specifications contain a file name. If that file name is
ce57c2fe
BG
6443the empty string, it defaults to @code{org-default-notes-file}. A file can
6444also be given as a variable, function, or Emacs Lisp form.
86fbb8ca
CD
6445
6446Valid values are:
6447@table @code
6448@item (file "path/to/file")
6449Text will be placed at the beginning or end of that file.
6450
6451@item (id "id of existing org entry")
6452Filing as child of this entry, or in the body of the entry.
6453
6454@item (file+headline "path/to/file" "node headline")
6455Fast configuration if the target heading is unique in the file.
6456
6457@item (file+olp "path/to/file" "Level 1 heading" "Level 2" ...)
6458For non-unique headings, the full path is safer.
6459
6460@item (file+regexp "path/to/file" "regexp to find location")
6461Use a regular expression to position the cursor.
6462
6463@item (file+datetree "path/to/file")
acedf35c
CD
6464Will create a heading in a date tree for today's date.
6465
6466@item (file+datetree+prompt "path/to/file")
6467Will create a heading in a date tree, but will prompt for the date.
86fbb8ca
CD
6468
6469@item (file+function "path/to/file" function-finding-location)
6470A function to find the right location in the file.
6471
6472@item (clock)
6473File to the entry that is currently being clocked.
6474
6475@item (function function-finding-location)
6476Most general way, write your own function to find both
6477file and location.
6478@end table
6479
6480@item template
6481The template for creating the capture item. If you leave this empty, an
6482appropriate default template will be used. Otherwise this is a string with
6483escape codes, which will be replaced depending on time and context of the
6484capture call. The string with escapes may be loaded from a template file,
6485using the special syntax @code{(file "path/to/template")}. See below for
6486more details.
6487
6488@item properties
6489The rest of the entry is a property list of additional options.
6490Recognized properties are:
6491@table @code
6492@item :prepend
6493Normally new captured information will be appended at
6494the target location (last child, last table line, last list item...).
6495Setting this property will change that.
6496
6497@item :immediate-finish
6498When set, do not offer to edit the information, just
6499file it away immediately. This makes sense if the template only needs
6500information that can be added automatically.
6501
6502@item :empty-lines
6503Set this to the number of lines to insert
6504before and after the new item. Default 0, only common other value is 1.
6505
6506@item :clock-in
6507Start the clock in this item.
6508
ce57c2fe
BG
6509@item :clock-keep
6510Keep the clock running when filing the captured entry.
6511
86fbb8ca
CD
6512@item :clock-resume
6513If starting the capture interrupted a clock, restart that clock when finished
ce57c2fe
BG
6514with the capture. Note that @code{:clock-keep} has precedence over
6515@code{:clock-resume}. When setting both to @code{t}, the current clock will
6516run and the previous one will not be resumed.
86fbb8ca
CD
6517
6518@item :unnarrowed
6519Do not narrow the target buffer, simply show the full buffer. Default is to
6520narrow it so that you only see the new material.
afe98dfa 6521
ce57c2fe
BG
6522@item :table-line-pos
6523Specification of the location in the table where the new line should be
6524inserted. It should be a string like @code{"II-3"} meaning that the new
6525line should become the third line before the second horizontal separator
6526line.
6527
afe98dfa
CD
6528@item :kill-buffer
6529If the target file was not yet visited when capture was invoked, kill the
6530buffer again after capture is completed.
86fbb8ca
CD
6531@end table
6532@end table
6533
6534@node Template expansion, , Template elements, Capture templates
6535@subsubsection Template expansion
6536
6537In the template itself, special @kbd{%}-escapes@footnote{If you need one of
6538these sequences literally, escape the @kbd{%} with a backslash.} allow
ce57c2fe 6539dynamic insertion of content. The templates are expanded in the order given here:
86fbb8ca 6540
86fbb8ca 6541@smallexample
ce57c2fe
BG
6542%[@var{file}] @r{insert the contents of the file given by @var{file}.}
6543%(@var{sexp}) @r{evaluate Elisp @var{sexp} and replace with the result.}
6544%<...> @r{the result of format-time-string on the ... format specification.}
6545%t @r{timestamp, date only.}
6546%T @r{timestamp with date and time.}
6547%u, %U @r{like the above, but inactive timestamps.}
6548%a @r{annotation, normally the link created with @code{org-store-link}.}
86fbb8ca
CD
6549%i @r{initial content, the region when capture is called while the}
6550 @r{region is active.}
b349f79f 6551 @r{The entire text will be indented like @code{%i} itself.}
ce57c2fe 6552%A @r{like @code{%a}, but prompt for the description part.}
a7808fba
CD
6553%c @r{Current kill ring head.}
6554%x @r{Content of the X clipboard.}
ce57c2fe
BG
6555%k @r{title of the currently clocked task.}
6556%K @r{link to the currently clocked task.}
6557%n @r{user name (taken from @code{user-full-name}).}
6558%f @r{file visited by current buffer when org-capture was called.}
6559%F @r{full path of the file or directory visited by current buffer.}
6560%:keyword @r{specific information for certain link types, see below.}
dbc28aaa
CD
6561%^g @r{prompt for tags, with completion on tags in target file.}
6562%^G @r{prompt for tags, with completion all tags in all agenda files.}
ce57c2fe
BG
6563%^t @r{like @code{%t}, but prompt for date. Similarly @code{%^T}, @code{%^u}, @code{%^U}.}
6564 @r{You may define a prompt like @code{%^@{Birthday@}t}.}
6565%^C @r{Interactive selection of which kill or clip to use.}
6566%^L @r{Like @code{%^C}, but insert as link.}
6567%^@{@var{prop}@}p @r{Prompt the user for a value for property @var{prop}.}
6568%^@{@var{prompt}@} @r{prompt the user for a string and replace this sequence with it.}
6569 @r{You may specify a default value and a completion table with}
6570 @r{%^@{prompt|default|completion2|completion3...@}.}
6571 @r{The arrow keys access a prompt-specific history.}
86fbb8ca 6572@end smallexample
dbc28aaa
CD
6573
6574@noindent
6575For specific link types, the following keywords will be
6576defined@footnote{If you define your own link types (@pxref{Adding
6577hyperlink types}), any property you store with
86fbb8ca 6578@code{org-store-link-props} can be accessed in capture templates in a
dbc28aaa
CD
6579similar way.}:
6580
c8d0cf5c 6581@vindex org-from-is-user-regexp
86fbb8ca 6582@smallexample
ce57c2fe
BG
6583Link type | Available keywords
6584------------------------+----------------------------------------------
afe98dfa
CD
6585bbdb | %:name %:company
6586irc | %:server %:port %:nick
6587vm, wl, mh, mew, rmail | %:type %:subject %:message-id
6588 | %:from %:fromname %:fromaddress
6589 | %:to %:toname %:toaddress
6590 | %:date @r{(message date header field)}
6591 | %:date-timestamp @r{(date as active timestamp)}
6592 | %:date-timestamp-inactive @r{(date as inactive timestamp)}
6593 | %: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}.}}
6594gnus | %:group, @r{for messages also all email fields}
6595w3, w3m | %:url
6596info | %:file %:node
6597calendar | %:date
86fbb8ca 6598@end smallexample
dbc28aaa
CD
6599
6600@noindent
6601To place the cursor after template expansion use:
6602
86fbb8ca 6603@smallexample
dbc28aaa 6604%? @r{After completing the template, position cursor here.}
86fbb8ca 6605@end smallexample
dbc28aaa 6606
c8d0cf5c 6607
86fbb8ca 6608@node Attachments, RSS Feeds, Capture, Capture - Refile - Archive
864c9740
CD
6609@section Attachments
6610@cindex attachments
6611
c8d0cf5c 6612@vindex org-attach-directory
864c9740
CD
6613It is often useful to associate reference material with an outline node/task.
6614Small chunks of plain text can simply be stored in the subtree of a project.
86fbb8ca 6615Hyperlinks (@pxref{Hyperlinks}) can establish associations with
864c9740
CD
6616files that live elsewhere on your computer or in the cloud, like emails or
6617source code files belonging to a project. Another method is @i{attachments},
6618which are files located in a directory belonging to an outline node. Org
6619uses directories named by the unique ID of each entry. These directories are
6620located in the @file{data} directory which lives in the same directory where
c8d0cf5c
CD
6621your Org file lives@footnote{If you move entries or Org files from one
6622directory to another, you may want to configure @code{org-attach-directory}
864c9740 6623to contain an absolute path.}. If you initialize this directory with
c8d0cf5c 6624@code{git init}, Org will automatically commit changes when it sees them.
864c9740
CD
6625The attachment system has been contributed to Org by John Wiegley.
6626
c8d0cf5c 6627In cases where it seems better to do so, you can also attach a directory of your
55e0839d
CD
6628choice to an entry. You can also make children inherit the attachment
6629directory from a parent, so that an entire subtree uses the same attached
6630directory.
6631
86fbb8ca 6632@noindent The following commands deal with attachments:
864c9740
CD
6633
6634@table @kbd
6635
acedf35c 6636@orgcmd{C-c C-a,org-attach}
864c9740 6637The dispatcher for commands related to the attachment system. After these
86fbb8ca 6638keys, a list of commands is displayed and you must press an additional key
864c9740
CD
6639to select a command:
6640
6641@table @kbd
acedf35c 6642@orgcmdtkc{a,C-c C-a a,org-attach-attach}
c8d0cf5c 6643@vindex org-attach-method
864c9740
CD
6644Select a file and move it into the task's attachment directory. The file
6645will be copied, moved, or linked, depending on @code{org-attach-method}.
6646Note that hard links are not supported on all systems.
6647
6648@kindex C-c C-a c
96c8522a
CD
6649@kindex C-c C-a m
6650@kindex C-c C-a l
864c9740
CD
6651@item c/m/l
6652Attach a file using the copy/move/link method.
6653Note that hard links are not supported on all systems.
6654
acedf35c 6655@orgcmdtkc{n,C-c C-a n,org-attach-new}
864c9740
CD
6656Create a new attachment as an Emacs buffer.
6657
acedf35c 6658@orgcmdtkc{z,C-c C-a z,org-attach-sync}
864c9740
CD
6659Synchronize the current task with its attachment directory, in case you added
6660attachments yourself.
6661
ce57c2fe 6662@orgcmdtkc{o,C-c C-a o,org-attach-open}
c8d0cf5c 6663@vindex org-file-apps
86fbb8ca 6664Open current task's attachment. If there is more than one, prompt for a
864c9740 6665file name first. Opening will follow the rules set by @code{org-file-apps}.
a50253cc 6666For more details, see the information on following hyperlinks
864c9740
CD
6667(@pxref{Handling links}).
6668
acedf35c 6669@orgcmdtkc{O,C-c C-a O,org-attach-open-in-emacs}
864c9740
CD
6670Also open the attachment, but force opening the file in Emacs.
6671
acedf35c 6672@orgcmdtkc{f,C-c C-a f,org-attach-reveal}
864c9740
CD
6673Open the current task's attachment directory.
6674
acedf35c 6675@orgcmdtkc{F,C-c C-a F,org-attach-reveal-in-emacs}
c8d0cf5c 6676Also open the directory, but force using @command{dired} in Emacs.
864c9740 6677
acedf35c 6678@orgcmdtkc{d,C-c C-a d,org-attach-delete-one}
864c9740
CD
6679Select and delete a single attachment.
6680
acedf35c 6681@orgcmdtkc{D,C-c C-a D,org-attach-delete-all}
864c9740 6682Delete all of a task's attachments. A safer way is to open the directory in
c8d0cf5c 6683@command{dired} and delete from there.
55e0839d 6684
acedf35c 6685@orgcmdtkc{s,C-c C-a s,org-attach-set-directory}
c8d0cf5c 6686@cindex property, ATTACH_DIR
55e0839d
CD
6687Set a specific directory as the entry's attachment directory. This works by
6688putting the directory path into the @code{ATTACH_DIR} property.
6689
acedf35c 6690@orgcmdtkc{i,C-c C-a i,org-attach-set-inherit}
c8d0cf5c 6691@cindex property, ATTACH_DIR_INHERIT
55e0839d 6692Set the @code{ATTACH_DIR_INHERIT} property, so that children will use the
c8d0cf5c 6693same directory for attachments as the parent does.
864c9740
CD
6694@end table
6695@end table
6696
a351880d 6697@node RSS Feeds, Protocols, Attachments, Capture - Refile - Archive
c8d0cf5c
CD
6698@section RSS feeds
6699@cindex RSS feeds
86fbb8ca 6700@cindex Atom feeds
c8d0cf5c 6701
86fbb8ca
CD
6702Org can add and change entries based on information found in RSS feeds and
6703Atom feeds. You could use this to make a task out of each new podcast in a
c8d0cf5c 6704podcast feed. Or you could use a phone-based note-creating service on the
86fbb8ca
CD
6705web to import tasks into Org. To access feeds, configure the variable
6706@code{org-feed-alist}. The docstring of this variable has detailed
c8d0cf5c
CD
6707information. Here is just an example:
6708
6709@example
6710(setq org-feed-alist
86fbb8ca 6711 '(("Slashdot"
c0468714
GM
6712 "http://rss.slashdot.org/Slashdot/slashdot"
6713 "~/txt/org/feeds.org" "Slashdot Entries")))
c8d0cf5c 6714@end example
86fbb8ca 6715
c8d0cf5c 6716@noindent
86fbb8ca
CD
6717will configure that new items from the feed provided by
6718@code{rss.slashdot.org} will result in new entries in the file
6719@file{~/org/feeds.org} under the heading @samp{Slashdot Entries}, whenever
6720the following command is used:
c8d0cf5c
CD
6721
6722@table @kbd
acedf35c 6723@orgcmd{C-c C-x g,org-feed-update-all}
c8d0cf5c
CD
6724@item C-c C-x g
6725Collect items from the feeds configured in @code{org-feed-alist} and act upon
6726them.
acedf35c 6727@orgcmd{C-c C-x G,org-feed-goto-inbox}
c8d0cf5c
CD
6728Prompt for a feed name and go to the inbox configured for this feed.
6729@end table
6730
6731Under the same headline, Org will create a drawer @samp{FEEDSTATUS} in which
6732it will store information about the status of items in the feed, to avoid
6733adding the same item several times. You should add @samp{FEEDSTATUS} to the
6734list of drawers in that file:
6735
6736@example
6737#+DRAWERS: LOGBOOK PROPERTIES FEEDSTATUS
6738@end example
6739
86fbb8ca
CD
6740For more information, including how to read atom feeds, see
6741@file{org-feed.el} and the docstring of @code{org-feed-alist}.
c8d0cf5c 6742
a351880d 6743@node Protocols, Refiling notes, RSS Feeds, Capture - Refile - Archive
c8d0cf5c
CD
6744@section Protocols for external access
6745@cindex protocols, for external access
6746@cindex emacsserver
6747
6748You can set up Org for handling protocol calls from outside applications that
6749are passed to Emacs through the @file{emacsserver}. For example, you can
6750configure bookmarks in your web browser to send a link to the current page to
86fbb8ca 6751Org and create a note from it using capture (@pxref{Capture}). Or you
c8d0cf5c
CD
6752could create a bookmark that will tell Emacs to open the local source file of
6753a remote website you are looking at with the browser. See
6754@uref{http://orgmode.org/worg/org-contrib/org-protocol.php} for detailed
6755documentation and setup instructions.
6756
a351880d
CD
6757@node Refiling notes, Archiving, Protocols, Capture - Refile - Archive
6758@section Refiling notes
6759@cindex refiling notes
c8d0cf5c 6760
a351880d
CD
6761When reviewing the captured data, you may want to refile some of the entries
6762into a different list, for example into a project. Cutting, finding the
6763right location, and then pasting the note is cumbersome. To simplify this
6764process, you can use the following special command:
4009494e 6765
a351880d 6766@table @kbd
acedf35c 6767@orgcmd{C-c C-w,org-refile}
a351880d
CD
6768@vindex org-reverse-note-order
6769@vindex org-refile-targets
6770@vindex org-refile-use-outline-path
6771@vindex org-outline-path-complete-in-steps
6772@vindex org-refile-allow-creating-parent-nodes
ed21c5c8 6773@vindex org-log-refile
86fbb8ca 6774@vindex org-refile-use-cache
a351880d
CD
6775Refile the entry or region at point. This command offers possible locations
6776for refiling the entry and lets you select one with completion. The item (or
6777all items in the region) is filed below the target heading as a subitem.
6778Depending on @code{org-reverse-note-order}, it will be either the first or
6779last subitem.@*
6780By default, all level 1 headlines in the current buffer are considered to be
6781targets, but you can have more complex definitions across a number of files.
6782See the variable @code{org-refile-targets} for details. If you would like to
6783select a location via a file-path-like completion along the outline path, see
6784the variables @code{org-refile-use-outline-path} and
6785@code{org-outline-path-complete-in-steps}. If you would like to be able to
045b9da7 6786create new nodes as new parents for refiling on the fly, check the
a351880d 6787variable @code{org-refile-allow-creating-parent-nodes}.
ed21c5c8
CD
6788When the variable @code{org-log-refile}@footnote{with corresponding
6789@code{#+STARTUP} keywords @code{logrefile}, @code{lognoterefile},
ce57c2fe 6790and @code{nologrefile}} is set, a timestamp or a note will be
ed21c5c8 6791recorded when an entry has been refiled.
acedf35c 6792@orgkey{C-u C-c C-w}
a351880d 6793Use the refile interface to jump to a heading.
acedf35c 6794@orgcmd{C-u C-u C-c C-w,org-refile-goto-last-stored}
a351880d
CD
6795Jump to the location where @code{org-refile} last moved a tree to.
6796@item C-2 C-c C-w
6797Refile as the child of the item currently being clocked.
86fbb8ca 6798@item C-0 C-c C-w @ @r{or} @ C-u C-u C-u C-c C-w
acedf35c
CD
6799
6800@orgcmdtkc{C-0 C-c C-w @ @r{or} @ C-u C-u C-u C-c C-w,C-0 C-c C-w,org-refile-cache-clear}
6801
86fbb8ca 6802Clear the target cache. Caching of refile targets can be turned on by
acedf35c 6803setting @code{org-refile-use-cache}. To make the command see new possible
86fbb8ca 6804targets, you have to clear the cache with this command.
a351880d 6805@end table
4009494e 6806
a351880d
CD
6807@node Archiving, , Refiling notes, Capture - Refile - Archive
6808@section Archiving
6809@cindex archiving
4009494e 6810
a351880d
CD
6811When a project represented by a (sub)tree is finished, you may want
6812to move the tree out of the way and to stop it from contributing to the
6813agenda. Archiving is important to keep your working files compact and global
6814searches like the construction of agenda views fast.
6815
6816@table @kbd
acedf35c 6817@orgcmd{C-c C-x C-a,org-archive-subtree-default}
a351880d
CD
6818@vindex org-archive-default-command
6819Archive the current entry using the command specified in the variable
6820@code{org-archive-default-command}.
6821@end table
6822
6823@menu
c0468714
GM
6824* Moving subtrees:: Moving a tree to an archive file
6825* Internal archiving:: Switch off a tree but keep it in the file
a351880d
CD
6826@end menu
6827
6828@node Moving subtrees, Internal archiving, Archiving, Archiving
6829@subsection Moving a tree to the archive file
6830@cindex external archiving
6831
6832The most common archiving action is to move a project tree to another file,
6833the archive file.
6834
6835@table @kbd
acedf35c 6836@orgcmdkskc{C-c C-x C-s,C-c $,org-archive-subtree}
a351880d
CD
6837@vindex org-archive-location
6838Archive the subtree starting at the cursor position to the location
6839given by @code{org-archive-location}.
acedf35c 6840@orgkey{C-u C-c C-x C-s}
a351880d
CD
6841Check if any direct children of the current headline could be moved to
6842the archive. To do this, each subtree is checked for open TODO entries.
6843If none are found, the command offers to move it to the archive
6844location. If the cursor is @emph{not} on a headline when this command
6845is invoked, the level 1 trees will be checked.
6846@end table
6847
6848@cindex archive locations
6849The default archive location is a file in the same directory as the
6850current file, with the name derived by appending @file{_archive} to the
6851current file name. For information and examples on how to change this,
6852see the documentation string of the variable
6853@code{org-archive-location}. There is also an in-buffer option for
6854setting this variable, for example@footnote{For backward compatibility,
6855the following also works: If there are several such lines in a file,
6856each specifies the archive location for the text below it. The first
6857such line also applies to any text before its definition. However,
6858using this method is @emph{strongly} deprecated as it is incompatible
6859with the outline structure of the document. The correct method for
6860setting multiple archive locations in a buffer is using properties.}:
6861
6862@cindex #+ARCHIVE
6863@example
6864#+ARCHIVE: %s_done::
6865@end example
6866
6867@cindex property, ARCHIVE
6868@noindent
6869If you would like to have a special ARCHIVE location for a single entry
6870or a (sub)tree, give the entry an @code{:ARCHIVE:} property with the
6871location as the value (@pxref{Properties and Columns}).
6872
6873@vindex org-archive-save-context-info
6874When a subtree is moved, it receives a number of special properties that
6875record context information like the file from where the entry came, its
6876outline path the archiving time etc. Configure the variable
6877@code{org-archive-save-context-info} to adjust the amount of information
6878added.
6879
6880
6881@node Internal archiving, , Moving subtrees, Archiving
6882@subsection Internal archiving
6883
6884If you want to just switch off (for agenda views) certain subtrees without
6885moving them to a different file, you can use the @code{ARCHIVE tag}.
6886
6887A headline that is marked with the ARCHIVE tag (@pxref{Tags}) stays at
6888its location in the outline tree, but behaves in the following way:
6889@itemize @minus
6890@item
6891@vindex org-cycle-open-archived-trees
6892It does not open when you attempt to do so with a visibility cycling
6893command (@pxref{Visibility cycling}). You can force cycling archived
6894subtrees with @kbd{C-@key{TAB}}, or by setting the option
6895@code{org-cycle-open-archived-trees}. Also normal outline commands like
6896@code{show-all} will open archived subtrees.
6897@item
6898@vindex org-sparse-tree-open-archived-trees
6899During sparse tree construction (@pxref{Sparse trees}), matches in
6900archived subtrees are not exposed, unless you configure the option
6901@code{org-sparse-tree-open-archived-trees}.
6902@item
6903@vindex org-agenda-skip-archived-trees
6904During agenda view construction (@pxref{Agenda Views}), the content of
6905archived trees is ignored unless you configure the option
6906@code{org-agenda-skip-archived-trees}, in which case these trees will always
6907be included. In the agenda you can press @kbd{v a} to get archives
6908temporarily included.
6909@item
6910@vindex org-export-with-archived-trees
6911Archived trees are not exported (@pxref{Exporting}), only the headline
6912is. Configure the details using the variable
6913@code{org-export-with-archived-trees}.
6914@item
86fbb8ca 6915@vindex org-columns-skip-archived-trees
a351880d 6916Archived trees are excluded from column view unless the variable
86fbb8ca 6917@code{org-columns-skip-archived-trees} is configured to @code{nil}.
a351880d
CD
6918@end itemize
6919
86fbb8ca 6920The following commands help manage the ARCHIVE tag:
a351880d
CD
6921
6922@table @kbd
acedf35c 6923@orgcmd{C-c C-x a,org-toggle-archive-tag}
a351880d
CD
6924Toggle the ARCHIVE tag for the current headline. When the tag is set,
6925the headline changes to a shadowed face, and the subtree below it is
6926hidden.
acedf35c 6927@orgkey{C-u C-c C-x a}
a351880d
CD
6928Check if any direct children of the current headline should be archived.
6929To do this, each subtree is checked for open TODO entries. If none are
6930found, the command offers to set the ARCHIVE tag for the child. If the
6931cursor is @emph{not} on a headline when this command is invoked, the
6932level 1 trees will be checked.
acedf35c 6933@orgcmd{C-@kbd{TAB},org-force-cycle-archived}
a351880d 6934Cycle a tree even if it is tagged with ARCHIVE.
acedf35c 6935@orgcmd{C-c C-x A,org-archive-to-archive-sibling}
a351880d
CD
6936Move the current entry to the @emph{Archive Sibling}. This is a sibling of
6937the entry with the heading @samp{Archive} and the tag @samp{ARCHIVE}. The
6938entry becomes a child of that sibling and in this way retains a lot of its
6939original context, including inherited tags and approximate position in the
6940outline.
6941@end table
6942
6943
6944@node Agenda Views, Markup, Capture - Refile - Archive, Top
86fbb8ca 6945@chapter Agenda views
a351880d
CD
6946@cindex agenda views
6947
6948Due to the way Org works, TODO items, time-stamped items, and
6949tagged headlines can be scattered throughout a file or even a number of
6950files. To get an overview of open action items, or of events that are
6951important for a particular date, this information must be collected,
6952sorted and displayed in an organized way.
6953
6954Org can select items based on various criteria and display them
6955in a separate buffer. Seven different view types are provided:
6956
6957@itemize @bullet
6958@item
6959an @emph{agenda} that is like a calendar and shows information
6960for specific dates,
6961@item
6962a @emph{TODO list} that covers all unfinished
6963action items,
6964@item
6965a @emph{match view}, showings headlines based on the tags, properties, and
6966TODO state associated with them,
6967@item
6968a @emph{timeline view} that shows all events in a single Org file,
6969in time-sorted view,
6970@item
6971a @emph{text search view} that shows all entries from multiple files
6972that contain specified keywords,
6973@item
6974a @emph{stuck projects view} showing projects that currently don't move
6975along, and
6976@item
6977@emph{custom views} that are special searches and combinations of different
6978views.
4009494e
GM
6979@end itemize
6980
6981@noindent
6982The extracted information is displayed in a special @emph{agenda
6983buffer}. This buffer is read-only, but provides commands to visit the
a7808fba 6984corresponding locations in the original Org files, and even to
28a16a1b 6985edit these files remotely.
4009494e 6986
c8d0cf5c
CD
6987@vindex org-agenda-window-setup
6988@vindex org-agenda-restore-windows-after-quit
4009494e
GM
6989Two variables control how the agenda buffer is displayed and whether the
6990window configuration is restored when the agenda exits:
6991@code{org-agenda-window-setup} and
6992@code{org-agenda-restore-windows-after-quit}.
6993
6994@menu
c0468714
GM
6995* Agenda files:: Files being searched for agenda information
6996* Agenda dispatcher:: Keyboard access to agenda views
6997* Built-in agenda views:: What is available out of the box?
6998* Presentation and sorting:: How agenda items are prepared for display
6999* Agenda commands:: Remote editing of Org trees
7000* Custom agenda views:: Defining special searches and views
7001* Exporting Agenda Views:: Writing a view to a file
7002* Agenda column view:: Using column view for collected entries
4009494e
GM
7003@end menu
7004
a7808fba 7005@node Agenda files, Agenda dispatcher, Agenda Views, Agenda Views
4009494e
GM
7006@section Agenda files
7007@cindex agenda files
7008@cindex files for agenda
7009
c8d0cf5c 7010@vindex org-agenda-files
dbc28aaa
CD
7011The information to be shown is normally collected from all @emph{agenda
7012files}, the files listed in the variable
7013@code{org-agenda-files}@footnote{If the value of that variable is not a
7014list, but a single file name, then the list of agenda files will be
ce57c2fe 7015maintained in that external file.}. If a directory is part of this list,
dbc28aaa
CD
7016all files with the extension @file{.org} in this directory will be part
7017of the list.
7018
c8d0cf5c
CD
7019Thus, even if you only work with a single Org file, that file should
7020be put into the list@footnote{When using the dispatcher, pressing
dbc28aaa
CD
7021@kbd{<} before selecting a command will actually limit the command to
7022the current file, and ignore @code{org-agenda-files} until the next
4009494e
GM
7023dispatcher command.}. You can customize @code{org-agenda-files}, but
7024the easiest way to maintain it is through the following commands
7025
7026@cindex files, adding to agenda list
7027@table @kbd
ce57c2fe 7028@orgcmd{C-c [,org-agenda-file-to-front}
4009494e
GM
7029Add current file to the list of agenda files. The file is added to
7030the front of the list. If it was already in the list, it is moved to
a7808fba 7031the front. With a prefix argument, file is added/moved to the end.
acedf35c 7032@orgcmd{C-c ],org-remove-file}
4009494e
GM
7033Remove current file from the list of agenda files.
7034@kindex C-,
acedf35c
CD
7035@orgcmd{C-',org-cycle-agenda-files}
7036@itemx C-,
4009494e 7037Cycle through agenda file list, visiting one file after the other.
a7808fba
CD
7038@kindex M-x org-iswitchb
7039@item M-x org-iswitchb
7040Command to use an @code{iswitchb}-like interface to switch to and between Org
7041buffers.
4009494e
GM
7042@end table
7043
7044@noindent
7045The Org menu contains the current list of files and can be used
7046to visit any of them.
7047
c8d0cf5c
CD
7048If you would like to focus the agenda temporarily on a file not in
7049this list, or on just one file in the list, or even on only a subtree in a
7050file, then this can be done in different ways. For a single agenda command,
dbc28aaa
CD
7051you may press @kbd{<} once or several times in the dispatcher
7052(@pxref{Agenda dispatcher}). To restrict the agenda scope for an
7053extended period, use the following commands:
7054
7055@table @kbd
acedf35c 7056@orgcmd{C-c C-x <,org-agenda-set-restriction-lock}
dbc28aaa
CD
7057Permanently restrict the agenda to the current subtree. When with a
7058prefix argument, or with the cursor before the first headline in a file,
7059the agenda scope is set to the entire file. This restriction remains in
7060effect until removed with @kbd{C-c C-x >}, or by typing either @kbd{<}
7061or @kbd{>} in the agenda dispatcher. If there is a window displaying an
7062agenda view, the new restriction takes effect immediately.
acedf35c 7063@orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
dbc28aaa
CD
7064Remove the permanent restriction created by @kbd{C-c C-x <}.
7065@end table
7066
7067@noindent
c8d0cf5c 7068When working with @file{speedbar.el}, you can use the following commands in
a7808fba 7069the Speedbar frame:
dbc28aaa 7070@table @kbd
acedf35c 7071@orgcmdtkc{< @r{in the speedbar frame},<,org-speedbar-set-agenda-restriction}
c8d0cf5c
CD
7072Permanently restrict the agenda to the item---either an Org file or a subtree
7073in such a file---at the cursor in the Speedbar frame.
dbc28aaa
CD
7074If there is a window displaying an agenda view, the new restriction takes
7075effect immediately.
acedf35c 7076@orgcmdtkc{> @r{in the speedbar frame},>,org-agenda-remove-restriction-lock}
c8d0cf5c 7077Lift the restriction.
dbc28aaa
CD
7078@end table
7079
a7808fba 7080@node Agenda dispatcher, Built-in agenda views, Agenda files, Agenda Views
4009494e
GM
7081@section The agenda dispatcher
7082@cindex agenda dispatcher
7083@cindex dispatching agenda commands
c8d0cf5c 7084The views are created through a dispatcher, which should be bound to a
ce57c2fe 7085global key---for example @kbd{C-c a} (@pxref{Activation}). In the
4009494e
GM
7086following we will assume that @kbd{C-c a} is indeed how the dispatcher
7087is accessed and list keyboard access to commands accordingly. After
7088pressing @kbd{C-c a}, an additional letter is required to execute a
7089command. The dispatcher offers the following default commands:
7090@table @kbd
7091@item a
a7808fba 7092Create the calendar-like agenda (@pxref{Weekly/daily agenda}).
4009494e
GM
7093@item t @r{/} T
7094Create a list of all TODO items (@pxref{Global TODO list}).
7095@item m @r{/} M
7096Create a list of headlines matching a TAGS expression (@pxref{Matching
7097tags and properties}).
7098@item L
7099Create the timeline view for the current buffer (@pxref{Timeline}).
28a16a1b
CD
7100@item s
7101Create a list of entries selected by a boolean expression of keywords
7102and/or regular expressions that must or must not occur in the entry.
dbc28aaa 7103@item /
c8d0cf5c 7104@vindex org-agenda-text-search-extra-files
dbc28aaa 7105Search for a regular expression in all agenda files and additionally in
c8d0cf5c 7106the files listed in @code{org-agenda-text-search-extra-files}. This
dbc28aaa
CD
7107uses the Emacs command @code{multi-occur}. A prefix argument can be
7108used to specify the number of context lines for each match, default is
71091.
28a16a1b
CD
7110@item # @r{/} !
7111Create a list of stuck projects (@pxref{Stuck projects}).
dbc28aaa
CD
7112@item <
7113Restrict an agenda command to the current buffer@footnote{For backward
7114compatibility, you can also press @kbd{1} to restrict to the current
7115buffer.}. After pressing @kbd{<}, you still need to press the character
7116selecting the command.
7117@item < <
4009494e 7118If there is an active region, restrict the following agenda command to
dbc28aaa
CD
7119the region. Otherwise, restrict it to the current subtree@footnote{For
7120backward compatibility, you can also press @kbd{0} to restrict to the
c8d0cf5c 7121current region/subtree.}. After pressing @kbd{< <}, you still need to press the
dbc28aaa 7122character selecting the command.
4009494e
GM
7123@end table
7124
7125You can also define custom commands that will be accessible through the
7126dispatcher, just like the default commands. This includes the
7127possibility to create extended agenda buffers that contain several
7128blocks together, for example the weekly agenda, the global TODO list and
7129a number of special tags matches. @xref{Custom agenda views}.
7130
a7808fba 7131@node Built-in agenda views, Presentation and sorting, Agenda dispatcher, Agenda Views
4009494e
GM
7132@section The built-in agenda views
7133
7134In this section we describe the built-in views.
7135
7136@menu
c0468714
GM
7137* Weekly/daily agenda:: The calendar page with current tasks
7138* Global TODO list:: All unfinished action items
4009494e 7139* Matching tags and properties:: Structured information with fine-tuned search
c0468714
GM
7140* Timeline:: Time-sorted view for single file
7141* Search view:: Find entries by searching for text
7142* Stuck projects:: Find projects you need to review
4009494e
GM
7143@end menu
7144
a7808fba 7145@node Weekly/daily agenda, Global TODO list, Built-in agenda views, Built-in agenda views
4009494e
GM
7146@subsection The weekly/daily agenda
7147@cindex agenda
7148@cindex weekly agenda
7149@cindex daily agenda
7150
7151The purpose of the weekly/daily @emph{agenda} is to act like a page of a
7152paper agenda, showing all the tasks for the current week or day.
7153
7154@table @kbd
7155@cindex org-agenda, command
acedf35c 7156@orgcmd{C-c a a,org-agenda-list}
c8d0cf5c 7157Compile an agenda for the current week from a list of Org files. The agenda
864c9740
CD
7158shows the entries for each day. With a numeric prefix@footnote{For backward
7159compatibility, the universal prefix @kbd{C-u} causes all TODO entries to be
7160listed before the agenda. This feature is deprecated, use the dedicated TODO
7161list, or a block agenda instead (@pxref{Block agenda}).} (like @kbd{C-u 2 1
acedf35c 7162C-c a a}) you may set the number of days to be displayed.
4009494e
GM
7163@end table
7164
acedf35c
CD
7165@vindex org-agenda-span
7166@vindex org-agenda-ndays
7167The default number of days displayed in the agenda is set by the variable
7168@code{org-agenda-span} (or the obsolete @code{org-agenda-ndays}). This
7169variable can be set to any number of days you want to see by default in the
7170agenda, or to a span name, such a @code{day}, @code{week}, @code{month} or
7171@code{year}.
7172
4009494e
GM
7173Remote editing from the agenda buffer means, for example, that you can
7174change the dates of deadlines and appointments from the agenda buffer.
7175The commands available in the Agenda buffer are listed in @ref{Agenda
7176commands}.
7177
7178@subsubheading Calendar/Diary integration
7179@cindex calendar integration
7180@cindex diary integration
7181
7182Emacs contains the calendar and diary by Edward M. Reingold. The
7183calendar displays a three-month calendar with holidays from different
7184countries and cultures. The diary allows you to keep track of
7185anniversaries, lunar phases, sunrise/set, recurrent appointments
7186(weekly, monthly) and more. In this way, it is quite complementary to
a7808fba 7187Org. It can be very useful to combine output from Org with
4009494e
GM
7188the diary.
7189
86fbb8ca 7190In order to include entries from the Emacs diary into Org-mode's
4009494e
GM
7191agenda, you only need to customize the variable
7192
7193@lisp
7194(setq org-agenda-include-diary t)
7195@end lisp
7196
7197@noindent After that, everything will happen automatically. All diary
c8d0cf5c 7198entries including holidays, anniversaries, etc., will be included in the
86fbb8ca 7199agenda buffer created by Org-mode. @key{SPC}, @key{TAB}, and
4009494e
GM
7200@key{RET} can be used from the agenda buffer to jump to the diary
7201file in order to edit existing diary entries. The @kbd{i} command to
7202insert new entries for the current date works in the agenda buffer, as
7203well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
7204Sunrise/Sunset times, show lunar phases and to convert to other
7205calendars, respectively. @kbd{c} can be used to switch back and forth
7206between calendar and agenda.
7207
7208If you are using the diary only for sexp entries and holidays, it is
7209faster to not use the above setting, but instead to copy or even move
ce57c2fe 7210the entries into an Org file. Org-mode evaluates diary-style sexp
4009494e
GM
7211entries, and does it faster because there is no overhead for first
7212creating the diary display. Note that the sexp entries must start at
c8d0cf5c 7213the left margin, no whitespace is allowed before them. For example,
a7808fba 7214the following segment of an Org file will be processed and entries
4009494e
GM
7215will be made in the agenda:
7216
7217@example
7218* Birthdays and similar stuff
7219#+CATEGORY: Holiday
7220%%(org-calendar-holiday) ; special function for holiday names
7221#+CATEGORY: Ann
ce57c2fe
BG
7222%%(org-anniversary 1956 5 14)@footnote{@code{org-anniversary} is just like @code{diary-anniversary}, but the argument order is allways according to ISO and therefore independent of the value of @code{calendar-date-style}.} Arthur Dent is %d years old
7223%%(org-anniversary 1869 10 2) Mahatma Gandhi would be %d years old
4009494e
GM
7224@end example
7225
c8d0cf5c
CD
7226@subsubheading Anniversaries from BBDB
7227@cindex BBDB, anniversaries
7228@cindex anniversaries, from BBDB
7229
7230If you are using the Big Brothers Database to store your contacts, you will
7231very likely prefer to store anniversaries in BBDB rather than in a
7232separate Org or diary file. Org supports this and will show BBDB
7233anniversaries as part of the agenda. All you need to do is to add the
7234following to one your your agenda files:
7235
7236@example
7237* Anniversaries
7238 :PROPERTIES:
7239 :CATEGORY: Anniv
86fbb8ca 7240 :END:
c8d0cf5c
CD
7241%%(org-bbdb-anniversaries)
7242@end example
7243
7244You can then go ahead and define anniversaries for a BBDB record. Basically,
7245you need to press @kbd{C-o anniversary @key{RET}} with the cursor in a BBDB
ce57c2fe
BG
7246record and then add the date in the format @code{YYYY-MM-DD} or @code{MM-DD},
7247followed by a space and the class of the anniversary (@samp{birthday} or
7248@samp{wedding}, or a format string). If you omit the class, it will default to
7249@samp{birthday}. Here are a few examples, the header for the file
7250@file{org-bbdb.el} contains more detailed information.
c8d0cf5c
CD
7251
7252@example
72531973-06-22
ce57c2fe 725406-22
c8d0cf5c
CD
72551955-08-02 wedding
72562008-04-14 %s released version 6.01 of org-mode, %d years ago
7257@end example
7258
7259After a change to BBDB, or for the first agenda display during an Emacs
7260session, the agenda display will suffer a short delay as Org updates its
7261hash with anniversaries. However, from then on things will be very fast---much
7262faster in fact than a long list of @samp{%%(diary-anniversary)} entries
7263in an Org or Diary file.
7264
dbc28aaa
CD
7265@subsubheading Appointment reminders
7266@cindex @file{appt.el}
7267@cindex appointment reminders
7268
c8d0cf5c
CD
7269Org can interact with Emacs appointments notification facility. To add all
7270the appointments of your agenda files, use the command
7271@code{org-agenda-to-appt}. This command also lets you filter through the
7272list of your appointments and add only those belonging to a specific category
ce57c2fe 7273or matching a regular expression. See the docstring for details.
dbc28aaa 7274
a7808fba 7275@node Global TODO list, Matching tags and properties, Weekly/daily agenda, Built-in agenda views
4009494e
GM
7276@subsection The global TODO list
7277@cindex global TODO list
7278@cindex TODO list, global
7279
c8d0cf5c 7280The global TODO list contains all unfinished TODO items formatted and
4009494e
GM
7281collected into a single place.
7282
7283@table @kbd
acedf35c 7284@orgcmd{C-c a t,org-todo-list}
86fbb8ca
CD
7285Show the global TODO list. This collects the TODO items from all agenda
7286files (@pxref{Agenda Views}) into a single buffer. By default, this lists
7287items with a state the is not a DONE state. The buffer is in
7288@code{agenda-mode}, so there are commands to examine and manipulate the TODO
7289entries directly from that buffer (@pxref{Agenda commands}).
acedf35c 7290@orgcmd{C-c a T,org-todo-list}
4009494e 7291@cindex TODO keyword matching
c8d0cf5c 7292@vindex org-todo-keywords
86fbb8ca
CD
7293Like the above, but allows selection of a specific TODO keyword. You can
7294also do this by specifying a prefix argument to @kbd{C-c a t}. You are
7295prompted for a keyword, and you may also specify several keywords by
7296separating them with @samp{|} as the boolean OR operator. With a numeric
acedf35c 7297prefix, the Nth keyword in @code{org-todo-keywords} is selected.
4009494e
GM
7298@kindex r
7299The @kbd{r} key in the agenda buffer regenerates it, and you can give
7300a prefix argument to this command to change the selected TODO keyword,
7301for example @kbd{3 r}. If you often need a search for a specific
7302keyword, define a custom command for it (@pxref{Agenda dispatcher}).@*
7303Matching specific TODO keywords can also be done as part of a tags
7304search (@pxref{Tag searches}).
7305@end table
7306
7307Remote editing of TODO items means that you can change the state of a
7308TODO entry with a single key press. The commands available in the
7309TODO list are described in @ref{Agenda commands}.
7310
a7808fba
CD
7311@cindex sublevels, inclusion into TODO list
7312Normally the global TODO list simply shows all headlines with TODO
4009494e
GM
7313keywords. This list can become very long. There are two ways to keep
7314it more compact:
7315@itemize @minus
7316@item
c8d0cf5c
CD
7317@vindex org-agenda-todo-ignore-scheduled
7318@vindex org-agenda-todo-ignore-deadlines
acedf35c 7319@vindex org-agenda-todo-ignore-timestamp
c8d0cf5c
CD
7320@vindex org-agenda-todo-ignore-with-date
7321Some people view a TODO item that has been @emph{scheduled} for execution or
7322have a @emph{deadline} (@pxref{Timestamps}) as no longer @emph{open}.
7323Configure the variables @code{org-agenda-todo-ignore-scheduled},
acedf35c
CD
7324@code{org-agenda-todo-ignore-deadlines},
7325@code{org-agenda-todo-ignore-timestamp} and/or
7326@code{org-agenda-todo-ignore-with-date} to exclude such items from the global
7327TODO list.
c8d0cf5c
CD
7328@item
7329@vindex org-agenda-todo-list-sublevels
4009494e
GM
7330TODO items may have sublevels to break up the task into subtasks. In
7331such cases it may be enough to list only the highest level TODO headline
7332and omit the sublevels from the global list. Configure the variable
7333@code{org-agenda-todo-list-sublevels} to get this behavior.
7334@end itemize
7335
7336@node Matching tags and properties, Timeline, Global TODO list, Built-in agenda views
a7808fba 7337@subsection Matching tags and properties
4009494e
GM
7338@cindex matching, of tags
7339@cindex matching, of properties
7340@cindex tags view
864c9740 7341@cindex match view
4009494e 7342
c8d0cf5c
CD
7343If headlines in the agenda files are marked with @emph{tags} (@pxref{Tags}),
7344or have properties (@pxref{Properties and Columns}), you can select headlines
7345based on this metadata and collect them into an agenda buffer. The match
7346syntax described here also applies when creating sparse trees with @kbd{C-c /
7347m}.
4009494e
GM
7348
7349@table @kbd
acedf35c 7350@orgcmd{C-c a m,org-tags-view}
4009494e
GM
7351Produce a list of all headlines that match a given set of tags. The
7352command prompts for a selection criterion, which is a boolean logic
dbc28aaa
CD
7353expression with tags, like @samp{+work+urgent-withboss} or
7354@samp{work|home} (@pxref{Tags}). If you often need a specific search,
4009494e 7355define a custom command for it (@pxref{Agenda dispatcher}).
acedf35c 7356@orgcmd{C-c a M,org-tags-view}
c8d0cf5c
CD
7357@vindex org-tags-match-list-sublevels
7358@vindex org-agenda-tags-todo-honor-ignore-options
86fbb8ca
CD
7359Like @kbd{C-c a m}, but only select headlines that are also TODO items in a
7360not-DONE state and force checking subitems (see variable
7361@code{org-tags-match-list-sublevels}). To exclude scheduled/deadline items,
7362see the variable @code{org-agenda-tags-todo-honor-ignore-options}. Matching
7363specific TODO keywords together with a tags match is also possible, see
7364@ref{Tag searches}.
4009494e
GM
7365@end table
7366
7367The commands available in the tags list are described in @ref{Agenda
7368commands}.
7369
c8d0cf5c 7370@subsubheading Match syntax
4009494e 7371
c8d0cf5c
CD
7372@cindex Boolean logic, for tag/property searches
7373A search string can use Boolean operators @samp{&} for AND and @samp{|} for
7374OR. @samp{&} binds more strongly than @samp{|}. Parentheses are currently
7375not implemented. Each element in the search is either a tag, a regular
7376expression matching tags, or an expression like @code{PROPERTY OPERATOR
7377VALUE} with a comparison operator, accessing a property value. Each element
7378may be preceded by @samp{-}, to select against it, and @samp{+} is syntactic
7379sugar for positive selection. The AND operator @samp{&} is optional when
7380@samp{+} or @samp{-} is present. Here are some examples, using only tags.
4009494e 7381
c8d0cf5c
CD
7382@table @samp
7383@item +work-boss
7384Select headlines tagged @samp{:work:}, but discard those also tagged
7385@samp{:boss:}.
7386@item work|laptop
7387Selects lines tagged @samp{:work:} or @samp{:laptop:}.
7388@item work|laptop+night
7389Like before, but require the @samp{:laptop:} lines to be tagged also
7390@samp{:night:}.
4009494e
GM
7391@end table
7392
c8d0cf5c
CD
7393@cindex regular expressions, with tags search
7394Instead of a tag, you may also specify a regular expression enclosed in curly
7395braces. For example,
7396@samp{work+@{^boss.*@}} matches headlines that contain the tag
7397@samp{:work:} and any tag @i{starting} with @samp{boss}.
7398
7399@cindex TODO keyword matching, with tags search
7400@cindex level, require for tags/property match
7401@cindex category, require for tags/property match
7402@vindex org-odd-levels-only
7403You may also test for properties (@pxref{Properties and Columns}) at the same
7404time as matching tags. The properties may be real properties, or special
7405properties that represent other metadata (@pxref{Special properties}). For
7406example, the ``property'' @code{TODO} represents the TODO keyword of the
7407entry. Or, the ``property'' @code{LEVEL} represents the level of an entry.
7408So a search @samp{+LEVEL=3+boss-TODO="DONE"} lists all level three headlines
7409that have the tag @samp{boss} and are @emph{not} marked with the TODO keyword
7410DONE. In buffers with @code{org-odd-levels-only} set, @samp{LEVEL} does not
7411count the number of stars, but @samp{LEVEL=2} will correspond to 3 stars etc.
7412
7413Here are more examples:
7414@table @samp
7415@item work+TODO="WAITING"
7416Select @samp{:work:}-tagged TODO lines with the specific TODO
7417keyword @samp{WAITING}.
7418@item work+TODO="WAITING"|home+TODO="WAITING"
7419Waiting tasks both at work and at home.
7420@end table
7421
7422When matching properties, a number of different operators can be used to test
7423the value of a property. Here is a complex example:
7424
7425@example
7426+work-boss+PRIORITY="A"+Coffee="unlimited"+Effort<2 \
7427 +With=@{Sarah\|Denny@}+SCHEDULED>="<2008-10-11>"
7428@end example
7429
7430@noindent
7431The type of comparison will depend on how the comparison value is written:
7432@itemize @minus
7433@item
7434If the comparison value is a plain number, a numerical comparison is done,
7435and the allowed operators are @samp{<}, @samp{=}, @samp{>}, @samp{<=},
7436@samp{>=}, and @samp{<>}.
7437@item
7438If the comparison value is enclosed in double-quotes,
7439a string comparison is done, and the same operators are allowed.
7440@item
7441If the comparison value is enclosed in double-quotes @emph{and} angular
7442brackets (like @samp{DEADLINE<="<2008-12-24 18:30>"}), both values are
7443assumed to be date/time specifications in the standard Org way, and the
7444comparison will be done accordingly. Special values that will be recognized
7445are @code{"<now>"} for now (including time), and @code{"<today>"}, and
ce57c2fe 7446@code{"<tomorrow>"} for these days at 0:00 hours, i.e.@: without a time
c8d0cf5c
CD
7447specification. Also strings like @code{"<+5d>"} or @code{"<-2m>"} with units
7448@code{d}, @code{w}, @code{m}, and @code{y} for day, week, month, and year,
7449respectively, can be used.
7450@item
7451If the comparison value is enclosed
7452in curly braces, a regexp match is performed, with @samp{=} meaning that the
7453regexp matches the property value, and @samp{<>} meaning that it does not
7454match.
7455@end itemize
7456
7457So the search string in the example finds entries tagged @samp{:work:} but
7458not @samp{:boss:}, which also have a priority value @samp{A}, a
7459@samp{:Coffee:} property with the value @samp{unlimited}, an @samp{Effort}
7460property that is numerically smaller than 2, a @samp{:With:} property that is
7461matched by the regular expression @samp{Sarah\|Denny}, and that are scheduled
7462on or after October 11, 2008.
7463
7464Accessing TODO, LEVEL, and CATEGORY during a search is fast. Accessing any
7465other properties will slow down the search. However, once you have paid the
7466price by accessing one property, testing additional properties is cheap
7467again.
7468
86fbb8ca 7469You can configure Org-mode to use property inheritance during a search, but
c8d0cf5c
CD
7470beware that this can slow down searches considerably. See @ref{Property
7471inheritance}, for details.
7472
7473For backward compatibility, and also for typing speed, there is also a
7474different way to test TODO states in a search. For this, terminate the
7475tags/property part of the search string (which may include several terms
7476connected with @samp{|}) with a @samp{/} and then specify a Boolean
7477expression just for TODO keywords. The syntax is then similar to that for
86fbb8ca
CD
7478tags, but should be applied with care: for example, a positive selection on
7479several TODO keywords cannot meaningfully be combined with boolean AND.
7480However, @emph{negative selection} combined with AND can be meaningful. To
7481make sure that only lines are checked that actually have any TODO keyword
7482(resulting in a speed-up), use @kbd{C-c a M}, or equivalently start the TODO
7483part after the slash with @samp{!}. Using @kbd{C-c a M} or @samp{/!} will
7484not match TODO keywords in a DONE state. Examples:
c8d0cf5c
CD
7485
7486@table @samp
7487@item work/WAITING
7488Same as @samp{work+TODO="WAITING"}
7489@item work/!-WAITING-NEXT
7490Select @samp{:work:}-tagged TODO lines that are neither @samp{WAITING}
7491nor @samp{NEXT}
7492@item work/!+WAITING|+NEXT
7493Select @samp{:work:}-tagged TODO lines that are either @samp{WAITING} or
7494@samp{NEXT}.
7495@end table
7496
a351880d 7497@node Timeline, Search view, Matching tags and properties, Built-in agenda views
c8d0cf5c
CD
7498@subsection Timeline for a single file
7499@cindex timeline, single file
7500@cindex time-sorted view
7501
86fbb8ca 7502The timeline summarizes all time-stamped items from a single Org-mode
c8d0cf5c
CD
7503file in a @emph{time-sorted view}. The main purpose of this command is
7504to give an overview over events in a project.
7505
7506@table @kbd
acedf35c 7507@orgcmd{C-c a L,org-timeline}
c8d0cf5c
CD
7508Show a time-sorted view of the Org file, with all time-stamped items.
7509When called with a @kbd{C-u} prefix, all unfinished TODO entries
7510(scheduled or not) are also listed under the current date.
7511@end table
7512
7513@noindent
7514The commands available in the timeline buffer are listed in
7515@ref{Agenda commands}.
7516
a351880d
CD
7517@node Search view, Stuck projects, Timeline, Built-in agenda views
7518@subsection Search view
7519@cindex search view
7520@cindex text search
7521@cindex searching, for text
c8d0cf5c 7522
86fbb8ca 7523This agenda view is a general text search facility for Org-mode entries.
c8d0cf5c 7524It is particularly useful to find notes.
28a16a1b
CD
7525
7526@table @kbd
acedf35c 7527@orgcmd{C-c a s,org-search-view}
a351880d
CD
7528This is a special search that lets you select entries by matching a substring
7529or specific words using a boolean logic.
7530@end table
7531For example, the search string @samp{computer equipment} will find entries
7532that contain @samp{computer equipment} as a substring. If the two words are
7533separated by more space or a line break, the search will still match.
7534Search view can also search for specific keywords in the entry, using Boolean
7535logic. The search string @samp{+computer +wifi -ethernet -@{8\.11[bg]@}}
28a16a1b
CD
7536will search for note entries that contain the keywords @code{computer}
7537and @code{wifi}, but not the keyword @code{ethernet}, and which are also
7538not matched by the regular expression @code{8\.11[bg]}, meaning to
ed21c5c8
CD
7539exclude both 8.11b and 8.11g. The first @samp{+} is necessary to turn on
7540word search, other @samp{+} characters are optional. For more details, see
7541the docstring of the command @code{org-search-view}.
28a16a1b 7542
c8d0cf5c 7543@vindex org-agenda-text-search-extra-files
28a16a1b
CD
7544Note that in addition to the agenda files, this command will also search
7545the files listed in @code{org-agenda-text-search-extra-files}.
28a16a1b 7546
a351880d 7547@node Stuck projects, , Search view, Built-in agenda views
4009494e 7548@subsection Stuck projects
ce57c2fe 7549@pindex GTD, Getting Things Done
4009494e
GM
7550
7551If you are following a system like David Allen's GTD to organize your
7552work, one of the ``duties'' you have is a regular review to make sure
7553that all projects move along. A @emph{stuck} project is a project that
7554has no defined next actions, so it will never show up in the TODO lists
86fbb8ca 7555Org-mode produces. During the review, you need to identify such
4009494e
GM
7556projects and define next actions for them.
7557
7558@table @kbd
acedf35c 7559@orgcmd{C-c a #,org-agenda-list-stuck-projects}
4009494e
GM
7560List projects that are stuck.
7561@kindex C-c a !
7562@item C-c a !
c8d0cf5c 7563@vindex org-stuck-projects
4009494e
GM
7564Customize the variable @code{org-stuck-projects} to define what a stuck
7565project is and how to find it.
7566@end table
7567
7568You almost certainly will have to configure this view before it will
7569work for you. The built-in default assumes that all your projects are
7570level-2 headlines, and that a project is not stuck if it has at least
a7808fba 7571one entry marked with a TODO keyword TODO or NEXT or NEXTACTION.
4009494e 7572
86fbb8ca 7573Let's assume that you, in your own way of using Org-mode, identify
a7808fba 7574projects with a tag PROJECT, and that you use a TODO keyword MAYBE to
864c9740 7575indicate a project that should not be considered yet. Let's further
a7808fba 7576assume that the TODO keyword DONE marks finished projects, and that NEXT
4009494e
GM
7577and TODO indicate next actions. The tag @@SHOP indicates shopping and
7578is a next action even without the NEXT tag. Finally, if the project
7579contains the special word IGNORE anywhere, it should not be listed
7580either. In this case you would start by identifying eligible projects
c8d0cf5c
CD
7581with a tags/todo match@footnote{@xref{Tag searches}.}
7582@samp{+PROJECT/-MAYBE-DONE}, and then check for TODO, NEXT, @@SHOP, and
7583IGNORE in the subtree to identify projects that are not stuck. The
7584correct customization for this is
4009494e
GM
7585
7586@lisp
7587(setq org-stuck-projects
7588 '("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP")
7589 "\\<IGNORE\\>"))
7590@end lisp
7591
c8d0cf5c
CD
7592Note that if a project is identified as non-stuck, the subtree of this entry
7593will still be searched for stuck projects.
4009494e 7594
a7808fba 7595@node Presentation and sorting, Agenda commands, Built-in agenda views, Agenda Views
4009494e
GM
7596@section Presentation and sorting
7597@cindex presentation, of agenda items
7598
c8d0cf5c 7599@vindex org-agenda-prefix-format
ce57c2fe
BG
7600@vindex org-agenda-tags-column
7601Before displaying items in an agenda view, Org-mode visually prepares the
7602items and sorts them. Each item occupies a single line. The line starts
7603with a @emph{prefix} that contains the @emph{category} (@pxref{Categories})
7604of the item and other important information. You can customize in which
7605column tags will be displayed through @code{org-agenda-tags-column}. You can
7606also customize the prefix using the option @code{org-agenda-prefix-format}.
7607This prefix is followed by a cleaned-up version of the outline headline
4009494e
GM
7608associated with the item.
7609
7610@menu
c0468714
GM
7611* Categories:: Not all tasks are equal
7612* Time-of-day specifications:: How the agenda knows the time
7613* Sorting of agenda items:: The order of things
4009494e
GM
7614@end menu
7615
7616@node Categories, Time-of-day specifications, Presentation and sorting, Presentation and sorting
7617@subsection Categories
7618
7619@cindex category
afe98dfa 7620@cindex #+CATEGORY
4009494e
GM
7621The category is a broad label assigned to each agenda item. By default,
7622the category is simply derived from the file name, but you can also
dbc28aaa 7623specify it with a special line in the buffer, like this@footnote{For
c8d0cf5c 7624backward compatibility, the following also works: if there are several
dbc28aaa
CD
7625such lines in a file, each specifies the category for the text below it.
7626The first category also applies to any text before the first CATEGORY
7627line. However, using this method is @emph{strongly} deprecated as it is
7628incompatible with the outline structure of the document. The correct
7629method for setting multiple categories in a buffer is using a
7630property.}:
4009494e
GM
7631
7632@example
7633#+CATEGORY: Thesis
7634@end example
7635
dbc28aaa 7636@noindent
c8d0cf5c 7637@cindex property, CATEGORY
dbc28aaa 7638If you would like to have a special CATEGORY for a single entry or a
55e0839d
CD
7639(sub)tree, give the entry a @code{:CATEGORY:} property with the
7640special category you want to apply as the value.
dbc28aaa
CD
7641
7642@noindent
7643The display in the agenda buffer looks best if the category is not
7644longer than 10 characters.
4009494e 7645
acedf35c
CD
7646@noindent
7647You can set up icons for category by customizing the
7648@code{org-agenda-category-icon-alist} variable.
7649
4009494e 7650@node Time-of-day specifications, Sorting of agenda items, Categories, Presentation and sorting
a7808fba 7651@subsection Time-of-day specifications
4009494e
GM
7652@cindex time-of-day specification
7653
86fbb8ca 7654Org-mode checks each agenda item for a time-of-day specification. The
c8d0cf5c 7655time can be part of the timestamp that triggered inclusion into the
4009494e 7656agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}. Time
c8d0cf5c 7657ranges can be specified with two timestamps, like
4009494e
GM
7658@c
7659@w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
7660
7661In the headline of the entry itself, a time(range) may also appear as
44ce9197 7662plain text (like @samp{12:45} or a @samp{8:30-1pm}). If the agenda
a7808fba 7663integrates the Emacs diary (@pxref{Weekly/daily agenda}), time
4009494e
GM
7664specifications in diary entries are recognized as well.
7665
86fbb8ca 7666For agenda display, Org-mode extracts the time and displays it in a
4009494e
GM
7667standard 24 hour format as part of the prefix. The example times in
7668the previous paragraphs would end up in the agenda like this:
7669
7670@example
7671 8:30-13:00 Arthur Dent lies in front of the bulldozer
7672 12:45...... Ford Prefect arrives and takes Arthur to the pub
7673 19:00...... The Vogon reads his poem
a50253cc 7674 20:30-22:15 Marvin escorts the Hitchhikers to the bridge
4009494e
GM
7675@end example
7676
7677@cindex time grid
7678If the agenda is in single-day mode, or for the display of today, the
7679timed entries are embedded in a time grid, like
7680
7681@example
7682 8:00...... ------------------
7683 8:30-13:00 Arthur Dent lies in front of the bulldozer
7684 10:00...... ------------------
7685 12:00...... ------------------
7686 12:45...... Ford Prefect arrives and takes Arthur to the pub
7687 14:00...... ------------------
7688 16:00...... ------------------
7689 18:00...... ------------------
7690 19:00...... The Vogon reads his poem
7691 20:00...... ------------------
2096a1b6 7692 20:30-22:15 Marvin escorts the Hitchhikers to the bridge
4009494e
GM
7693@end example
7694
c8d0cf5c
CD
7695@vindex org-agenda-use-time-grid
7696@vindex org-agenda-time-grid
4009494e
GM
7697The time grid can be turned on and off with the variable
7698@code{org-agenda-use-time-grid}, and can be configured with
7699@code{org-agenda-time-grid}.
7700
7701@node Sorting of agenda items, , Time-of-day specifications, Presentation and sorting
7702@subsection Sorting of agenda items
7703@cindex sorting, of agenda items
7704@cindex priorities, of agenda items
7705Before being inserted into a view, the items are sorted. How this is
7706done depends on the type of view.
7707@itemize @bullet
7708@item
c8d0cf5c 7709@vindex org-agenda-files
4009494e
GM
7710For the daily/weekly agenda, the items for each day are sorted. The
7711default order is to first collect all items containing an explicit
7712time-of-day specification. These entries will be shown at the beginning
7713of the list, as a @emph{schedule} for the day. After that, items remain
7714grouped in categories, in the sequence given by @code{org-agenda-files}.
7715Within each category, items are sorted by priority (@pxref{Priorities}),
7716which is composed of the base priority (2000 for priority @samp{A}, 1000
7717for @samp{B}, and 0 for @samp{C}), plus additional increments for
7718overdue scheduled or deadline items.
28a16a1b 7719@item
4009494e
GM
7720For the TODO list, items remain in the order of categories, but within
7721each category, sorting takes place according to priority
c8d0cf5c
CD
7722(@pxref{Priorities}). The priority used for sorting derives from the
7723priority cookie, with additions depending on how close an item is to its due
7724or scheduled date.
4009494e
GM
7725@item
7726For tags matches, items are not sorted at all, but just appear in the
7727sequence in which they are found in the agenda files.
7728@end itemize
7729
c8d0cf5c 7730@vindex org-agenda-sorting-strategy
4009494e 7731Sorting can be customized using the variable
a7808fba 7732@code{org-agenda-sorting-strategy}, and may also include criteria based on
71d35b24 7733the estimated effort of an entry (@pxref{Effort estimates}).
4009494e 7734
a7808fba 7735@node Agenda commands, Custom agenda views, Presentation and sorting, Agenda Views
4009494e
GM
7736@section Commands in the agenda buffer
7737@cindex commands, in agenda buffer
7738
c8d0cf5c 7739Entries in the agenda buffer are linked back to the Org file or diary
4009494e
GM
7740file where they originate. You are not allowed to edit the agenda
7741buffer itself, but commands are provided to show and jump to the
c8d0cf5c 7742original entry location, and to edit the Org files ``remotely'' from
4009494e
GM
7743the agenda buffer. In this way, all information is stored only once,
7744removing the risk that your agenda and note files may diverge.
7745
7746Some commands can be executed with mouse clicks on agenda lines. For
7747the other commands, the cursor needs to be in the desired line.
7748
7749@table @kbd
7750@tsubheading{Motion}
7751@cindex motion commands in agenda
acedf35c 7752@orgcmd{n,org-agenda-next-line}
dbc28aaa 7753Next line (same as @key{up} and @kbd{C-p}).
acedf35c 7754@orgcmd{p,org-agenda-previous-line}
dbc28aaa 7755Previous line (same as @key{down} and @kbd{C-n}).
c8d0cf5c 7756@tsubheading{View/Go to Org file}
acedf35c 7757@orgcmdkkc{@key{SPC},mouse-3,org-agenda-show-and-scroll-up}
4009494e 7758Display the original location of the item in another window.
b6cb4cd5
CD
7759With prefix arg, make sure that the entire entry is made visible in the
7760outline, not only the heading.
4009494e 7761@c
acedf35c 7762@orgcmd{L,org-agenda-recenter}
4009494e
GM
7763Display original location and recenter that window.
7764@c
acedf35c
CD
7765@orgcmdkkc{@key{TAB},mouse-2,org-agenda-goto}
7766Go to the original location of the item in another window.
4009494e 7767@c
acedf35c 7768@orgcmd{@key{RET},org-agenda-switch-to}
4009494e
GM
7769Go to the original location of the item and delete other windows.
7770@c
acedf35c 7771@orgcmd{F,org-agenda-follow-mode}
c8d0cf5c 7772@vindex org-agenda-start-with-follow-mode
4009494e
GM
7773Toggle Follow mode. In Follow mode, as you move the cursor through
7774the agenda buffer, the other window always shows the corresponding
c8d0cf5c 7775location in the Org file. The initial setting for this mode in new
4009494e
GM
7776agenda buffers can be set with the variable
7777@code{org-agenda-start-with-follow-mode}.
7778@c
acedf35c 7779@orgcmd{C-c C-x b,org-agenda-tree-to-indirect-buffer}
a7808fba
CD
7780Display the entire subtree of the current item in an indirect buffer. With a
7781numeric prefix argument N, go up to level N and then take that tree. If N is
7782negative, go up that many levels. With a @kbd{C-u} prefix, do not remove the
7783previously used indirect buffer.
6eb02347 7784
acedf35c 7785@orgcmd{C-c C-o,org-agenda-open-link}
6eb02347
CD
7786Follow a link in the entry. This will offer a selection of any links in the
7787text belonging to the referenced Org node. If there is only one link, it
7788will be followed without a selection prompt.
4009494e
GM
7789
7790@tsubheading{Change display}
7791@cindex display changing, in agenda
ce57c2fe
BG
7792@kindex A
7793@item A
7794Interactively select another agenda view and append it to the current view.
7795@c
4009494e
GM
7796@kindex o
7797@item o
7798Delete other windows.
7799@c
acedf35c
CD
7800@orgcmdkskc{v d,d,org-aganda-day-view}
7801@xorgcmdkskc{v w,w,org-aganda-day-view}
7802@xorgcmd{v m,org-agenda-month-view}
7803@xorgcmd{v y,org-agenda-month-year}
ce57c2fe
BG
7804@xorgcmd{v SPC,org-agenda-reset-view}
7805@vindex org-agenda-span
7806Switch to day/week/month/year view. When switching to day or week view, this
7807setting becomes the default for subsequent agenda refreshes. Since month and
7808year views are slow to create, they do not become the default. A numeric
7809prefix argument may be used to jump directly to a specific day of the year,
7810ISO week, month, or year, respectively. For example, @kbd{32 d} jumps to
7811February 1st, @kbd{9 w} to ISO week number 9. When setting day, week, or
7812month view, a year may be encoded in the prefix argument as well. For
7813example, @kbd{200712 w} will jump to week 12 in 2007. If such a year
7814specification has only one or two digits, it will be mapped to the interval
78151938-2037. @kbd{v @key{SPC}} will reset to what is set in
7816@code{org-agenda-span}.
4009494e 7817@c
acedf35c
CD
7818@orgcmd{f,org-agenda-later}
7819Go forward in time to display the following @code{org-agenda-current-span} days.
6eb02347 7820For example, if the display covers a week, switch to the following week.
acedf35c 7821With prefix arg, go forward that many times @code{org-agenda-current-span} days.
6eb02347 7822@c
acedf35c 7823@orgcmd{b,org-agenda-earlier}
6eb02347
CD
7824Go backward in time to display earlier dates.
7825@c
acedf35c 7826@orgcmd{.,org-agenda-goto-today}
6eb02347
CD
7827Go to today.
7828@c
acedf35c 7829@orgcmd{j,org-agenda-goto-date}
6eb02347
CD
7830Prompt for a date and go there.
7831@c
acedf35c
CD
7832@orgcmd{J,org-agenda-clock-goto}
7833Go to the currently clocked-in task @i{in the agenda buffer}.
afe98dfa 7834@c
acedf35c 7835@orgcmd{D,org-agenda-toggle-diary}
a7808fba 7836Toggle the inclusion of diary entries. See @ref{Weekly/daily agenda}.
4009494e 7837@c
acedf35c 7838@orgcmdkskc{v l,l,org-agenda-log-mode}
ed21c5c8 7839@kindex v L
6eb02347
CD
7840@vindex org-log-done
7841@vindex org-agenda-log-mode-items
7842Toggle Logbook mode. In Logbook mode, entries that were marked DONE while
7843logging was on (variable @code{org-log-done}) are shown in the agenda, as are
7844entries that have been clocked on that day. You can configure the entry
7845types that should be included in log mode using the variable
7846@code{org-agenda-log-mode-items}. When called with a @kbd{C-u} prefix, show
7847all possible logbook entries, including state changes. When called with two
7848prefix args @kbd{C-u C-u}, show only logging information, nothing else.
ed21c5c8 7849@kbd{v L} is equivalent to @kbd{C-u v l}.
6eb02347 7850@c
acedf35c 7851@orgcmdkskc{v [,[,org-agenda-manipulate-query-add}
6eb02347
CD
7852Include inactive timestamps into the current view. Only for weekly/daily
7853agenda and timeline views.
7854@c
acedf35c
CD
7855@orgcmd{v a,org-agenda-archives-mode}
7856@xorgcmd{v A,org-agenda-archives-mode 'files}
6eb02347
CD
7857Toggle Archives mode. In Archives mode, trees that are marked
7858@code{ARCHIVED} are also scanned when producing the agenda. When you use the
7859capital @kbd{A}, even all archive files are included. To exit archives mode,
7860press @kbd{v a} again.
7861@c
acedf35c 7862@orgcmdkskc{v R,R,org-agenda-clockreport-mode}
6eb02347
CD
7863@vindex org-agenda-start-with-clockreport-mode
7864Toggle Clockreport mode. In Clockreport mode, the daily/weekly agenda will
7865always show a table with the clocked times for the timespan and file scope
7866covered by the current agenda view. The initial setting for this mode in new
7867agenda buffers can be set with the variable
acedf35c 7868@code{org-agenda-start-with-clockreport-mode}. By using a prefix argument
ce57c2fe 7869when toggling this mode (i.e.@: @kbd{C-u R}), the clock table will not show
acedf35c
CD
7870contributions from entries that are hidden by agenda filtering@footnote{Only
7871tags filtering will be respected here, effort filtering is ignored.}.
6eb02347 7872@c
ce57c2fe
BG
7873@orgkey{v c}
7874@vindex org-agenda-clock-consistency-checks
7875Show overlapping clock entries, clocking gaps, and other clocking problems in
7876the current agenda range. You can then visit clocking lines and fix them
7877manually. See the variable @code{org-agenda-clock-consistency-checks} for
7878information on how to customize the definition of what constituted a clocking
7879problem. To return to normal agenda display, press @kbd{l} to exit Logbook
7880mode.
7881@c
acedf35c 7882@orgcmdkskc{v E,E,org-agenda-entry-text-mode}
6eb02347
CD
7883@vindex org-agenda-start-with-entry-text-mode
7884@vindex org-agenda-entry-text-maxlines
7885Toggle entry text mode. In entry text mode, a number of lines from the Org
7886outline node referenced by an agenda line will be displayed below the line.
7887The maximum number of lines is given by the variable
7888@code{org-agenda-entry-text-maxlines}. Calling this command with a numeric
7889prefix argument will temporarily modify that number to the prefix value.
7890@c
acedf35c 7891@orgcmd{G,org-agenda-toggle-time-grid}
c8d0cf5c
CD
7892@vindex org-agenda-use-time-grid
7893@vindex org-agenda-time-grid
4009494e
GM
7894Toggle the time grid on and off. See also the variables
7895@code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
7896@c
ce57c2fe 7897@orgcmd{r,org-agenda-redo}
560bb6ea 7898Recreate the agenda buffer, for example to reflect the changes after
3bcfba17 7899modification of the timestamps of items with @kbd{S-@key{left}} and
560bb6ea 7900@kbd{S-@key{right}}. When the buffer is the global TODO list, a prefix
4009494e
GM
7901argument is interpreted to create a selective list for a specific TODO
7902keyword.
ce57c2fe 7903@orgcmd{g,org-agenda-redo}
28a16a1b 7904Same as @kbd{r}.
4009494e 7905@c
acedf35c 7906@orgcmdkskc{C-x C-s,s,org-save-all-org-buffers}
c8d0cf5c
CD
7907Save all Org buffers in the current Emacs session, and also the locations of
7908IDs.
4009494e 7909@c
acedf35c 7910@orgcmd{C-c C-x C-c,org-agenda-columns}
c8d0cf5c 7911@vindex org-columns-default-format
a7808fba
CD
7912Invoke column view (@pxref{Column view}) in the agenda buffer. The column
7913view format is taken from the entry at point, or (if there is no entry at
7914point), from the first entry in the agenda view. So whatever the format for
7915that entry would be in the original buffer (taken from a property, from a
7916@code{#+COLUMNS} line, or from the default variable
7917@code{org-columns-default-format}), will be used in the agenda.
4009494e 7918
acedf35c 7919@orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
c8d0cf5c
CD
7920Remove the restriction lock on the agenda, if it is currently restricted to a
7921file or subtree (@pxref{Agenda files}).
7922
864c9740 7923@tsubheading{Secondary filtering and query editing}
71d35b24
CD
7924@cindex filtering, by tag and effort, in agenda
7925@cindex tag filtering, in agenda
7926@cindex effort filtering, in agenda
28a16a1b
CD
7927@cindex query editing, in agenda
7928
acedf35c 7929@orgcmd{/,org-agenda-filter-by-tag}
c8d0cf5c 7930@vindex org-agenda-filter-preset
71d35b24 7931Filter the current agenda view with respect to a tag and/or effort estimates.
c8d0cf5c 7932The difference between this and a custom agenda command is that filtering is
71d35b24 7933very fast, so that you can switch quickly between different filters without
acedf35c 7934having to recreate the agenda.@footnote{Custom commands can preset a filter by
c8d0cf5c
CD
7935binding the variable @code{org-agenda-filter-preset} as an option. This
7936filter will then be applied to the view and persist as a basic filter through
afe98dfa 7937refreshes and more secondary filtering. The filter is a global property of
acedf35c 7938the entire agenda view---in a block agenda, you should only set this in the
afe98dfa 7939global options section, not in the section of an individual block.}
71d35b24 7940
acedf35c 7941You will be prompted for a tag selection letter; @key{SPC} will mean any tag at
a351880d
CD
7942all. Pressing @key{TAB} at that prompt will offer use completion to select a
7943tag (including any tags that do not have a selection character). The command
7944then hides all entries that do not contain or inherit this tag. When called
7945with prefix arg, remove the entries that @emph{do} have the tag. A second
7946@kbd{/} at the prompt will turn off the filter and unhide any hidden entries.
7947If the first key you press is either @kbd{+} or @kbd{-}, the previous filter
7948will be narrowed by requiring or forbidding the selected additional tag.
7949Instead of pressing @kbd{+} or @kbd{-} after @kbd{/}, you can also
7950immediately use the @kbd{\} command.
71d35b24 7951
c8d0cf5c 7952@vindex org-sort-agenda-noeffort-is-high
acedf35c 7953In order to filter for effort estimates, you should set up allowed
71d35b24
CD
7954efforts globally, for example
7955@lisp
7956(setq org-global-properties
7957 '(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))
7958@end lisp
c8d0cf5c
CD
7959You can then filter for an effort by first typing an operator, one of
7960@kbd{<}, @kbd{>}, and @kbd{=}, and then the one-digit index of an effort
7961estimate in your array of allowed values, where @kbd{0} means the 10th value.
7962The filter will then restrict to entries with effort smaller-or-equal, equal,
7963or larger-or-equal than the selected value. If the digits 0-9 are not used
7964as fast access keys to tags, you can also simply press the index digit
7965directly without an operator. In this case, @kbd{<} will be assumed. For
7966application of the operator, entries without a defined effort will be treated
7967according to the value of @code{org-sort-agenda-noeffort-is-high}. To filter
7968for tasks without effort definition, press @kbd{?} as the operator.
71d35b24 7969
a351880d
CD
7970Org also supports automatic, context-aware tag filtering. If the variable
7971@code{org-agenda-auto-exclude-function} is set to a user-defined function,
7972that function can decide which tags should be excluded from the agenda
7973automatically. Once this is set, the @kbd{/} command then accepts @kbd{RET}
7974as a sub-option key and runs the auto exclusion logic. For example, let's
7975say you use a @code{Net} tag to identify tasks which need network access, an
7976@code{Errand} tag for errands in town, and a @code{Call} tag for making phone
7977calls. You could auto-exclude these tags based on the availability of the
7978Internet, and outside of business hours, with something like this:
7979
7980@lisp
7981@group
7982(defun org-my-auto-exclude-function (tag)
7983 (and (cond
c0468714
GM
7984 ((string= tag "Net")
7985 (/= 0 (call-process "/sbin/ping" nil nil nil
7986 "-c1" "-q" "-t1" "mail.gnu.org")))
7987 ((or (string= tag "Errand") (string= tag "Call"))
7988 (let ((hour (nth 2 (decode-time))))
7989 (or (< hour 8) (> hour 21)))))
a351880d
CD
7990 (concat "-" tag)))
7991
7992(setq org-agenda-auto-exclude-function 'org-my-auto-exclude-function)
7993@end group
7994@end lisp
7995
ce57c2fe 7996@orgcmd{\\,org-agenda-filter-by-tag-refine}
71d35b24
CD
7997Narrow the current agenda filter by an additional condition. When called with
7998prefix arg, remove the entries that @emph{do} have the tag, or that do match
7999the effort criterion. You can achieve the same effect by pressing @kbd{+} or
8000@kbd{-} as the first key after the @kbd{/} command.
864c9740 8001
acedf35c 8002@c
28a16a1b
CD
8003@kindex [
8004@kindex ]
8005@kindex @{
8006@kindex @}
8007@item [ ] @{ @}
6eb02347
CD
8008@table @i
8009@item @r{in} search view
8010add new search words (@kbd{[} and @kbd{]}) or new regular expressions
8011(@kbd{@{} and @kbd{@}}) to the query string. The opening bracket/brace will
8012add a positive search term prefixed by @samp{+}, indicating that this search
8013term @i{must} occur/match in the entry. The closing bracket/brace will add a
8014negative search term which @i{must not} occur/match in the entry for it to be
864c9740 8015selected.
6eb02347 8016@end table
28a16a1b 8017
4009494e
GM
8018@tsubheading{Remote editing}
8019@cindex remote editing, from agenda
8020
8021@item 0-9
8022Digit argument.
8023@c
8024@cindex undoing remote-editing events
8025@cindex remote editing, undo
acedf35c 8026@orgcmd{C-_,org-agenda-undo}
4009494e
GM
8027Undo a change due to a remote editing command. The change is undone
8028both in the agenda buffer and in the remote buffer.
8029@c
acedf35c 8030@orgcmd{t,org-agenda-todo}
4009494e
GM
8031Change the TODO state of the item, both in the agenda and in the
8032original org file.
8033@c
acedf35c
CD
8034@orgcmd{C-S-@key{right},org-agenda-todo-nextset}
8035@orgcmd{C-S-@key{left},org-agenda-todo-previousset}
a351880d
CD
8036Switch to the next/previous set of TODO keywords.
8037@c
acedf35c 8038@orgcmd{C-k,org-agenda-kill}
c8d0cf5c 8039@vindex org-agenda-confirm-kill
4009494e 8040Delete the current agenda item along with the entire subtree belonging
a7808fba 8041to it in the original Org file. If the text to be deleted remotely
4009494e
GM
8042is longer than one line, the kill needs to be confirmed by the user. See
8043variable @code{org-agenda-confirm-kill}.
8044@c
acedf35c 8045@orgcmd{C-c C-w,org-agenda-refile}
c8d0cf5c
CD
8046Refile the entry at point.
8047@c
acedf35c 8048@orgcmdkskc{C-c C-x C-a,a,org-agenda-archive-default-with-confirmation}
a351880d
CD
8049@vindex org-archive-default-command
8050Archive the subtree corresponding to the entry at point using the default
8051archiving command set in @code{org-archive-default-command}. When using the
8052@code{a} key, confirmation will be required.
8053@c
acedf35c 8054@orgcmd{C-c C-x a,org-agenda-toggle-archive-tag}
a7808fba
CD
8055Toggle the ARCHIVE tag for the current headline.
8056@c
acedf35c 8057@orgcmd{C-c C-x A,org-agenda-archive-to-archive-sibling}
c8d0cf5c
CD
8058Move the subtree corresponding to the current entry to its @emph{archive
8059sibling}.
a7808fba 8060@c
acedf35c 8061@orgcmdkskc{C-c C-x C-s,$,org-agenda-archive}
a7808fba 8062Archive the subtree corresponding to the current headline. This means the
b349f79f 8063entry will be moved to the configured archive location, most likely a
a7808fba 8064different file.
4009494e 8065@c
acedf35c 8066@orgcmd{T,org-agenda-show-tags}
c8d0cf5c 8067@vindex org-agenda-show-inherited-tags
96c8522a
CD
8068Show all tags associated with the current item. This is useful if you have
8069turned off @code{org-agenda-show-inherited-tags}, but still want to see all
8070tags of a headline occasionally.
4009494e 8071@c
acedf35c 8072@orgcmd{:,org-agenda-set-tags}
dbc28aaa
CD
8073Set tags for the current headline. If there is an active region in the
8074agenda, change a tag for all headings in the region.
4009494e 8075@c
4009494e
GM
8076@kindex ,
8077@item ,
acedf35c 8078Set the priority for the current item (@command{org-agenda-priority}).
ce57c2fe
BG
8079Org-mode prompts for the priority character. If you reply with @key{SPC},
8080the priority cookie is removed from the entry.
4009494e 8081@c
acedf35c 8082@orgcmd{P,org-agenda-show-priority}
4009494e
GM
8083Display weighted priority of current item.
8084@c
acedf35c 8085@orgcmdkkc{+,S-@key{up},org-agenda-priority-up}
4009494e
GM
8086Increase the priority of the current item. The priority is changed in
8087the original buffer, but the agenda is not resorted. Use the @kbd{r}
8088key for this.
8089@c
acedf35c 8090@orgcmdkkc{-,S-@key{down},org-agenda-priority-down}
4009494e
GM
8091Decrease the priority of the current item.
8092@c
acedf35c 8093@orgcmdkkc{z,C-c C-z,org-agenda-add-note}
c8d0cf5c 8094@vindex org-log-into-drawer
acedf35c 8095Add a note to the entry. This note will be recorded, and then filed to the
c8d0cf5c 8096same location where state change notes are put. Depending on
acedf35c 8097@code{org-log-into-drawer}, this may be inside a drawer.
c8d0cf5c 8098@c
acedf35c 8099@orgcmd{C-c C-a,org-attach}
864c9740
CD
8100Dispatcher for all command related to attachments.
8101@c
acedf35c
CD
8102@orgcmd{C-c C-s,org-agenda-schedule}
8103Schedule this item. With prefix arg remove the scheduling timestamp
4009494e 8104@c
acedf35c
CD
8105@orgcmd{C-c C-d,org-agenda-deadline}
8106Set a deadline for this item. With prefix arg remove the deadline.
4009494e 8107@c
acedf35c 8108@orgcmd{k,org-agenda-action}
b349f79f
CD
8109Agenda actions, to set dates for selected items to the cursor date.
8110This command also works in the calendar! The command prompts for an
a50253cc 8111additional key:
b349f79f
CD
8112@example
8113m @r{Mark the entry at point for action. You can also make entries}
8114 @r{in Org files with @kbd{C-c C-x C-k}.}
8115d @r{Set the deadline of the marked entry to the date at point.}
8116s @r{Schedule the marked entry at the date at point.}
86fbb8ca 8117r @r{Call @code{org-capture} with the cursor date as default date.}
b349f79f 8118@end example
c8d0cf5c 8119@noindent
a50253cc 8120Press @kbd{r} afterward to refresh the agenda and see the effect of the
b349f79f
CD
8121command.
8122@c
acedf35c 8123@orgcmd{S-@key{right},org-agenda-do-date-later}
c8d0cf5c 8124Change the timestamp associated with the current line by one day into the
a7808fba 8125future. With a numeric prefix argument, change it by that many days. For
c8d0cf5c
CD
8126example, @kbd{3 6 5 S-@key{right}} will change it by a year. With a
8127@kbd{C-u} prefix, change the time by one hour. If you immediately repeat the
8128command, it will continue to change hours even without the prefix arg. With
8129a double @kbd{C-u C-u} prefix, do the same for changing minutes. The stamp
8130is changed in the original Org file, but the change is not directly reflected
8131in the agenda buffer. Use @kbd{r} or @kbd{g} to update the buffer.
4009494e 8132@c
acedf35c 8133@orgcmd{S-@key{left},org-agenda-do-date-earlier}
c8d0cf5c 8134Change the timestamp associated with the current line by one day
4009494e
GM
8135into the past.
8136@c
acedf35c 8137@orgcmd{>,org-agenda-date-prompt}
ed21c5c8
CD
8138Change the timestamp associated with the current line. The key @kbd{>} has
8139been chosen, because it is the same as @kbd{S-.} on my keyboard.
4009494e 8140@c
acedf35c 8141@orgcmd{I,org-agenda-clock-in}
4009494e
GM
8142Start the clock on the current item. If a clock is running already, it
8143is stopped first.
8144@c
acedf35c 8145@orgcmd{O,org-agenda-clock-out}
4009494e
GM
8146Stop the previously started clock.
8147@c
acedf35c 8148@orgcmd{X,org-agenda-clock-cancel}
4009494e 8149Cancel the currently running clock.
acedf35c
CD
8150@c
8151@orgcmd{J,org-agenda-clock-goto}
dbc28aaa
CD
8152Jump to the running clock in another window.
8153
c8d0cf5c
CD
8154@tsubheading{Bulk remote editing selected entries}
8155@cindex remote editing, bulk, from agenda
8156
acedf35c
CD
8157@orgcmd{m,org-agenda-bulk-mark}
8158Mark the entry at point for bulk action. With prefix arg, mark that many
8159successive entries.
8160@c
ce57c2fe
BG
8161@orgcmd{%,org-agenda-bulk-mark-regexp}
8162Mark entries matching a regular expression for bulk action.
8163@c
acedf35c 8164@orgcmd{u,org-agenda-bulk-unmark}
c8d0cf5c 8165Unmark entry for bulk action.
acedf35c
CD
8166@c
8167@orgcmd{U,org-agenda-bulk-remove-all-marks}
c8d0cf5c 8168Unmark all marked entries for bulk action.
acedf35c
CD
8169@c
8170@orgcmd{B,org-agenda-bulk-action}
c8d0cf5c 8171Bulk action: act on all marked entries in the agenda. This will prompt for
ed21c5c8
CD
8172another key to select the action to be applied. The prefix arg to @kbd{B}
8173will be passed through to the @kbd{s} and @kbd{d} commands, to bulk-remove
8174these special timestamps.
c8d0cf5c
CD
8175@example
8176r @r{Prompt for a single refile target and move all entries. The entries}
acedf35c 8177 @r{will no longer be in the agenda; refresh (@kbd{g}) to bring them back.}
c8d0cf5c
CD
8178$ @r{Archive all selected entries.}
8179A @r{Archive entries by moving them to their respective archive siblings.}
8180t @r{Change TODO state. This prompts for a single TODO keyword and}
8181 @r{changes the state of all selected entries, bypassing blocking and}
ce57c2fe 8182 @r{suppressing logging notes (but not timestamps).}
c8d0cf5c
CD
8183+ @r{Add a tag to all selected entries.}
8184- @r{Remove a tag from all selected entries.}
8185s @r{Schedule all items to a new date. To shift existing schedule dates}
8186 @r{by a fixed number of days, use something starting with double plus}
8187 @r{at the prompt, for example @samp{++8d} or @samp{++2w}.}
ce57c2fe
BG
8188S @r{Reschedule randomly into the coming N days. N will be prompted for.}
8189 @r{With prefix arg (@kbd{C-u B S}), scatter only across weekdays.}
c8d0cf5c 8190d @r{Set deadline to a specific date.}
ce57c2fe
BG
8191f @r{Apply a function to marked entries.}
8192 @r{For example, the function below sets the CATEGORY property of the}
8193 @r{entries to web.}
8194 @r{(defun set-category ()}
8195 @r{ (interactive "P")}
8196 @r{ (let* ((marker (or (org-get-at-bol 'org-hd-marker)}
8197 @r{ (org-agenda-error)))}
8198 @r{ (buffer (marker-buffer marker)))}
8199 @r{ (with-current-buffer buffer}
8200 @r{ (save-excursion}
8201 @r{ (save-restriction}
8202 @r{ (widen)}
8203 @r{ (goto-char marker)}
8204 @r{ (org-back-to-heading t)}
8205 @r{ (org-set-property "CATEGORY" "web"))))))}
c8d0cf5c
CD
8206@end example
8207
8208
4009494e
GM
8209@tsubheading{Calendar commands}
8210@cindex calendar commands, from agenda
acedf35c
CD
8211
8212@orgcmd{c,org-agenda-goto-calendar}
4009494e
GM
8213Open the Emacs calendar and move to the date at the agenda cursor.
8214@c
acedf35c 8215@orgcmd{c,org-calendar-goto-agenda}
86fbb8ca 8216When in the calendar, compute and show the Org-mode agenda for the
4009494e
GM
8217date at the cursor.
8218@c
8219@cindex diary entries, creating from agenda
acedf35c 8220@orgcmd{i,org-agenda-diary-entry}
a351880d
CD
8221@vindex org-agenda-diary-file
8222Insert a new entry into the diary, using the date at the cursor and (for
8223block entries) the date at the mark. This will add to the Emacs diary
8224file@footnote{This file is parsed for the agenda when
8225@code{org-agenda-include-diary} is set.}, in a way similar to the @kbd{i}
8226command in the calendar. The diary file will pop up in another window, where
8227you can add the entry.
8228
8229If you configure @code{org-agenda-diary-file} to point to an Org-mode file,
8230Org will create entries (in org-mode syntax) in that file instead. Most
8231entries will be stored in a date-based outline tree that will later make it
8232easy to archive appointments from previous months/years. The tree will be
86fbb8ca 8233built under an entry with a @code{DATE_TREE} property, or else with years as
acedf35c 8234top-level entries. Emacs will prompt you for the entry text---if you specify
a351880d
CD
8235it, the entry will be created in @code{org-agenda-diary-file} without further
8236interaction. If you directly press @key{RET} at the prompt without typing
8237text, the target file will be shown in another window for you to finish the
8238entry there. See also the @kbd{k r} command.
4009494e 8239@c
acedf35c 8240@orgcmd{M,org-agenda-phases-of-moon}
4009494e
GM
8241Show the phases of the moon for the three months around current date.
8242@c
acedf35c 8243@orgcmd{S,org-agenda-sunrise-sunset}
4009494e 8244Show sunrise and sunset times. The geographical location must be set
c8d0cf5c 8245with calendar variables, see the documentation for the Emacs calendar.
4009494e 8246@c
acedf35c 8247@orgcmd{C,org-agenda-convert-date}
4009494e
GM
8248Convert the date at cursor into many other cultural and historic
8249calendars.
8250@c
acedf35c 8251@orgcmd{H,org-agenda-holidays}
c8d0cf5c 8252Show holidays for three months around the cursor date.
a7808fba
CD
8253
8254@item M-x org-export-icalendar-combine-agenda-files
4009494e 8255Export a single iCalendar file containing entries from all agenda files.
a7808fba 8256This is a globally available command, and also available in the agenda menu.
4009494e
GM
8257
8258@tsubheading{Exporting to a file}
acedf35c 8259@orgcmd{C-x C-w,org-write-agenda}
4009494e
GM
8260@cindex exporting agenda views
8261@cindex agenda views, exporting
c8d0cf5c
CD
8262@vindex org-agenda-exporter-settings
8263Write the agenda view to a file. Depending on the extension of the selected
8264file name, the view will be exported as HTML (extension @file{.html} or
8265@file{.htm}), Postscript (extension @file{.ps}), PDF (extension @file{.pdf}),
a351880d
CD
8266and plain text (any other extension). When called with a @kbd{C-u} prefix
8267argument, immediately open the newly created file. Use the variable
8268@code{org-agenda-exporter-settings} to set options for @file{ps-print} and
8269for @file{htmlize} to be used during export.
4009494e
GM
8270
8271@tsubheading{Quit and Exit}
acedf35c 8272@orgcmd{q,org-agenda-quit}
4009494e
GM
8273Quit agenda, remove the agenda buffer.
8274@c
4009494e 8275@cindex agenda files, removing buffers
acedf35c 8276@orgcmd{x,org-agenda-exit}
4009494e
GM
8277Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
8278for the compilation of the agenda. Buffers created by the user to
c8d0cf5c 8279visit Org files will not be removed.
4009494e
GM
8280@end table
8281
8282
c8d0cf5c 8283@node Custom agenda views, Exporting Agenda Views, Agenda commands, Agenda Views
4009494e
GM
8284@section Custom agenda views
8285@cindex custom agenda views
8286@cindex agenda views, custom
8287
8288Custom agenda commands serve two purposes: to store and quickly access
8289frequently used TODO and tags searches, and to create special composite
8290agenda buffers. Custom agenda commands will be accessible through the
8291dispatcher (@pxref{Agenda dispatcher}), just like the default commands.
8292
8293@menu
c0468714
GM
8294* Storing searches:: Type once, use often
8295* Block agenda:: All the stuff you need in a single buffer
8296* Setting Options:: Changing the rules
4009494e
GM
8297@end menu
8298
8299@node Storing searches, Block agenda, Custom agenda views, Custom agenda views
8300@subsection Storing searches
8301
8302The first application of custom searches is the definition of keyboard
8303shortcuts for frequently used searches, either creating an agenda
8304buffer, or a sparse tree (the latter covering of course only the current
8305buffer).
8306@kindex C-c a C
c8d0cf5c 8307@vindex org-agenda-custom-commands
4009494e
GM
8308Custom commands are configured in the variable
8309@code{org-agenda-custom-commands}. You can customize this variable, for
8310example by pressing @kbd{C-c a C}. You can also directly set it with
8311Emacs Lisp in @file{.emacs}. The following example contains all valid
8312search types:
8313
8314@lisp
8315@group
8316(setq org-agenda-custom-commands
8317 '(("w" todo "WAITING")
8318 ("W" todo-tree "WAITING")
dbc28aaa
CD
8319 ("u" tags "+boss-urgent")
8320 ("v" tags-todo "+boss-urgent")
8321 ("U" tags-tree "+boss-urgent")
8322 ("f" occur-tree "\\<FIXME\\>")
8323 ("h" . "HOME+Name tags searches") ; description for "h" prefix
8324 ("hl" tags "+home+Lisa")
8325 ("hp" tags "+home+Peter")
8326 ("hk" tags "+home+Kim")))
4009494e
GM
8327@end group
8328@end lisp
8329
8330@noindent
dbc28aaa
CD
8331The initial string in each entry defines the keys you have to press
8332after the dispatcher command @kbd{C-c a} in order to access the command.
8333Usually this will be just a single character, but if you have many
8334similar commands, you can also define two-letter combinations where the
8335first character is the same in several combinations and serves as a
8336prefix key@footnote{You can provide a description for a prefix key by
8337inserting a cons cell with the prefix and the description.}. The second
8338parameter is the search type, followed by the string or regular
8339expression to be used for the matching. The example above will
8340therefore define:
4009494e
GM
8341
8342@table @kbd
8343@item C-c a w
8344as a global search for TODO entries with @samp{WAITING} as the TODO
8345keyword
8346@item C-c a W
8347as the same search, but only in the current buffer and displaying the
8348results as a sparse tree
8349@item C-c a u
dbc28aaa
CD
8350as a global tags search for headlines marked @samp{:boss:} but not
8351@samp{:urgent:}
4009494e
GM
8352@item C-c a v
8353as the same search as @kbd{C-c a u}, but limiting the search to
8354headlines that are also TODO items
8355@item C-c a U
8356as the same search as @kbd{C-c a u}, but only in the current buffer and
8357displaying the result as a sparse tree
8358@item C-c a f
8359to create a sparse tree (again: current buffer only) with all entries
dbc28aaa
CD
8360containing the word @samp{FIXME}
8361@item C-c a h
8362as a prefix command for a HOME tags search where you have to press an
8363additional key (@kbd{l}, @kbd{p} or @kbd{k}) to select a name (Lisa,
8364Peter, or Kim) as additional tag to match.
4009494e
GM
8365@end table
8366
8367@node Block agenda, Setting Options, Storing searches, Custom agenda views
8368@subsection Block agenda
8369@cindex block agenda
8370@cindex agenda, with block views
8371
8372Another possibility is the construction of agenda views that comprise
8373the results of @emph{several} commands, each of which creates a block in
8374the agenda buffer. The available commands include @code{agenda} for the
8375daily or weekly agenda (as created with @kbd{C-c a a}), @code{alltodo}
a7808fba 8376for the global TODO list (as constructed with @kbd{C-c a t}), and the
4009494e
GM
8377matching commands discussed above: @code{todo}, @code{tags}, and
8378@code{tags-todo}. Here are two examples:
8379
8380@lisp
8381@group
8382(setq org-agenda-custom-commands
8383 '(("h" "Agenda and Home-related tasks"
28a16a1b 8384 ((agenda "")
dbc28aaa
CD
8385 (tags-todo "home")
8386 (tags "garden")))
4009494e 8387 ("o" "Agenda and Office-related tasks"
28a16a1b 8388 ((agenda "")
dbc28aaa
CD
8389 (tags-todo "work")
8390 (tags "office")))))
4009494e
GM
8391@end group
8392@end lisp
8393
8394@noindent
8395This will define @kbd{C-c a h} to create a multi-block view for stuff
8396you need to attend to at home. The resulting agenda buffer will contain
8397your agenda for the current week, all TODO items that carry the tag
dbc28aaa 8398@samp{home}, and also all lines tagged with @samp{garden}. Finally the
4009494e
GM
8399command @kbd{C-c a o} provides a similar view for office tasks.
8400
c8d0cf5c 8401@node Setting Options, , Block agenda, Custom agenda views
a7808fba 8402@subsection Setting options for custom commands
4009494e
GM
8403@cindex options, for custom agenda views
8404
c8d0cf5c 8405@vindex org-agenda-custom-commands
86fbb8ca 8406Org-mode contains a number of variables regulating agenda construction
4009494e
GM
8407and display. The global variables define the behavior for all agenda
8408commands, including the custom commands. However, if you want to change
8409some settings just for a single custom view, you can do so. Setting
8410options requires inserting a list of variable names and values at the
8411right spot in @code{org-agenda-custom-commands}. For example:
8412
8413@lisp
8414@group
8415(setq org-agenda-custom-commands
8416 '(("w" todo "WAITING"
8417 ((org-agenda-sorting-strategy '(priority-down))
8418 (org-agenda-prefix-format " Mixed: ")))
dbc28aaa 8419 ("U" tags-tree "+boss-urgent"
4009494e 8420 ((org-show-following-heading nil)
28a16a1b
CD
8421 (org-show-hierarchy-above nil)))
8422 ("N" search ""
8423 ((org-agenda-files '("~org/notes.org"))
8424 (org-agenda-text-search-extra-files nil)))))
4009494e
GM
8425@end group
8426@end lisp
8427
8428@noindent
8429Now the @kbd{C-c a w} command will sort the collected entries only by
dbc28aaa 8430priority, and the prefix format is modified to just say @samp{ Mixed: }
4009494e
GM
8431instead of giving the category of the entry. The sparse tags tree of
8432@kbd{C-c a U} will now turn out ultra-compact, because neither the
8433headline hierarchy above the match, nor the headline following the match
28a16a1b
CD
8434will be shown. The command @kbd{C-c a N} will do a text search limited
8435to only a single file.
4009494e 8436
c8d0cf5c 8437@vindex org-agenda-custom-commands
4009494e
GM
8438For command sets creating a block agenda,
8439@code{org-agenda-custom-commands} has two separate spots for setting
8440options. You can add options that should be valid for just a single
8441command in the set, and options that should be valid for all commands in
acedf35c 8442the set. The former are just added to the command entry; the latter
4009494e
GM
8443must come after the list of command entries. Going back to the block
8444agenda example (@pxref{Block agenda}), let's change the sorting strategy
8445for the @kbd{C-c a h} commands to @code{priority-down}, but let's sort
8446the results for GARDEN tags query in the opposite order,
8447@code{priority-up}. This would look like this:
8448
8449@lisp
8450@group
8451(setq org-agenda-custom-commands
8452 '(("h" "Agenda and Home-related tasks"
8453 ((agenda)
dbc28aaa
CD
8454 (tags-todo "home")
8455 (tags "garden"
4009494e
GM
8456 ((org-agenda-sorting-strategy '(priority-up)))))
8457 ((org-agenda-sorting-strategy '(priority-down))))
8458 ("o" "Agenda and Office-related tasks"
8459 ((agenda)
dbc28aaa
CD
8460 (tags-todo "work")
8461 (tags "office")))))
4009494e
GM
8462@end group
8463@end lisp
8464
c8d0cf5c
CD
8465As you see, the values and parentheses setting is a little complex.
8466When in doubt, use the customize interface to set this variable---it
8467fully supports its structure. Just one caveat: when setting options in
8468this interface, the @emph{values} are just Lisp expressions. So if the
8469value is a string, you need to add the double-quotes around the value
4009494e
GM
8470yourself.
8471
8472
c8d0cf5c
CD
8473@node Exporting Agenda Views, Agenda column view, Custom agenda views, Agenda Views
8474@section Exporting Agenda Views
4009494e
GM
8475@cindex agenda views, exporting
8476
3da3282e 8477If you are away from your computer, it can be very useful to have a printed
86fbb8ca 8478version of some agenda views to carry around. Org-mode can export custom
3da3282e 8479agenda views as plain text, HTML@footnote{You need to install Hrvoje Niksic's
c8d0cf5c
CD
8480@file{htmlize.el}.}, Postscript, PDF@footnote{To create PDF output, the
8481ghostscript @file{ps2pdf} utility must be installed on the system. Selecting
ce57c2fe 8482a PDF file will also create the postscript file.}, and iCalendar files. If
c8d0cf5c 8483you want to do this only occasionally, use the command
4009494e
GM
8484
8485@table @kbd
acedf35c 8486@orgcmd{C-x C-w,org-write-agenda}
4009494e
GM
8487@cindex exporting agenda views
8488@cindex agenda views, exporting
c8d0cf5c 8489@vindex org-agenda-exporter-settings
7006d207
CD
8490Write the agenda view to a file. Depending on the extension of the selected
8491file name, the view will be exported as HTML (extension @file{.html} or
8492@file{.htm}), Postscript (extension @file{.ps}), iCalendar (extension
a351880d
CD
8493@file{.ics}), or plain text (any other extension). Use the variable
8494@code{org-agenda-exporter-settings} to set options for @file{ps-print} and
8495for @file{htmlize} to be used during export, for example
28a16a1b 8496
c8d0cf5c
CD
8497@vindex org-agenda-add-entry-text-maxlines
8498@vindex htmlize-output-type
8499@vindex ps-number-of-columns
8500@vindex ps-landscape-mode
4009494e
GM
8501@lisp
8502(setq org-agenda-exporter-settings
8503 '((ps-number-of-columns 2)
8504 (ps-landscape-mode t)
c8d0cf5c 8505 (org-agenda-add-entry-text-maxlines 5)
4009494e
GM
8506 (htmlize-output-type 'css)))
8507@end lisp
8508@end table
8509
8510If you need to export certain agenda views frequently, you can associate
8511any custom agenda command with a list of output file names
8512@footnote{If you want to store standard views like the weekly agenda
8513or the global TODO list as well, you need to define custom commands for
28a16a1b 8514them in order to be able to specify file names.}. Here is an example
c8d0cf5c
CD
8515that first defines custom commands for the agenda and the global
8516TODO list, together with a number of files to which to export them.
28a16a1b 8517Then we define two block agenda commands and specify file names for them
4009494e
GM
8518as well. File names can be relative to the current working directory,
8519or absolute.
8520
8521@lisp
8522@group
8523(setq org-agenda-custom-commands
8524 '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
8525 ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
8526 ("h" "Agenda and Home-related tasks"
28a16a1b 8527 ((agenda "")
dbc28aaa
CD
8528 (tags-todo "home")
8529 (tags "garden"))
4009494e
GM
8530 nil
8531 ("~/views/home.html"))
8532 ("o" "Agenda and Office-related tasks"
8533 ((agenda)
dbc28aaa
CD
8534 (tags-todo "work")
8535 (tags "office"))
4009494e 8536 nil
28a16a1b 8537 ("~/views/office.ps" "~/calendars/office.ics"))))
4009494e
GM
8538@end group
8539@end lisp
8540
8541The extension of the file name determines the type of export. If it is
86fbb8ca 8542@file{.html}, Org-mode will use the @file{htmlize.el} package to convert
4009494e
GM
8543the buffer to HTML and save it to this file name. If the extension is
8544@file{.ps}, @code{ps-print-buffer-with-faces} is used to produce
c8d0cf5c 8545Postscript output. If the extension is @file{.ics}, iCalendar export is
28a16a1b 8546run export over all files that were used to construct the agenda, and
c8d0cf5c 8547limit the export to entries listed in the agenda. Any other
28a16a1b 8548extension produces a plain ASCII file.
4009494e
GM
8549
8550The export files are @emph{not} created when you use one of those
28a16a1b
CD
8551commands interactively because this might use too much overhead.
8552Instead, there is a special command to produce @emph{all} specified
8553files in one step:
4009494e
GM
8554
8555@table @kbd
acedf35c 8556@orgcmd{C-c a e,org-store-agenda-views}
28a16a1b 8557Export all agenda views that have export file names associated with
4009494e
GM
8558them.
8559@end table
8560
8561You can use the options section of the custom agenda commands to also
8562set options for the export commands. For example:
8563
8564@lisp
8565(setq org-agenda-custom-commands
8566 '(("X" agenda ""
8567 ((ps-number-of-columns 2)
8568 (ps-landscape-mode t)
8569 (org-agenda-prefix-format " [ ] ")
8570 (org-agenda-with-colors nil)
8571 (org-agenda-remove-tags t))
8572 ("theagenda.ps"))))
8573@end lisp
8574
8575@noindent
c8d0cf5c
CD
8576This command sets two options for the Postscript exporter, to make it
8577print in two columns in landscape format---the resulting page can be cut
4009494e
GM
8578in two and then used in a paper agenda. The remaining settings modify
8579the agenda prefix to omit category and scheduling information, and
8580instead include a checkbox to check off items. We also remove the tags
8581to make the lines compact, and we don't want to use colors for the
8582black-and-white printer. Settings specified in
8583@code{org-agenda-exporter-settings} will also apply, but the settings
8584in @code{org-agenda-custom-commands} take precedence.
8585
8586@noindent
8587From the command line you may also use
8588@example
8589emacs -f org-batch-store-agenda-views -kill
8590@end example
8591@noindent
c8d0cf5c
CD
8592or, if you need to modify some parameters@footnote{Quoting depends on the
8593system you use, please check the FAQ for examples.}
4009494e
GM
8594@example
8595emacs -eval '(org-batch-store-agenda-views \
acedf35c 8596 org-agenda-span month \
dbc28aaa 8597 org-agenda-start-day "2007-11-01" \
4009494e
GM
8598 org-agenda-include-diary nil \
8599 org-agenda-files (quote ("~/org/project.org")))' \
8600 -kill
8601@end example
8602@noindent
8603which will create the agenda views restricted to the file
c8d0cf5c 8604@file{~/org/project.org}, without diary entries and with a 30-day
28a16a1b 8605extent.
4009494e 8606
c8d0cf5c
CD
8607You can also extract agenda information in a way that allows further
8608processing by other programs. See @ref{Extracting agenda information}, for
8609more information.
4009494e 8610
4009494e 8611
c8d0cf5c 8612@node Agenda column view, , Exporting Agenda Views, Agenda Views
a7808fba
CD
8613@section Using column view in the agenda
8614@cindex column view, in agenda
8615@cindex agenda, column view
8616
8617Column view (@pxref{Column view}) is normally used to view and edit
8618properties embedded in the hierarchical structure of an Org file. It can be
8619quite useful to use column view also from the agenda, where entries are
8620collected by certain criteria.
8621
8622@table @kbd
acedf35c 8623@orgcmd{C-c C-x C-c,org-agenda-columns}
a7808fba
CD
8624Turn on column view in the agenda.
8625@end table
8626
8627To understand how to use this properly, it is important to realize that the
8628entries in the agenda are no longer in their proper outline environment.
8629This causes the following issues:
8630
8631@enumerate
8632@item
c8d0cf5c
CD
8633@vindex org-columns-default-format
8634@vindex org-overriding-columns-format
a7808fba
CD
8635Org needs to make a decision which @code{COLUMNS} format to use. Since the
8636entries in the agenda are collected from different files, and different files
8637may have different @code{COLUMNS} formats, this is a non-trivial problem.
ce57c2fe 8638Org first checks if the variable @code{org-agenda-overriding-columns-format} is
c8d0cf5c 8639currently set, and if so, takes the format from there. Otherwise it takes
a7808fba 8640the format associated with the first item in the agenda, or, if that item
c8d0cf5c 8641does not have a specific format (defined in a property, or in its file), it
a7808fba
CD
8642uses @code{org-columns-default-format}.
8643@item
c8d0cf5c 8644@cindex property, special, CLOCKSUM
a7808fba
CD
8645If any of the columns has a summary type defined (@pxref{Column attributes}),
8646turning on column view in the agenda will visit all relevant agenda files and
8647make sure that the computations of this property are up to date. This is
8648also true for the special @code{CLOCKSUM} property. Org will then sum the
8649values displayed in the agenda. In the daily/weekly agenda, the sums will
acedf35c 8650cover a single day; in all other views they cover the entire block. It is
a7808fba
CD
8651vital to realize that the agenda may show the same entry @emph{twice} (for
8652example as scheduled and as a deadline), and it may show two entries from the
c8d0cf5c 8653same hierarchy (for example a @emph{parent} and its @emph{child}). In these
a7808fba
CD
8654cases, the summation in the agenda will lead to incorrect results because
8655some values will count double.
8656@item
8657When the column view in the agenda shows the @code{CLOCKSUM}, that is always
8658the entire clocked time for this item. So even in the daily/weekly agenda,
8659the clocksum listed in column view may originate from times outside the
8660current view. This has the advantage that you can compare these values with
c8d0cf5c 8661a column listing the planned total effort for a task---one of the major
a7808fba
CD
8662applications for column view in the agenda. If you want information about
8663clocked time in the displayed period use clock table mode (press @kbd{R} in
8664the agenda).
8665@end enumerate
8666
8667
a351880d
CD
8668@node Markup, Exporting, Agenda Views, Top
8669@chapter Markup for rich export
4009494e 8670
a351880d
CD
8671When exporting Org-mode documents, the exporter tries to reflect the
8672structure of the document as accurately as possible in the backend. Since
acedf35c 8673export targets like HTML, @LaTeX{}, or DocBook allow much richer formatting,
86fbb8ca 8674Org-mode has rules on how to prepare text for rich export. This section
a351880d 8675summarizes the markup rules used in an Org-mode buffer.
4009494e 8676
a351880d 8677@menu
c0468714
GM
8678* Structural markup elements:: The basic structure as seen by the exporter
8679* Images and tables:: Tables and Images will be included
8680* Literal examples:: Source code examples with special formatting
8681* Include files:: Include additional files into a document
8682* Index entries:: Making an index
8683* Macro replacement:: Use macros to create complex output
8684* Embedded LaTeX:: LaTeX can be freely used inside Org documents
a351880d
CD
8685@end menu
8686
8687@node Structural markup elements, Images and tables, Markup, Markup
8688@section Structural markup elements
4009494e
GM
8689
8690@menu
c0468714
GM
8691* Document title:: Where the title is taken from
8692* Headings and sections:: The document structure as seen by the exporter
8693* Table of contents:: The if and where of the table of contents
8694* Initial text:: Text before the first heading?
8695* Lists:: Lists
8696* Paragraphs:: Paragraphs
8697* Footnote markup:: Footnotes
8698* Emphasis and monospace:: Bold, italic, etc.
8699* Horizontal rules:: Make a line
8700* Comment lines:: What will *not* be exported
4009494e
GM
8701@end menu
8702
a351880d
CD
8703@node Document title, Headings and sections, Structural markup elements, Structural markup elements
8704@subheading Document title
8705@cindex document title, markup rules
4009494e 8706
a351880d
CD
8707@noindent
8708The title of the exported document is taken from the special line
4009494e 8709
a351880d 8710@cindex #+TITLE
4009494e 8711@example
a351880d 8712#+TITLE: This is the title of the document
4009494e 8713@end example
a351880d 8714
c8d0cf5c 8715@noindent
a351880d
CD
8716If this line does not exist, the title is derived from the first non-empty,
8717non-comment line in the buffer. If no such line exists, or if you have
8718turned off exporting of the text before the first headline (see below), the
8719title will be the file name without extension.
4009494e 8720
a351880d
CD
8721@cindex property, EXPORT_TITLE
8722If you are exporting only a subtree by marking is as the region, the heading
8723of the subtree will become the title of the document. If the subtree has a
8724property @code{EXPORT_TITLE}, that will take precedence.
4009494e 8725
a351880d
CD
8726@node Headings and sections, Table of contents, Document title, Structural markup elements
8727@subheading Headings and sections
8728@cindex headings and sections, markup rules
8729
8730@vindex org-export-headline-levels
8731The outline structure of the document as described in @ref{Document
8732Structure}, forms the basis for defining sections of the exported document.
8733However, since the outline structure is also used for (for example) lists of
8734tasks, only the first three outline levels will be used as headings. Deeper
8735levels will become itemized lists. You can change the location of this
8736switch globally by setting the variable @code{org-export-headline-levels}, or on a
8737per-file basis with a line
4009494e 8738
a351880d 8739@cindex #+OPTIONS
4009494e 8740@example
a351880d 8741#+OPTIONS: H:4
4009494e
GM
8742@end example
8743
a351880d
CD
8744@node Table of contents, Initial text, Headings and sections, Structural markup elements
8745@subheading Table of contents
8746@cindex table of contents, markup rules
4009494e 8747
a351880d
CD
8748@vindex org-export-with-toc
8749The table of contents is normally inserted directly before the first headline
8750of the file. If you would like to get it to a different location, insert the
8751string @code{[TABLE-OF-CONTENTS]} on a line by itself at the desired
8752location. The depth of the table of contents is by default the same as the
8753number of headline levels, but you can choose a smaller number, or turn off
8754the table of contents entirely, by configuring the variable
8755@code{org-export-with-toc}, or on a per-file basis with a line like
b349f79f
CD
8756
8757@example
8758#+OPTIONS: toc:2 (only to two levels in TOC)
8759#+OPTIONS: toc:nil (no TOC at all)
8760@end example
8761
a351880d 8762@node Initial text, Lists, Table of contents, Structural markup elements
b349f79f
CD
8763@subheading Text before the first headline
8764@cindex text before first headline, markup rules
8765@cindex #+TEXT
8766
86fbb8ca 8767Org-mode normally exports the text before the first headline, and even uses
b349f79f 8768the first line as the document title. The text will be fully marked up. If
acedf35c 8769you need to include literal HTML, @LaTeX{}, or DocBook code, use the special
c8d0cf5c 8770constructs described below in the sections for the individual exporters.
b349f79f 8771
c8d0cf5c 8772@vindex org-export-skip-text-before-1st-heading
b349f79f
CD
8773Some people like to use the space before the first headline for setup and
8774internal links and therefore would like to control the exported text before
8775the first headline in a different way. You can do so by setting the variable
8776@code{org-export-skip-text-before-1st-heading} to @code{t}. On a per-file
8777basis, you can get the same effect with @samp{#+OPTIONS: skip:t}.
8778
8779@noindent
8780If you still want to have some text before the first headline, use the
8781@code{#+TEXT} construct:
8782
8783@example
8784#+OPTIONS: skip:t
8785#+TEXT: This text will go before the *first* headline.
8786#+TEXT: [TABLE-OF-CONTENTS]
ce57c2fe 8787#+TEXT: This goes between the table of contents and the *first* headline
b349f79f
CD
8788@end example
8789
a351880d 8790@node Lists, Paragraphs, Initial text, Structural markup elements
b349f79f
CD
8791@subheading Lists
8792@cindex lists, markup rules
8793
c8d0cf5c
CD
8794Plain lists as described in @ref{Plain lists}, are translated to the backend's
8795syntax for such lists. Most backends support unordered, ordered, and
b349f79f
CD
8796description lists.
8797
a351880d 8798@node Paragraphs, Footnote markup, Lists, Structural markup elements
b349f79f
CD
8799@subheading Paragraphs, line breaks, and quoting
8800@cindex paragraphs, markup rules
8801
8802Paragraphs are separated by at least one empty line. If you need to enforce
8803a line break within a paragraph, use @samp{\\} at the end of a line.
8804
8805To keep the line breaks in a region, but otherwise use normal formatting, you
8806can use this construct, which can also be used to format poetry.
8807
c8d0cf5c 8808@cindex #+BEGIN_VERSE
b349f79f
CD
8809@example
8810#+BEGIN_VERSE
864c9740
CD
8811 Great clouds overhead
8812 Tiny black birds rise and fall
8813 Snow covers Emacs
96c8522a 8814
864c9740 8815 -- AlexSchroeder
b349f79f
CD
8816#+END_VERSE
8817@end example
8818
8819When quoting a passage from another document, it is customary to format this
8820as a paragraph that is indented on both the left and the right margin. You
c8d0cf5c 8821can include quotations in Org-mode documents like this:
b349f79f 8822
c8d0cf5c 8823@cindex #+BEGIN_QUOTE
b349f79f
CD
8824@example
8825#+BEGIN_QUOTE
8826Everything should be made as simple as possible,
8827but not any simpler -- Albert Einstein
8828#+END_QUOTE
8829@end example
8830
c8d0cf5c
CD
8831If you would like to center some text, do it like this:
8832@cindex #+BEGIN_CENTER
8833@example
8834#+BEGIN_CENTER
8835Everything should be made as simple as possible, \\
8836but not any simpler
8837#+END_CENTER
8838@end example
b349f79f 8839
a351880d
CD
8840
8841@node Footnote markup, Emphasis and monospace, Paragraphs, Structural markup elements
8842@subheading Footnote markup
8843@cindex footnotes, markup rules
8844@cindex @file{footnote.el}
8845
ce57c2fe
BG
8846Footnotes defined in the way described in @ref{Footnotes}, will be exported
8847by all backends. Org allows multiple references to the same note, and
8848multiple footnotes side by side.
a351880d
CD
8849
8850@node Emphasis and monospace, Horizontal rules, Footnote markup, Structural markup elements
8851@subheading Emphasis and monospace
8852
8853@cindex underlined text, markup rules
8854@cindex bold text, markup rules
8855@cindex italic text, markup rules
8856@cindex verbatim text, markup rules
8857@cindex code text, markup rules
8858@cindex strike-through text, markup rules
8859You can make words @b{*bold*}, @i{/italic/}, _underlined_, @code{=code=}
8860and @code{~verbatim~}, and, if you must, @samp{+strike-through+}. Text
8861in the code and verbatim string is not processed for Org-mode specific
acedf35c 8862syntax; it is exported verbatim.
a351880d
CD
8863
8864@node Horizontal rules, Comment lines, Emphasis and monospace, Structural markup elements
8865@subheading Horizontal rules
8866@cindex horizontal rules, markup rules
ce57c2fe
BG
8867A line consisting of only dashes, and at least 5 of them, will be exported as
8868a horizontal line (@samp{<hr/>} in HTML and @code{\hrule} in @LaTeX{}).
a351880d
CD
8869
8870@node Comment lines, , Horizontal rules, Structural markup elements
8871@subheading Comment lines
8872@cindex comment lines
8873@cindex exporting, not
8874@cindex #+BEGIN_COMMENT
8875
8876Lines starting with @samp{#} in column zero are treated as comments and will
ce57c2fe 8877never be exported. If you want an indented line to be treated as a comment,
a351880d
CD
8878start it with @samp{#+ }. Also entire subtrees starting with the word
8879@samp{COMMENT} will never be exported. Finally, regions surrounded by
8880@samp{#+BEGIN_COMMENT} ... @samp{#+END_COMMENT} will not be exported.
8881
8882@table @kbd
8883@kindex C-c ;
8884@item C-c ;
8885Toggle the COMMENT keyword at the beginning of an entry.
8886@end table
8887
8888
8889@node Images and tables, Literal examples, Structural markup elements, Markup
8890@section Images and Tables
8891
8892@cindex tables, markup rules
8893@cindex #+CAPTION
8894@cindex #+LABEL
86fbb8ca
CD
8895Both the native Org-mode tables (@pxref{Tables}) and tables formatted with
8896the @file{table.el} package will be exported properly. For Org-mode tables,
a351880d
CD
8897the lines before the first horizontal separator line will become table header
8898lines. You can use the following lines somewhere before the table to assign
ed21c5c8
CD
8899a caption and a label for cross references, and in the text you can refer to
8900the object with @code{\ref@{tab:basic-data@}}:
a351880d
CD
8901
8902@example
8903#+CAPTION: This is the caption for the next table (or link)
8904#+LABEL: tbl:basic-data
8905 | ... | ...|
8906 |-----|----|
8907@end example
8908
ce57c2fe
BG
8909Optionally, the caption can take the form:
8910@example
8911#+CAPTION: [Caption for list of figures]@{Caption for table (or link).@}
8912@end example
8913
a351880d 8914@cindex inlined images, markup rules
acedf35c 8915Some backends (HTML, @LaTeX{}, and DocBook) allow you to directly include
a351880d
CD
8916images into the exported document. Org does this, if a link to an image
8917files does not have a description part, for example @code{[[./img/a.jpg]]}.
8918If you wish to define a caption for the image and maybe a label for internal
86fbb8ca
CD
8919cross references, make sure that the link is on a line by itself and precede
8920it with @code{#+CAPTION} and @code{#+LABEL} as follows:
a351880d
CD
8921
8922@example
8923#+CAPTION: This is the caption for the next figure link (or table)
8924#+LABEL: fig:SED-HR4049
8925[[./img/a.jpg]]
8926@end example
8927
8928You may also define additional attributes for the figure. As this is
8929backend-specific, see the sections about the individual backends for more
8930information.
8931
afe98dfa 8932@xref{Handling links,the discussion of image links}.
a351880d
CD
8933
8934@node Literal examples, Include files, Images and tables, Markup
8935@section Literal examples
b349f79f 8936@cindex literal examples, markup rules
c8d0cf5c 8937@cindex code line references, markup rules
b349f79f
CD
8938
8939You can include literal examples that should not be subjected to
8940markup. Such examples will be typeset in monospace, so this is well suited
8941for source code and similar examples.
8942@cindex #+BEGIN_EXAMPLE
8943
8944@example
8945#+BEGIN_EXAMPLE
8946Some example from a text file.
8947#+END_EXAMPLE
8948@end example
8949
c8d0cf5c
CD
8950Note that such blocks may be @i{indented} in order to align nicely with
8951indented text and in particular with plain list structure (@pxref{Plain
8952lists}). For simplicity when using small examples, you can also start the
8953example lines with a colon followed by a space. There may also be additional
55e0839d 8954whitespace before the colon:
b349f79f
CD
8955
8956@example
55e0839d
CD
8957Here is an example
8958 : Some example from a text file.
b349f79f
CD
8959@end example
8960
8961@cindex formatting source code, markup rules
8962If the example is source code from a programming language, or any other text
8963that can be marked up by font-lock in Emacs, you can ask for the example to
afe98dfa
CD
8964look like the fontified Emacs buffer@footnote{This works automatically for
8965the HTML backend (it requires version 1.34 of the @file{htmlize.el} package,
acedf35c 8966which is distributed with Org). Fontified code chunks in LaTeX can be
afe98dfa 8967achieved using either the listings or the
ce57c2fe 8968@url{http://code.google.com/p/minted, minted,} package. To use listings, turn
afe98dfa 8969on the variable @code{org-export-latex-listings} and ensure that the listings
ce57c2fe
BG
8970package is included by the LaTeX header (e.g.@: by configuring
8971@code{org-export-latex-packages-alist}). See the listings documentation for
afe98dfa
CD
8972configuration options, including obtaining colored output. For minted it is
8973necessary to install the program @url{http://pygments.org, pygments}, in
8974addition to setting @code{org-export-latex-minted}, ensuring that the minted
8975package is included by the LaTeX header, and ensuring that the
8976@code{-shell-escape} option is passed to @file{pdflatex} (see
ce57c2fe 8977@code{org-latex-to-pdf-process}). See the documentation of the variables
afe98dfa
CD
8978@code{org-export-latex-listings} and @code{org-export-latex-minted} for
8979further details.}. This is done with the @samp{src} block, where you also
8980need to specify the name of the major mode that should be used to fontify the
ce57c2fe
BG
8981example@footnote{Code in @samp{src} blocks may also be evaluated either
8982interactively or on export. See @pxref{Working With Source Code} for more
8983information on evaluating code blocks.}:
b349f79f
CD
8984@cindex #+BEGIN_SRC
8985
8986@example
8987#+BEGIN_SRC emacs-lisp
86fbb8ca
CD
8988 (defun org-xor (a b)
8989 "Exclusive or."
8990 (if a (not b) b))
b349f79f
CD
8991#+END_SRC
8992@end example
8993
55e0839d
CD
8994Both in @code{example} and in @code{src} snippets, you can add a @code{-n}
8995switch to the end of the @code{BEGIN} line, to get the lines of the example
8996numbered. If you use a @code{+n} switch, the numbering from the previous
8997numbered snippet will be continued in the current one. In literal examples,
8998Org will interpret strings like @samp{(ref:name)} as labels, and use them as
ce57c2fe 8999targets for special hyperlinks like @code{[[(name)]]} (i.e.@: the reference name
c8d0cf5c
CD
9000enclosed in single parenthesis). In HTML, hovering the mouse over such a
9001link will remote-highlight the corresponding code line, which is kind of
9002cool.
9003
9004You can also add a @code{-r} switch which @i{removes} the labels from the
9005source code@footnote{Adding @code{-k} to @code{-n -r} will @i{keep} the
9006labels in the source code while using line numbers for the links, which might
9007be useful to explain those in an org-mode example code.}. With the @code{-n}
9008switch, links to these references will be labeled by the line numbers from
9009the code listing, otherwise links will use the labels with no parentheses.
9010Here is an example:
55e0839d
CD
9011
9012@example
9013#+BEGIN_SRC emacs-lisp -n -r
9014(save-excursion (ref:sc)
9015 (goto-char (point-min)) (ref:jump)
c8d0cf5c
CD
9016#+END_SRC
9017In line [[(sc)]] we remember the current position. [[(jump)][Line (jump)]]
55e0839d
CD
9018jumps to point-min.
9019@end example
9020
c8d0cf5c 9021@vindex org-coderef-label-format
55e0839d
CD
9022If the syntax for the label format conflicts with the language syntax, use a
9023@code{-l} switch to change the format, for example @samp{#+BEGIN_SRC pascal
9024-n -r -l "((%s))"}. See also the variable @code{org-coderef-label-format}.
9025
ce57c2fe
BG
9026HTML export also allows examples to be published as text areas (@pxref{Text
9027areas in HTML export}).
9028
9029Because the @code{#+BEGIN_...} and @code{#+END_...} patterns need to be added
9030so often, shortcuts are provided using the Easy Templates facility
9031(@pxref{Easy Templates}).
55e0839d 9032
b349f79f
CD
9033@table @kbd
9034@kindex C-c '
9035@item C-c '
9036Edit the source code example at point in its native mode. This works by
c8d0cf5c
CD
9037switching to a temporary buffer with the source code. You need to exit by
9038pressing @kbd{C-c '} again@footnote{Upon exit, lines starting with @samp{*}
9039or @samp{#} will get a comma prepended, to keep them from being interpreted
86fbb8ca 9040by Org as outline nodes or special comments. These commas will be stripped
acedf35c 9041for editing with @kbd{C-c '}, and also for export.}. The edited version will
c8d0cf5c
CD
9042then replace the old version in the Org buffer. Fixed-width regions
9043(where each line starts with a colon followed by a space) will be edited
9044using @code{artist-mode}@footnote{You may select a different-mode with the
9045variable @code{org-edit-fixed-width-region-mode}.} to allow creating ASCII
9046drawings easily. Using this command in an empty line will create a new
864c9740 9047fixed-width region.
55e0839d
CD
9048@kindex C-c l
9049@item C-c l
9050Calling @code{org-store-link} while editing a source code example in a
acedf35c 9051temporary buffer created with @kbd{C-c '} will prompt for a label. Make sure
55e0839d
CD
9052that it is unique in the current buffer, and insert it with the proper
9053formatting like @samp{(ref:label)} at the end of the current line. Then the
9054label is stored as a link @samp{(label)}, for retrieval with @kbd{C-c C-l}.
b349f79f
CD
9055@end table
9056
9057
ed21c5c8 9058@node Include files, Index entries, Literal examples, Markup
a351880d 9059@section Include files
b349f79f
CD
9060@cindex include files, markup rules
9061
9062During export, you can include the content of another file. For example, to
c8d0cf5c 9063include your @file{.emacs} file, you could use:
b349f79f
CD
9064@cindex #+INCLUDE
9065
9066@example
9067#+INCLUDE: "~/.emacs" src emacs-lisp
9068@end example
c8d0cf5c 9069@noindent
ce57c2fe 9070The optional second and third parameter are the markup (e.g.@: @samp{quote},
b349f79f 9071@samp{example}, or @samp{src}), and, if the markup is @samp{src}, the
acedf35c 9072language for formatting the contents. The markup is optional; if it is not
86fbb8ca 9073given, the text will be assumed to be in Org-mode format and will be
44ce9197
CD
9074processed normally. The include line will also allow additional keyword
9075parameters @code{:prefix1} and @code{:prefix} to specify prefixes for the
acedf35c
CD
9076first line and for each following line, @code{:minlevel} in order to get
9077org-mode content demoted to a specified level, as well as any options
9078accepted by the selected markup. For example, to include a file as an item,
9079use
44ce9197
CD
9080
9081@example
9082#+INCLUDE: "~/snippets/xx" :prefix1 " + " :prefix " "
9083@end example
b349f79f 9084
ce57c2fe
BG
9085You can also include a portion of a file by specifying a lines range using
9086the @code{:lines} parameter. The line at the upper end of the range will not
9087be included. The start and/or the end of the range may be omitted to use the
9088obvious defaults.
9089
9090@example
9091#+INCLUDE: "~/.emacs" :lines "5-10" @r{Include lines 5 to 10, 10 excluded}
9092#+INCLUDE: "~/.emacs" :lines "-10" @r{Include lines 1 to 10, 10 excluded}
9093#+INCLUDE: "~/.emacs" :lines "10-" @r{Include lines from 10 to EOF}
9094@end example
9095
b349f79f
CD
9096@table @kbd
9097@kindex C-c '
9098@item C-c '
9099Visit the include file at point.
9100@end table
9101
ed21c5c8 9102@node Index entries, Macro replacement, Include files, Markup
86fbb8ca 9103@section Index entries
ed21c5c8
CD
9104@cindex index entries, for publishing
9105
9106You can specify entries that will be used for generating an index during
9107publishing. This is done by lines starting with @code{#+INDEX}. An entry
9108the contains an exclamation mark will create a sub item. See @ref{Generating
9109an index} for more information.
9110
9111@example
86fbb8ca 9112* Curriculum Vitae
ed21c5c8
CD
9113#+INDEX: CV
9114#+INDEX: Application!CV
9115@end example
9116
9117
b349f79f 9118
ed21c5c8
CD
9119
9120@node Macro replacement, Embedded LaTeX, Index entries, Markup
a351880d
CD
9121@section Macro replacement
9122@cindex macro replacement, during export
9123@cindex #+MACRO
9124
9125You can define text snippets with
9126
9127@example
9128#+MACRO: name replacement text $1, $2 are arguments
9129@end example
9130
9131@noindent which can be referenced anywhere in the document (even in
9132code examples) with @code{@{@{@{name(arg1,arg2)@}@}@}}. In addition to
9133defined macros, @code{@{@{@{title@}@}@}}, @code{@{@{@{author@}@}@}}, etc.,
9134will reference information set by the @code{#+TITLE:}, @code{#+AUTHOR:}, and
9135similar lines. Also, @code{@{@{@{date(@var{FORMAT})@}@}@}} and
9136@code{@{@{@{modification-time(@var{FORMAT})@}@}@}} refer to current date time
9137and to the modification time of the file being exported, respectively.
9138@var{FORMAT} should be a format string understood by
9139@code{format-time-string}.
9140
9141Macro expansion takes place during export, and some people use it to
9142construct complex HTML code.
9143
9144
9145@node Embedded LaTeX, , Macro replacement, Markup
acedf35c 9146@section Embedded @LaTeX{}
a351880d 9147@cindex @TeX{} interpretation
acedf35c
CD
9148@cindex @LaTeX{} interpretation
9149
9150Plain ASCII is normally sufficient for almost all note taking. Exceptions
9151include scientific notes, which often require mathematical symbols and the
9152occasional formula. @LaTeX{}@footnote{@LaTeX{} is a macro system based on
9153Donald E. Knuth's @TeX{} system. Many of the features described here as
9154``@LaTeX{}'' are really from @TeX{}, but for simplicity I am blurring this
ce57c2fe 9155distinction.} is widely used to typeset scientific documents. Org-mode
acedf35c
CD
9156supports embedding @LaTeX{} code into its files, because many academics are
9157used to writing and reading @LaTeX{} source code, and because it can be
9158readily processed to produce pretty output for a number of export backends.
a351880d
CD
9159
9160@menu
c0468714
GM
9161* Special symbols:: Greek letters and other symbols
9162* Subscripts and superscripts:: Simple syntax for raising/lowering text
9163* LaTeX fragments:: Complex formulas made easy
9164* Previewing LaTeX fragments:: What will this snippet look like?
9165* CDLaTeX mode:: Speed up entering of formulas
a351880d
CD
9166@end menu
9167
9168@node Special symbols, Subscripts and superscripts, Embedded LaTeX, Embedded LaTeX
9169@subsection Special symbols
9170@cindex math symbols
9171@cindex special symbols
9172@cindex @TeX{} macros
acedf35c 9173@cindex @LaTeX{} fragments, markup rules
a351880d 9174@cindex HTML entities
acedf35c 9175@cindex @LaTeX{} entities
a351880d 9176
acedf35c 9177You can use @LaTeX{} macros to insert special symbols like @samp{\alpha} to
a351880d
CD
9178indicate the Greek letter, or @samp{\to} to indicate an arrow. Completion
9179for these macros is available, just type @samp{\} and maybe a few letters,
acedf35c 9180and press @kbd{M-@key{TAB}} to see possible completions. Unlike @LaTeX{}
86fbb8ca 9181code, Org-mode allows these macros to be present without surrounding math
a351880d
CD
9182delimiters, for example:
9183
9184@example
9185Angles are written as Greek letters \alpha, \beta and \gamma.
9186@end example
9187
86fbb8ca 9188@vindex org-entities
a351880d
CD
9189During export, these symbols will be transformed into the native format of
9190the exporter backend. Strings like @code{\alpha} will be exported as
acedf35c 9191@code{&alpha;} in the HTML output, and as @code{$\alpha$} in the @LaTeX{}
a351880d 9192output. Similarly, @code{\nbsp} will become @code{&nbsp;} in HTML and
acedf35c 9193@code{~} in @LaTeX{}. If you need such a symbol inside a word, terminate it
a351880d
CD
9194like this: @samp{\Aacute@{@}stor}.
9195
9196A large number of entities is provided, with names taken from both HTML and
acedf35c 9197@LaTeX{}; see the variable @code{org-entities} for the complete list.
a351880d
CD
9198@samp{\-} is treated as a shy hyphen, and @samp{--}, @samp{---}, and
9199@samp{...} are all converted into special commands creating hyphens of
9200different lengths or a compact set of dots.
9201
afe98dfa 9202If you would like to see entities displayed as UTF8 characters, use the
86fbb8ca
CD
9203following command@footnote{You can turn this on by default by setting the
9204variable @code{org-pretty-entities}, or on a per-file base with the
9205@code{#+STARTUP} option @code{entitiespretty}.}:
9206
9207@table @kbd
9208@kindex C-c C-x \
9209@item C-c C-x \
acedf35c
CD
9210Toggle display of entities as UTF-8 characters. This does not change the
9211buffer content which remains plain ASCII, but it overlays the UTF-8 character
86fbb8ca
CD
9212for display purposes only.
9213@end table
9214
a351880d
CD
9215@node Subscripts and superscripts, LaTeX fragments, Special symbols, Embedded LaTeX
9216@subsection Subscripts and superscripts
9217@cindex subscript
9218@cindex superscript
9219
acedf35c 9220Just like in @LaTeX{}, @samp{^} and @samp{_} are used to indicate super-
a351880d
CD
9221and subscripts. Again, these can be used without embedding them in
9222math-mode delimiters. To increase the readability of ASCII text, it is
9223not necessary (but OK) to surround multi-character sub- and superscripts
9224with curly braces. For example
67df9cfb
CD
9225
9226@example
acedf35c 9227The mass of the sun is M_sun = 1.989 x 10^30 kg. The radius of
a351880d 9228the sun is R_@{sun@} = 6.96 x 10^8 m.
67df9cfb
CD
9229@end example
9230
a351880d
CD
9231@vindex org-export-with-sub-superscripts
9232To avoid interpretation as raised or lowered text, you can quote @samp{^} and
9233@samp{_} with a backslash: @samp{\^} and @samp{\_}. If you write a text
9234where the underscore is often used in a different context, Org's convention
9235to always interpret these as subscripts can get in your way. Configure the
9236variable @code{org-export-with-sub-superscripts} to globally change this
9237convention, or use, on a per-file basis:
67df9cfb
CD
9238
9239@example
a351880d 9240#+OPTIONS: ^:@{@}
67df9cfb 9241@end example
b349f79f 9242
afe98dfa
CD
9243@noindent With this setting, @samp{a_b} will not be interpreted as a
9244subscript, but @samp{a_@{b@}} will.
9245
86fbb8ca
CD
9246@table @kbd
9247@kindex C-c C-x \
9248@item C-c C-x \
acedf35c 9249In addition to showing entities as UTF-8 characters, this command will also
86fbb8ca
CD
9250format sub- and superscripts in a WYSIWYM way.
9251@end table
67df9cfb 9252
a351880d 9253@node LaTeX fragments, Previewing LaTeX fragments, Subscripts and superscripts, Embedded LaTeX
acedf35c
CD
9254@subsection @LaTeX{} fragments
9255@cindex @LaTeX{} fragments
b349f79f 9256
a351880d 9257@vindex org-format-latex-header
afe98dfa 9258Going beyond symbols and sub- and superscripts, a full formula language is
acedf35c
CD
9259needed. Org-mode can contain @LaTeX{} math fragments, and it supports ways
9260to process these for several export backends. When exporting to @LaTeX{},
afe98dfa
CD
9261the code is obviously left as it is. When exporting to HTML, Org invokes the
9262@uref{http://www.mathjax.org, MathJax library} (@pxref{Math formatting in
9263HTML export}) to process and display the math@footnote{If you plan to use
9264this regularly or on pages with significant page views, you should install
acedf35c
CD
9265@file{MathJax} on your own
9266server in order to limit the load of our server.}. Finally, it can also
9267process the mathematical expressions into images@footnote{For this to work
ce57c2fe 9268you need to be on a system with a working @LaTeX{} installation. You also
acedf35c
CD
9269need the @file{dvipng} program, available at
9270@url{http://sourceforge.net/projects/dvipng/}. The @LaTeX{} header that will
afe98dfa
CD
9271be used when processing a fragment can be configured with the variable
9272@code{org-format-latex-header}.} that can be displayed in a browser or in
9273DocBook documents.
b349f79f 9274
acedf35c
CD
9275@LaTeX{} fragments don't need any special marking at all. The following
9276snippets will be identified as @LaTeX{} source code:
a351880d
CD
9277@itemize @bullet
9278@item
afe98dfa 9279Environments of any kind@footnote{When @file{MathJax} is used, only the
acedf35c
CD
9280environment recognized by @file{MathJax} will be processed. When
9281@file{dvipng} is used to create images, any @LaTeX{} environments will be
9282handled.}. The only requirement is that the @code{\begin} statement appears
9283on a new line, preceded by only whitespace.
a351880d 9284@item
acedf35c 9285Text within the usual @LaTeX{} math delimiters. To avoid conflicts with
a351880d
CD
9286currency specifications, single @samp{$} characters are only recognized as
9287math delimiters if the enclosed text contains at most two line breaks, is
9288directly attached to the @samp{$} characters with no whitespace in between,
9289and if the closing @samp{$} is followed by whitespace, punctuation or a dash.
9290For the other delimiters, there is no such restriction, so when in doubt, use
9291@samp{\(...\)} as inline math delimiters.
9292@end itemize
b349f79f 9293
a351880d 9294@noindent For example:
b349f79f 9295
a351880d
CD
9296@example
9297\begin@{equation@} % arbitrary environments,
9298x=\sqrt@{b@} % even tables, figures
9299\end@{equation@} % etc
b349f79f 9300
a351880d
CD
9301If $a^2=b$ and \( b=2 \), then the solution must be
9302either $$ a=+\sqrt@{2@} $$ or \[ a=-\sqrt@{2@} \].
9303@end example
b349f79f 9304
a351880d
CD
9305@noindent
9306@vindex org-format-latex-options
9307If you need any of the delimiter ASCII sequences for other purposes, you
9308can configure the option @code{org-format-latex-options} to deselect the
acedf35c 9309ones you do not wish to have interpreted by the @LaTeX{} converter.
b349f79f 9310
afe98dfa
CD
9311@vindex org-export-with-LaTeX-fragments
9312LaTeX processing can be configured with the variable
9313@code{org-export-with-LaTeX-fragments}. The default setting is @code{t}
9314which means @file{MathJax} for HTML, and no processing for DocBook, ASCII and
9315LaTeX backends. You can also set this variable on a per-file basis using one
9316of these lines:
9317
9318@example
9319#+OPTIONS: LaTeX:t @r{Do the right thing automatically (MathJax)}
9320#+OPTIONS: LaTeX:dvipng @r{Force using dvipng images}
acedf35c 9321#+OPTIONS: LaTeX:nil @r{Do not process @LaTeX{} fragments at all}
afe98dfa
CD
9322#+OPTIONS: LaTeX:verbatim @r{Verbatim export, for jsMath or so}
9323@end example
9324
a351880d
CD
9325@node Previewing LaTeX fragments, CDLaTeX mode, LaTeX fragments, Embedded LaTeX
9326@subsection Previewing LaTeX fragments
9327@cindex LaTeX fragments, preview
b349f79f 9328
acedf35c 9329If you have @file{dvipng} installed, @LaTeX{} fragments can be processed to
afe98dfa 9330produce preview images of the typeset expressions:
b349f79f
CD
9331
9332@table @kbd
a351880d
CD
9333@kindex C-c C-x C-l
9334@item C-c C-x C-l
acedf35c 9335Produce a preview image of the @LaTeX{} fragment at point and overlay it
a351880d
CD
9336over the source code. If there is no fragment at point, process all
9337fragments in the current entry (between two headlines). When called
9338with a prefix argument, process the entire subtree. When called with
9339two prefix arguments, or when the cursor is before the first headline,
9340process the entire buffer.
9341@kindex C-c C-c
9342@item C-c C-c
9343Remove the overlay preview images.
b349f79f
CD
9344@end table
9345
a351880d
CD
9346@vindex org-format-latex-options
9347You can customize the variable @code{org-format-latex-options} to influence
ce57c2fe 9348some aspects of the preview. In particular, the @code{:scale} (and for HTML
a351880d
CD
9349export, @code{:html-scale}) property can be used to adjust the size of the
9350preview images.
c8d0cf5c 9351
a351880d
CD
9352@node CDLaTeX mode, , Previewing LaTeX fragments, Embedded LaTeX
9353@subsection Using CDLa@TeX{} to enter math
9354@cindex CDLa@TeX{}
9355
9356CDLa@TeX{} mode is a minor mode that is normally used in combination with a
acedf35c 9357major @LaTeX{} mode like AUC@TeX{} in order to speed-up insertion of
86fbb8ca 9358environments and math templates. Inside Org-mode, you can make use of
a351880d
CD
9359some of the features of CDLa@TeX{} mode. You need to install
9360@file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
9361AUC@TeX{}) from @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
86fbb8ca
CD
9362Don't use CDLa@TeX{} mode itself under Org-mode, but use the light
9363version @code{org-cdlatex-mode} that comes as part of Org-mode. Turn it
a351880d
CD
9364on for the current buffer with @code{M-x org-cdlatex-mode}, or for all
9365Org files with
9366
9367@lisp
9368(add-hook 'org-mode-hook 'turn-on-org-cdlatex)
9369@end lisp
9370
9371When this mode is enabled, the following features are present (for more
9372details see the documentation of CDLa@TeX{} mode):
9373@itemize @bullet
9374@kindex C-c @{
9375@item
9376Environment templates can be inserted with @kbd{C-c @{}.
9377@item
9378@kindex @key{TAB}
9379The @key{TAB} key will do template expansion if the cursor is inside a
acedf35c 9380@LaTeX{} fragment@footnote{Org-mode has a method to test if the cursor is
a351880d
CD
9381inside such a fragment, see the documentation of the function
9382@code{org-inside-LaTeX-fragment-p}.}. For example, @key{TAB} will
9383expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
9384correctly inside the first brace. Another @key{TAB} will get you into
9385the second brace. Even outside fragments, @key{TAB} will expand
9386environment abbreviations at the beginning of a line. For example, if
9387you write @samp{equ} at the beginning of a line and press @key{TAB},
9388this abbreviation will be expanded to an @code{equation} environment.
9389To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help}.
9390@item
9391@kindex _
9392@kindex ^
9393@vindex cdlatex-simplify-sub-super-scripts
acedf35c 9394Pressing @kbd{_} and @kbd{^} inside a @LaTeX{} fragment will insert these
a351880d
CD
9395characters together with a pair of braces. If you use @key{TAB} to move
9396out of the braces, and if the braces surround only a single character or
9397macro, they are removed again (depending on the variable
9398@code{cdlatex-simplify-sub-super-scripts}).
9399@item
9400@kindex `
9401Pressing the backquote @kbd{`} followed by a character inserts math
acedf35c 9402macros, also outside @LaTeX{} fragments. If you wait more than 1.5 seconds
a351880d
CD
9403after the backquote, a help window will pop up.
9404@item
9405@kindex '
9406Pressing the single-quote @kbd{'} followed by another character modifies
9407the symbol before point with an accent or a font. If you wait more than
acedf35c
CD
94081.5 seconds after the single-quote, a help window will pop up. Character
9409modification will work only inside @LaTeX{} fragments; outside the quote
a351880d
CD
9410is normal.
9411@end itemize
9412
9413@node Exporting, Publishing, Markup, Top
9414@chapter Exporting
9415@cindex exporting
9416
9417Org-mode documents can be exported into a variety of other formats. For
9418printing and sharing of notes, ASCII export produces a readable and simple
9419version of an Org file. HTML export allows you to publish a notes file on
9420the web, while the XOXO format provides a solid base for exchange with a
ce57c2fe 9421broad range of other applications. @LaTeX{} export lets you use Org-mode and
acedf35c 9422its structured editing functions to easily create @LaTeX{} files. DocBook
a351880d 9423export makes it possible to convert Org files to many other formats using
ce57c2fe
BG
9424DocBook tools. OpenDocumentText export allows seamless colloboration across
9425organizational boundaries. For project management you can create gantt and
9426resource charts by using TaskJuggler export. To incorporate entries with
9427associated times like deadlines or appointments into a desktop calendar
9428program like iCal, Org-mode can also produce extracts in the iCalendar
9429format. Currently Org-mode only supports export, not import of these
9430different formats.
a351880d
CD
9431
9432Org supports export of selected regions when @code{transient-mark-mode} is
9433enabled (default in Emacs 23).
9434
9435@menu
c0468714
GM
9436* Selective export:: Using tags to select and exclude trees
9437* Export options:: Per-file export settings
9438* The export dispatcher:: How to access exporter commands
9439* ASCII/Latin-1/UTF-8 export:: Exporting to flat files with encoding
9440* HTML export:: Exporting to HTML
acedf35c 9441* LaTeX and PDF export:: Exporting to @LaTeX{}, and processing to PDF
c0468714 9442* DocBook export:: Exporting to DocBook
ce57c2fe 9443* OpenDocumentText export:: Exporting to OpenDocumentText
c0468714
GM
9444* TaskJuggler export:: Exporting to TaskJuggler
9445* Freemind export:: Exporting to Freemind mind maps
9446* XOXO export:: Exporting to XOXO
9447* iCalendar export:: Exporting in iCalendar format
a351880d 9448@end menu
c8d0cf5c 9449
a351880d 9450@node Selective export, Export options, Exporting, Exporting
864c9740 9451@section Selective export
ce57c2fe 9452@cindex export, selective by tags or TODO keyword
864c9740 9453
c8d0cf5c
CD
9454@vindex org-export-select-tags
9455@vindex org-export-exclude-tags
ce57c2fe 9456@cindex org-export-with-tasks
864c9740
CD
9457You may use tags to select the parts of a document that should be exported,
9458or to exclude parts from export. This behavior is governed by two variables:
9459@code{org-export-select-tags} and @code{org-export-exclude-tags}.
9460
ce57c2fe
BG
9461@enumerate
9462@item
9463Org first checks if any of the @emph{select} tags is present in the
9464buffer. If yes, all trees that do not carry one of these tags will be
9465excluded. If a selected tree is a subtree, the heading hierarchy above it
9466will also be selected for export, but not the text below those headings.
864c9740 9467
ce57c2fe 9468@item
864c9740
CD
9469If none of the select tags is found, the whole buffer will be selected for
9470export.
9471
ce57c2fe 9472@item
864c9740
CD
9473Finally, all subtrees that are marked by any of the @emph{exclude} tags will
9474be removed from the export buffer.
ce57c2fe
BG
9475@end enumerate
9476
9477The variable @code{org-export-with-tasks} can be configured to select which
9478kind of tasks should be included for export. See the docstring of the
9479variable for more information.
864c9740
CD
9480
9481@node Export options, The export dispatcher, Selective export, Exporting
b349f79f
CD
9482@section Export options
9483@cindex options, for export
9484
9485@cindex completion, of option keywords
9486The exporter recognizes special lines in the buffer which provide
9487additional information. These lines may be put anywhere in the file.
9488The whole set of lines can be inserted into the buffer with @kbd{C-c
9489C-e t}. For individual lines, a good way to make sure the keyword is
9490correct is to type @samp{#+} and then use @kbd{M-@key{TAB}} completion
c8d0cf5c
CD
9491(@pxref{Completion}). For a summary of other in-buffer settings not
9492specifically related to export, see @ref{In-buffer settings}.
9493In particular, note that you can place commonly-used (export) options in
9494a separate file which can be included using @code{#+SETUPFILE}.
b349f79f
CD
9495
9496@table @kbd
acedf35c 9497@orgcmd{C-c C-e t,org-insert-export-options-template}
b349f79f
CD
9498Insert template with export options, see example below.
9499@end table
9500
c8d0cf5c
CD
9501@cindex #+TITLE
9502@cindex #+AUTHOR
9503@cindex #+DATE
9504@cindex #+EMAIL
9505@cindex #+DESCRIPTION
9506@cindex #+KEYWORDS
9507@cindex #+LANGUAGE
9508@cindex #+TEXT
9509@cindex #+OPTIONS
9510@cindex #+BIND
9511@cindex #+LINK_UP
9512@cindex #+LINK_HOME
9513@cindex #+EXPORT_SELECT_TAGS
9514@cindex #+EXPORT_EXCLUDE_TAGS
86fbb8ca 9515@cindex #+XSLT
c8d0cf5c
CD
9516@cindex #+LATEX_HEADER
9517@vindex user-full-name
9518@vindex user-mail-address
9519@vindex org-export-default-language
9520@example
9521#+TITLE: the title to be shown (default is the buffer name)
9522#+AUTHOR: the author (default taken from @code{user-full-name})
acedf35c 9523#+DATE: a date, fixed, or a format string for @code{format-time-string}
c8d0cf5c 9524#+EMAIL: his/her email address (default from @code{user-mail-address})
ce57c2fe
BG
9525#+DESCRIPTION: the page description, e.g.@: for the XHTML meta tag
9526#+KEYWORDS: the page keywords, e.g.@: for the XHTML meta tag
9527#+LANGUAGE: language for HTML, e.g.@: @samp{en} (@code{org-export-default-language})
c8d0cf5c
CD
9528#+TEXT: Some descriptive text to be inserted at the beginning.
9529#+TEXT: Several lines may be given.
9530#+OPTIONS: H:2 num:t toc:t \n:nil @@:t ::t |:t ^:t f:t TeX:t ...
ce57c2fe 9531#+BIND: lisp-var lisp-val, e.g.@:: org-export-latex-low-levels itemize
c8d0cf5c
CD
9532 @r{You need to confirm using these, or configure @code{org-export-allow-BIND}}
9533#+LINK_UP: the ``up'' link of an exported page
9534#+LINK_HOME: the ``home'' link of an exported page
9535#+LATEX_HEADER: extra line(s) for the LaTeX header, like \usepackage@{xyz@}
864c9740
CD
9536#+EXPORT_SELECT_TAGS: Tags that select a tree for export
9537#+EXPORT_EXCLUDE_TAGS: Tags that exclude a tree from export
86fbb8ca 9538#+XSLT: the XSLT stylesheet used by DocBook exporter to generate FO file
b349f79f
CD
9539@end example
9540
9541@noindent
9542The OPTIONS line is a compact@footnote{If you want to configure many options
acedf35c
CD
9543this way, you can use several OPTIONS lines.} form to specify export
9544settings. Here you can:
b349f79f
CD
9545@cindex headline levels
9546@cindex section-numbers
9547@cindex table of contents
9548@cindex line-break preservation
9549@cindex quoted HTML tags
9550@cindex fixed-width sections
9551@cindex tables
9552@cindex @TeX{}-like syntax for sub- and superscripts
9553@cindex footnotes
9554@cindex special strings
9555@cindex emphasized text
9556@cindex @TeX{} macros
acedf35c 9557@cindex @LaTeX{} fragments
b349f79f
CD
9558@cindex author info, in export
9559@cindex time info, in export
ce57c2fe
BG
9560@vindex org-export-plist-vars
9561@vindex org-export-author-info
9562@vindex org-export-creator-info
9563@vindex org-export-email-info
9564@vindex org-export-time-stamp-file
b349f79f
CD
9565@example
9566H: @r{set the number of headline levels for export}
9567num: @r{turn on/off section-numbers}
9568toc: @r{turn on/off table of contents, or set level limit (integer)}
ed21c5c8 9569\n: @r{turn on/off line-break-preservation (DOES NOT WORK)}
b349f79f
CD
9570@@: @r{turn on/off quoted HTML tags}
9571:: @r{turn on/off fixed-width sections}
9572|: @r{turn on/off tables}
9573^: @r{turn on/off @TeX{}-like syntax for sub- and superscripts. If}
9574 @r{you write "^:@{@}", @code{a_@{b@}} will be interpreted, but}
9575 @r{the simple @code{a_b} will be left as it is.}
9576-: @r{turn on/off conversion of special strings.}
9577f: @r{turn on/off footnotes like this[1].}
96c8522a 9578todo: @r{turn on/off inclusion of TODO keywords into exported text}
ce57c2fe
BG
9579tasks: @r{turn on/off inclusion of tasks (TODO items), can be nil to remove}
9580 @r{all tasks, @code{todo} to remove DONE tasks, or list of kwds to keep}
96c8522a
CD
9581pri: @r{turn on/off priority cookies}
9582tags: @r{turn on/off inclusion of tags, may also be @code{not-in-toc}}
9583<: @r{turn on/off inclusion of any time/date stamps like DEADLINES}
b349f79f
CD
9584*: @r{turn on/off emphasized text (bold, italic, underlined)}
9585TeX: @r{turn on/off simple @TeX{} macros in plain text}
acedf35c 9586LaTeX: @r{configure export of @LaTeX{} fragments. Default @code{auto}}
b349f79f
CD
9587skip: @r{turn on/off skipping the text before the first heading}
9588author: @r{turn on/off inclusion of author name/email into exported file}
ed21c5c8 9589email: @r{turn on/off inclusion of author email into exported file}
dd12e1c6 9590creator: @r{turn on/off inclusion of creator info into exported file}
b349f79f
CD
9591timestamp: @r{turn on/off inclusion creation time into exported file}
9592d: @r{turn on/off inclusion of drawers}
9593@end example
c8d0cf5c 9594@noindent
acedf35c 9595These options take effect in both the HTML and @LaTeX{} export, except for
ce57c2fe
BG
9596@code{TeX} and @code{LaTeX} options, which are respectively @code{t} and
9597@code{nil} for the @LaTeX{} export.
9598
9599The default values for these and many other options are given by a set of
9600variables. For a list of such variables, the corresponding OPTIONS keys and
9601also the publishing keys (@pxref{Project alist}), see the constant
9602@code{org-export-plist-vars}.
b349f79f
CD
9603
9604When exporting only a single subtree by selecting it with @kbd{C-c @@} before
9605calling an export command, the subtree can overrule some of the file's export
9606settings with properties @code{EXPORT_FILE_NAME}, @code{EXPORT_TITLE},
c8d0cf5c
CD
9607@code{EXPORT_TEXT}, @code{EXPORT_AUTHOR}, @code{EXPORT_DATE}, and
9608@code{EXPORT_OPTIONS}.
b349f79f 9609
ed21c5c8 9610@node The export dispatcher, ASCII/Latin-1/UTF-8 export, Export options, Exporting
b349f79f
CD
9611@section The export dispatcher
9612@cindex dispatcher, for export commands
9613
9614All export commands can be reached using the export dispatcher, which is a
9615prefix key that prompts for an additional key specifying the command.
9616Normally the entire file is exported, but if there is an active region that
9617contains one outline tree, the first heading is used as document title and
9618the subtrees are exported.
4009494e
GM
9619
9620@table @kbd
acedf35c 9621@orgcmd{C-c C-e,org-export}
c8d0cf5c 9622@vindex org-export-run-in-background
4009494e
GM
9623Dispatcher for export and publishing commands. Displays a help-window
9624listing the additional key(s) needed to launch an export or publishing
64fb801f
CD
9625command. The prefix arg is passed through to the exporter. A double prefix
9626@kbd{C-u C-u} causes most commands to be executed in the background, in a
c8d0cf5c 9627separate Emacs process@footnote{To make this behavior the default, customize
64fb801f 9628the variable @code{org-export-run-in-background}.}.
acedf35c 9629@orgcmd{C-c C-e v,org-export-visible}
b349f79f 9630Like @kbd{C-c C-e}, but only export the text that is currently visible
ce57c2fe 9631(i.e.@: not hidden by outline visibility).
acedf35c 9632@orgcmd{C-u C-u C-c C-e,org-export}
c8d0cf5c 9633@vindex org-export-run-in-background
acedf35c 9634Call the exporter, but reverse the setting of
ce57c2fe 9635@code{org-export-run-in-background}, i.e.@: request background processing if
c8d0cf5c 9636not set, or force processing in the current Emacs process if set.
4009494e
GM
9637@end table
9638
ed21c5c8
CD
9639@node ASCII/Latin-1/UTF-8 export, HTML export, The export dispatcher, Exporting
9640@section ASCII/Latin-1/UTF-8 export
4009494e 9641@cindex ASCII export
ed21c5c8
CD
9642@cindex Latin-1 export
9643@cindex UTF-8 export
4009494e 9644
c8d0cf5c 9645ASCII export produces a simple and very readable version of an Org-mode
ed21c5c8
CD
9646file, containing only plain ASCII. Latin-1 and UTF-8 export augment the file
9647with special characters and symbols available in these encodings.
4009494e
GM
9648
9649@cindex region, active
9650@cindex active region
b6cb4cd5 9651@cindex transient-mark-mode
4009494e 9652@table @kbd
acedf35c 9653@orgcmd{C-c C-e a,org-export-as-ascii}
c8d0cf5c
CD
9654@cindex property, EXPORT_FILE_NAME
9655Export as ASCII file. For an Org file, @file{myfile.org}, the ASCII file
4009494e 9656will be @file{myfile.txt}. The file will be overwritten without
c8d0cf5c
CD
9657warning. If there is an active region@footnote{This requires
9658@code{transient-mark-mode} be turned on.}, only the region will be
ce57c2fe 9659exported. If the selected region is a single tree@footnote{To select the
b349f79f 9660current subtree, use @kbd{C-c @@}.}, the tree head will
4009494e 9661become the document title. If the tree head entry has or inherits an
b349f79f 9662@code{EXPORT_FILE_NAME} property, that name will be used for the
28a16a1b 9663export.
acedf35c
CD
9664@orgcmd{C-c C-e A,org-export-as-ascii-to-buffer}
9665Export to a temporary buffer. Do not create a file.
9666@orgcmd{C-c C-e n,org-export-as-latin1}
9667@xorgcmd{C-c C-e N,org-export-as-latin1-to-buffer}
ed21c5c8 9668Like the above commands, but use Latin-1 encoding.
acedf35c
CD
9669@orgcmd{C-c C-e u,org-export-as-utf8}
9670@xorgcmd{C-c C-e U,org-export-as-utf8-to-buffer}
ed21c5c8 9671Like the above commands, but use UTF-8 encoding.
acedf35c 9672@item C-c C-e v a/n/u
4009494e
GM
9673Export only the visible part of the document.
9674@end table
9675
9676@cindex headline levels, for exporting
9677In the exported version, the first 3 outline levels will become
9678headlines, defining a general document structure. Additional levels
9679will be exported as itemized lists. If you want that transition to occur
9680at a different level, specify it with a prefix argument. For example,
9681
9682@example
9683@kbd{C-1 C-c C-e a}
9684@end example
9685
9686@noindent
9687creates only top level headlines and does the rest as items. When
9688headlines are converted to items, the indentation of the text following
9689the headline is changed to fit nicely under the item. This is done with
a7808fba 9690the assumption that the first body line indicates the base indentation of
4009494e
GM
9691the body text. Any indentation larger than this is adjusted to preserve
9692the layout relative to the first line. Should there be lines with less
9693indentation than the first, these are left alone.
9694
c8d0cf5c
CD
9695@vindex org-export-ascii-links-to-notes
9696Links will be exported in a footnote-like style, with the descriptive part in
9697the text and the link in a note before the next heading. See the variable
9698@code{org-export-ascii-links-to-notes} for details and other options.
9699
ed21c5c8 9700@node HTML export, LaTeX and PDF export, ASCII/Latin-1/UTF-8 export, Exporting
4009494e
GM
9701@section HTML export
9702@cindex HTML export
9703
86fbb8ca 9704Org-mode contains an HTML (XHTML 1.0 strict) exporter with extensive
b6cb4cd5 9705HTML formatting, in ways similar to John Gruber's @emph{markdown}
4009494e
GM
9706language, but with additional support for tables.
9707
9708@menu
c0468714 9709* HTML Export commands:: How to invoke HTML export
ce57c2fe 9710* HTML preamble and postamble:: How to insert a preamble and a postamble
c0468714
GM
9711* Quoting HTML tags:: Using direct HTML in Org-mode
9712* Links in HTML export:: How links will be interpreted and formatted
9713* Tables in HTML export:: How to modify the formatting of tables
9714* Images in HTML export:: How to insert figures into HTML output
afe98dfa 9715* Math formatting in HTML export:: Beautiful math also on the web
c0468714
GM
9716* Text areas in HTML export:: An alternative way to show an example
9717* CSS support:: Changing the appearance of the output
9718* JavaScript support:: Info and Folding in a web browser
4009494e
GM
9719@end menu
9720
ce57c2fe 9721@node HTML Export commands, HTML preamble and postamble, HTML export, HTML export
4009494e
GM
9722@subsection HTML export commands
9723
9724@cindex region, active
9725@cindex active region
b6cb4cd5 9726@cindex transient-mark-mode
4009494e 9727@table @kbd
acedf35c 9728@orgcmd{C-c C-e h,org-export-as-html}
c8d0cf5c 9729@cindex property, EXPORT_FILE_NAME
ce57c2fe
BG
9730Export as HTML file. For an Org file @file{myfile.org},
9731the HTML file will be @file{myfile.html}. The file will be overwritten
c8d0cf5c
CD
9732without warning. If there is an active region@footnote{This requires
9733@code{transient-mark-mode} be turned on.}, only the region will be
ce57c2fe 9734exported. If the selected region is a single tree@footnote{To select the
b349f79f 9735current subtree, use @kbd{C-c @@}.}, the tree head will become the document
b6cb4cd5 9736title. If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
b349f79f 9737property, that name will be used for the export.
acedf35c 9738@orgcmd{C-c C-e b,org-export-as-html-and-open}
4009494e 9739Export as HTML file and immediately open it with a browser.
acedf35c
CD
9740@orgcmd{C-c C-e H,org-export-as-html-to-buffer}
9741Export to a temporary buffer. Do not create a file.
9742@orgcmd{C-c C-e R,org-export-region-as-html}
a7808fba
CD
9743Export the active region to a temporary buffer. With a prefix argument, do
9744not produce the file header and footer, but just the plain HTML section for
9745the region. This is good for cut-and-paste operations.
acedf35c 9746@item C-c C-e v h/b/H/R
4009494e
GM
9747Export only the visible part of the document.
9748@item M-x org-export-region-as-html
c8d0cf5c 9749Convert the region to HTML under the assumption that it was Org-mode
4009494e
GM
9750syntax before. This is a global command that can be invoked in any
9751buffer.
9752@item M-x org-replace-region-by-HTML
c8d0cf5c 9753Replace the active region (assumed to be in Org-mode syntax) by HTML
4009494e
GM
9754code.
9755@end table
9756
9757@cindex headline levels, for exporting
a7808fba
CD
9758In the exported version, the first 3 outline levels will become headlines,
9759defining a general document structure. Additional levels will be exported as
9760itemized lists. If you want that transition to occur at a different level,
9761specify it with a numeric prefix argument. For example,
4009494e
GM
9762
9763@example
9764@kbd{C-2 C-c C-e b}
9765@end example
9766
9767@noindent
9768creates two levels of headings and does the rest as items.
9769
ce57c2fe
BG
9770
9771@node HTML preamble and postamble, Quoting HTML tags, HTML Export commands, HTML export
9772@subsection HTML preamble and postamble
9773@vindex org-export-html-preamble
9774@vindex org-export-html-postamble
9775@vindex org-export-html-preamble-format
9776@vindex org-export-html-postamble-format
9777@vindex org-export-html-validation-link
9778@vindex org-export-author-info
9779@vindex org-export-email-info
9780@vindex org-export-creator-info
9781@vindex org-export-time-stamp-file
9782
9783The HTML exporter lets you define a preamble and a postamble.
9784
9785The default value for @code{org-export-html-preamble} is @code{t}, which
9786means that the preamble is inserted depending on the relevant formatting
9787string in @code{org-export-html-preamble-format}.
9788
9789Setting @code{org-export-html-preamble} to a string will override the default
9790formatting string. Setting it to a function, will insert the output of the
9791function, which must be a string; such a function takes no argument but you
9792can check against the value of @code{opt-plist}, which contains the list of
9793publishing properties for the current file. Setting to @code{nil} will not
9794insert any preamble.
9795
9796The default value for @code{org-export-html-postamble} is @code{'auto}, which
9797means that the HTML exporter will look for the value of
9798@code{org-export-author-info}, @code{org-export-email-info},
9799@code{org-export-creator-info} and @code{org-export-time-stamp-file},
9800@code{org-export-html-validation-link} and build the postamble from these
9801values. Setting @code{org-export-html-postamble} to @code{t} will insert the
9802postamble from the relevant formatting string found in
9803@code{org-export-html-postamble-format}. Setting it to @code{nil} will not
9804insert any postamble.
9805
9806@node Quoting HTML tags, Links in HTML export, HTML preamble and postamble, HTML export
4009494e
GM
9807@subsection Quoting HTML tags
9808
9809Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
9810@samp{&gt;} in HTML export. If you want to include simple HTML tags
9811which should be interpreted as such, mark them with @samp{@@} as in
9812@samp{@@<b>bold text@@</b>}. Note that this really works only for
9813simple tags. For more extensive HTML that should be copied verbatim to
9814the exported file use either
9815
c8d0cf5c
CD
9816@cindex #+HTML
9817@cindex #+BEGIN_HTML
4009494e
GM
9818@example
9819#+HTML: Literal HTML code for export
9820@end example
9821
9822@noindent or
b349f79f 9823@cindex #+BEGIN_HTML
4009494e
GM
9824
9825@example
9826#+BEGIN_HTML
9827All lines between these markers are exported literally
9828#+END_HTML
9829@end example
9830
9831
a351880d
CD
9832@node Links in HTML export, Tables in HTML export, Quoting HTML tags, HTML export
9833@subsection Links in HTML export
4009494e
GM
9834
9835@cindex links, in HTML export
9836@cindex internal links, in HTML export
9837@cindex external links, in HTML export
55e0839d 9838Internal links (@pxref{Internal links}) will continue to work in HTML. This
c8d0cf5c 9839includes automatic links created by radio targets (@pxref{Radio
55e0839d
CD
9840targets}). Links to external files will still work if the target file is on
9841the same @i{relative} path as the published Org file. Links to other
9842@file{.org} files will be translated into HTML links under the assumption
9843that an HTML version also exists of the linked file, at the same relative
9844path. @samp{id:} links can then be used to jump to specific entries across
9845files. For information related to linking files while publishing them to a
9846publishing directory see @ref{Publishing links}.
4009494e 9847
44ce9197 9848If you want to specify attributes for links, you can do so using a special
a50253cc 9849@code{#+ATTR_HTML} line to define attributes that will be added to the
c8d0cf5c
CD
9850@code{<a>} or @code{<img>} tags. Here is an example that sets @code{title}
9851and @code{style} attributes for a link:
44ce9197 9852
c8d0cf5c 9853@cindex #+ATTR_HTML
44ce9197 9854@example
c8d0cf5c
CD
9855#+ATTR_HTML: title="The Org-mode homepage" style="color:red;"
9856[[http://orgmode.org]]
9857@end example
9858
a351880d 9859@node Tables in HTML export, Images in HTML export, Links in HTML export, HTML export
c8d0cf5c
CD
9860@subsection Tables
9861@cindex tables, in HTML
9862@vindex org-export-html-table-tag
9863
9864Org-mode tables are exported to HTML using the table tag defined in
9865@code{org-export-html-table-tag}. The default setting makes tables without
9866cell borders and frame. If you would like to change this for individual
86fbb8ca 9867tables, place something like the following before the table:
c8d0cf5c
CD
9868
9869@cindex #+CAPTION
a351880d 9870@cindex #+ATTR_HTML
c8d0cf5c
CD
9871@example
9872#+CAPTION: This is a table with lines around and between cells
9873#+ATTR_HTML: border="2" rules="all" frame="all"
44ce9197
CD
9874@end example
9875
afe98dfa 9876@node Images in HTML export, Math formatting in HTML export, Tables in HTML export, HTML export
a351880d 9877@subsection Images in HTML export
4009494e
GM
9878
9879@cindex images, inline in HTML
9880@cindex inlining images in HTML
c8d0cf5c 9881@vindex org-export-html-inline-images
a7808fba 9882HTML export can inline images given as links in the Org file, and
4009494e 9883it can make an image the clickable part of a link. By
c8d0cf5c
CD
9884default@footnote{But see the variable
9885@code{org-export-html-inline-images}.}, images are inlined if a link does
4009494e
GM
9886not have a description. So @samp{[[file:myimg.jpg]]} will be inlined,
9887while @samp{[[file:myimg.jpg][the image]]} will just produce a link
9888@samp{the image} that points to the image. If the description part
9889itself is a @code{file:} link or a @code{http:} URL pointing to an
9890image, this image will be inlined and activated so that clicking on the
9891image will activate the link. For example, to include a thumbnail that
9892will link to a high resolution version of the image, you could use:
9893
9894@example
9895[[file:highres.jpg][file:thumb.jpg]]
9896@end example
9897
86fbb8ca 9898If you need to add attributes to an inlined image, use a @code{#+ATTR_HTML}.
a351880d
CD
9899In the example below we specify the @code{alt} and @code{title} attributes to
9900support text viewers and accessibility, and align it to the right.
c8d0cf5c
CD
9901
9902@cindex #+CAPTION
a351880d 9903@cindex #+ATTR_HTML
c8d0cf5c
CD
9904@example
9905#+CAPTION: A black cat stalking a spider
a351880d 9906#+ATTR_HTML: alt="cat/spider image" title="Action!" align="right"
c8d0cf5c
CD
9907[[./img/a.jpg]]
9908@end example
9909
4009494e 9910@noindent
ce57c2fe 9911You could use @code{http} addresses just as well.
4009494e 9912
afe98dfa
CD
9913@node Math formatting in HTML export, Text areas in HTML export, Images in HTML export, HTML export
9914@subsection Math formatting in HTML export
9915@cindex MathJax
9916@cindex dvipng
9917
acedf35c 9918@LaTeX{} math snippets (@pxref{LaTeX fragments}) can be displayed in two
afe98dfa
CD
9919different ways on HTML pages. The default is to use the
9920@uref{http://www.mathjax.org, MathJax system} which should work out of the
9921box with Org mode installation because @code{http://orgmode.org} serves
9922@file{MathJax} for Org-mode users for small applications and for testing
9923purposes. @b{If you plan to use this regularly or on pages with significant
acedf35c
CD
9924page views, you should install@footnote{Installation instructions can be
9925found on the MathJax website, see
9926@uref{http://www.mathjax.org/resources/docs/?installation.html}.} MathJax on
9927your own server in order to limit the load of our server.} To configure
9928@file{MathJax}, use the variable @code{org-export-html-mathjax-options} or
9929insert something like the following into the buffer:
afe98dfa
CD
9930
9931@example
9932#+MATHJAX: align:"left" mathml:t path:"/MathJax/MathJax.js"
9933@end example
9934
9935@noindent See the docstring of the variable
9936@code{org-export-html-mathjax-options} for the meaning of the parameters in
9937this line.
9938
acedf35c
CD
9939If you prefer, you can also request that @LaTeX{} fragments are processed
9940into small images that will be inserted into the browser page. Before the
9941availability of MathJax, this was the default method for Org files. This
9942method requires that the @file{dvipng} program is available on your system.
9943You can still get this processing with
afe98dfa
CD
9944
9945@example
9946#+OPTIONS: LaTeX:dvipng
9947@end example
9948
9949@node Text areas in HTML export, CSS support, Math formatting in HTML export, HTML export
a351880d 9950@subsection Text areas in HTML export
55e0839d
CD
9951
9952@cindex text areas, in HTML
9953An alternative way to publish literal code examples in HTML is to use text
9954areas, where the example can even be edited before pasting it into an
9955application. It is triggered by a @code{-t} switch at an @code{example} or
9956@code{src} block. Using this switch disables any options for syntax and
9957label highlighting, and line numbering, which may be present. You may also
9958use @code{-h} and @code{-w} switches to specify the height and width of the
9959text area, which default to the number of lines in the example, and 80,
9960respectively. For example
9961
9962@example
9963#+BEGIN_EXAMPLE -t -w 40
86fbb8ca
CD
9964 (defun org-xor (a b)
9965 "Exclusive or."
9966 (if a (not b) b))
55e0839d
CD
9967#+END_EXAMPLE
9968@end example
9969
9970
86fbb8ca 9971@node CSS support, JavaScript support, Text areas in HTML export, HTML export
4009494e 9972@subsection CSS support
a7808fba
CD
9973@cindex CSS, for HTML export
9974@cindex HTML export, CSS
4009494e 9975
c8d0cf5c
CD
9976@vindex org-export-html-todo-kwd-class-prefix
9977@vindex org-export-html-tag-class-prefix
55e0839d 9978You can also give style information for the exported file. The HTML exporter
c8d0cf5c
CD
9979assigns the following special CSS classes@footnote{If the classes on TODO
9980keywords and tags lead to conflicts, use the variables
9981@code{org-export-html-todo-kwd-class-prefix} and
9982@code{org-export-html-tag-class-prefix} to make them unique.} to appropriate
9983parts of the document---your style specifications may change these, in
9984addition to any of the standard classes like for headlines, tables, etc.
9985@example
9986p.author @r{author information, including email}
9987p.date @r{publishing date}
9988p.creator @r{creator info, about org-mode version}
9989.title @r{document title}
9990.todo @r{TODO keywords, all not-done states}
ce57c2fe 9991.done @r{the DONE keywords, all states that count as done}
c8d0cf5c
CD
9992.WAITING @r{each TODO keyword also uses a class named after itself}
9993.timestamp @r{timestamp}
9994.timestamp-kwd @r{keyword associated with a timestamp, like SCHEDULED}
9995.timestamp-wrapper @r{span around keyword plus timestamp}
9996.tag @r{tag in a headline}
9997._HOME @r{each tag uses itself as a class, "@@" replaced by "_"}
9998.target @r{target for links}
9999.linenr @r{the line number in a code example}
10000.code-highlighted @r{for highlighting referenced code lines}
10001div.outline-N @r{div for outline level N (headline plus text))}
10002div.outline-text-N @r{extra div for text at outline level N}
10003.section-number-N @r{section number in headlines, different for each level}
10004div.figure @r{how to format an inlined image}
10005pre.src @r{formatted source code}
10006pre.example @r{normal example}
10007p.verse @r{verse paragraph}
10008div.footnotes @r{footnote section headline}
10009p.footnote @r{footnote definition paragraph, containing a footnote}
10010.footref @r{a footnote reference number (always a <sup>)}
10011.footnum @r{footnote number in footnote definition (always <sup>)}
10012@end example
10013
10014@vindex org-export-html-style-default
10015@vindex org-export-html-style-include-default
10016@vindex org-export-html-style
10017@vindex org-export-html-extra
10018@vindex org-export-html-style-default
10019Each exported file contains a compact default style that defines these
e45e3595
CD
10020classes in a basic way@footnote{This style is defined in the constant
10021@code{org-export-html-style-default}, which you should not modify. To turn
10022inclusion of these defaults off, customize
10023@code{org-export-html-style-include-default}}. You may overwrite these
10024settings, or add to them by using the variables @code{org-export-html-style}
10025(for Org-wide settings) and @code{org-export-html-style-extra} (for more
acedf35c 10026fine-grained settings, like file-local settings). To set the latter variable
e45e3595 10027individually for each file, you can use
4009494e 10028
c8d0cf5c 10029@cindex #+STYLE
4009494e 10030@example
864c9740 10031#+STYLE: <link rel="stylesheet" type="text/css" href="stylesheet.css" />
4009494e
GM
10032@end example
10033
864c9740 10034@noindent
e45e3595
CD
10035For longer style definitions, you can use several such lines. You could also
10036directly write a @code{<style>} @code{</style>} section in this way, without
10037referring to an external file.
4009494e 10038
afe98dfa
CD
10039In order to add styles to a subtree, use the @code{:HTML_CONTAINER_CLASS:}
10040property to assign a class to the tree. In order to specify CSS styles for a
10041particular headline, you can use the id specified in a @code{:CUSTOM_ID:}
10042property.
10043
4009494e
GM
10044@c FIXME: More about header and footer styles
10045@c FIXME: Talk about links and targets.
10046
86fbb8ca
CD
10047@node JavaScript support, , CSS support, HTML export
10048@subsection JavaScript supported display of web pages
a7808fba 10049
c8d0cf5c
CD
10050@cindex Rose, Sebastian
10051Sebastian Rose has written a JavaScript program especially designed to
a7808fba 10052enhance the web viewing experience of HTML files created with Org. This
55e0839d
CD
10053program allows you to view large files in two different ways. The first one
10054is an @emph{Info}-like mode where each section is displayed separately and
a7808fba
CD
10055navigation can be done with the @kbd{n} and @kbd{p} keys (and some other keys
10056as well, press @kbd{?} for an overview of the available keys). The second
55e0839d
CD
10057view type is a @emph{folding} view much like Org provides inside Emacs. The
10058script is available at @url{http://orgmode.org/org-info.js} and you can find
10059the documentation for it at @url{http://orgmode.org/worg/code/org-info-js/}.
c8d0cf5c 10060We host the script at our site, but if you use it a lot, you might
55e0839d
CD
10061not want to be dependent on @url{orgmode.org} and prefer to install a local
10062copy on your own web server.
a7808fba 10063
b349f79f 10064To use the script, you need to make sure that the @file{org-jsinfo.el} module
b6cb4cd5
CD
10065gets loaded. It should be loaded by default, but you can try @kbd{M-x
10066customize-variable @key{RET} org-modules @key{RET}} to convince yourself that
10067this is indeed the case. All it then takes to make use of the program is
10068adding a single line to the Org file:
a7808fba 10069
c8d0cf5c 10070@cindex #+INFOJS_OPT
a7808fba 10071@example
b349f79f 10072#+INFOJS_OPT: view:info toc:nil
a7808fba
CD
10073@end example
10074
10075@noindent
10076If this line is found, the HTML header will automatically contain the code
10077needed to invoke the script. Using the line above, you can set the following
10078viewing options:
10079
10080@example
10081path: @r{The path to the script. The default is to grab the script from}
10082 @r{@url{http://orgmode.org/org-info.js}, but you might want to have}
10083 @r{a local copy and use a path like @samp{../scripts/org-info.js}.}
b349f79f 10084view: @r{Initial view when website is first shown. Possible values are:}
a7808fba
CD
10085 info @r{Info-like interface with one section per page.}
10086 overview @r{Folding interface, initially showing only top-level.}
10087 content @r{Folding interface, starting with all headlines visible.}
10088 showall @r{Folding interface, all headlines and text visible.}
10089sdepth: @r{Maximum headline level that will still become an independent}
10090 @r{section for info and folding modes. The default is taken from}
7006d207
CD
10091 @r{@code{org-export-headline-levels} (= the @code{H} switch in @code{#+OPTIONS}).}
10092 @r{If this is smaller than in @code{org-export-headline-levels}, each}
c8d0cf5c 10093 @r{info/folding section can still contain child headlines.}
acedf35c 10094toc: @r{Should the table of contents @emph{initially} be visible?}
c8d0cf5c 10095 @r{Even when @code{nil}, you can always get to the "toc" with @kbd{i}.}
a7808fba 10096tdepth: @r{The depth of the table of contents. The defaults are taken from}
7006d207 10097 @r{the variables @code{org-export-headline-levels} and @code{org-export-with-toc}.}
acedf35c 10098ftoc: @r{Does the CSS of the page specify a fixed position for the "toc"?}
b349f79f 10099 @r{If yes, the toc will never be displayed as a section.}
a7808fba 10100ltoc: @r{Should there be short contents (children) in each section?}
c8d0cf5c 10101 @r{Make this @code{above} if the section should be above initial text.}
a7808fba
CD
10102mouse: @r{Headings are highlighted when the mouse is over them. Should be}
10103 @r{@samp{underline} (default) or a background color like @samp{#cccccc}.}
10104buttons: @r{Should view-toggle buttons be everywhere? When @code{nil} (the}
10105 @r{default), only one such button will be present.}
10106@end example
c8d0cf5c
CD
10107@noindent
10108@vindex org-infojs-options
10109@vindex org-export-html-use-infojs
a7808fba
CD
10110You can choose default values for these options by customizing the variable
10111@code{org-infojs-options}. If you always want to apply the script to your
10112pages, configure the variable @code{org-export-html-use-infojs}.
10113
c8d0cf5c 10114@node LaTeX and PDF export, DocBook export, HTML export, Exporting
acedf35c
CD
10115@section @LaTeX{} and PDF export
10116@cindex @LaTeX{} export
71d35b24 10117@cindex PDF export
72d803ad 10118@cindex Guerry, Bastien
4009494e 10119
acedf35c 10120Org-mode contains a @LaTeX{} exporter written by Bastien Guerry. With
ed21c5c8
CD
10121further processing@footnote{The default LaTeX output is designed for
10122processing with pdftex or latex. It includes packages that are not
10123compatible with xetex and possibly luatex. See the variables
10124@code{org-export-latex-default-packages-alist} and
10125@code{org-export-latex-packages-alist}.}, this backend is also used to
acedf35c 10126produce PDF output. Since the @LaTeX{} output uses @file{hyperref} to
ed21c5c8 10127implement links and cross references, the PDF output file will be fully
ce57c2fe
BG
10128linked. Beware of the fact that your @code{org} file has to be properly
10129structured in order to be correctly exported: respect the hierarchy of
10130sections.
4009494e
GM
10131
10132@menu
c0468714
GM
10133* LaTeX/PDF export commands:: Which key invokes which commands
10134* Header and sectioning:: Setting up the export file structure
acedf35c
CD
10135* Quoting LaTeX code:: Incorporating literal @LaTeX{} code
10136* Tables in LaTeX export:: Options for exporting tables to @LaTeX{}
10137* Images in LaTeX export:: How to insert figures into @LaTeX{} output
c0468714 10138* Beamer class export:: Turning the file into a presentation
4009494e
GM
10139@end menu
10140
ed21c5c8 10141@node LaTeX/PDF export commands, Header and sectioning, LaTeX and PDF export, LaTeX and PDF export
acedf35c 10142@subsection @LaTeX{} export commands
4009494e 10143
b6cb4cd5
CD
10144@cindex region, active
10145@cindex active region
10146@cindex transient-mark-mode
4009494e 10147@table @kbd
acedf35c 10148@orgcmd{C-c C-e l,org-export-as-latex}
c8d0cf5c 10149@cindex property EXPORT_FILE_NAME
ce57c2fe
BG
10150Export as @LaTeX{} file. For an Org file
10151@file{myfile.org}, the @LaTeX{} file will be @file{myfile.tex}. The file will
c8d0cf5c
CD
10152be overwritten without warning. If there is an active region@footnote{This
10153requires @code{transient-mark-mode} be turned on.}, only the region will be
ce57c2fe 10154exported. If the selected region is a single tree@footnote{To select the
b6cb4cd5
CD
10155current subtree, use @kbd{C-c @@}.}, the tree head will become the document
10156title. If the tree head entry has or inherits an @code{EXPORT_FILE_NAME}
10157property, that name will be used for the export.
acedf35c
CD
10158@orgcmd{C-c C-e L,org-export-as-latex-to-buffer}
10159Export to a temporary buffer. Do not create a file.
ce57c2fe 10160@item C-c C-e v l/L
4009494e
GM
10161Export only the visible part of the document.
10162@item M-x org-export-region-as-latex
acedf35c 10163Convert the region to @LaTeX{} under the assumption that it was Org-mode
4009494e
GM
10164syntax before. This is a global command that can be invoked in any
10165buffer.
10166@item M-x org-replace-region-by-latex
acedf35c 10167Replace the active region (assumed to be in Org-mode syntax) by @LaTeX{}
4009494e 10168code.
acedf35c
CD
10169@orgcmd{C-c C-e p,org-export-as-pdf}
10170Export as @LaTeX{} and then process to PDF.
10171@orgcmd{C-c C-e d,org-export-as-pdf-and-open}
10172Export as @LaTeX{} and then process to PDF, then open the resulting PDF file.
4009494e
GM
10173@end table
10174
10175@cindex headline levels, for exporting
c8d0cf5c 10176@vindex org-latex-low-levels
4009494e
GM
10177In the exported version, the first 3 outline levels will become
10178headlines, defining a general document structure. Additional levels
10179will be exported as description lists. The exporter can ignore them or
10180convert them to a custom string depending on
10181@code{org-latex-low-levels}.
10182
10183If you want that transition to occur at a different level, specify it
ce57c2fe 10184with a numeric prefix argument. For example,
4009494e
GM
10185
10186@example
10187@kbd{C-2 C-c C-e l}
10188@end example
10189
10190@noindent
10191creates two levels of headings and does the rest as items.
10192
ed21c5c8
CD
10193@node Header and sectioning, Quoting LaTeX code, LaTeX/PDF export commands, LaTeX and PDF export
10194@subsection Header and sectioning structure
acedf35c
CD
10195@cindex @LaTeX{} class
10196@cindex @LaTeX{} sectioning structure
10197@cindex @LaTeX{} header
ed21c5c8
CD
10198@cindex header, for LaTeX files
10199@cindex sectioning structure, for LaTeX export
10200
acedf35c 10201By default, the @LaTeX{} output uses the class @code{article}.
ed21c5c8
CD
10202
10203@vindex org-export-latex-default-class
10204@vindex org-export-latex-classes
10205@vindex org-export-latex-default-packages-alist
10206@vindex org-export-latex-packages-alist
10207@cindex #+LATEX_HEADER
10208@cindex #+LATEX_CLASS
10209@cindex #+LATEX_CLASS_OPTIONS
10210@cindex property, LATEX_CLASS
10211@cindex property, LATEX_CLASS_OPTIONS
10212You can change this globally by setting a different value for
10213@code{org-export-latex-default-class} or locally by adding an option like
10214@code{#+LaTeX_CLASS: myclass} in your file, or with a @code{:LaTeX_CLASS:}
10215property that applies when exporting a region containing only this (sub)tree.
10216The class must be listed in @code{org-export-latex-classes}. This variable
10217defines a header template for each class@footnote{Into which the values of
10218@code{org-export-latex-default-packages-alist} and
10219@code{org-export-latex-packages-alist} are spliced.}, and allows you to
10220define the sectioning structure for each class. You can also define your own
10221classes there. @code{#+LaTeX_CLASS_OPTIONS} or a @code{LaTeX_CLASS_OPTIONS}
10222property can specify the options for the @code{\documentclass} macro. You
10223can also use @code{#+LATEX_HEADER: \usepackage@{xyz@}} to add lines to the
10224header. See the docstring of @code{org-export-latex-classes} for more
10225information.
10226
10227@node Quoting LaTeX code, Tables in LaTeX export, Header and sectioning, LaTeX and PDF export
acedf35c 10228@subsection Quoting @LaTeX{} code
4009494e 10229
acedf35c
CD
10230Embedded @LaTeX{} as described in @ref{Embedded LaTeX}, will be correctly
10231inserted into the @LaTeX{} file. This includes simple macros like
55e0839d 10232@samp{\ref@{LABEL@}} to create a cross reference to a figure. Furthermore,
acedf35c 10233you can add special code that should only be present in @LaTeX{} export with
55e0839d 10234the following constructs:
4009494e 10235
c8d0cf5c
CD
10236@cindex #+LaTeX
10237@cindex #+BEGIN_LaTeX
4009494e
GM
10238@example
10239#+LaTeX: Literal LaTeX code for export
10240@end example
10241
10242@noindent or
b349f79f 10243@cindex #+BEGIN_LaTeX
4009494e
GM
10244
10245@example
10246#+BEGIN_LaTeX
10247All lines between these markers are exported literally
10248#+END_LaTeX
10249@end example
dbc28aaa 10250
dbc28aaa 10251
ed21c5c8 10252@node Tables in LaTeX export, Images in LaTeX export, Quoting LaTeX code, LaTeX and PDF export
acedf35c
CD
10253@subsection Tables in @LaTeX{} export
10254@cindex tables, in @LaTeX{} export
67df9cfb 10255
ce57c2fe
BG
10256For @LaTeX{} export of a table, you can specify a label, a caption and
10257placement options (@pxref{Images and tables}). You can also use the
10258@code{ATTR_LaTeX} line to request a @code{longtable} environment for the
10259table, so that it may span several pages, or to change the default table
10260environment from @code{table} to @code{table*} or to change the default inner
10261tabular environment to @code{tabularx} or @code{tabulary}. Finally, you can
10262set the alignment string, and (with @code{tabularx} or @code{tabulary}) the
10263width:
67df9cfb 10264
c8d0cf5c
CD
10265@cindex #+CAPTION
10266@cindex #+LABEL
10267@cindex #+ATTR_LaTeX
67df9cfb
CD
10268@example
10269#+CAPTION: A long table
10270#+LABEL: tbl:long
c8d0cf5c 10271#+ATTR_LaTeX: longtable align=l|lp@{3cm@}r|l
67df9cfb
CD
10272| ..... | ..... |
10273| ..... | ..... |
10274@end example
10275
ce57c2fe
BG
10276or to specify a multicolumn table with @code{tabulary}
10277
10278@cindex #+CAPTION
10279@cindex #+LABEL
10280@cindex #+ATTR_LaTeX
10281@example
10282#+CAPTION: A wide table with tabulary
10283#+LABEL: tbl:wide
10284#+ATTR_LaTeX: table* tabulary width=\textwidth
10285| ..... | ..... |
10286| ..... | ..... |
10287@end example
67df9cfb 10288
ed21c5c8 10289@node Images in LaTeX export, Beamer class export, Tables in LaTeX export, LaTeX and PDF export
acedf35c
CD
10290@subsection Images in @LaTeX{} export
10291@cindex images, inline in @LaTeX{}
10292@cindex inlining images in @LaTeX{}
67df9cfb
CD
10293
10294Images that are linked to without a description part in the link, like
10295@samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]} will be inserted into the PDF
acedf35c 10296output file resulting from @LaTeX{} processing. Org will use an
67df9cfb 10297@code{\includegraphics} macro to insert the image. If you have specified a
a351880d
CD
10298caption and/or a label as described in @ref{Images and tables}, the figure
10299will be wrapped into a @code{figure} environment and thus become a floating
ce57c2fe
BG
10300element. You can use an @code{#+ATTR_LaTeX:} line to specify various other
10301options. You can ask org to export an image as a float without specifying
10302a label or a caption by using the keyword @code{float} in this line. Various
10303optional arguments to the @code{\includegraphics} macro can also be specified
10304in this fashion. To modify the placement option of the floating environment,
10305add something like @samp{placement=[h!]} to the attributes. It is to be noted
10306this option can be used with tables as well@footnote{One can also take
10307advantage of this option to pass other, unrelated options into the figure or
10308table environment. For an example see the section ``Exporting org files'' in
10309@url{http://orgmode.org/worg/org-hacks.html}}. For example the
10310@code{#+ATTR_LaTeX:} line below is exported as the @code{figure} environment
10311below it.
a351880d 10312
86fbb8ca
CD
10313If you would like to let text flow around the image, add the word @samp{wrap}
10314to the @code{#+ATTR_LaTeX:} line, which will make the figure occupy the left
10315half of the page. To fine-tune, the @code{placement} field will be the set
10316of additional arguments needed by the @code{wrapfigure} environment. Note
10317that if you change the size of the image, you need to use compatible settings
10318for @code{\includegraphics} and @code{wrapfigure}.
67df9cfb 10319
c8d0cf5c
CD
10320@cindex #+CAPTION
10321@cindex #+LABEL
10322@cindex #+ATTR_LaTeX
67df9cfb
CD
10323@example
10324#+CAPTION: The black-body emission of the disk around HR 4049
10325#+LABEL: fig:SED-HR4049
10326#+ATTR_LaTeX: width=5cm,angle=90
10327[[./img/sed-hr4049.pdf]]
a351880d
CD
10328
10329#+ATTR_LaTeX: width=0.38\textwidth wrap placement=@{r@}@{0.4\textwidth@}
10330[[./img/hst.png]]
67df9cfb
CD
10331@end example
10332
ce57c2fe
BG
10333If you wish to include an image which spans multiple columns in a page, you
10334can use the keyword @code{multicolumn} in the @code{#+ATTR_LaTeX} line. This
10335will export the image wrapped in a @code{figure*} environment.
10336
55e0839d 10337If you need references to a label created in this way, write
acedf35c 10338@samp{\ref@{fig:SED-HR4049@}} just like in @LaTeX{}.
67df9cfb 10339
ed21c5c8
CD
10340@node Beamer class export, , Images in LaTeX export, LaTeX and PDF export
10341@subsection Beamer class export
10342
86fbb8ca 10343The LaTeX class @file{beamer} allows production of high quality presentations
ed21c5c8
CD
10344using LaTeX and pdf processing. Org-mode has special support for turning an
10345Org-mode file or tree into a @file{beamer} presentation.
10346
10347When the LaTeX class for the current buffer (as set with @code{#+LaTeX_CLASS:
10348beamer}) or subtree (set with a @code{LaTeX_CLASS} property) is
10349@code{beamer}, a special export mode will turn the file or tree into a beamer
86fbb8ca 10350presentation. Any tree with not-too-deep level nesting should in principle be
ed21c5c8
CD
10351exportable as a beamer presentation. By default, the top-level entries (or
10352the first level below the selected subtree heading) will be turned into
10353frames, and the outline structure below this level will become itemize lists.
10354You can also configure the variable @code{org-beamer-frame-level} to a
acedf35c 10355different level---then the hierarchy above frames will produce the sectioning
ed21c5c8
CD
10356structure of the presentation.
10357
10358A template for useful in-buffer settings or properties can be inserted into
afe98dfa
CD
10359the buffer with @kbd{M-x org-insert-beamer-options-template}. Among other
10360things, this will install a column view format which is very handy for
10361editing special properties used by beamer.
ed21c5c8
CD
10362
10363You can influence the structure of the presentation using the following
10364properties:
10365
10366@table @code
10367@item BEAMER_env
10368The environment that should be used to format this entry. Valid environments
10369are defined in the constant @code{org-beamer-environments-default}, and you
10370can define more in @code{org-beamer-environments-extra}. If this property is
10371set, the entry will also get a @code{:B_environment:} tag to make this
10372visible. This tag has no semantic meaning, it is only a visual aid.
10373@item BEAMER_envargs
10374The beamer-special arguments that should be used for the environment, like
10375@code{[t]} or @code{[<+->]} of @code{<2-3>}. If the @code{BEAMER_col}
10376property is also set, something like @code{C[t]} can be added here as well to
10377set an options argument for the implied @code{columns} environment.
acedf35c
CD
10378@code{c[t]} or @code{c<2->} will set an options for the implied @code{column}
10379environment.
ed21c5c8
CD
10380@item BEAMER_col
10381The width of a column that should start with this entry. If this property is
10382set, the entry will also get a @code{:BMCOL:} property to make this visible.
86fbb8ca 10383Also this tag is only a visual aid. When this is a plain number, it will be
ed21c5c8
CD
10384interpreted as a fraction of @code{\textwidth}. Otherwise it will be assumed
10385that you have specified the units, like @samp{3cm}. The first such property
10386in a frame will start a @code{columns} environment to surround the columns.
10387This environment is closed when an entry has a @code{BEAMER_col} property
10388with value 0 or 1, or automatically at the end of the frame.
10389@item BEAMER_extra
10390Additional commands that should be inserted after the environment has been
10391opened. For example, when creating a frame, this can be used to specify
10392transitions.
10393@end table
10394
10395Frames will automatically receive a @code{fragile} option if they contain
10396source code that uses the verbatim environment. Special @file{beamer}
10397specific code can be inserted using @code{#+BEAMER:} and
10398@code{#+BEGIN_beamer...#+end_beamer} constructs, similar to other export
10399backends, but with the difference that @code{#+LaTeX:} stuff will be included
10400in the presentation as well.
10401
10402Outline nodes with @code{BEAMER_env} property value @samp{note} or
10403@samp{noteNH} will be formatted as beamer notes, i,e, they will be wrapped
10404into @code{\note@{...@}}. The former will include the heading as part of the
10405note text, the latter will ignore the heading of that node. To simplify note
10406generation, it is actually enough to mark the note with a @emph{tag} (either
10407@code{:B_note:} or @code{:B_noteNH:}) instead of creating the
10408@code{BEAMER_env} property.
10409
10410You can turn on a special minor mode @code{org-beamer-mode} for editing
10411support with
10412
10413@example
10414#+STARTUP: beamer
10415@end example
10416
10417@table @kbd
acedf35c 10418@orgcmd{C-c C-b,org-beamer-select-environment}
ed21c5c8
CD
10419In @code{org-beamer-mode}, this key offers fast selection of a beamer
10420environment or the @code{BEAMER_col} property.
10421@end table
10422
10423Column view provides a great way to set the environment of a node and other
10424important parameters. Make sure you are using a COLUMN format that is geared
10425toward this special purpose. The command @kbd{M-x
afe98dfa 10426org-insert-beamer-options-template} defines such a format.
ed21c5c8
CD
10427
10428Here is a simple example Org document that is intended for beamer export.
10429
10430@smallexample
10431#+LaTeX_CLASS: beamer
10432#+TITLE: Example Presentation
10433#+AUTHOR: Carsten Dominik
10434#+LaTeX_CLASS_OPTIONS: [presentation]
10435#+BEAMER_FRAME_LEVEL: 2
10436#+BEAMER_HEADER_EXTRA: \usetheme@{Madrid@}\usecolortheme@{default@}
10437#+COLUMNS: %35ITEM %10BEAMER_env(Env) %10BEAMER_envargs(Args) %4BEAMER_col(Col) %8BEAMER_extra(Ex)
10438
10439* This is the first structural section
86fbb8ca 10440
ed21c5c8
CD
10441** Frame 1 \\ with a subtitle
10442*** Thanks to Eric Fraga :BMCOL:B_block:
10443 :PROPERTIES:
10444 :BEAMER_env: block
10445 :BEAMER_envargs: C[t]
10446 :BEAMER_col: 0.5
10447 :END:
10448 for the first viable beamer setup in Org
10449*** Thanks to everyone else :BMCOL:B_block:
10450 :PROPERTIES:
10451 :BEAMER_col: 0.5
10452 :BEAMER_env: block
10453 :BEAMER_envargs: <2->
10454 :END:
10455 for contributing to the discussion
10456**** This will be formatted as a beamer note :B_note:
10457** Frame 2 \\ where we will not use columns
10458*** Request :B_block:
10459 Please test this stuff!
10460 :PROPERTIES:
10461 :BEAMER_env: block
10462 :END:
10463@end smallexample
10464
10465For more information, see the documentation on Worg.
10466
ce57c2fe 10467@node DocBook export, OpenDocumentText export, LaTeX and PDF export, Exporting
c8d0cf5c
CD
10468@section DocBook export
10469@cindex DocBook export
10470@cindex PDF export
86fbb8ca 10471@cindex Cui, Baoqiu
c8d0cf5c
CD
10472
10473Org contains a DocBook exporter written by Baoqiu Cui. Once an Org file is
10474exported to DocBook format, it can be further processed to produce other
10475formats, including PDF, HTML, man pages, etc., using many available DocBook
10476tools and stylesheets.
10477
10478Currently DocBook exporter only supports DocBook V5.0.
10479
10480@menu
c0468714
GM
10481* DocBook export commands:: How to invoke DocBook export
10482* Quoting DocBook code:: Incorporating DocBook code in Org files
10483* Recursive sections:: Recursive sections in DocBook
10484* Tables in DocBook export:: Tables are exported as HTML tables
10485* Images in DocBook export:: How to insert figures into DocBook output
10486* Special characters:: How to handle special characters
c8d0cf5c
CD
10487@end menu
10488
10489@node DocBook export commands, Quoting DocBook code, DocBook export, DocBook export
10490@subsection DocBook export commands
10491
10492@cindex region, active
10493@cindex active region
10494@cindex transient-mark-mode
10495@table @kbd
acedf35c 10496@orgcmd{C-c C-e D,org-export-as-docbook}
c8d0cf5c
CD
10497@cindex property EXPORT_FILE_NAME
10498Export as DocBook file. For an Org file, @file{myfile.org}, the DocBook XML
10499file will be @file{myfile.xml}. The file will be overwritten without
10500warning. If there is an active region@footnote{This requires
10501@code{transient-mark-mode} to be turned on}, only the region will be
10502exported. If the selected region is a single tree@footnote{To select the
10503current subtree, use @kbd{C-c @@}.}, the tree head will become the document
10504title. If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
10505property, that name will be used for the export.
acedf35c 10506@orgcmd{C-c C-e V,org-export-as-docbook-pdf-and-open}
c8d0cf5c
CD
10507Export as DocBook file, process to PDF, then open the resulting PDF file.
10508
10509@vindex org-export-docbook-xslt-proc-command
10510@vindex org-export-docbook-xsl-fo-proc-command
10511Note that, in order to produce PDF output based on exported DocBook file, you
10512need to have XSLT processor and XSL-FO processor software installed on your
10513system. Check variables @code{org-export-docbook-xslt-proc-command} and
10514@code{org-export-docbook-xsl-fo-proc-command}.
10515
86fbb8ca
CD
10516@vindex org-export-docbook-xslt-stylesheet
10517The stylesheet argument @code{%s} in variable
10518@code{org-export-docbook-xslt-proc-command} is replaced by the value of
10519variable @code{org-export-docbook-xslt-stylesheet}, which needs to be set by
10520the user. You can also overrule this global setting on a per-file basis by
10521adding an in-buffer setting @code{#+XSLT:} to the Org file.
10522
acedf35c 10523@orgkey{C-c C-e v D}
c8d0cf5c
CD
10524Export only the visible part of the document.
10525@end table
10526
10527@node Quoting DocBook code, Recursive sections, DocBook export commands, DocBook export
10528@subsection Quoting DocBook code
10529
10530You can quote DocBook code in Org files and copy it verbatim into exported
10531DocBook file with the following constructs:
10532
10533@cindex #+DOCBOOK
10534@cindex #+BEGIN_DOCBOOK
10535@example
10536#+DOCBOOK: Literal DocBook code for export
10537@end example
10538
10539@noindent or
10540@cindex #+BEGIN_DOCBOOK
10541
10542@example
10543#+BEGIN_DOCBOOK
10544All lines between these markers are exported by DocBook exporter
10545literally.
10546#+END_DOCBOOK
10547@end example
10548
10549For example, you can use the following lines to include a DocBook warning
10550admonition. As to what this warning says, you should pay attention to the
10551document context when quoting DocBook code in Org files. You may make
10552exported DocBook XML files invalid by not quoting DocBook code correctly.
10553
10554@example
10555#+BEGIN_DOCBOOK
10556<warning>
10557 <para>You should know what you are doing when quoting DocBook XML code
acedf35c 10558 in your Org file. Invalid DocBook XML may be generated by
c8d0cf5c
CD
10559 DocBook exporter if you are not careful!</para>
10560</warning>
10561#+END_DOCBOOK
10562@end example
10563
10564@node Recursive sections, Tables in DocBook export, Quoting DocBook code, DocBook export
10565@subsection Recursive sections
10566@cindex DocBook recursive sections
10567
10568DocBook exporter exports Org files as articles using the @code{article}
ce57c2fe 10569element in DocBook. Recursive sections, i.e.@: @code{section} elements, are
c8d0cf5c
CD
10570used in exported articles. Top level headlines in Org files are exported as
10571top level sections, and lower level headlines are exported as nested
10572sections. The entire structure of Org files will be exported completely, no
10573matter how many nested levels of headlines there are.
10574
10575Using recursive sections makes it easy to port and reuse exported DocBook
10576code in other DocBook document types like @code{book} or @code{set}.
10577
10578@node Tables in DocBook export, Images in DocBook export, Recursive sections, DocBook export
10579@subsection Tables in DocBook export
10580@cindex tables, in DocBook export
10581
10582Tables in Org files are exported as HTML tables, which have been supported since
10583DocBook V4.3.
10584
10585If a table does not have a caption, an informal table is generated using the
10586@code{informaltable} element; otherwise, a formal table will be generated
10587using the @code{table} element.
10588
10589@node Images in DocBook export, Special characters, Tables in DocBook export, DocBook export
10590@subsection Images in DocBook export
10591@cindex images, inline in DocBook
10592@cindex inlining images in DocBook
10593
10594Images that are linked to without a description part in the link, like
10595@samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]}, will be exported to DocBook
10596using @code{mediaobject} elements. Each @code{mediaobject} element contains
10597an @code{imageobject} that wraps an @code{imagedata} element. If you have
a351880d 10598specified a caption for an image as described in @ref{Images and tables}, a
c8d0cf5c
CD
10599@code{caption} element will be added in @code{mediaobject}. If a label is
10600also specified, it will be exported as an @code{xml:id} attribute of the
10601@code{mediaobject} element.
10602
10603@vindex org-export-docbook-default-image-attributes
10604Image attributes supported by the @code{imagedata} element, like @code{align}
10605or @code{width}, can be specified in two ways: you can either customize
10606variable @code{org-export-docbook-default-image-attributes} or use the
10607@code{#+ATTR_DOCBOOK:} line. Attributes specified in variable
10608@code{org-export-docbook-default-image-attributes} are applied to all inline
86fbb8ca 10609images in the Org file to be exported (unless they are overridden by image
c8d0cf5c
CD
10610attributes specified in @code{#+ATTR_DOCBOOK:} lines).
10611
10612The @code{#+ATTR_DOCBOOK:} line can be used to specify additional image
86fbb8ca 10613attributes or override default image attributes for individual images. If
c8d0cf5c
CD
10614the same attribute appears in both the @code{#+ATTR_DOCBOOK:} line and
10615variable @code{org-export-docbook-default-image-attributes}, the former
86fbb8ca 10616takes precedence. Here is an example about how image attributes can be
c8d0cf5c
CD
10617set:
10618
10619@cindex #+CAPTION
10620@cindex #+LABEL
10621@cindex #+ATTR_DOCBOOK
10622@example
86fbb8ca 10623#+CAPTION: The logo of Org-mode
c8d0cf5c
CD
10624#+LABEL: unicorn-svg
10625#+ATTR_DOCBOOK: scalefit="1" width="100%" depth="100%"
10626[[./img/org-mode-unicorn.svg]]
10627@end example
10628
10629@vindex org-export-docbook-inline-image-extensions
10630By default, DocBook exporter recognizes the following image file types:
10631@file{jpeg}, @file{jpg}, @file{png}, @file{gif}, and @file{svg}. You can
10632customize variable @code{org-export-docbook-inline-image-extensions} to add
10633more types to this list as long as DocBook supports them.
10634
10635@node Special characters, , Images in DocBook export, DocBook export
10636@subsection Special characters in DocBook export
10637@cindex Special characters in DocBook export
10638
10639@vindex org-export-docbook-doctype
86fbb8ca 10640@vindex org-entities
c8d0cf5c
CD
10641Special characters that are written in @TeX{}-like syntax, such as @code{\alpha},
10642@code{\Gamma}, and @code{\Zeta}, are supported by DocBook exporter. These
10643characters are rewritten to XML entities, like @code{&alpha;},
10644@code{&Gamma;}, and @code{&Zeta;}, based on the list saved in variable
86fbb8ca 10645@code{org-entities}. As long as the generated DocBook file includes the
c8d0cf5c
CD
10646corresponding entities, these special characters are recognized.
10647
10648You can customize variable @code{org-export-docbook-doctype} to include the
10649entities you need. For example, you can set variable
10650@code{org-export-docbook-doctype} to the following value to recognize all
10651special characters included in XHTML entities:
10652
10653@example
10654"<!DOCTYPE article [
10655<!ENTITY % xhtml1-symbol PUBLIC
10656\"-//W3C//ENTITIES Symbol for HTML//EN//XML\"
10657\"http://www.w3.org/2003/entities/2007/xhtml1-symbol.ent\"
10658>
10659%xhtml1-symbol;
10660]>
10661"
10662@end example
10663
ce57c2fe
BG
10664@c begin opendocument
10665
10666@node OpenDocumentText export, TaskJuggler export, DocBook export, Exporting
10667@section OpenDocumentText export
10668@cindex OpenDocumentText export
10669@cindex K, Jambunathan
10670
10671Org-mode 7.6 supports export to OpenDocumentText format using
10672@file{org-odt.el} module contributed by Jambunathan K. This module can be
10673enabled in one of the following ways based on your mode of installation.
10674
10675@enumerate
10676@item
10677If you have downloaded the Org from the Web, either as a distribution
10678@file{.zip} or @file{.tar} file, or as a Git archive, enable the @code{odt}
10679option in variable @code{org-modules}.
10680@item
10681If you are using Org that comes bundled with Emacs, then you can install the
10682OpenDocumentText exporter using the package manager. To do this, customize
10683the variable @code{package-archives} to include
10684@uref{http://orgmode.org/pkg/releases/} as one of the package archives.
10685@end enumerate
10686
10687@menu
10688* OpenDocumentText export commands::How to invoke OpenDocumentText export
10689* Applying Custom Styles:: How to apply custom styles to the output
10690* Converting to Other formats:: How to convert to formats like doc, docx etc
10691* Links in OpenDocumentText export:: How links will be interpreted and formatted
10692* Tables in OpenDocumentText export:: Tables are exported as HTML tables
10693* Images in OpenDocumentText export:: How to insert figures into DocBook output
10694* Additional Documentation:: Where to find more information
10695@end menu
10696
10697@node OpenDocumentText export commands, Applying Custom Styles, OpenDocumentText export, OpenDocumentText export
10698@subsection OpenDocumentText export commands
10699
10700@cindex region, active
10701@cindex active region
10702@cindex transient-mark-mode
10703@table @kbd
10704@orgcmd{C-c C-e o,org-export-as-odt}
10705@cindex property EXPORT_FILE_NAME
10706Export as OpenDocumentText file. For an Org file, @file{myfile.org}, the
10707OpenDocumentText file will be @file{myfile.odt}. The file will be
10708overwritten without warning. If there is an active region@footnote{This
10709requires @code{transient-mark-mode} to be turned on}, only the region will be
10710exported. If the selected region is a single tree@footnote{To select the
10711current subtree, use @kbd{C-c @@}.}, the tree head will become the document
10712title. If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
10713property, that name will be used for the export.
10714@orgcmd{C-c C-e O,org-export-as-odt-and-open}
10715Export as OpenDocumentText file and open the resulting file.
10716@end table
10717
10718@node Applying Custom Styles, Converting to Other formats, OpenDocumentText export commands, OpenDocumentText export
10719@subsection Applying Custom Styles
10720@cindex styles, custom
10721@cindex template, custom
10722
10723@vindex org-export-odt-styles-file
10724
10725OpenDocumentExporter ships with a custom @file{styles.xml} for formatting of
10726the exported file. To customize the output to suit your needs you can use
10727one of the following methods:
10728
10729@enumerate
10730@item
10731Customize the variable @code{org-export-odt-styles-file} to point to either a
10732@file{styles.xml} file, a OpenDocument Text Template file @code{.ott} or a
10733combination of Text or Template Document together with a set of member files.
10734Use the first two options if the styles.xml has no references to additional
10735set of files and use the last option if the @file{styles.xml} references
10736additional files like header and footer images.
10737@item
10738Use an external tool like unoconv to apply custom templates.
10739@end enumerate
10740
10741For best results, it is necessary that the style names used by
10742OpenDocumentText exporter match that used in the @file{styles.xml}.
10743
10744@node Converting to Other formats, Links in OpenDocumentText export, Applying Custom Styles, OpenDocumentText export
10745@subsection Converting to Other formats
10746
10747@cindex convert
10748@cindex doc, docx
10749
10750@vindex org-export-odt-styles-file
10751
10752Often times there is a need to convert OpenDocumentText files to other
10753formats like doc, docx or pdf. You can accomplish this by one of the
10754following methods:
10755
10756@table @kbd
10757@item M-x org-lparse
10758Export the outline first to one of the native formats (like OpenDocumentText)
10759and immediately post-process it to other formats using an external converter.
10760
10761@item M-x org-lparse-convert
10762Export an existing document to other formats using an external converter.
10763@end table
10764
10765You can choose the converter used for conversion by customizing the variable
10766@code{org-lparse-convert-process}.
10767
10768@node Links in OpenDocumentText export, Tables in OpenDocumentText export, Converting to Other formats, OpenDocumentText export
10769@subsection Links in OpenDocumentText export
10770@cindex tables, in DocBook export
10771
10772OpenDocumentExporter creates cross-references (aka bookmarks) for links that
10773are destined locally. It creates internet style links for all other links.
10774
10775@node Tables in OpenDocumentText export, Images in OpenDocumentText export, Links in OpenDocumentText export, OpenDocumentText export
10776@subsection Tables in OpenDocumentText export
10777@cindex tables, in DocBook export
10778
10779Export of @file{table.el} tables with row or column spanning is not
10780supported. Such tables are stripped from the exported document.
10781
10782@node Images in OpenDocumentText export, Additional Documentation, Tables in OpenDocumentText export, OpenDocumentText export
10783@subsection Images in OpenDocumentText export
10784@cindex images, embedding in OpenDocumentText
10785@cindex embedding images in OpenDocumentText
10786
10787OpenDocumentText exporter can embed images within the exported document. To
10788embed images, provide a link to the desired image file with no link
10789description. For example, the following links @samp{[[file:img.jpg]]} or
10790@samp{[[./img.jpg]]}, will result in embedding of @samp{img.jpg} in the
10791exported file.
10792
10793The exporter can also embed scaled and explicitly sized images within the
10794exported document. The markup of the scale and size specifications has not
10795been standardized yet and is hence conveniently skipped in this document.
10796
10797The exporter can also make an image the clickable part of a link. To create
10798clickable images, provide a link whose description is a link to an image
10799file. For example, the following link
10800@samp{[[http://orgmode.org][./img.jpg]]}, will result in a clickable image
10801that links to @uref{http://Orgmode.org} website.
10802
10803@node Additional Documentation, , Images in OpenDocumentText export, OpenDocumentText export
10804@subsection Additional documentation
10805
10806The OpenDocumentText exporter is still in development. For up to date
10807information, please follow Org mailing list @email{emacs-orgmode@@gnu.org}
10808closely.
10809
10810@c end opendocument
10811
10812@node TaskJuggler export, Freemind export, OpenDocumentText export, Exporting
86fbb8ca
CD
10813@section TaskJuggler export
10814@cindex TaskJuggler export
10815@cindex Project management
10816
10817@uref{http://www.taskjuggler.org/, TaskJuggler} is a project management tool.
10818It provides an optimizing scheduler that computes your project time lines and
10819resource assignments based on the project outline and the constraints that
10820you have provided.
10821
10822The TaskJuggler exporter is a bit different from other exporters, such as the
10823HTML and LaTeX exporters for example, in that it does not export all the
10824nodes of a document or strictly follow the order of the nodes in the
10825document.
10826
10827Instead the TaskJuggler exporter looks for a tree that defines the tasks and
ce57c2fe 10828a optionally tree that defines the resources for this project. It then
86fbb8ca
CD
10829creates a TaskJuggler file based on these trees and the attributes defined in
10830all the nodes.
10831
10832@subsection TaskJuggler export commands
10833
10834@table @kbd
acedf35c 10835@orgcmd{C-c C-e j,org-export-as-taskjuggler}
86fbb8ca
CD
10836Export as TaskJuggler file.
10837
acedf35c 10838@orgcmd{C-c C-e J,org-export-as-taskjuggler-and-open}
86fbb8ca
CD
10839Export as TaskJuggler file and then open the file with TaskJugglerUI.
10840@end table
10841
10842@subsection Tasks
10843
10844@vindex org-export-taskjuggler-project-tag
ce57c2fe
BG
10845Create your tasks as you usually do with Org-mode. Assign efforts to each
10846task using properties (it is easiest to do this in the column view). You
86fbb8ca
CD
10847should end up with something similar to the example by Peter Jones in
10848@url{http://www.contextualdevelopment.com/static/artifacts/articles/2008/project-planning/project-planning.org}.
10849Now mark the top node of your tasks with a tag named
10850@code{:taskjuggler_project:} (or whatever you customized
ce57c2fe 10851@code{org-export-taskjuggler-project-tag} to). You are now ready to export
86fbb8ca
CD
10852the project plan with @kbd{C-c C-e J} which will export the project plan and
10853open a gantt chart in TaskJugglerUI.
10854
10855@subsection Resources
10856
10857@vindex org-export-taskjuggler-resource-tag
ce57c2fe
BG
10858Next you can define resources and assign those to work on specific tasks. You
10859can group your resources hierarchically. Tag the top node of the resources
86fbb8ca 10860with @code{:taskjuggler_resource:} (or whatever you customized
ce57c2fe 10861@code{org-export-taskjuggler-resource-tag} to). You can optionally assign an
86fbb8ca
CD
10862identifier (named @samp{resource_id}) to the resources (using the standard
10863Org properties commands, @pxref{Property syntax}) or you can let the exporter
10864generate identifiers automatically (the exporter picks the first word of the
acedf35c 10865headline as the identifier as long as it is unique---see the documentation of
ce57c2fe
BG
10866@code{org-taskjuggler-get-unique-id}). Using that identifier you can then
10867allocate resources to tasks. This is again done with the @samp{allocate}
10868property on the tasks. Do this in column view or when on the task type
86fbb8ca
CD
10869@kbd{C-c C-x p allocate @key{RET} <resource_id> @key{RET}}.
10870
10871Once the allocations are done you can again export to TaskJuggler and check
10872in the Resource Allocation Graph which person is working on what task at what
10873time.
10874
10875@subsection Export of properties
10876
ce57c2fe 10877The exporter also takes TODO state information into consideration, i.e.@: if a
86fbb8ca 10878task is marked as done it will have the corresponding attribute in
ce57c2fe 10879TaskJuggler (@samp{complete 100}). Also it will export any property on a task
86fbb8ca
CD
10880resource or resource node which is known to TaskJuggler, such as
10881@samp{limits}, @samp{vacation}, @samp{shift}, @samp{booking},
10882@samp{efficiency}, @samp{journalentry}, @samp{rate} for resources or
10883@samp{account}, @samp{start}, @samp{note}, @samp{duration}, @samp{end},
10884@samp{journalentry}, @samp{milestone}, @samp{reference}, @samp{responsible},
10885@samp{scheduling}, etc for tasks.
10886
10887@subsection Dependencies
10888
10889The exporter will handle dependencies that are defined in the tasks either
10890with the @samp{ORDERED} attribute (@pxref{TODO dependencies}), with the
acedf35c 10891@samp{BLOCKER} attribute (see @file{org-depend.el}) or alternatively with a
ce57c2fe 10892@samp{depends} attribute. Both the @samp{BLOCKER} and the @samp{depends}
86fbb8ca
CD
10893attribute can be either @samp{previous-sibling} or a reference to an
10894identifier (named @samp{task_id}) which is defined for another task in the
ce57c2fe
BG
10895project. @samp{BLOCKER} and the @samp{depends} attribute can define multiple
10896dependencies separated by either space or comma. You can also specify
10897optional attributes on the dependency by simply appending it. The following
86fbb8ca
CD
10898examples should illustrate this:
10899
10900@example
10901* Preparation
10902 :PROPERTIES:
10903 :task_id: preparation
10904 :ORDERED: t
10905 :END:
10906* Training material
10907 :PROPERTIES:
10908 :task_id: training_material
10909 :ORDERED: t
10910 :END:
10911** Markup Guidelines
10912 :PROPERTIES:
ce57c2fe 10913 :Effort: 2d
86fbb8ca
CD
10914 :END:
10915** Workflow Guidelines
10916 :PROPERTIES:
ce57c2fe 10917 :Effort: 2d
86fbb8ca
CD
10918 :END:
10919* Presentation
10920 :PROPERTIES:
ce57c2fe 10921 :Effort: 2d
86fbb8ca
CD
10922 :BLOCKER: training_material @{ gapduration 1d @} preparation
10923 :END:
10924@end example
10925
10926@subsection Reports
10927
10928@vindex org-export-taskjuggler-default-reports
ce57c2fe
BG
10929TaskJuggler can produce many kinds of reports (e.g.@: gantt chart, resource
10930allocation, etc). The user defines what kind of reports should be generated
10931for a project in the TaskJuggler file. The exporter will automatically insert
10932some default reports in the file. These defaults are defined in
10933@code{org-export-taskjuggler-default-reports}. They can be modified using
10934customize along with a number of other options. For a more complete list, see
86fbb8ca
CD
10935@kbd{M-x customize-group @key{RET} org-export-taskjuggler @key{RET}}.
10936
10937For more information and examples see the Org-taskjuggler tutorial at
ce57c2fe 10938@uref{http://orgmode.org/worg/org-tutorials/org-taskjuggler.html}.
86fbb8ca
CD
10939
10940@node Freemind export, XOXO export, TaskJuggler export, Exporting
a351880d
CD
10941@section Freemind export
10942@cindex Freemind export
10943@cindex mind map
10944
86fbb8ca 10945The Freemind exporter was written by Lennart Borgman.
a351880d
CD
10946
10947@table @kbd
acedf35c 10948@orgcmd{C-c C-e m,org-export-as-freemind}
ce57c2fe
BG
10949Export as Freemind mind map. For an Org file @file{myfile.org}, the Freemind
10950file will be @file{myfile.mm}.
a351880d
CD
10951@end table
10952
10953@node XOXO export, iCalendar export, Freemind export, Exporting
4009494e
GM
10954@section XOXO export
10955@cindex XOXO export
10956
86fbb8ca 10957Org-mode contains an exporter that produces XOXO-style output.
4009494e 10958Currently, this exporter only handles the general outline structure and
c8d0cf5c 10959does not interpret any additional Org-mode features.
4009494e
GM
10960
10961@table @kbd
acedf35c 10962@orgcmd{C-c C-e x,org-export-as-xoxo}
ce57c2fe
BG
10963Export as XOXO file. For an Org file @file{myfile.org}, the XOXO file will be
10964@file{myfile.html}.
acedf35c 10965@orgkey{C-c C-e v x}
4009494e
GM
10966Export only the visible part of the document.
10967@end table
10968
b349f79f 10969@node iCalendar export, , XOXO export, Exporting
4009494e
GM
10970@section iCalendar export
10971@cindex iCalendar export
10972
c8d0cf5c
CD
10973@vindex org-icalendar-include-todo
10974@vindex org-icalendar-use-deadline
10975@vindex org-icalendar-use-scheduled
10976@vindex org-icalendar-categories
afe98dfa 10977@vindex org-icalendar-alarm-time
86fbb8ca 10978Some people use Org-mode for keeping track of projects, but still prefer a
c8d0cf5c
CD
10979standard calendar application for anniversaries and appointments. In this
10980case it can be useful to show deadlines and other time-stamped items in Org
86fbb8ca 10981files in the calendar application. Org-mode can export calendar information
c8d0cf5c
CD
10982in the standard iCalendar format. If you also want to have TODO entries
10983included in the export, configure the variable
10984@code{org-icalendar-include-todo}. Plain timestamps are exported as VEVENT,
10985and TODO items as VTODO. It will also create events from deadlines that are
10986in non-TODO items. Deadlines and scheduling dates in TODO items will be used
10987to set the start and due dates for the TODO entry@footnote{See the variables
10988@code{org-icalendar-use-deadline} and @code{org-icalendar-use-scheduled}.}.
10989As categories, it will use the tags locally defined in the heading, and the
10990file/tree category@footnote{To add inherited tags or the TODO state,
afe98dfa
CD
10991configure the variable @code{org-icalendar-categories}.}. See the variable
10992@code{org-icalendar-alarm-time} for a way to assign alarms to entries with a
10993time.
c8d0cf5c
CD
10994
10995@vindex org-icalendar-store-UID
10996@cindex property, ID
b349f79f
CD
10997The iCalendar standard requires each entry to have a globally unique
10998identifier (UID). Org creates these identifiers during export. If you set
10999the variable @code{org-icalendar-store-UID}, the UID will be stored in the
11000@code{:ID:} property of the entry and re-used next time you report this
11001entry. Since a single entry can give rise to multiple iCalendar entries (as
11002a timestamp, a deadline, a scheduled item, and as a TODO item), Org adds
11003prefixes to the UID, depending on what triggered the inclusion of the entry.
11004In this way the UID remains unique, but a synchronization program can still
11005figure out from which entry all the different instances originate.
11006
4009494e 11007@table @kbd
acedf35c 11008@orgcmd{C-c C-e i,org-export-icalendar-this-file}
4009494e
GM
11009Create iCalendar entries for the current file and store them in the same
11010directory, using a file extension @file{.ics}.
acedf35c 11011@orgcmd{C-c C-e I, org-export-icalendar-all-agenda-files}
c8d0cf5c 11012@vindex org-agenda-files
4009494e
GM
11013Like @kbd{C-c C-e i}, but do this for all files in
11014@code{org-agenda-files}. For each of these files, a separate iCalendar
11015file will be written.
acedf35c 11016@orgcmd{C-c C-e c,org-export-icalendar-combine-agenda-files}
c8d0cf5c 11017@vindex org-combined-agenda-icalendar-file
4009494e
GM
11018Create a single large iCalendar file from all files in
11019@code{org-agenda-files} and write it to the file given by
11020@code{org-combined-agenda-icalendar-file}.
11021@end table
11022
c8d0cf5c
CD
11023@vindex org-use-property-inheritance
11024@vindex org-icalendar-include-body
11025@cindex property, SUMMARY
11026@cindex property, DESCRIPTION
11027@cindex property, LOCATION
96c8522a
CD
11028The export will honor SUMMARY, DESCRIPTION and LOCATION@footnote{The LOCATION
11029property can be inherited from higher in the hierarchy if you configure
11030@code{org-use-property-inheritance} accordingly.} properties if the selected
11031entries have them. If not, the summary will be derived from the headline,
11032and the description from the body (limited to
28a16a1b 11033@code{org-icalendar-include-body} characters).
dbc28aaa 11034
c8d0cf5c 11035How this calendar is best read and updated, depends on the application
4009494e
GM
11036you are using. The FAQ covers this issue.
11037
86fbb8ca 11038@node Publishing, Working With Source Code, Exporting, Top
4009494e
GM
11039@chapter Publishing
11040@cindex publishing
11041
c8d0cf5c
CD
11042Org includes a publishing management system that allows you to configure
11043automatic HTML conversion of @emph{projects} composed of interlinked org
11044files. You can also configure Org to automatically upload your exported HTML
11045pages and related attachments, such as images and source code files, to a web
11046server.
4009494e 11047
c8d0cf5c
CD
11048You can also use Org to convert files into PDF, or even combine HTML and PDF
11049conversion so that files are available in both formats on the server.
4009494e 11050
c8d0cf5c 11051Publishing has been contributed to Org by David O'Toole.
4009494e
GM
11052
11053@menu
c0468714
GM
11054* Configuration:: Defining projects
11055* Uploading files:: How to get files up on the server
11056* Sample configuration:: Example projects
11057* Triggering publication:: Publication commands
4009494e
GM
11058@end menu
11059
c8d0cf5c 11060@node Configuration, Uploading files, Publishing, Publishing
4009494e
GM
11061@section Configuration
11062
11063Publishing needs significant configuration to specify files, destination
11064and many other properties of a project.
11065
11066@menu
c0468714
GM
11067* Project alist:: The central configuration variable
11068* Sources and destinations:: From here to there
11069* Selecting files:: What files are part of the project?
11070* Publishing action:: Setting the function doing the publishing
ce57c2fe 11071* Publishing options:: Tweaking HTML/@LaTeX{} export
c0468714
GM
11072* Publishing links:: Which links keep working after publishing?
11073* Sitemap:: Generating a list of all pages
11074* Generating an index:: An index that reaches across pages
4009494e
GM
11075@end menu
11076
11077@node Project alist, Sources and destinations, Configuration, Configuration
11078@subsection The variable @code{org-publish-project-alist}
11079@cindex org-publish-project-alist
11080@cindex projects, for publishing
11081
c8d0cf5c
CD
11082@vindex org-publish-project-alist
11083Publishing is configured almost entirely through setting the value of one
11084variable, called @code{org-publish-project-alist}. Each element of the list
11085configures one project, and may be in one of the two following forms:
4009494e
GM
11086
11087@lisp
ce57c2fe
BG
11088 ("project-name" :property value :property value ...)
11089 @r{i.e.@: a well-formed property list with alternating keys and values}
28a16a1b 11090@r{or}
c8d0cf5c 11091 ("project-name" :components ("project-name" "project-name" ...))
4009494e
GM
11092
11093@end lisp
11094
c8d0cf5c
CD
11095In both cases, projects are configured by specifying property values. A
11096project defines the set of files that will be published, as well as the
11097publishing configuration to use when publishing those files. When a project
11098takes the second form listed above, the individual members of the
11099@code{:components} property are taken to be sub-projects, which group
11100together files requiring different publishing options. When you publish such
11101a ``meta-project'', all the components will also be published, in the
11102sequence given.
4009494e
GM
11103
11104@node Sources and destinations, Selecting files, Project alist, Configuration
11105@subsection Sources and destinations for files
11106@cindex directories, for publishing
11107
c8d0cf5c
CD
11108Most properties are optional, but some should always be set. In
11109particular, Org needs to know where to look for source files,
4009494e
GM
11110and where to put published files.
11111
11112@multitable @columnfractions 0.3 0.7
11113@item @code{:base-directory}
11114@tab Directory containing publishing source files
11115@item @code{:publishing-directory}
c8d0cf5c
CD
11116@tab Directory where output files will be published. You can directly
11117publish to a webserver using a file name syntax appropriate for
11118the Emacs @file{tramp} package. Or you can publish to a local directory and
11119use external tools to upload your website (@pxref{Uploading files}).
4009494e 11120@item @code{:preparation-function}
ed21c5c8
CD
11121@tab Function or list of functions to be called before starting the
11122publishing process, for example, to run @code{make} for updating files to be
11123published. The project property list is scoped into this call as the
11124variable @code{project-plist}.
b349f79f 11125@item @code{:completion-function}
ed21c5c8
CD
11126@tab Function or list of functions called after finishing the publishing
11127process, for example, to change permissions of the resulting files. The
11128project property list is scoped into this call as the variable
11129@code{project-plist}.
4009494e
GM
11130@end multitable
11131@noindent
11132
11133@node Selecting files, Publishing action, Sources and destinations, Configuration
11134@subsection Selecting files
11135@cindex files, selecting for publishing
11136
11137By default, all files with extension @file{.org} in the base directory
11138are considered part of the project. This can be modified by setting the
28a16a1b 11139properties
4009494e
GM
11140@multitable @columnfractions 0.25 0.75
11141@item @code{:base-extension}
11142@tab Extension (without the dot!) of source files. This actually is a
c8d0cf5c
CD
11143regular expression. Set this to the symbol @code{any} if you want to get all
11144files in @code{:base-directory}, even without extension.
4009494e 11145
28a16a1b 11146@item @code{:exclude}
4009494e
GM
11147@tab Regular expression to match file names that should not be
11148published, even though they have been selected on the basis of their
11149extension.
11150
11151@item @code{:include}
11152@tab List of files to be included regardless of @code{:base-extension}
11153and @code{:exclude}.
acedf35c
CD
11154
11155@item @code{:recursive}
11156@tab Non-nil means, check base-directory recursively for files to publish.
4009494e
GM
11157@end multitable
11158
11159@node Publishing action, Publishing options, Selecting files, Configuration
a7808fba 11160@subsection Publishing action
4009494e
GM
11161@cindex action, for publishing
11162
11163Publishing means that a file is copied to the destination directory and
71d35b24
CD
11164possibly transformed in the process. The default transformation is to export
11165Org files as HTML files, and this is done by the function
11166@code{org-publish-org-to-html} which calls the HTML exporter (@pxref{HTML
c8d0cf5c 11167export}). But you also can publish your content as PDF files using
afe98dfa
CD
11168@code{org-publish-org-to-pdf}, or as @code{ascii}, @code{latin1} or
11169@code{utf8} encoded files using the corresponding functions. If you want to
11170publish the Org file itself, but with @i{archived}, @i{commented}, and
11171@i{tag-excluded} trees removed, use @code{org-publish-org-to-org} and set the
11172parameters @code{:plain-source} and/or @code{:htmlized-source}. This will
11173produce @file{file.org} and @file{file.org.html} in the publishing
c8d0cf5c
CD
11174directory@footnote{@file{file-source.org} and @file{file-source.org.html} if
11175source and publishing directories are equal. Note that with this kind of
11176setup, you need to add @code{:exclude "-source\\.org"} to the project
acedf35c
CD
11177definition in @code{org-publish-project-alist} to prevent the published
11178source files from being considered as new org files the next time the project
11179is published.}. Other files like images only need to be copied to the
11180publishing destination; for this you may use @code{org-publish-attachment}.
afe98dfa 11181For non-Org files, you always need to specify the publishing function:
4009494e
GM
11182
11183@multitable @columnfractions 0.3 0.7
11184@item @code{:publishing-function}
11185@tab Function executing the publication of a file. This may also be a
11186list of functions, which will all be called in turn.
c8d0cf5c
CD
11187@item @code{:plain-source}
11188@tab Non-nil means, publish plain source.
11189@item @code{:htmlized-source}
11190@tab Non-nil means, publish htmlized source.
4009494e
GM
11191@end multitable
11192
ed21c5c8
CD
11193The function must accept three arguments: a property list containing at least
11194a @code{:publishing-directory} property, the name of the file to be
11195published, and the path to the publishing directory of the output file. It
11196should take the specified file, make the necessary transformation (if any)
11197and place the result into the destination folder.
4009494e
GM
11198
11199@node Publishing options, Publishing links, Publishing action, Configuration
acedf35c 11200@subsection Options for the HTML/@LaTeX{} exporters
4009494e
GM
11201@cindex options, for publishing
11202
11203The property list can be used to set many export options for the HTML
acedf35c 11204and @LaTeX{} exporters. In most cases, these properties correspond to user
a7808fba 11205variables in Org. The table below lists these properties along
4009494e
GM
11206with the variable they belong to. See the documentation string for the
11207respective variable for details.
11208
c8d0cf5c
CD
11209@vindex org-export-html-link-up
11210@vindex org-export-html-link-home
11211@vindex org-export-default-language
11212@vindex org-display-custom-times
11213@vindex org-export-headline-levels
11214@vindex org-export-with-section-numbers
11215@vindex org-export-section-number-format
11216@vindex org-export-with-toc
11217@vindex org-export-preserve-breaks
11218@vindex org-export-with-archived-trees
11219@vindex org-export-with-emphasize
11220@vindex org-export-with-sub-superscripts
11221@vindex org-export-with-special-strings
11222@vindex org-export-with-footnotes
11223@vindex org-export-with-drawers
11224@vindex org-export-with-tags
11225@vindex org-export-with-todo-keywords
ce57c2fe
BG
11226@vindex org-export-with-tasks
11227@vindex org-export-with-done-tasks
c8d0cf5c
CD
11228@vindex org-export-with-priority
11229@vindex org-export-with-TeX-macros
11230@vindex org-export-with-LaTeX-fragments
11231@vindex org-export-skip-text-before-1st-heading
11232@vindex org-export-with-fixed-width
11233@vindex org-export-with-timestamps
11234@vindex org-export-author-info
ce57c2fe 11235@vindex org-export-email-info
c8d0cf5c 11236@vindex org-export-creator-info
ce57c2fe 11237@vindex org-export-time-stamp-file
c8d0cf5c
CD
11238@vindex org-export-with-tables
11239@vindex org-export-highlight-first-table-line
11240@vindex org-export-html-style-include-default
ce57c2fe 11241@vindex org-export-html-style-include-scripts
c8d0cf5c
CD
11242@vindex org-export-html-style
11243@vindex org-export-html-style-extra
11244@vindex org-export-html-link-org-files-as-html
11245@vindex org-export-html-inline-images
11246@vindex org-export-html-extension
11247@vindex org-export-html-table-tag
11248@vindex org-export-html-expand
11249@vindex org-export-html-with-timestamp
11250@vindex org-export-publishing-directory
11251@vindex org-export-html-preamble
11252@vindex org-export-html-postamble
c8d0cf5c
CD
11253@vindex user-full-name
11254@vindex user-mail-address
11255@vindex org-export-select-tags
11256@vindex org-export-exclude-tags
11257
96c8522a
CD
11258@multitable @columnfractions 0.32 0.68
11259@item @code{:link-up} @tab @code{org-export-html-link-up}
11260@item @code{:link-home} @tab @code{org-export-html-link-home}
4009494e 11261@item @code{:language} @tab @code{org-export-default-language}
96c8522a 11262@item @code{:customtime} @tab @code{org-display-custom-times}
4009494e
GM
11263@item @code{:headline-levels} @tab @code{org-export-headline-levels}
11264@item @code{:section-numbers} @tab @code{org-export-with-section-numbers}
96c8522a 11265@item @code{:section-number-format} @tab @code{org-export-section-number-format}
4009494e 11266@item @code{:table-of-contents} @tab @code{org-export-with-toc}
96c8522a 11267@item @code{:preserve-breaks} @tab @code{org-export-preserve-breaks}
4009494e
GM
11268@item @code{:archived-trees} @tab @code{org-export-with-archived-trees}
11269@item @code{:emphasize} @tab @code{org-export-with-emphasize}
11270@item @code{:sub-superscript} @tab @code{org-export-with-sub-superscripts}
dbc28aaa 11271@item @code{:special-strings} @tab @code{org-export-with-special-strings}
96c8522a
CD
11272@item @code{:footnotes} @tab @code{org-export-with-footnotes}
11273@item @code{:drawers} @tab @code{org-export-with-drawers}
11274@item @code{:tags} @tab @code{org-export-with-tags}
11275@item @code{:todo-keywords} @tab @code{org-export-with-todo-keywords}
ce57c2fe 11276@item @code{:tasks} @tab @code{org-export-with-tasks}
96c8522a 11277@item @code{:priority} @tab @code{org-export-with-priority}
4009494e
GM
11278@item @code{:TeX-macros} @tab @code{org-export-with-TeX-macros}
11279@item @code{:LaTeX-fragments} @tab @code{org-export-with-LaTeX-fragments}
6eb02347 11280@item @code{:latex-listings} @tab @code{org-export-latex-listings}
96c8522a 11281@item @code{:skip-before-1st-heading} @tab @code{org-export-skip-text-before-1st-heading}
4009494e 11282@item @code{:fixed-width} @tab @code{org-export-with-fixed-width}
44ce9197 11283@item @code{:timestamps} @tab @code{org-export-with-timestamps}
ce57c2fe
BG
11284@item @code{:author} @tab @code{user-full-name}
11285@item @code{:email} @tab @code{user-mail-address} : @code{addr;addr;..}
44ce9197 11286@item @code{:author-info} @tab @code{org-export-author-info}
ed21c5c8 11287@item @code{:email-info} @tab @code{org-export-email-info}
44ce9197 11288@item @code{:creator-info} @tab @code{org-export-creator-info}
4009494e
GM
11289@item @code{:tables} @tab @code{org-export-with-tables}
11290@item @code{:table-auto-headline} @tab @code{org-export-highlight-first-table-line}
e45e3595 11291@item @code{:style-include-default} @tab @code{org-export-html-style-include-default}
ce57c2fe 11292@item @code{:style-include-scripts} @tab @code{org-export-html-style-include-scripts}
4009494e 11293@item @code{:style} @tab @code{org-export-html-style}
44ce9197 11294@item @code{:style-extra} @tab @code{org-export-html-style-extra}
4009494e
GM
11295@item @code{:convert-org-links} @tab @code{org-export-html-link-org-files-as-html}
11296@item @code{:inline-images} @tab @code{org-export-html-inline-images}
96c8522a 11297@item @code{:html-extension} @tab @code{org-export-html-extension}
ce57c2fe
BG
11298@item @code{:html-preamble} @tab @code{org-export-html-preamble}
11299@item @code{:html-postamble} @tab @code{org-export-html-postamble}
c8d0cf5c 11300@item @code{:xml-declaration} @tab @code{org-export-html-xml-declaration}
96c8522a 11301@item @code{:html-table-tag} @tab @code{org-export-html-table-tag}
4009494e
GM
11302@item @code{:expand-quoted-html} @tab @code{org-export-html-expand}
11303@item @code{:timestamp} @tab @code{org-export-html-with-timestamp}
11304@item @code{:publishing-directory} @tab @code{org-export-publishing-directory}
864c9740
CD
11305@item @code{:select-tags} @tab @code{org-export-select-tags}
11306@item @code{:exclude-tags} @tab @code{org-export-exclude-tags}
c8d0cf5c 11307@item @code{:latex-image-options} @tab @code{org-export-latex-image-default-option}
4009494e
GM
11308@end multitable
11309
11310Most of the @code{org-export-with-*} variables have the same effect in
acedf35c 11311both HTML and @LaTeX{} exporters, except for @code{:TeX-macros} and
ce57c2fe
BG
11312@code{:LaTeX-fragments} options, respectively @code{nil} and @code{t} in the
11313@LaTeX{} export. See @code{org-export-plist-vars} to check this list of
11314options.
11315
11316
4009494e 11317
c8d0cf5c 11318@vindex org-publish-project-alist
dbc28aaa
CD
11319When a property is given a value in @code{org-publish-project-alist},
11320its setting overrides the value of the corresponding user variable (if
11321any) during publishing. Options set within a file (@pxref{Export
4009494e
GM
11322options}), however, override everything.
11323
ed21c5c8 11324@node Publishing links, Sitemap, Publishing options, Configuration
4009494e
GM
11325@subsection Links between published files
11326@cindex links, publishing
11327
a7808fba 11328To create a link from one Org file to another, you would use
4009494e 11329something like @samp{[[file:foo.org][The foo]]} or simply
c8d0cf5c 11330@samp{file:foo.org.} (@pxref{Hyperlinks}). When published, this link
4009494e
GM
11331becomes a link to @file{foo.html}. In this way, you can interlink the
11332pages of your "org web" project and the links will work as expected when
c8d0cf5c
CD
11333you publish them to HTML. If you also publish the Org source file and want
11334to link to that, use an @code{http:} link instead of a @code{file:} link,
11335because @code{file:} links are converted to link to the corresponding
11336@file{html} file.
4009494e 11337
ce57c2fe 11338You may also link to related files, such as images. Provided you are careful
c8d0cf5c 11339with relative file names, and provided you have also configured Org to upload
ce57c2fe 11340the related files, these links will work too. See @ref{Complex example}, for
c8d0cf5c 11341an example of this usage.
4009494e 11342
c8d0cf5c 11343Sometimes an Org file to be published may contain links that are
4009494e 11344only valid in your production environment, but not in the publishing
28a16a1b 11345location. In this case, use the property
4009494e
GM
11346
11347@multitable @columnfractions 0.4 0.6
11348@item @code{:link-validation-function}
11349@tab Function to validate links
11350@end multitable
11351
11352@noindent
11353to define a function for checking link validity. This function must
11354accept two arguments, the file name and a directory relative to which
11355the file name is interpreted in the production environment. If this
11356function returns @code{nil}, then the HTML generator will only insert a
11357description into the HTML file, but no link. One option for this
11358function is @code{org-publish-validate-link} which checks if the given
11359file is part of any project in @code{org-publish-project-alist}.
11360
ed21c5c8
CD
11361@node Sitemap, Generating an index, Publishing links, Configuration
11362@subsection Generating a sitemap
11363@cindex sitemap, of published pages
4009494e 11364
86fbb8ca 11365The following properties may be used to control publishing of
ed21c5c8 11366a map of files for a given project.
4009494e 11367
86fbb8ca 11368@multitable @columnfractions 0.35 0.65
ed21c5c8
CD
11369@item @code{:auto-sitemap}
11370@tab When non-nil, publish a sitemap during @code{org-publish-current-project}
c8d0cf5c 11371or @code{org-publish-all}.
4009494e 11372
ed21c5c8 11373@item @code{:sitemap-filename}
ce57c2fe 11374@tab Filename for output of sitemap. Defaults to @file{sitemap.org} (which
c8d0cf5c 11375becomes @file{sitemap.html}).
4009494e 11376
ed21c5c8 11377@item @code{:sitemap-title}
ce57c2fe 11378@tab Title of sitemap page. Defaults to name of file.
4009494e 11379
ed21c5c8
CD
11380@item @code{:sitemap-function}
11381@tab Plug-in function to use for generation of the sitemap.
11382Defaults to @code{org-publish-org-sitemap}, which generates a plain list
4009494e 11383of links to all files in the project.
86fbb8ca
CD
11384
11385@item @code{:sitemap-sort-folders}
11386@tab Where folders should appear in the sitemap. Set this to @code{first}
11387(default) or @code{last} to display folders first or last,
11388respectively. Any other value will mix files and folders.
11389
ce57c2fe
BG
11390@item @code{:sitemap-sort-files}
11391@tab How the files are sorted in the site map. Set this to
11392@code{alphabetically} (default), @code{chronologically} or
11393@code{anti-chronologically}. @code{chronologically} sorts the files with
11394older date first while @code{anti-chronologically} sorts the files with newer
11395date first. @code{alphabetically} sorts the files alphabetically. The date of
11396a file is retrieved with @code{org-publish-find-date}.
86fbb8ca
CD
11397
11398@item @code{:sitemap-ignore-case}
11399@tab Should sorting be case-sensitive? Default @code{nil}.
11400
ce57c2fe
BG
11401@item @code{:sitemap-file-entry-format}
11402@tab With this option one can tell how a sitemap's entry is formated in the
11403sitemap. This is a format string with some escape sequences: @code{%t} stands
11404for the title of the file, @code{%a} stands for the author of the file and
11405@code{%d} stands for the date of the file. The date is retrieved with the
11406@code{org-publish-find-date} function and formated with
11407@code{org-publish-sitemap-date-format}. Default @code{%t}.
11408
11409@item @code{:sitemap-date-format}
11410@tab Format string for the @code{format-time-string} function that tells how
11411a sitemap entry's date is to be formated. This property bypasses
11412@code{org-publish-sitemap-date-format} which defaults to @code{%Y-%m-%d}.
11413
11414@item @code{:sitemap-sans-extension}
11415@tab When non-nil, remove filenames' extensions from the generated sitemap.
11416Useful to have cool URIs (see @uref{http://www.w3.org/Provider/Style/URI}).
11417Defaults to @code{nil}.
11418
4009494e
GM
11419@end multitable
11420
ed21c5c8
CD
11421@node Generating an index, , Sitemap, Configuration
11422@subsection Generating an index
11423@cindex index, in a publishing project
11424
11425Org-mode can generate an index across the files of a publishing project.
11426
11427@multitable @columnfractions 0.25 0.75
11428@item @code{:makeindex}
11429@tab When non-nil, generate in index in the file @file{theindex.org} and
11430publish it as @file{theindex.html}.
11431@end multitable
11432
ce57c2fe 11433The file will be created when first publishing a project with the
ed21c5c8 11434@code{:makeindex} set. The file only contains a statement @code{#+include:
ce57c2fe
BG
11435"theindex.inc"}. You can then build around this include statement by adding
11436a title, style information, etc.
ed21c5c8 11437
c8d0cf5c
CD
11438@node Uploading files, Sample configuration, Configuration, Publishing
11439@section Uploading files
11440@cindex rsync
11441@cindex unison
11442
11443For those people already utilizing third party sync tools such as
11444@command{rsync} or @command{unison}, it might be preferable not to use the built in
86fbb8ca 11445@i{remote} publishing facilities of Org-mode which rely heavily on
c8d0cf5c
CD
11446Tramp. Tramp, while very useful and powerful, tends not to be
11447so efficient for multiple file transfer and has been known to cause problems
11448under heavy usage.
11449
11450Specialized synchronization utilities offer several advantages. In addition
11451to timestamp comparison, they also do content and permissions/attribute
11452checks. For this reason you might prefer to publish your web to a local
11453directory (possibly even @i{in place} with your Org files) and then use
11454@file{unison} or @file{rsync} to do the synchronization with the remote host.
11455
11456Since Unison (for example) can be configured as to which files to transfer to
11457a certain remote destination, it can greatly simplify the project publishing
11458definition. Simply keep all files in the correct location, process your Org
11459files with @code{org-publish} and let the synchronization tool do the rest.
11460You do not need, in this scenario, to include attachments such as @file{jpg},
11461@file{css} or @file{gif} files in the project definition since the 3rd party
11462tool syncs them.
11463
11464Publishing to a local directory is also much faster than to a remote one, so
11465that you can afford more easily to republish entire projects. If you set
11466@code{org-publish-use-timestamps-flag} to @code{nil}, you gain the main
11467benefit of re-including any changed external files such as source example
11468files you might include with @code{#+INCLUDE}. The timestamp mechanism in
11469Org is not smart enough to detect if included files have been modified.
11470
11471@node Sample configuration, Triggering publication, Uploading files, Publishing
4009494e
GM
11472@section Sample configuration
11473
11474Below we provide two example configurations. The first one is a simple
a7808fba 11475project publishing only a set of Org files. The second example is
4009494e
GM
11476more complex, with a multi-component project.
11477
11478@menu
c0468714
GM
11479* Simple example:: One-component publishing
11480* Complex example:: A multi-component publishing example
4009494e
GM
11481@end menu
11482
11483@node Simple example, Complex example, Sample configuration, Sample configuration
11484@subsection Example: simple publishing configuration
11485
a7808fba 11486This example publishes a set of Org files to the @file{public_html}
4009494e
GM
11487directory on the local machine.
11488
11489@lisp
11490(setq org-publish-project-alist
28a16a1b 11491 '(("org"
4009494e
GM
11492 :base-directory "~/org/"
11493 :publishing-directory "~/public_html"
11494 :section-numbers nil
11495 :table-of-contents nil
e45e3595 11496 :style "<link rel=\"stylesheet\"
4009494e 11497 href=\"../other/mystyle.css\"
c8d0cf5c 11498 type=\"text/css\"/>")))
4009494e
GM
11499@end lisp
11500
11501@node Complex example, , Simple example, Sample configuration
11502@subsection Example: complex publishing configuration
11503
11504This more complicated example publishes an entire website, including
c8d0cf5c 11505Org files converted to HTML, image files, Emacs Lisp source code, and
ce57c2fe 11506style sheets. The publishing directory is remote and private files are
4009494e
GM
11507excluded.
11508
11509To ensure that links are preserved, care should be taken to replicate
11510your directory structure on the web server, and to use relative file
ce57c2fe 11511paths. For example, if your Org files are kept in @file{~/org} and your
86fbb8ca 11512publishable images in @file{~/images}, you would link to an image with
4009494e
GM
11513@c
11514@example
11515file:../images/myimage.png
11516@end example
11517@c
11518On the web server, the relative path to the image should be the
ce57c2fe 11519same. You can accomplish this by setting up an "images" folder in the
a7808fba 11520right place on the web server, and publishing images to it.
4009494e
GM
11521
11522@lisp
11523(setq org-publish-project-alist
11524 '(("orgfiles"
11525 :base-directory "~/org/"
11526 :base-extension "org"
11527 :publishing-directory "/ssh:user@@host:~/html/notebook/"
11528 :publishing-function org-publish-org-to-html
11529 :exclude "PrivatePage.org" ;; regexp
11530 :headline-levels 3
11531 :section-numbers nil
11532 :table-of-contents nil
e45e3595 11533 :style "<link rel=\"stylesheet\"
c8d0cf5c 11534 href=\"../other/mystyle.css\" type=\"text/css\"/>"
ce57c2fe 11535 :html-preamble t)
28a16a1b 11536
4009494e
GM
11537 ("images"
11538 :base-directory "~/images/"
11539 :base-extension "jpg\\|gif\\|png"
11540 :publishing-directory "/ssh:user@@host:~/html/images/"
11541 :publishing-function org-publish-attachment)
28a16a1b 11542
4009494e
GM
11543 ("other"
11544 :base-directory "~/other/"
11545 :base-extension "css\\|el"
11546 :publishing-directory "/ssh:user@@host:~/html/other/"
11547 :publishing-function org-publish-attachment)
11548 ("website" :components ("orgfiles" "images" "other"))))
11549@end lisp
11550
11551@node Triggering publication, , Sample configuration, Publishing
11552@section Triggering publication
11553
c8d0cf5c 11554Once properly configured, Org can publish with the following commands:
4009494e
GM
11555
11556@table @kbd
acedf35c 11557@orgcmd{C-c C-e X,org-publish}
4009494e 11558Prompt for a specific project and publish all files that belong to it.
acedf35c 11559@orgcmd{C-c C-e P,org-publish-current-project}
4009494e 11560Publish the project containing the current file.
acedf35c 11561@orgcmd{C-c C-e F,org-publish-current-file}
4009494e 11562Publish only the current file.
acedf35c 11563@orgcmd{C-c C-e E,org-publish-all}
c8d0cf5c 11564Publish every project.
4009494e
GM
11565@end table
11566
c8d0cf5c 11567@vindex org-publish-use-timestamps-flag
ce57c2fe
BG
11568Org uses timestamps to track when a file has changed. The above functions
11569normally only publish changed files. You can override this and force
c8d0cf5c
CD
11570publishing of all files by giving a prefix argument to any of the commands
11571above, or by customizing the variable @code{org-publish-use-timestamps-flag}.
11572This may be necessary in particular if files include other files via
11573@code{#+SETUPFILE:} or @code{#+INCLUDE:}.
4009494e 11574
86fbb8ca
CD
11575@comment node-name, next, previous, up
11576@comment Working With Source Code, Miscellaneous, Publishing, Top
11577
11578@node Working With Source Code, Miscellaneous, Publishing, Top
11579@chapter Working with source code
11580@cindex Schulte, Eric
11581@cindex Davison, Dan
11582@cindex source code, working with
11583
11584Source code can be included in Org-mode documents using a @samp{src} block,
ce57c2fe 11585e.g.@:
86fbb8ca
CD
11586
11587@example
11588#+BEGIN_SRC emacs-lisp
11589 (defun org-xor (a b)
11590 "Exclusive or."
11591 (if a (not b) b))
11592#+END_SRC
11593@end example
11594
11595Org-mode provides a number of features for working with live source code,
11596including editing of code blocks in their native major-mode, evaluation of
ce57c2fe
BG
11597code blocks, converting code blocks into source files (known as @dfn{tangling}
11598in literate programming), and exporting code blocks and their
afe98dfa
CD
11599results in several formats. This functionality was contributed by Eric
11600Schulte and Dan Davison, and was originally named Org-babel.
86fbb8ca
CD
11601
11602The following sections describe Org-mode's code block handling facilities.
4009494e
GM
11603
11604@menu
c0468714
GM
11605* Structure of code blocks:: Code block syntax described
11606* Editing source code:: Language major-mode editing
11607* Exporting code blocks:: Export contents and/or results
11608* Extracting source code:: Create pure source code files
11609* Evaluating code blocks:: Place results of evaluation in the Org-mode buffer
11610* Library of Babel:: Use and contribute to a library of useful code blocks
11611* Languages:: List of supported code block languages
11612* Header arguments:: Configure code block functionality
11613* Results of evaluation:: How evaluation results are handled
11614* Noweb reference syntax:: Literate programming in Org-mode
86fbb8ca 11615* Key bindings and useful functions:: Work quickly with code blocks
c0468714 11616* Batch execution:: Call functions from the command line
4009494e
GM
11617@end menu
11618
86fbb8ca
CD
11619@comment node-name, next, previous, up
11620@comment Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
c8d0cf5c 11621
86fbb8ca
CD
11622@node Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
11623@section Structure of code blocks
11624@cindex code block, structure
11625@cindex source code, block structure
4009494e 11626
86fbb8ca 11627The structure of code blocks is as follows:
6eb02347 11628
86fbb8ca
CD
11629@example
11630#+srcname: <name>
11631#+begin_src <language> <switches> <header arguments>
11632 <body>
11633#+end_src
11634@end example
4009494e 11635
ce57c2fe
BG
11636Switches and header arguments are optional. Code can also be embedded in text
11637inline using
afe98dfa
CD
11638
11639@example
11640src_<language>@{<body>@}
11641@end example
11642
11643or
11644
11645@example
11646src_<language>[<header arguments>]@{<body>@}
11647@end example
11648
86fbb8ca
CD
11649@table @code
11650@item <name>
11651This name is associated with the code block. This is similar to the
11652@samp{#+tblname} lines that can be used to name tables in Org-mode files.
11653Referencing the name of a code block makes it possible to evaluate the
11654block from other places in the file, other files, or from Org-mode table
ce57c2fe
BG
11655formulas (see @ref{The spreadsheet}). Names are assumed to be unique by
11656evaluation functions and the behavior of multiple blocks of the same name is
11657undefined.
86fbb8ca
CD
11658@item <language>
11659The language of the code in the block.
11660@item <switches>
ce57c2fe 11661Optional switches controlling exportation of the code block (see switches discussion in
86fbb8ca
CD
11662@ref{Literal examples})
11663@item <header arguments>
11664Optional header arguments control many aspects of evaluation, export and
ce57c2fe
BG
11665tangling of code blocks. See the @ref{Header arguments}.
11666Header arguments can also be set on a per-buffer or per-subtree
86fbb8ca
CD
11667basis using properties.
11668@item <body>
11669The source code.
4009494e
GM
11670@end table
11671
86fbb8ca
CD
11672@comment node-name, next, previous, up
11673@comment Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
17673adf 11674
86fbb8ca
CD
11675@node Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
11676@section Editing source code
11677@cindex code block, editing
11678@cindex source code, editing
17673adf 11679
86fbb8ca 11680@kindex C-c '
ce57c2fe 11681Use @kbd{C-c '} to edit the current code block. This brings up
86fbb8ca 11682a language major-mode edit buffer containing the body of the code
ce57c2fe
BG
11683block. Saving this buffer will write the new contents back to the Org
11684buffer. Use @kbd{C-c '} again to exit.
4009494e 11685
ce57c2fe 11686The @code{org-src-mode} minor mode will be active in the edit buffer. The
86fbb8ca 11687following variables can be used to configure the behavior of the edit
ce57c2fe 11688buffer. See also the customization group @code{org-edit-structure} for
86fbb8ca
CD
11689further configuration options.
11690
11691@table @code
11692@item org-src-lang-modes
11693If an Emacs major-mode named @code{<lang>-mode} exists, where
11694@code{<lang>} is the language named in the header line of the code block,
ce57c2fe 11695then the edit buffer will be placed in that major-mode. This variable
86fbb8ca
CD
11696can be used to map arbitrary language names to existing major modes.
11697@item org-src-window-setup
11698Controls the way Emacs windows are rearranged when the edit buffer is created.
11699@item org-src-preserve-indentation
11700This variable is especially useful for tangling languages such as
acedf35c 11701Python, in which whitespace indentation in the output is critical.
86fbb8ca 11702@item org-src-ask-before-returning-to-edit-buffer
ce57c2fe
BG
11703By default, Org will ask before returning to an open edit buffer. Set this
11704variable to nil to switch without asking.
86fbb8ca
CD
11705@end table
11706
ce57c2fe
BG
11707To turn on native code fontification in the @emph{Org} buffer, configure the
11708variable @code{org-src-fontify-natively}.
11709
86fbb8ca
CD
11710@comment node-name, next, previous, up
11711@comment Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
11712
11713@node Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
11714@section Exporting code blocks
11715@cindex code block, exporting
11716@cindex source code, exporting
11717
11718It is possible to export the @emph{contents} of code blocks, the
11719@emph{results} of code block evaluation, @emph{neither}, or @emph{both}. For
ce57c2fe
BG
11720most languages, the default exports the contents of code blocks. However, for
11721some languages (e.g.@: @code{ditaa}) the default exports the results of code
86fbb8ca
CD
11722block evaluation. For information on exporting code block bodies, see
11723@ref{Literal examples}.
11724
11725The @code{:exports} header argument can be used to specify export
11726behavior:
11727
11728@subsubheading Header arguments:
11729@table @code
11730@item :exports code
ce57c2fe 11731The default in most languages. The body of the code block is exported, as
86fbb8ca
CD
11732described in @ref{Literal examples}.
11733@item :exports results
11734The code block will be evaluated and the results will be placed in the
11735Org-mode buffer for export, either updating previous results of the code
11736block located anywhere in the buffer or, if no previous results exist,
11737placing the results immediately after the code block. The body of the code
11738block will not be exported.
11739@item :exports both
11740Both the code block and its results will be exported.
11741@item :exports none
11742Neither the code block nor its results will be exported.
11743@end table
11744
11745It is possible to inhibit the evaluation of code blocks during export.
acedf35c 11746Setting the @code{org-export-babel-evaluate} variable to @code{nil} will
86fbb8ca
CD
11747ensure that no code blocks are evaluated as part of the export process. This
11748can be useful in situations where potentially untrusted Org-mode files are
11749exported in an automated fashion, for example when Org-mode is used as the
11750markup language for a wiki.
11751
11752@comment node-name, next, previous, up
11753@comment Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
11754@node Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
11755@section Extracting source code
ce57c2fe 11756@cindex tangling
86fbb8ca
CD
11757@cindex source code, extracting
11758@cindex code block, extracting source code
11759
11760Creating pure source code files by extracting code from source blocks is
11761referred to as ``tangling''---a term adopted from the literate programming
11762community. During ``tangling'' of code blocks their bodies are expanded
11763using @code{org-babel-expand-src-block} which can expand both variable and
11764``noweb'' style references (see @ref{Noweb reference syntax}).
11765
11766@subsubheading Header arguments
11767@table @code
11768@item :tangle no
11769The default. The code block is not included in the tangled output.
11770@item :tangle yes
ce57c2fe 11771Include the code block in the tangled output. The output file name is the
86fbb8ca
CD
11772name of the org file with the extension @samp{.org} replaced by the extension
11773for the block language.
11774@item :tangle filename
11775Include the code block in the tangled output to file @samp{filename}.
11776@end table
11777
11778@kindex C-c C-v t
11779@subsubheading Functions
11780@table @code
ce57c2fe 11781@item org-babel-tangle
afe98dfa 11782Tangle the current file. Bound to @kbd{C-c C-v t}.
86fbb8ca 11783@item org-babel-tangle-file
ce57c2fe 11784Choose a file to tangle. Bound to @kbd{C-c C-v f}.
86fbb8ca
CD
11785@end table
11786
11787@subsubheading Hooks
11788@table @code
11789@item org-babel-post-tangle-hook
11790This hook is run from within code files tangled by @code{org-babel-tangle}.
11791Example applications could include post-processing, compilation or evaluation
11792of tangled code files.
11793@end table
11794
11795@node Evaluating code blocks, Library of Babel, Extracting source code, Working With Source Code
11796@section Evaluating code blocks
11797@cindex code block, evaluating
11798@cindex source code, evaluating
11799
11800Code blocks can be evaluated@footnote{Whenever code is evaluated there is a
11801potential for that code to do harm. Org-mode provides a number of safeguards
11802to ensure that it only evaluates code with explicit confirmation from the
11803user. For information on these safeguards (and on how to disable them) see
11804@ref{Code evaluation security}.} and the results placed in the Org-mode
11805buffer. By default, evaluation is only turned on for @code{emacs-lisp} code
11806blocks, however support exists for evaluating blocks in many languages. See
11807@ref{Languages} for a list of supported languages. See @ref{Structure of
11808code blocks} for information on the syntax used to define a code block.
11809
11810@kindex C-c C-c
11811There are a number of ways to evaluate code blocks. The simplest is to press
11812@kbd{C-c C-c} or @kbd{C-c C-v e} with the point on a code block@footnote{The
11813@code{org-babel-no-eval-on-ctrl-c-ctrl-c} variable can be used to remove code
11814evaluation from the @kbd{C-c C-c} key binding.}. This will call the
11815@code{org-babel-execute-src-block} function to evaluate the block and insert
11816its results into the Org-mode buffer.
11817
11818It is also possible to evaluate named code blocks from anywhere in an
11819Org-mode buffer or an Org-mode table. @code{#+call} (or synonymously
11820@code{#+function} or @code{#+lob}) lines can be used to remotely execute code
11821blocks located in the current Org-mode buffer or in the ``Library of Babel''
ce57c2fe
BG
11822(see @ref{Library of Babel}). These lines use the following syntax to place
11823a call on a line by itself.
86fbb8ca
CD
11824
11825@example
ce57c2fe
BG
11826#+call: <name>(<arguments>)
11827#+call: <name>[<header args>](<arguments>) <header args>
11828@end example
11829
11830The following syntax can be used to place these calls within a block of
11831prose.
11832
11833@example
11834...prose... call_<name>(<arguments>) ...prose...
11835...prose... call_<name>[<header args>](<arguments>)[<header args>] ...prose...
86fbb8ca
CD
11836@end example
11837
11838@table @code
11839@item <name>
11840The name of the code block to be evaluated.
11841@item <arguments>
ce57c2fe
BG
11842Arguments specified in this section will be passed to the code block. These
11843arguments should relate to @code{:var} header arguments in the called code
11844block expressed using standard function call syntax. For example if the
11845original code block named @code{double} has the header argument @code{:var
11846n=2}, then the call line passing the number four to that block would be
11847written as @code{#+call: double(n=2)}.
11848@item <header args>
11849Header arguments can be placed either inside the call to the code block or at
11850the end of the line as shown below.
11851
11852@example
11853#+call: code_bloc_name[XXXX](arguments) YYYY
11854@end example
11855
11856Header arguments located in these two locations are treated differently.
11857
11858@table @code
11859@item XXXX
11860Those placed in the @code{XXXX} location are passed through and applied to
11861the code block being called. These header arguments affect how the code
11862block is evaluated, for example @code{[:results output]} will collect the
11863results from @code{STDOUT} of the called code block.
11864@item YYYY
11865Those placed in the @code{YYYY} location are applied to the call line and do
11866not affect the code block being called. These header arguments affect how
11867the results are incorporated into the Org-mode buffer when the call line is
11868evaluated, and how the call line is exported. For example @code{:results
11869org} at the end of the call line will insert the results of the call line
11870inside of an Org-mode block.
86fbb8ca
CD
11871@end table
11872
ce57c2fe
BG
11873For more examples of passing header arguments to @code{#+call:} lines see
11874@ref{Header arguments in function calls}.
11875@end table
86fbb8ca
CD
11876
11877@node Library of Babel, Languages, Evaluating code blocks, Working With Source Code
11878@section Library of Babel
11879@cindex babel, library of
11880@cindex source code, library
11881@cindex code block, library
11882
11883The ``Library of Babel'' is a library of code blocks
11884that can be called from any Org-mode file. The library is housed in an
11885Org-mode file located in the @samp{contrib} directory of Org-mode.
11886Org-mode users can deposit functions they believe to be generally
11887useful in the library.
11888
11889Code blocks defined in the ``Library of Babel'' can be called remotely as if
11890they were in the current Org-mode buffer (see @ref{Evaluating code blocks}
11891for information on the syntax of remote code block evaluation).
11892
afe98dfa 11893@kindex C-c C-v i
86fbb8ca
CD
11894Code blocks located in any Org-mode file can be loaded into the ``Library of
11895Babel'' with the @code{org-babel-lob-ingest} function, bound to @kbd{C-c C-v
afe98dfa 11896i}.
86fbb8ca
CD
11897
11898@node Languages, Header arguments, Library of Babel, Working With Source Code
11899@section Languages
11900@cindex babel, languages
11901@cindex source code, languages
11902@cindex code block, languages
11903
11904Code blocks in the following languages are supported.
11905
11906@multitable @columnfractions 0.28 0.3 0.22 0.2
11907@item @b{Language} @tab @b{Identifier} @tab @b{Language} @tab @b{Identifier}
ce57c2fe
BG
11908@item Asymptote @tab asymptote @tab Awk @tab awk
11909@item Emacs Calc @tab calc @tab C @tab C
86fbb8ca 11910@item C++ @tab C++ @tab Clojure @tab clojure
acedf35c 11911@item CSS @tab css @tab ditaa @tab ditaa
86fbb8ca
CD
11912@item Graphviz @tab dot @tab Emacs Lisp @tab emacs-lisp
11913@item gnuplot @tab gnuplot @tab Haskell @tab haskell
ce57c2fe
BG
11914@item Java @tab java @tab @tab
11915@item Javascript @tab js @tab LaTeX @tab latex
11916@item Ledger @tab ledger @tab Lisp @tab lisp
11917@item Lilypond @tab lilypond @tab MATLAB @tab matlab
86fbb8ca 11918@item Mscgen @tab mscgen @tab Objective Caml @tab ocaml
ce57c2fe
BG
11919@item Octave @tab octave @tab Org-mode @tab org
11920@item Oz @tab oz @tab Perl @tab perl
11921@item Plantuml @tab plantuml @tab Python @tab python
86fbb8ca 11922@item R @tab R @tab Ruby @tab ruby
ce57c2fe
BG
11923@item Sass @tab sass @tab Scheme @tab scheme
11924@item GNU Screen @tab screen @tab shell @tab sh
11925@item SQL @tab sql @tab SQLite @tab sqlite
86fbb8ca
CD
11926@end multitable
11927
11928Language-specific documentation is available for some languages. If
11929available, it can be found at
11930@uref{http://orgmode.org/worg/org-contrib/babel/languages}.
11931
11932The @code{org-babel-load-languages} controls which languages are enabled for
11933evaluation (by default only @code{emacs-lisp} is enabled). This variable can
11934be set using the customization interface or by adding code like the following
11935to your emacs configuration.
11936
11937@quotation
11938The following disables @code{emacs-lisp} evaluation and enables evaluation of
11939@code{R} code blocks.
11940@end quotation
11941
11942@lisp
11943(org-babel-do-load-languages
11944 'org-babel-load-languages
11945 '((emacs-lisp . nil)
11946 (R . t)))
11947@end lisp
11948
11949It is also possible to enable support for a language by loading the related
11950elisp file with @code{require}.
11951
11952@quotation
11953The following adds support for evaluating @code{clojure} code blocks.
11954@end quotation
11955
11956@lisp
11957(require 'ob-clojure)
11958@end lisp
11959
11960@node Header arguments, Results of evaluation, Languages, Working With Source Code
11961@section Header arguments
11962@cindex code block, header arguments
11963@cindex source code, block header arguments
11964
11965Code block functionality can be configured with header arguments. This
11966section provides an overview of the use of header arguments, and then
11967describes each header argument in detail.
11968
11969@menu
c0468714
GM
11970* Using header arguments:: Different ways to set header arguments
11971* Specific header arguments:: List of header arguments
86fbb8ca
CD
11972@end menu
11973
11974@node Using header arguments, Specific header arguments, Header arguments, Header arguments
11975@subsection Using header arguments
11976
afe98dfa 11977The values of header arguments can be set in six different ways, each more
86fbb8ca
CD
11978specific (and having higher priority) than the last.
11979@menu
11980* System-wide header arguments:: Set global default values
c0468714 11981* Language-specific header arguments:: Set default values by language
86fbb8ca
CD
11982* Buffer-wide header arguments:: Set default values for a specific buffer
11983* Header arguments in Org-mode properties:: Set default values for a buffer or heading
11984* Code block specific header arguments:: The most common way to set values
afe98dfa 11985* Header arguments in function calls:: The most specific level
86fbb8ca
CD
11986@end menu
11987
11988
11989@node System-wide header arguments, Language-specific header arguments, Using header arguments, Using header arguments
11990@subsubheading System-wide header arguments
11991@vindex org-babel-default-header-args
11992System-wide values of header arguments can be specified by customizing the
11993@code{org-babel-default-header-args} variable:
11994
11995@example
11996:session => "none"
11997:results => "replace"
11998:exports => "code"
11999:cache => "no"
12000:noweb => "no"
12001@end example
12002
12003@c @example
12004@c org-babel-default-header-args is a variable defined in `org-babel.el'.
12005@c Its value is
12006@c ((:session . "none")
12007@c (:results . "replace")
12008@c (:exports . "code")
12009@c (:cache . "no")
12010@c (:noweb . "no"))
12011
12012
12013@c Documentation:
12014@c Default arguments to use when evaluating a code block.
12015@c @end example
12016
12017For example, the following example could be used to set the default value of
12018@code{:noweb} header arguments to @code{yes}. This would have the effect of
12019expanding @code{:noweb} references by default when evaluating source code
12020blocks.
12021
12022@lisp
12023(setq org-babel-default-header-args
12024(cons '(:noweb . "yes")
12025(assq-delete-all :noweb org-babel-default-header-args)))
12026@end lisp
12027
12028@node Language-specific header arguments, Buffer-wide header arguments, System-wide header arguments, Using header arguments
12029@subsubheading Language-specific header arguments
12030Each language can define its own set of default header arguments. See the
12031language-specific documentation available online at
12032@uref{http://orgmode.org/worg/org-contrib/babel}.
12033
12034@node Buffer-wide header arguments, Header arguments in Org-mode properties, Language-specific header arguments, Using header arguments
12035@subsubheading Buffer-wide header arguments
12036Buffer-wide header arguments may be specified through the use of a special
12037line placed anywhere in an Org-mode file. The line consists of the
12038@code{#+BABEL:} keyword followed by a series of header arguments which may be
12039specified using the standard header argument syntax.
12040
12041For example the following would set @code{session} to @code{*R*}, and
12042@code{results} to @code{silent} for every code block in the buffer, ensuring
12043that all execution took place in the same session, and no results would be
12044inserted into the buffer.
12045
12046@example
12047#+BABEL: :session *R* :results silent
12048@end example
12049
12050@node Header arguments in Org-mode properties, Code block specific header arguments, Buffer-wide header arguments, Using header arguments
12051@subsubheading Header arguments in Org-mode properties
12052
12053Header arguments are also read from Org-mode properties (see @ref{Property
ce57c2fe 12054syntax}), which can be set on a buffer-wide or per-heading basis. An example
86fbb8ca
CD
12055of setting a header argument for all code blocks in a buffer is
12056
12057@example
12058#+property: tangle yes
12059@end example
12060
12061When properties are used to set default header arguments, they are looked up
12062with inheritance, so the value of the @code{:cache} header argument will default
12063to @code{yes} in all code blocks in the subtree rooted at the following
12064heading:
12065
12066@example
12067* outline header
12068:PROPERTIES:
12069:cache: yes
12070:END:
12071@end example
12072
12073@kindex C-c C-x p
12074@vindex org-babel-default-header-args
12075Properties defined in this way override the properties set in
12076@code{org-babel-default-header-args}. It is convenient to use the
12077@code{org-set-property} function bound to @kbd{C-c C-x p} to set properties
12078in Org-mode documents.
12079
afe98dfa 12080@node Code block specific header arguments, Header arguments in function calls, Header arguments in Org-mode properties, Using header arguments
86fbb8ca
CD
12081@subsubheading Code block specific header arguments
12082
12083The most common way to assign values to header arguments is at the
12084code block level. This can be done by listing a sequence of header
12085arguments and their values as part of the @code{#+begin_src} line.
12086Properties set in this way override both the values of
12087@code{org-babel-default-header-args} and header arguments specified as
12088properties. In the following example, the @code{:results} header argument
12089is set to @code{silent}, meaning the results of execution will not be
12090inserted in the buffer, and the @code{:exports} header argument is set to
12091@code{code}, meaning only the body of the code block will be
12092preserved on export to HTML or LaTeX.
12093
12094@example
12095#+source: factorial
12096#+begin_src haskell :results silent :exports code :var n=0
12097fac 0 = 1
12098fac n = n * fac (n-1)
12099#+end_src
12100@end example
86fbb8ca
CD
12101Similarly, it is possible to set header arguments for inline code blocks:
12102
12103@example
12104src_haskell[:exports both]@{fac 5@}
12105@end example
12106
ce57c2fe
BG
12107Code block header arguments can span multiple lines using =#+header:= or
12108=#+headers:= lines preceding a code block or nested in between the name and
12109body of a named code block.
12110
12111Multi-line header arguments on an un-named code block:
12112@example
12113 #+headers: :var data1=1
12114 #+begin_src emacs-lisp :var data2=2
12115 (message "data1:%S, data2:%S" data1 data2)
12116 #+end_src
12117
12118 #+results:
12119 : data1:1, data2:2
12120@end example
12121
12122Multi-line header arguments on a named code block:
12123@example
12124 #+source: named-block
12125 #+header: :var data=2
12126 #+begin_src emacs-lisp
12127 (message "data:%S" data)
12128 #+end_src
12129
12130 #+results: named-block
12131 : data:2
12132@end example
12133
afe98dfa
CD
12134@node Header arguments in function calls, , Code block specific header arguments, Using header arguments
12135@comment node-name, next, previous, up
12136@subsubheading Header arguments in function calls
12137
12138At the most specific level, header arguments for ``Library of Babel'' or
ce57c2fe
BG
12139function call lines can be set as shown in the two examples below. For more
12140information on the structure of @code{#+call:} lines see @ref{Evaluating code
12141blocks}.
86fbb8ca 12142
ce57c2fe
BG
12143The following will apply the @code{:exports results} header argument to the
12144evaluation of the @code{#+call:} line.
86fbb8ca
CD
12145@example
12146#+call: factorial(n=5) :exports results
12147@end example
12148
ce57c2fe
BG
12149The following will apply the @code{:session special} header argument to the
12150evaluation of the @code{factorial} code block.
12151@example
12152#+call: factorial[:session special](n=5)
12153@end example
12154
86fbb8ca
CD
12155@node Specific header arguments, , Using header arguments, Header arguments
12156@subsection Specific header arguments
12157The following header arguments are defined:
12158
12159@menu
c0468714
GM
12160* var:: Pass arguments to code blocks
12161* results:: Specify the type of results and how they will
86fbb8ca 12162 be collected and handled
c0468714
GM
12163* file:: Specify a path for file output
12164* dir:: Specify the default (possibly remote)
86fbb8ca 12165 directory for code block execution
c0468714
GM
12166* exports:: Export code and/or results
12167* tangle:: Toggle tangling and specify file name
ce57c2fe
BG
12168* mkdirp:: Toggle creation of parent directories of target
12169 files during tangling
86fbb8ca
CD
12170* comments:: Toggle insertion of comments in tangled
12171 code files
ce57c2fe
BG
12172* padline:: Control insertion of padding lines in tangled
12173 code files
afe98dfa
CD
12174* no-expand:: Turn off variable assignment and noweb
12175 expansion during tangling
c0468714
GM
12176* session:: Preserve the state of code evaluation
12177* noweb:: Toggle expansion of noweb references
ce57c2fe 12178* noweb-ref:: Specify block's noweb reference resolution target
c0468714 12179* cache:: Avoid re-evaluating unchanged code blocks
ce57c2fe 12180* sep:: Delimiter for writing tabular results outside Org
c0468714
GM
12181* hlines:: Handle horizontal lines in tables
12182* colnames:: Handle column names in tables
12183* rownames:: Handle row names in tables
12184* shebang:: Make tangled files executable
86fbb8ca
CD
12185* eval:: Limit evaluation of specific code blocks
12186@end menu
12187
ce57c2fe
BG
12188Additional header arguments are defined on a language-specific basis, see
12189@ref{Languages}.
12190
86fbb8ca
CD
12191@node var, results, Specific header arguments, Specific header arguments
12192@subsubsection @code{:var}
12193The @code{:var} header argument is used to pass arguments to code blocks.
12194The specifics of how arguments are included in a code block vary by language;
ce57c2fe 12195these are addressed in the language-specific documentation. However, the
86fbb8ca
CD
12196syntax used to specify arguments is the same across all languages. The
12197values passed to arguments can be literal values, values from org-mode tables
ce57c2fe
BG
12198and literal example blocks, the results of other code blocks, or Emacs Lisp
12199code---see the ``Emacs Lisp evaluation of variables'' heading below.
86fbb8ca
CD
12200
12201These values can be indexed in a manner similar to arrays---see the
12202``indexable variable values'' heading below.
12203
12204The following syntax is used to pass arguments to code blocks using the
12205@code{:var} header argument.
12206
12207@example
12208:var name=assign
12209@end example
12210
12211where @code{assign} can take one of the following forms
12212
12213@itemize @bullet
12214@item literal value
12215either a string @code{"string"} or a number @code{9}.
12216@item reference
12217a table name:
12218
12219@example
12220#+tblname: example-table
12221| 1 |
12222| 2 |
12223| 3 |
12224| 4 |
12225
12226#+source: table-length
12227#+begin_src emacs-lisp :var table=example-table
12228(length table)
12229#+end_src
12230
12231#+results: table-length
12232: 4
12233@end example
12234
12235a code block name, as assigned by @code{#+srcname:}, followed by
12236parentheses:
12237
12238@example
12239#+begin_src emacs-lisp :var length=table-length()
12240(* 2 length)
12241#+end_src
12242
12243#+results:
12244: 8
12245@end example
12246
12247In addition, an argument can be passed to the code block referenced
12248by @code{:var}. The argument is passed within the parentheses following the
12249code block name:
12250
12251@example
12252#+source: double
12253#+begin_src emacs-lisp :var input=8
12254(* 2 input)
12255#+end_src
12256
12257#+results: double
12258: 16
12259
12260#+source: squared
12261#+begin_src emacs-lisp :var input=double(input=1)
12262(* input input)
12263#+end_src
12264
12265#+results: squared
12266: 4
12267@end example
12268@end itemize
12269
12270@subsubheading Alternate argument syntax
12271It is also possible to specify arguments in a potentially more natural way
12272using the @code{#+source:} line of a code block. As in the following
12273example arguments can be packed inside of parenthesis, separated by commas,
12274following the source name.
12275
12276@example
12277#+source: double(input=0, x=2)
12278#+begin_src emacs-lisp
12279(* 2 (+ input x))
12280#+end_src
12281@end example
12282
12283@subsubheading Indexable variable values
12284It is possible to reference portions of variable values by ``indexing'' into
12285the variables. Indexes are 0 based with negative values counting back from
12286the end. If an index is separated by @code{,}s then each subsequent section
ce57c2fe
BG
12287will index into the next deepest nesting or dimension of the value. Note
12288that this indexing occurs @emph{before} other table related header arguments
12289like @code{:hlines}, @code{:colnames} and @code{:rownames} are applied. The
86fbb8ca
CD
12290following example assigns the last cell of the first row the table
12291@code{example-table} to the variable @code{data}:
12292
12293@example
12294#+results: example-table
12295| 1 | a |
12296| 2 | b |
12297| 3 | c |
12298| 4 | d |
12299
12300#+begin_src emacs-lisp :var data=example-table[0,-1]
12301 data
12302#+end_src
12303
12304#+results:
12305: a
12306@end example
12307
12308Ranges of variable values can be referenced using two integers separated by a
12309@code{:}, in which case the entire inclusive range is referenced. For
12310example the following assigns the middle three rows of @code{example-table}
12311to @code{data}.
12312
12313@example
12314#+results: example-table
12315| 1 | a |
12316| 2 | b |
12317| 3 | c |
12318| 4 | d |
12319| 5 | 3 |
12320
12321#+begin_src emacs-lisp :var data=example-table[1:3]
12322 data
12323#+end_src
12324
12325#+results:
12326| 2 | b |
12327| 3 | c |
12328| 4 | d |
12329@end example
12330
12331Additionally, an empty index, or the single character @code{*}, are both
12332interpreted to mean the entire range and as such are equivalent to
12333@code{0:-1}, as shown in the following example in which the entire first
12334column is referenced.
12335
12336@example
12337#+results: example-table
12338| 1 | a |
12339| 2 | b |
12340| 3 | c |
12341| 4 | d |
12342
12343#+begin_src emacs-lisp :var data=example-table[,0]
12344 data
12345#+end_src
12346
12347#+results:
12348| 1 | 2 | 3 | 4 |
12349@end example
12350
12351It is possible to index into the results of code blocks as well as tables.
12352Any number of dimensions can be indexed. Dimensions are separated from one
12353another by commas, as shown in the following example.
12354
12355@example
12356#+source: 3D
12357#+begin_src emacs-lisp
12358 '(((1 2 3) (4 5 6) (7 8 9))
12359 ((10 11 12) (13 14 15) (16 17 18))
12360 ((19 20 21) (22 23 24) (25 26 27)))
12361#+end_src
12362
12363#+begin_src emacs-lisp :var data=3D[1,,1]
12364 data
12365#+end_src
12366
12367#+results:
12368| 11 | 14 | 17 |
12369@end example
12370
ce57c2fe
BG
12371@subsubheading Emacs Lisp evaluation of variables
12372
12373Emacs lisp code can be used to initialize variable values. When a variable
12374value starts with @code{(}, @code{[}, @code{'} or @code{`} it will be evaluated as
12375Emacs Lisp and the result of the evaluation will be assigned as the variable
12376value. The following example demonstrates use of this evaluation to reliably
12377pass the file-name of the org-mode buffer to a code block---note that
12378evaluation of header arguments is guaranteed to take place in the original
12379org-mode file, while there is no such guarantee for evaluation of the code
12380block body.
12381
12382@example
12383#+begin_src sh :var filename=(buffer-file-name) :exports both
12384 wc -w $filename
12385#+end_src
12386@end example
12387
12388Note that values read from tables and lists will not be evaluated as
12389Emacs Lisp, as shown in the following example.
12390
12391@example
12392#+results: table
12393| (a b c) |
12394
12395#+headers: :var data=table[0,0]
12396#+begin_src perl
12397 $data
12398#+end_src
12399
12400#+results:
12401: (a b c)
12402@end example
12403
86fbb8ca
CD
12404@node results, file, var, Specific header arguments
12405@subsubsection @code{:results}
12406
acedf35c
CD
12407There are three classes of @code{:results} header argument. Only one option
12408per class may be supplied per code block.
86fbb8ca
CD
12409
12410@itemize @bullet
12411@item
12412@b{collection} header arguments specify how the results should be collected
12413from the code block
12414@item
12415@b{type} header arguments specify what type of result the code block will
12416return---which has implications for how they will be inserted into the
12417Org-mode buffer
12418@item
12419@b{handling} header arguments specify how the results of evaluating the code
12420block should be handled.
12421@end itemize
12422
12423@subsubheading Collection
12424The following options are mutually exclusive, and specify how the results
12425should be collected from the code block.
12426
12427@itemize @bullet
12428@item @code{value}
12429This is the default. The result is the value of the last statement in the
12430code block. This header argument places the evaluation in functional
acedf35c 12431mode. Note that in some languages, e.g., Python, use of this result type
86fbb8ca 12432requires that a @code{return} statement be included in the body of the source
ce57c2fe 12433code block. E.g., @code{:results value}.
86fbb8ca
CD
12434@item @code{output}
12435The result is the collection of everything printed to STDOUT during the
12436execution of the code block. This header argument places the
12437evaluation in scripting mode. E.g., @code{:results output}.
12438@end itemize
12439
12440@subsubheading Type
12441
12442The following options are mutually exclusive and specify what type of results
12443the code block will return. By default, results are inserted as either a
12444table or scalar depending on their value.
12445
12446@itemize @bullet
12447@item @code{table}, @code{vector}
12448The results should be interpreted as an Org-mode table. If a single value is
12449returned, it will be converted into a table with one row and one column.
12450E.g., @code{:results value table}.
acedf35c
CD
12451@item @code{list}
12452The results should be interpreted as an Org-mode list. If a single scalar
12453value is returned it will be converted into a list with only one element.
86fbb8ca
CD
12454@item @code{scalar}, @code{verbatim}
12455The results should be interpreted literally---they will not be
12456converted into a table. The results will be inserted into the Org-mode
12457buffer as quoted text. E.g., @code{:results value verbatim}.
12458@item @code{file}
12459The results will be interpreted as the path to a file, and will be inserted
12460into the Org-mode buffer as a file link. E.g., @code{:results value file}.
12461@item @code{raw}, @code{org}
12462The results are interpreted as raw Org-mode code and are inserted directly
12463into the buffer. If the results look like a table they will be aligned as
12464such by Org-mode. E.g., @code{:results value raw}.
12465@item @code{html}
12466Results are assumed to be HTML and will be enclosed in a @code{begin_html}
12467block. E.g., @code{:results value html}.
12468@item @code{latex}
12469Results assumed to be LaTeX and are enclosed in a @code{begin_latex} block.
12470E.g., @code{:results value latex}.
12471@item @code{code}
12472Result are assumed to be parseable code and are enclosed in a code block.
12473E.g., @code{:results value code}.
12474@item @code{pp}
12475The result is converted to pretty-printed code and is enclosed in a code
acedf35c 12476block. This option currently supports Emacs Lisp, Python, and Ruby. E.g.,
86fbb8ca 12477@code{:results value pp}.
ce57c2fe
BG
12478@item @code{wrap}
12479The result is wrapped in a @code{begin_result} block. This can be useful for
12480inserting @code{raw} or @code{org} syntax results in such a way that their
12481extend is known and they can be automatically removed or replaced.
86fbb8ca
CD
12482@end itemize
12483
12484@subsubheading Handling
12485The following results options indicate what happens with the
12486results once they are collected.
12487
12488@itemize @bullet
12489@item @code{silent}
12490The results will be echoed in the minibuffer but will not be inserted into
12491the Org-mode buffer. E.g., @code{:results output silent}.
12492@item @code{replace}
12493The default value. Any existing results will be removed, and the new results
12494will be inserted into the Org-mode buffer in their place. E.g.,
12495@code{:results output replace}.
12496@item @code{append}
12497If there are pre-existing results of the code block then the new results will
12498be appended to the existing results. Otherwise the new results will be
12499inserted as with @code{replace}.
12500@item @code{prepend}
12501If there are pre-existing results of the code block then the new results will
12502be prepended to the existing results. Otherwise the new results will be
12503inserted as with @code{replace}.
12504@end itemize
12505
12506@node file, dir, results, Specific header arguments
12507@subsubsection @code{:file}
12508
ce57c2fe
BG
12509The header argument @code{:file} is used to specify an external file in which
12510to save code block results. After code block evaluation an Org-mode style
12511@code{[[file:]]} link (see @ref{Link format}) to the file will be inserted
12512into the Org-mode buffer. Some languages including R, gnuplot, dot, and
12513ditaa provide special handling of the @code{:file} header argument
12514automatically wrapping the code block body in the boilerplate code required
12515to save output to the specified file. This is often useful for saving
12516graphical output of a code block to the specified file.
86fbb8ca 12517
ce57c2fe
BG
12518The argument to @code{:file} should be either a string specifying the path to
12519a file, or a list of two strings in which case the first element of the list
12520should be the path to a file and the second a description for the link.
86fbb8ca
CD
12521
12522@node dir, exports, file, Specific header arguments
12523@subsubsection @code{:dir} and remote execution
12524
12525While the @code{:file} header argument can be used to specify the path to the
12526output file, @code{:dir} specifies the default directory during code block
ce57c2fe
BG
12527execution. If it is absent, then the directory associated with the current
12528buffer is used. In other words, supplying @code{:dir path} temporarily has
86fbb8ca 12529the same effect as changing the current directory with @kbd{M-x cd path}, and
ce57c2fe 12530then not supplying @code{:dir}. Under the surface, @code{:dir} simply sets
86fbb8ca
CD
12531the value of the Emacs variable @code{default-directory}.
12532
12533When using @code{:dir}, you should supply a relative path for file output
ce57c2fe 12534(e.g.@: @code{:file myfile.jpg} or @code{:file results/myfile.jpg}) in which
86fbb8ca
CD
12535case that path will be interpreted relative to the default directory.
12536
acedf35c
CD
12537In other words, if you want your plot to go into a folder called @file{Work}
12538in your home directory, you could use
86fbb8ca
CD
12539
12540@example
12541#+begin_src R :file myplot.png :dir ~/Work
12542matplot(matrix(rnorm(100), 10), type="l")
12543#+end_src
12544@end example
12545
12546@subsubheading Remote execution
12547A directory on a remote machine can be specified using tramp file syntax, in
ce57c2fe 12548which case the code will be evaluated on the remote machine. An example is
86fbb8ca
CD
12549
12550@example
12551#+begin_src R :file plot.png :dir /dand@@yakuba.princeton.edu:
12552plot(1:10, main=system("hostname", intern=TRUE))
12553#+end_src
12554@end example
12555
12556Text results will be returned to the local Org-mode buffer as usual, and file
12557output will be created on the remote machine with relative paths interpreted
ce57c2fe 12558relative to the remote directory. An Org-mode link to the remote file will be
86fbb8ca
CD
12559created.
12560
12561So, in the above example a plot will be created on the remote machine,
12562and a link of the following form will be inserted in the org buffer:
12563
12564@example
12565[[file:/scp:dand@@yakuba.princeton.edu:/home/dand/plot.png][plot.png]]
12566@end example
12567
12568Most of this functionality follows immediately from the fact that @code{:dir}
12569sets the value of the Emacs variable @code{default-directory}, thanks to
ce57c2fe 12570tramp. Those using XEmacs, or GNU Emacs prior to version 23 may need to
acedf35c 12571install tramp separately in order for these features to work correctly.
86fbb8ca
CD
12572
12573@subsubheading Further points
12574
12575@itemize @bullet
12576@item
12577If @code{:dir} is used in conjunction with @code{:session}, although it will
12578determine the starting directory for a new session as expected, no attempt is
12579currently made to alter the directory associated with an existing session.
12580@item
12581@code{:dir} should typically not be used to create files during export with
ce57c2fe 12582@code{:exports results} or @code{:exports both}. The reason is that, in order
86fbb8ca
CD
12583to retain portability of exported material between machines, during export
12584links inserted into the buffer will *not* be expanded against @code{default
ce57c2fe 12585directory}. Therefore, if @code{default-directory} is altered using
86fbb8ca
CD
12586@code{:dir}, it is probable that the file will be created in a location to
12587which the link does not point.
12588@end itemize
12589
12590@node exports, tangle, dir, Specific header arguments
12591@subsubsection @code{:exports}
12592
12593The @code{:exports} header argument specifies what should be included in HTML
12594or LaTeX exports of the Org-mode file.
12595
12596@itemize @bullet
12597@item @code{code}
12598The default. The body of code is included into the exported file. E.g.,
12599@code{:exports code}.
12600@item @code{results}
ce57c2fe 12601The result of evaluating the code is included in the exported file. E.g.,
86fbb8ca
CD
12602@code{:exports results}.
12603@item @code{both}
ce57c2fe 12604Both the code and results are included in the exported file. E.g.,
86fbb8ca
CD
12605@code{:exports both}.
12606@item @code{none}
12607Nothing is included in the exported file. E.g., @code{:exports none}.
12608@end itemize
12609
ce57c2fe 12610@node tangle, mkdirp, exports, Specific header arguments
86fbb8ca
CD
12611@subsubsection @code{:tangle}
12612
12613The @code{:tangle} header argument specifies whether or not the code
12614block should be included in tangled extraction of source code files.
12615
12616@itemize @bullet
acedf35c 12617@item @code{tangle}
ce57c2fe
BG
12618The code block is exported to a source code file named after the full path
12619(including the directory) and file name (w/o extension) of the Org-mode file.
12620E.g., @code{:tangle yes}.
86fbb8ca
CD
12621@item @code{no}
12622The default. The code block is not exported to a source code file.
12623E.g., @code{:tangle no}.
12624@item other
12625Any other string passed to the @code{:tangle} header argument is interpreted
ce57c2fe
BG
12626as a path (directory and file name relative to the directory of the Org-mode
12627file) to which the block will be exported. E.g., @code{:tangle path}.
86fbb8ca
CD
12628@end itemize
12629
ce57c2fe
BG
12630@node mkdirp, comments, tangle, Specific header arguments
12631@subsubsection @code{:mkdirp}
12632
12633The @code{:mkdirp} header argument can be used to create parent directories
12634of tangled files when missing. This can be set to @code{yes} to enable
12635directory creation or to @code{no} to inhibit directory creation.
12636
12637@node comments, padline, mkdirp, Specific header arguments
86fbb8ca
CD
12638@subsubsection @code{:comments}
12639By default code blocks are tangled to source-code files without any insertion
12640of comments beyond those which may already exist in the body of the code
afe98dfa
CD
12641block. The @code{:comments} header argument can be set as follows to control
12642the insertion of extra comments into the tangled code file.
12643
12644@itemize @bullet
12645@item @code{no}
12646The default. No extra comments are inserted during tangling.
12647@item @code{link}
12648The code block is wrapped in comments which contain pointers back to the
12649original Org file from which the code was tangled.
12650@item @code{yes}
12651A synonym for ``link'' to maintain backwards compatibility.
12652@item @code{org}
12653Include text from the org-mode file as a comment.
12654
12655The text is picked from the leading context of the tangled code and is
12656limited by the nearest headline or source block as the case may be.
12657@item @code{both}
12658Turns on both the ``link'' and ``org'' comment options.
ce57c2fe
BG
12659@item @code{noweb}
12660Turns on the ``link'' comment option, and additionally wraps expanded noweb
12661references in the code block body in link comments.
afe98dfa 12662@end itemize
86fbb8ca 12663
ce57c2fe
BG
12664@node padline, no-expand, comments, Specific header arguments
12665@subsubsection @code{:padline}
12666Control in insertion of padding lines around code block bodies in tangled
12667code files. The default value is @code{yes} which results in insertion of
12668newlines before and after each tangled code block. The following arguments
12669are accepted.
12670
12671@itemize @bullet
12672@item @code{yes}
12673Insert newlines before and after each code block body in tangled code files.
12674@item @code{no}
12675Do not insert any newline padding in tangled output.
12676@end itemize
12677
12678@node no-expand, session, padline, Specific header arguments
86fbb8ca
CD
12679@subsubsection @code{:no-expand}
12680
12681By default, code blocks are expanded with @code{org-babel-expand-src-block}
12682during tangling. This has the effect of assigning values to variables
12683specified with @code{:var} (see @ref{var}), and of replacing ``noweb''
12684references (see @ref{Noweb reference syntax}) with their targets. The
12685@code{:no-expand} header argument can be used to turn off this behavior.
12686
12687@node session, noweb, no-expand, Specific header arguments
12688@subsubsection @code{:session}
12689
12690The @code{:session} header argument starts a session for an interpreted
12691language where state is preserved.
12692
12693By default, a session is not started.
12694
12695A string passed to the @code{:session} header argument will give the session
12696a name. This makes it possible to run concurrent sessions for each
12697interpreted language.
12698
ce57c2fe 12699@node noweb, noweb-ref, session, Specific header arguments
86fbb8ca
CD
12700@subsubsection @code{:noweb}
12701
12702The @code{:noweb} header argument controls expansion of ``noweb'' style (see
12703@ref{Noweb reference syntax}) references in a code block. This header
ce57c2fe 12704argument can have one of three values: @code{yes}, @code{no}, or @code{tangle}.
86fbb8ca
CD
12705
12706@itemize @bullet
afe98dfa
CD
12707@item @code{yes}
12708All ``noweb'' syntax references in the body of the code block will be
12709expanded before the block is evaluated, tangled or exported.
86fbb8ca
CD
12710@item @code{no}
12711The default. No ``noweb'' syntax specific action is taken on evaluating
12712code blocks, However, noweb references will still be expanded during
12713tangling.
acedf35c 12714@item @code{tangle}
86fbb8ca 12715All ``noweb'' syntax references in the body of the code block will be
afe98dfa
CD
12716expanded before the block is tangled, however ``noweb'' references will not
12717be expanded when the block is evaluated or exported.
86fbb8ca
CD
12718@end itemize
12719
12720@subsubheading Noweb prefix lines
12721Noweb insertions are now placed behind the line prefix of the
12722@code{<<reference>>}.
12723This behavior is illustrated in the following example. Because the
12724@code{<<example>>} noweb reference appears behind the SQL comment syntax,
12725each line of the expanded noweb reference will be commented.
12726
12727This code block:
12728
12729@example
12730-- <<example>>
12731@end example
12732
12733
12734expands to:
12735
12736@example
12737-- this is the
12738-- multi-line body of example
12739@end example
12740
12741Note that noweb replacement text that does not contain any newlines will not
12742be affected by this change, so it is still possible to use inline noweb
12743references.
12744
ce57c2fe
BG
12745@node noweb-ref, cache, noweb, Specific header arguments
12746@subsubsection @code{:noweb-ref}
12747When expanding ``noweb'' style references the bodies of all code block with
12748@emph{either} a block name matching the reference name @emph{or} a
12749@code{:noweb-ref} header argument matching the reference name will be
12750concatenated together to form the replacement text.
12751
12752By setting this header argument at the sub-tree or file level, simple code
12753block concatenation may be achieved. For example, when tangling the
12754following Org-mode file, the bodies of code blocks will be concatenated into
12755the resulting pure code file.
12756
12757@example
12758 #+begin_src sh :tangle yes :noweb yes :shebang #!/bin/sh
12759 <<fullest-disk>>
12760 #+end_src
12761 * the mount point of the fullest disk
12762 :PROPERTIES:
12763 :noweb-ref: fullest-disk
12764 :END:
12765
12766 ** query all mounted disks
12767 #+begin_src sh
12768 df \
12769 #+end_src
12770
12771 ** strip the header row
12772 #+begin_src sh
12773 |sed '1d' \
12774 #+end_src
12775
12776 ** sort by the percent full
12777 #+begin_src sh
12778 |awk '@{print $5 " " $6@}'|sort -n |tail -1 \
12779 #+end_src
12780
12781 ** extract the mount point
12782 #+begin_src sh
12783 |awk '@{print $2@}'
12784 #+end_src
12785@end example
12786
12787@node cache, sep, noweb-ref, Specific header arguments
86fbb8ca
CD
12788@subsubsection @code{:cache}
12789
12790The @code{:cache} header argument controls the use of in-buffer caching of
12791the results of evaluating code blocks. It can be used to avoid re-evaluating
12792unchanged code blocks. This header argument can have one of two
12793values: @code{yes} or @code{no}.
12794
12795@itemize @bullet
12796@item @code{no}
12797The default. No caching takes place, and the code block will be evaluated
12798every time it is called.
12799@item @code{yes}
acedf35c 12800Every time the code block is run a SHA1 hash of the code and arguments
86fbb8ca
CD
12801passed to the block will be generated. This hash is packed into the
12802@code{#+results:} line and will be checked on subsequent
12803executions of the code block. If the code block has not
12804changed since the last time it was evaluated, it will not be re-evaluated.
12805@end itemize
12806
ce57c2fe
BG
12807Code block caches notice if the value of a variable argument
12808to the code block has changed. If this is the case, the cache is
12809invalidated and the code block is re-run. In the following example,
12810@code{caller} will not be re-run unless the results of @code{random} have
12811changed since it was last run.
12812
12813@example
12814 #+srcname: random
12815 #+begin_src R :cache yes
12816 runif(1)
12817 #+end_src
12818
12819 #+results[a2a72cd647ad44515fab62e144796432793d68e1]: random
12820 0.4659510825295
12821
12822 #+srcname: caller
12823 #+begin_src emacs-lisp :var x=random :cache yes
12824 x
12825 #+end_src
12826
12827 #+results[bec9c8724e397d5df3b696502df3ed7892fc4f5f]: caller
12828 0.254227238707244
12829@end example
12830
12831@node sep, hlines, cache, Specific header arguments
12832@subsubsection @code{:sep}
12833
12834The @code{:sep} header argument can be used to control the delimiter used
12835when writing tabular results out to files external to Org-mode. This is used
12836either when opening tabular results of a code block by calling the
12837@code{org-open-at-point} function bound to @kbd{C-c C-o} on the code block,
12838or when writing code block results to an external file (see @ref{file})
12839header argument.
12840
12841By default, when @code{:sep} is not specified output tables are tab
12842delimited.
12843
12844@node hlines, colnames, sep, Specific header arguments
86fbb8ca
CD
12845@subsubsection @code{:hlines}
12846
12847Tables are frequently represented with one or more horizontal lines, or
12848hlines. The @code{:hlines} argument to a code block accepts the
12849values @code{yes} or @code{no}, with a default value of @code{no}.
12850
12851@itemize @bullet
12852@item @code{no}
12853Strips horizontal lines from the input table. In most languages this is the
12854desired effect because an @code{hline} symbol is interpreted as an unbound
12855variable and raises an error. Setting @code{:hlines no} or relying on the
12856default value yields the following results.
12857
12858@example
12859#+tblname: many-cols
12860| a | b | c |
12861|---+---+---|
12862| d | e | f |
12863|---+---+---|
12864| g | h | i |
12865
12866#+source: echo-table
12867#+begin_src python :var tab=many-cols
12868 return tab
12869#+end_src
12870
12871#+results: echo-table
12872| a | b | c |
12873| d | e | f |
12874| g | h | i |
12875@end example
12876
12877@item @code{yes}
ce57c2fe 12878Leaves hlines in the table. Setting @code{:hlines yes} has this effect.
86fbb8ca
CD
12879
12880@example
12881#+tblname: many-cols
12882| a | b | c |
12883|---+---+---|
12884| d | e | f |
12885|---+---+---|
12886| g | h | i |
12887
12888#+source: echo-table
12889#+begin_src python :var tab=many-cols :hlines yes
12890 return tab
12891#+end_src
12892
12893#+results: echo-table
12894| a | b | c |
12895|---+---+---|
12896| d | e | f |
12897|---+---+---|
12898| g | h | i |
12899@end example
12900@end itemize
12901
12902@node colnames, rownames, hlines, Specific header arguments
12903@subsubsection @code{:colnames}
12904
12905The @code{:colnames} header argument accepts the values @code{yes},
12906@code{no}, or @code{nil} for unassigned. The default value is @code{nil}.
12907
12908@itemize @bullet
12909@item @code{nil}
12910If an input table looks like it has column names
12911(because its second row is an hline), then the column
12912names will be removed from the table before
12913processing, then reapplied to the results.
12914
12915@example
12916#+tblname: less-cols
12917| a |
12918|---|
12919| b |
12920| c |
12921
12922#+srcname: echo-table-again
12923#+begin_src python :var tab=less-cols
12924 return [[val + '*' for val in row] for row in tab]
12925#+end_src
12926
12927#+results: echo-table-again
12928| a |
12929|----|
12930| b* |
12931| c* |
12932@end example
12933
ce57c2fe
BG
12934Please note that column names are not removed before the table is indexed
12935using variable indexing @xref{var, Indexable variable values}.
12936
86fbb8ca
CD
12937@item @code{no}
12938No column name pre-processing takes place
12939
12940@item @code{yes}
12941Column names are removed and reapplied as with @code{nil} even if the table
ce57c2fe 12942does not ``look like'' it has column names (i.e.@: the second row is not an
86fbb8ca
CD
12943hline)
12944@end itemize
12945
12946@node rownames, shebang, colnames, Specific header arguments
12947@subsubsection @code{:rownames}
12948
12949The @code{:rownames} header argument can take on the values @code{yes}
12950or @code{no}, with a default value of @code{no}.
12951
12952@itemize @bullet
12953@item @code{no}
12954No row name pre-processing will take place.
12955
12956@item @code{yes}
12957The first column of the table is removed from the table before processing,
12958and is then reapplied to the results.
12959
12960@example
12961#+tblname: with-rownames
12962| one | 1 | 2 | 3 | 4 | 5 |
12963| two | 6 | 7 | 8 | 9 | 10 |
12964
12965#+srcname: echo-table-once-again
12966#+begin_src python :var tab=with-rownames :rownames yes
12967 return [[val + 10 for val in row] for row in tab]
12968#+end_src
12969
12970#+results: echo-table-once-again
12971| one | 11 | 12 | 13 | 14 | 15 |
12972| two | 16 | 17 | 18 | 19 | 20 |
12973@end example
ce57c2fe
BG
12974
12975Please note that row names are not removed before the table is indexed using
12976variable indexing @xref{var, Indexable variable values}.
12977
86fbb8ca
CD
12978@end itemize
12979
12980@node shebang, eval, rownames, Specific header arguments
12981@subsubsection @code{:shebang}
12982
12983Setting the @code{:shebang} header argument to a string value
ce57c2fe 12984(e.g.@: @code{:shebang "#!/bin/bash"}) causes the string to be inserted as the
86fbb8ca
CD
12985first line of any tangled file holding the code block, and the file
12986permissions of the tangled file are set to make it executable.
12987
afe98dfa 12988@node eval, , shebang, Specific header arguments
86fbb8ca
CD
12989@subsubsection @code{:eval}
12990The @code{:eval} header argument can be used to limit the evaluation of
12991specific code blocks. @code{:eval} accepts two arguments ``never'' and
12992``query''. @code{:eval never} will ensure that a code block is never
12993evaluated, this can be useful for protecting against the evaluation of
12994dangerous code blocks. @code{:eval query} will require a query for every
12995execution of a code block regardless of the value of the
12996@code{org-confirm-babel-evaluate} variable.
12997
ce57c2fe
BG
12998If this header argument is not set then evaluation is determined by the value
12999of the @code{org-confirm-babel-evaluate} variable see @ref{Code evaluation
13000security}.
13001
86fbb8ca
CD
13002@node Results of evaluation, Noweb reference syntax, Header arguments, Working With Source Code
13003@section Results of evaluation
13004@cindex code block, results of evaluation
13005@cindex source code, results of evaluation
13006
13007The way in which results are handled depends on whether a session is invoked,
13008as well as on whether @code{:results value} or @code{:results output} is
ce57c2fe
BG
13009used. The following table shows the table possibilities. For a full listing
13010of the possible results header arguments see @ref{results}.
86fbb8ca
CD
13011
13012@multitable @columnfractions 0.26 0.33 0.41
13013@item @tab @b{Non-session} @tab @b{Session}
13014@item @code{:results value} @tab value of last expression @tab value of last expression
13015@item @code{:results output} @tab contents of STDOUT @tab concatenation of interpreter output
13016@end multitable
13017
13018Note: With @code{:results value}, the result in both @code{:session} and
13019non-session is returned to Org-mode as a table (a one- or two-dimensional
13020vector of strings or numbers) when appropriate.
13021
13022@subsection Non-session
13023@subsubsection @code{:results value}
ce57c2fe 13024This is the default. Internally, the value is obtained by wrapping the code
86fbb8ca 13025in a function definition in the external language, and evaluating that
ce57c2fe
BG
13026function. Therefore, code should be written as if it were the body of such a
13027function. In particular, note that Python does not automatically return a
86fbb8ca 13028value from a function unless a @code{return} statement is present, and so a
acedf35c 13029@samp{return} statement will usually be required in Python.
86fbb8ca
CD
13030
13031This is the only one of the four evaluation contexts in which the code is
13032automatically wrapped in a function definition.
13033
13034@subsubsection @code{:results output}
13035The code is passed to the interpreter as an external process, and the
ce57c2fe 13036contents of the standard output stream are returned as text. (In certain
86fbb8ca
CD
13037languages this also contains the error output stream; this is an area for
13038future work.)
13039
acedf35c 13040@subsection Session
86fbb8ca 13041@subsubsection @code{:results value}
ce57c2fe
BG
13042The code is passed to an interpreter running as an interactive Emacs inferior
13043process. Only languages which provide tools for interactive evaluation of
13044code have session support, so some language (e.g., C and ditaa) do not
13045support the @code{:session} header argument, and in other languages (e.g.,
13046Python and Haskell) which have limitations on the code which may be entered
13047into interactive sessions, those limitations apply to the code in code blocks
13048using the @code{:session} header argument as well.
13049
13050Unless the @code{:results output} option is supplied (see below) the result
13051returned is the result of the last evaluation performed by the
13052interpreter. (This is obtained in a language-specific manner: the value of
13053the variable @code{_} in Python and Ruby, and the value of @code{.Last.value}
13054in R).
86fbb8ca
CD
13055
13056@subsubsection @code{:results output}
13057The code is passed to the interpreter running as an interactive Emacs
ce57c2fe
BG
13058inferior process. The result returned is the concatenation of the sequence of
13059(text) output from the interactive interpreter. Notice that this is not
86fbb8ca
CD
13060necessarily the same as what would be sent to @code{STDOUT} if the same code
13061were passed to a non-interactive interpreter running as an external
ce57c2fe 13062process. For example, compare the following two blocks:
86fbb8ca
CD
13063
13064@example
13065#+begin_src python :results output
13066 print "hello"
13067 2
13068 print "bye"
13069#+end_src
13070
13071#+resname:
13072: hello
13073: bye
13074@end example
13075
acedf35c 13076In non-session mode, the `2' is not printed and does not appear.
86fbb8ca
CD
13077@example
13078#+begin_src python :results output :session
13079 print "hello"
13080 2
13081 print "bye"
13082#+end_src
13083
13084#+resname:
13085: hello
13086: 2
13087: bye
13088@end example
13089
acedf35c 13090But in @code{:session} mode, the interactive interpreter receives input `2'
ce57c2fe 13091and prints out its value, `2'. (Indeed, the other print statements are
86fbb8ca
CD
13092unnecessary here).
13093
13094@node Noweb reference syntax, Key bindings and useful functions, Results of evaluation, Working With Source Code
13095@section Noweb reference syntax
13096@cindex code block, noweb reference
13097@cindex syntax, noweb
13098@cindex source code, noweb reference
13099
13100The ``noweb'' (see @uref{http://www.cs.tufts.edu/~nr/noweb/}) Literate
13101Programming system allows named blocks of code to be referenced by using the
13102familiar Noweb syntax:
13103
13104@example
13105<<code-block-name>>
13106@end example
13107
13108When a code block is tangled or evaluated, whether or not ``noweb''
13109references are expanded depends upon the value of the @code{:noweb} header
13110argument. If @code{:noweb yes}, then a Noweb reference is expanded before
13111evaluation. If @code{:noweb no}, the default, then the reference is not
13112expanded before evaluation.
13113
13114Note: the default value, @code{:noweb no}, was chosen to ensure that
13115correct code is not broken in a language, such as Ruby, where
13116@code{<<arg>>} is a syntactically valid construct. If @code{<<arg>>} is not
13117syntactically valid in languages that you use, then please consider setting
13118the default value.
13119
13120@node Key bindings and useful functions, Batch execution, Noweb reference syntax, Working With Source Code
13121@section Key bindings and useful functions
13122@cindex code block, key bindings
13123
13124Many common Org-mode key sequences are re-bound depending on
13125the context.
13126
13127Within a code block, the following key bindings
13128are active:
13129
13130@multitable @columnfractions 0.25 0.75
13131@kindex C-c C-c
ce57c2fe 13132@item @kbd{C-c C-c} @tab @code{org-babel-execute-src-block}
86fbb8ca 13133@kindex C-c C-o
ce57c2fe 13134@item @kbd{C-c C-o} @tab @code{org-babel-open-src-block-result}
86fbb8ca 13135@kindex C-up
ce57c2fe 13136@item @kbd{C-@key{up}} @tab @code{org-babel-load-in-session}
86fbb8ca 13137@kindex M-down
ce57c2fe 13138@item @kbd{M-@key{down}} @tab @code{org-babel-pop-to-session}
86fbb8ca
CD
13139@end multitable
13140
13141In an Org-mode buffer, the following key bindings are active:
13142
13143@multitable @columnfractions 0.45 0.55
13144@kindex C-c C-v a
13145@kindex C-c C-v C-a
ce57c2fe 13146@item @kbd{C-c C-v a} @ @ @r{or} @ @ @kbd{C-c C-v C-a} @tab @code{org-babel-sha1-hash}
86fbb8ca
CD
13147@kindex C-c C-v b
13148@kindex C-c C-v C-b
ce57c2fe 13149@item @kbd{C-c C-v b} @ @ @r{or} @ @ @kbd{C-c C-v C-b} @tab @code{org-babel-execute-buffer}
86fbb8ca
CD
13150@kindex C-c C-v f
13151@kindex C-c C-v C-f
ce57c2fe 13152@item @kbd{C-c C-v f} @ @ @r{or} @ @ @kbd{C-c C-v C-f} @tab @code{org-babel-tangle-file}
86fbb8ca 13153@kindex C-c C-v g
ce57c2fe 13154@item @kbd{C-c C-v g} @tab @code{org-babel-goto-named-source-block}
86fbb8ca 13155@kindex C-c C-v h
ce57c2fe 13156@item @kbd{C-c C-v h} @tab @code{org-babel-describe-bindings}
86fbb8ca
CD
13157@kindex C-c C-v l
13158@kindex C-c C-v C-l
ce57c2fe 13159@item @kbd{C-c C-v l} @ @ @r{or} @ @ @kbd{C-c C-v C-l} @tab @code{org-babel-lob-ingest}
86fbb8ca
CD
13160@kindex C-c C-v p
13161@kindex C-c C-v C-p
ce57c2fe 13162@item @kbd{C-c C-v p} @ @ @r{or} @ @ @kbd{C-c C-v C-p} @tab @code{org-babel-expand-src-block}
86fbb8ca
CD
13163@kindex C-c C-v s
13164@kindex C-c C-v C-s
ce57c2fe 13165@item @kbd{C-c C-v s} @ @ @r{or} @ @ @kbd{C-c C-v C-s} @tab @code{org-babel-execute-subtree}
86fbb8ca
CD
13166@kindex C-c C-v t
13167@kindex C-c C-v C-t
ce57c2fe 13168@item @kbd{C-c C-v t} @ @ @r{or} @ @ @kbd{C-c C-v C-t} @tab @code{org-babel-tangle}
86fbb8ca
CD
13169@kindex C-c C-v z
13170@kindex C-c C-v C-z
ce57c2fe 13171@item @kbd{C-c C-v z} @ @ @r{or} @ @ @kbd{C-c C-v C-z} @tab @code{org-babel-switch-to-session}
86fbb8ca
CD
13172@end multitable
13173
13174@c When possible these keybindings were extended to work when the control key is
13175@c kept pressed, resulting in the following additional keybindings.
13176
13177@c @multitable @columnfractions 0.25 0.75
ce57c2fe
BG
13178@c @item @kbd{C-c C-v C-a} @tab @code{org-babel-sha1-hash}
13179@c @item @kbd{C-c C-v C-b} @tab @code{org-babel-execute-buffer}
13180@c @item @kbd{C-c C-v C-f} @tab @code{org-babel-tangle-file}
13181@c @item @kbd{C-c C-v C-l} @tab @code{org-babel-lob-ingest}
13182@c @item @kbd{C-c C-v C-p} @tab @code{org-babel-expand-src-block}
13183@c @item @kbd{C-c C-v C-s} @tab @code{org-babel-execute-subtree}
13184@c @item @kbd{C-c C-v C-t} @tab @code{org-babel-tangle}
13185@c @item @kbd{C-c C-v C-z} @tab @code{org-babel-switch-to-session}
86fbb8ca
CD
13186@c @end multitable
13187
13188@node Batch execution, , Key bindings and useful functions, Working With Source Code
13189@section Batch execution
13190@cindex code block, batch execution
13191@cindex source code, batch execution
13192
13193It is possible to call functions from the command line. This shell
13194script calls @code{org-babel-tangle} on every one of its arguments.
13195
13196Be sure to adjust the paths to fit your system.
13197
13198@example
13199#!/bin/sh
13200# -*- mode: shell-script -*-
13201#
afe98dfa 13202# tangle files with org-mode
86fbb8ca
CD
13203#
13204DIR=`pwd`
13205FILES=""
afe98dfa 13206ORGINSTALL="~/src/org/lisp/org-install.el"
86fbb8ca
CD
13207
13208# wrap each argument in the code required to call tangle on it
13209for i in $@@; do
afe98dfa 13210 FILES="$FILES \"$i\""
86fbb8ca
CD
13211done
13212
afe98dfa 13213emacs -Q --batch -l $ORGINSTALL \
86fbb8ca
CD
13214--eval "(progn
13215(add-to-list 'load-path (expand-file-name \"~/src/org/lisp/\"))
13216(add-to-list 'load-path (expand-file-name \"~/src/org/contrib/lisp/\"))
13217(require 'org)(require 'org-exp)(require 'ob)(require 'ob-tangle)
13218(mapc (lambda (file)
13219 (find-file (expand-file-name file \"$DIR\"))
13220 (org-babel-tangle)
afe98dfa 13221 (kill-buffer)) '($FILES)))" 2>&1 |grep tangled
86fbb8ca
CD
13222@end example
13223
13224@node Miscellaneous, Hacking, Working With Source Code, Top
13225@chapter Miscellaneous
13226
13227@menu
c0468714 13228* Completion:: M-TAB knows what you need
afe98dfa 13229* Easy Templates:: Quick insertion of structural elements
c0468714
GM
13230* Speed keys:: Electric commands at the beginning of a headline
13231* Code evaluation security:: Org mode files evaluate inline code
13232* Customization:: Adapting Org to your taste
13233* In-buffer settings:: Overview of the #+KEYWORDS
13234* The very busy C-c C-c key:: When in doubt, press C-c C-c
13235* Clean view:: Getting rid of leading stars in the outline
13236* TTY keys:: Using Org on a tty
13237* Interaction:: Other Emacs packages
ce57c2fe 13238* org-crypt.el:: Encrypting Org files
86fbb8ca
CD
13239@end menu
13240
13241
afe98dfa 13242@node Completion, Easy Templates, Miscellaneous, Miscellaneous
86fbb8ca
CD
13243@section Completion
13244@cindex completion, of @TeX{} symbols
13245@cindex completion, of TODO keywords
13246@cindex completion, of dictionary words
13247@cindex completion, of option keywords
13248@cindex completion, of tags
13249@cindex completion, of property keys
13250@cindex completion, of link abbreviations
13251@cindex @TeX{} symbol completion
13252@cindex TODO keywords completion
13253@cindex dictionary word completion
13254@cindex option keyword completion
13255@cindex tag completion
13256@cindex link abbreviations, completion of
13257
13258Emacs would not be Emacs without completion, and Org-mode uses it whenever it
13259makes sense. If you prefer an @i{iswitchb}- or @i{ido}-like interface for
13260some of the completion prompts, you can specify your preference by setting at
13261most one of the variables @code{org-completion-use-iswitchb}
13262@code{org-completion-use-ido}.
13263
13264Org supports in-buffer completion. This type of completion does
13265not make use of the minibuffer. You simply type a few letters into
13266the buffer and use the key to complete text right there.
13267
13268@table @kbd
13269@kindex M-@key{TAB}
13270@item M-@key{TAB}
13271Complete word at point
13272@itemize @bullet
13273@item
13274At the beginning of a headline, complete TODO keywords.
13275@item
13276After @samp{\}, complete @TeX{} symbols supported by the exporter.
13277@item
13278After @samp{*}, complete headlines in the current buffer so that they
13279can be used in search links like @samp{[[*find this headline]]}.
13280@item
13281After @samp{:} in a headline, complete tags. The list of tags is taken
13282from the variable @code{org-tag-alist} (possibly set through the
13283@samp{#+TAGS} in-buffer option, @pxref{Setting tags}), or it is created
13284dynamically from all tags used in the current buffer.
13285@item
13286After @samp{:} and not in a headline, complete property keys. The list
13287of keys is constructed dynamically from all keys used in the current
13288buffer.
13289@item
13290After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
13291@item
13292After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
13293@samp{OPTIONS} which set file-specific options for Org-mode. When the
13294option keyword is already complete, pressing @kbd{M-@key{TAB}} again
13295will insert example settings for this keyword.
13296@item
13297In the line after @samp{#+STARTUP: }, complete startup keywords,
ce57c2fe 13298i.e.@: valid keys for this line.
86fbb8ca
CD
13299@item
13300Elsewhere, complete dictionary words using Ispell.
13301@end itemize
13302@end table
13303
afe98dfa
CD
13304@node Easy Templates, Speed keys, Completion, Miscellaneous
13305@section Easy Templates
13306@cindex template insertion
13307@cindex insertion, of templates
13308
13309Org-mode supports insertion of empty structural elements (like
13310@code{#+BEGIN_SRC} and @code{#+END_SRC} pairs) with just a few key
13311strokes. This is achieved through a native template expansion mechanism.
13312Note that Emacs has several other template mechanisms which could be used in
13313a similar way, for example @file{yasnippet}.
13314
13315To insert a structural element, type a @samp{<}, followed by a template
13316selector and @kbd{@key{TAB}}. Completion takes effect only when the above
13317keystrokes are typed on a line by itself.
13318
13319The following template selectors are currently supported.
13320
13321@multitable @columnfractions 0.1 0.9
13322@item @kbd{s} @tab @code{#+begin_src ... #+end_src}
13323@item @kbd{e} @tab @code{#+begin_example ... #+end_example}
13324@item @kbd{q} @tab @code{#+begin_quote ... #+end_quote}
13325@item @kbd{v} @tab @code{#+begin_verse ... #+end_verse}
13326@item @kbd{c} @tab @code{#+begin_center ... #+end_center}
13327@item @kbd{l} @tab @code{#+begin_latex ... #+end_latex}
13328@item @kbd{L} @tab @code{#+latex:}
13329@item @kbd{h} @tab @code{#+begin_html ... #+end_html}
13330@item @kbd{H} @tab @code{#+html:}
13331@item @kbd{a} @tab @code{#+begin_ascii ... #+end_ascii}
13332@item @kbd{A} @tab @code{#+ascii:}
ce57c2fe
BG
13333@item @kbd{i} @tab @code{#+index:} line
13334@item @kbd{I} @tab @code{#+include:} line
afe98dfa
CD
13335@end multitable
13336
13337For example, on an empty line, typing "<e" and then pressing TAB, will expand
13338into a complete EXAMPLE template.
13339
13340You can install additional templates by customizing the variable
ce57c2fe 13341@code{org-structure-template-alist}. See the docstring of the variable for
afe98dfa
CD
13342additional details.
13343
13344@node Speed keys, Code evaluation security, Easy Templates, Miscellaneous
86fbb8ca
CD
13345@section Speed keys
13346@cindex speed keys
13347@vindex org-use-speed-commands
13348@vindex org-speed-commands-user
13349
13350Single keys can be made to execute commands when the cursor is at the
ce57c2fe 13351beginning of a headline, i.e.@: before the first star. Configure the variable
86fbb8ca
CD
13352@code{org-use-speed-commands} to activate this feature. There is a
13353pre-defined list of commands, and you can add more such commands using the
13354variable @code{org-speed-commands-user}. Speed keys do not only speed up
13355navigation and other commands, but they also provide an alternative way to
acedf35c 13356execute commands bound to keys that are not or not easily available on a TTY,
86fbb8ca
CD
13357or on a small mobile device with a limited keyboard.
13358
13359To see which commands are available, activate the feature and press @kbd{?}
13360with the cursor at the beginning of a headline.
13361
13362@node Code evaluation security, Customization, Speed keys, Miscellaneous
13363@section Code evaluation and security issues
13364
afe98dfa 13365Org provides tools to work with the code snippets, including evaluating them.
86fbb8ca
CD
13366
13367Running code on your machine always comes with a security risk. Badly
13368written or malicious code can be executed on purpose or by accident. Org has
13369default settings which will only evaluate such code if you give explicit
13370permission to do so, and as a casual user of these features you should leave
13371these precautions intact.
13372
13373For people who regularly work with such code, the confirmation prompts can
13374become annoying, and you might want to turn them off. This can be done, but
13375you must be aware of the risks that are involved.
13376
13377Code evaluation can happen under the following circumstances:
13378
13379@table @i
13380@item Source code blocks
13381Source code blocks can be evaluated during export, or when pressing @kbd{C-c
13382C-c} in the block. The most important thing to realize here is that Org mode
afe98dfa 13383files which contain code snippets are, in a certain sense, like executable
86fbb8ca 13384files. So you should accept them and load them into Emacs only from trusted
acedf35c 13385sources---just like you would do with a program you install on your computer.
86fbb8ca
CD
13386
13387Make sure you know what you are doing before customizing the variables
afe98dfa 13388which take off the default security brakes.
86fbb8ca
CD
13389
13390@defopt org-confirm-babel-evaluate
ce57c2fe
BG
13391When t (the default), the user is asked before every code block evaluation.
13392When nil, the user is not asked. When set to a function, it is called with
13393two arguments (language and body of the code block) and should return t to
13394ask and nil not to ask.
86fbb8ca
CD
13395@end defopt
13396
ce57c2fe
BG
13397For example, here is how to execute "ditaa" code (which is considered safe)
13398without asking:
13399@example
13400(defun my-org-confirm-babel-evaluate (lang body)
13401 (not (string= lang "ditaa"))) ; don't ask for ditaa
13402(setq org-confirm-babel-evaluate 'my-org-confirm-babel-evaluate)
13403@end example
13404
86fbb8ca
CD
13405@item Following @code{shell} and @code{elisp} links
13406Org has two link types that can directly evaluate code (@pxref{External
afe98dfa 13407links}). These links can be problematic because the code to be evaluated is
86fbb8ca
CD
13408not visible.
13409
13410@defopt org-confirm-shell-link-function
13411Function to queries user about shell link execution.
13412@end defopt
13413@defopt org-confirm-elisp-link-function
13414Functions to query user for Emacs Lisp link execution.
13415@end defopt
13416
86fbb8ca
CD
13417@item Formulas in tables
13418Formulas in tables (@pxref{The spreadsheet}) are code that is evaluated
13419either by the @i{calc} interpreter, or by the @i{Emacs Lisp} interpreter.
13420@end table
13421
13422@node Customization, In-buffer settings, Code evaluation security, Miscellaneous
13423@section Customization
13424@cindex customization
13425@cindex options, for customization
13426@cindex variables, for customization
13427
13428There are more than 180 variables that can be used to customize
13429Org. For the sake of compactness of the manual, I am not
13430describing the variables here. A structured overview of customization
13431variables is available with @kbd{M-x org-customize}. Or select
13432@code{Browse Org Group} from the @code{Org->Customization} menu. Many
13433settings can also be activated on a per-file basis, by putting special
13434lines into the buffer (@pxref{In-buffer settings}).
4009494e
GM
13435
13436@node In-buffer settings, The very busy C-c C-c key, Customization, Miscellaneous
13437@section Summary of in-buffer settings
13438@cindex in-buffer settings
13439@cindex special keywords
13440
86fbb8ca 13441Org-mode uses special lines in the buffer to define settings on a
4009494e
GM
13442per-file basis. These lines start with a @samp{#+} followed by a
13443keyword, a colon, and then individual words defining a setting. Several
13444setting words can be in the same line, but you can also have multiple
13445lines for the keyword. While these settings are described throughout
13446the manual, here is a summary. After changing any of those lines in the
13447buffer, press @kbd{C-c C-c} with the cursor still in the line to
13448activate the changes immediately. Otherwise they become effective only
13449when the file is visited again in a new Emacs session.
13450
c8d0cf5c 13451@vindex org-archive-location
4009494e
GM
13452@table @kbd
13453@item #+ARCHIVE: %s_done::
13454This line sets the archive location for the agenda file. It applies for
13455all subsequent lines until the next @samp{#+ARCHIVE} line, or the end
13456of the file. The first such line also applies to any entries before it.
13457The corresponding variable is @code{org-archive-location}.
13458@item #+CATEGORY:
13459This line sets the category for the agenda file. The category applies
13460for all subsequent lines until the next @samp{#+CATEGORY} line, or the
13461end of the file. The first such line also applies to any entries before it.
13462@item #+COLUMNS: %25ITEM .....
c8d0cf5c 13463@cindex property, COLUMNS
4009494e 13464Set the default format for columns view. This format applies when
c8d0cf5c 13465columns view is invoked in locations where no @code{COLUMNS} property
dbc28aaa 13466applies.
4009494e 13467@item #+CONSTANTS: name1=value1 ...
c8d0cf5c
CD
13468@vindex org-table-formula-constants
13469@vindex org-table-formula
4009494e 13470Set file-local values for constants to be used in table formulas. This
acedf35c 13471line sets the local variable @code{org-table-formula-constants-local}.
dbc28aaa 13472The global version of this variable is
4009494e 13473@code{org-table-formula-constants}.
b349f79f
CD
13474@item #+FILETAGS: :tag1:tag2:tag3:
13475Set tags that can be inherited by any entry in the file, including the
13476top-level entries.
dbc28aaa 13477@item #+DRAWERS: NAME1 .....
c8d0cf5c 13478@vindex org-drawers
dbc28aaa
CD
13479Set the file-local set of drawers. The corresponding global variable is
13480@code{org-drawers}.
4009494e 13481@item #+LINK: linkword replace
c8d0cf5c 13482@vindex org-link-abbrev-alist
4009494e
GM
13483These lines (several are allowed) specify link abbreviations.
13484@xref{Link abbreviations}. The corresponding variable is
13485@code{org-link-abbrev-alist}.
13486@item #+PRIORITIES: highest lowest default
c8d0cf5c
CD
13487@vindex org-highest-priority
13488@vindex org-lowest-priority
13489@vindex org-default-priority
4009494e
GM
13490This line sets the limits and the default for the priorities. All three
13491must be either letters A-Z or numbers 0-9. The highest priority must
acedf35c 13492have a lower ASCII number than the lowest priority.
4009494e
GM
13493@item #+PROPERTY: Property_Name Value
13494This line sets a default inheritance value for entries in the current
13495buffer, most useful for specifying the allowed values of a property.
c8d0cf5c 13496@cindex #+SETUPFILE
b349f79f
CD
13497@item #+SETUPFILE: file
13498This line defines a file that holds more in-buffer setup. Normally this is
13499entirely ignored. Only when the buffer is parsed for option-setting lines
ce57c2fe 13500(i.e.@: when starting Org-mode for a file, when pressing @kbd{C-c C-c} in a
b349f79f 13501settings line, or when exporting), then the contents of this file are parsed
a50253cc 13502as if they had been included in the buffer. In particular, the file can be
86fbb8ca 13503any other Org-mode file with internal setup. You can visit the file the
b349f79f 13504cursor is in the line with @kbd{C-c '}.
4009494e 13505@item #+STARTUP:
c8d0cf5c 13506@cindex #+STARTUP:
86fbb8ca 13507This line sets options to be used at startup of Org-mode, when an
c8d0cf5c
CD
13508Org file is being visited.
13509
13510The first set of options deals with the initial visibility of the outline
13511tree. The corresponding variable for global default settings is
13512@code{org-startup-folded}, with a default value @code{t}, which means
13513@code{overview}.
13514@vindex org-startup-folded
4009494e
GM
13515@cindex @code{overview}, STARTUP keyword
13516@cindex @code{content}, STARTUP keyword
13517@cindex @code{showall}, STARTUP keyword
7006d207 13518@cindex @code{showeverything}, STARTUP keyword
4009494e 13519@example
7006d207
CD
13520overview @r{top-level headlines only}
13521content @r{all headlines}
13522showall @r{no folding of any entries}
13523showeverything @r{show even drawer contents}
4009494e 13524@end example
c8d0cf5c
CD
13525
13526@vindex org-startup-indented
13527@cindex @code{indent}, STARTUP keyword
13528@cindex @code{noindent}, STARTUP keyword
13529Dynamic virtual indentation is controlled by the variable
13530@code{org-startup-indented}@footnote{Emacs 23 and Org-mode 6.29 are required}
13531@example
13532indent @r{start with @code{org-indent-mode} turned on}
13533noindent @r{start with @code{org-indent-mode} turned off}
13534@end example
13535
13536@vindex org-startup-align-all-tables
4009494e
GM
13537Then there are options for aligning tables upon visiting a file. This
13538is useful in files containing narrowed table columns. The corresponding
13539variable is @code{org-startup-align-all-tables}, with a default value
28a16a1b 13540@code{nil}.
4009494e
GM
13541@cindex @code{align}, STARTUP keyword
13542@cindex @code{noalign}, STARTUP keyword
13543@example
13544align @r{align all tables}
13545noalign @r{don't align tables on startup}
13546@end example
afe98dfa
CD
13547
13548@vindex org-startup-with-inline-images
13549When visiting a file, inline images can be automatically displayed. The
13550corresponding variable is @code{org-startup-with-inline-images}, with a
13551default value @code{nil} to avoid delays when visiting a file.
13552@cindex @code{inlineimages}, STARTUP keyword
13553@cindex @code{noinlineimages}, STARTUP keyword
13554@example
13555inlineimages @r{show inline images}
13556noinlineimages @r{don't show inline images on startup}
13557@end example
13558
c8d0cf5c
CD
13559@vindex org-log-done
13560@vindex org-log-note-clock-out
13561@vindex org-log-repeat
13562Logging the closing and reopening of TODO items and clock intervals can be
13563configured using these options (see variables @code{org-log-done},
13564@code{org-log-note-clock-out} and @code{org-log-repeat})
4009494e 13565@cindex @code{logdone}, STARTUP keyword
4009494e 13566@cindex @code{lognotedone}, STARTUP keyword
28a16a1b 13567@cindex @code{nologdone}, STARTUP keyword
4009494e 13568@cindex @code{lognoteclock-out}, STARTUP keyword
28a16a1b 13569@cindex @code{nolognoteclock-out}, STARTUP keyword
4009494e 13570@cindex @code{logrepeat}, STARTUP keyword
28a16a1b 13571@cindex @code{lognoterepeat}, STARTUP keyword
4009494e 13572@cindex @code{nologrepeat}, STARTUP keyword
a351880d
CD
13573@cindex @code{logreschedule}, STARTUP keyword
13574@cindex @code{lognotereschedule}, STARTUP keyword
13575@cindex @code{nologreschedule}, STARTUP keyword
13576@cindex @code{logredeadline}, STARTUP keyword
13577@cindex @code{lognoteredeadline}, STARTUP keyword
13578@cindex @code{nologredeadline}, STARTUP keyword
ed21c5c8
CD
13579@cindex @code{logrefile}, STARTUP keyword
13580@cindex @code{lognoterefile}, STARTUP keyword
13581@cindex @code{nologrefile}, STARTUP keyword
4009494e 13582@example
28a16a1b
CD
13583logdone @r{record a timestamp when an item is marked DONE}
13584lognotedone @r{record timestamp and a note when DONE}
13585nologdone @r{don't record when items are marked DONE}
13586logrepeat @r{record a time when reinstating a repeating item}
13587lognoterepeat @r{record a note when reinstating a repeating item}
13588nologrepeat @r{do not record when reinstating repeating item}
13589lognoteclock-out @r{record a note when clocking out}
13590nolognoteclock-out @r{don't record a note when clocking out}
a351880d
CD
13591logreschedule @r{record a timestamp when scheduling time changes}
13592lognotereschedule @r{record a note when scheduling time changes}
13593nologreschedule @r{do not record when a scheduling date changes}
13594logredeadline @r{record a timestamp when deadline changes}
13595lognoteredeadline @r{record a note when deadline changes}
13596nologredeadline @r{do not record when a deadline date changes}
ed21c5c8
CD
13597logrefile @r{record a timestamp when refiling}
13598lognoterefile @r{record a note when refiling}
13599nologrefile @r{do not record when refiling}
4009494e 13600@end example
c8d0cf5c
CD
13601@vindex org-hide-leading-stars
13602@vindex org-odd-levels-only
b349f79f
CD
13603Here are the options for hiding leading stars in outline headings, and for
13604indenting outlines. The corresponding variables are
13605@code{org-hide-leading-stars} and @code{org-odd-levels-only}, both with a
13606default setting @code{nil} (meaning @code{showstars} and @code{oddeven}).
4009494e
GM
13607@cindex @code{hidestars}, STARTUP keyword
13608@cindex @code{showstars}, STARTUP keyword
13609@cindex @code{odd}, STARTUP keyword
13610@cindex @code{even}, STARTUP keyword
13611@example
13612hidestars @r{make all but one of the stars starting a headline invisible.}
13613showstars @r{show all stars starting a headline}
b349f79f
CD
13614indent @r{virtual indentation according to outline level}
13615noindent @r{no virtual indentation according to outline level}
4009494e
GM
13616odd @r{allow only odd outline levels (1,3,...)}
13617oddeven @r{allow all outline levels}
13618@end example
c8d0cf5c
CD
13619@vindex org-put-time-stamp-overlays
13620@vindex org-time-stamp-overlay-formats
13621To turn on custom format overlays over timestamps (variables
4009494e
GM
13622@code{org-put-time-stamp-overlays} and
13623@code{org-time-stamp-overlay-formats}), use
13624@cindex @code{customtime}, STARTUP keyword
13625@example
13626customtime @r{overlay custom time format}
13627@end example
c8d0cf5c 13628@vindex constants-unit-system
4009494e
GM
13629The following options influence the table spreadsheet (variable
13630@code{constants-unit-system}).
13631@cindex @code{constcgs}, STARTUP keyword
13632@cindex @code{constSI}, STARTUP keyword
13633@example
13634constcgs @r{@file{constants.el} should use the c-g-s unit system}
13635constSI @r{@file{constants.el} should use the SI unit system}
13636@end example
c8d0cf5c
CD
13637@vindex org-footnote-define-inline
13638@vindex org-footnote-auto-label
13639@vindex org-footnote-auto-adjust
55e0839d 13640To influence footnote settings, use the following keywords. The
c8d0cf5c
CD
13641corresponding variables are @code{org-footnote-define-inline},
13642@code{org-footnote-auto-label}, and @code{org-footnote-auto-adjust}.
55e0839d 13643@cindex @code{fninline}, STARTUP keyword
c8d0cf5c 13644@cindex @code{nofninline}, STARTUP keyword
55e0839d
CD
13645@cindex @code{fnlocal}, STARTUP keyword
13646@cindex @code{fnprompt}, STARTUP keyword
13647@cindex @code{fnauto}, STARTUP keyword
13648@cindex @code{fnconfirm}, STARTUP keyword
13649@cindex @code{fnplain}, STARTUP keyword
c8d0cf5c
CD
13650@cindex @code{fnadjust}, STARTUP keyword
13651@cindex @code{nofnadjust}, STARTUP keyword
55e0839d
CD
13652@example
13653fninline @r{define footnotes inline}
13654fnnoinline @r{define footnotes in separate section}
13655fnlocal @r{define footnotes near first reference, but not inline}
13656fnprompt @r{prompt for footnote labels}
ce57c2fe 13657fnauto @r{create @code{[fn:1]}-like labels automatically (default)}
55e0839d 13658fnconfirm @r{offer automatic label for editing or confirmation}
ce57c2fe 13659fnplain @r{create @code{[1]}-like labels automatically}
c8d0cf5c
CD
13660fnadjust @r{automatically renumber and sort footnotes}
13661nofnadjust @r{do not renumber and sort automatically}
13662@end example
13663@cindex org-hide-block-startup
ce57c2fe 13664To hide blocks on startup, use these keywords. The corresponding variable is
c8d0cf5c
CD
13665@code{org-hide-block-startup}.
13666@cindex @code{hideblocks}, STARTUP keyword
13667@cindex @code{nohideblocks}, STARTUP keyword
13668@example
13669hideblocks @r{Hide all begin/end blocks on startup}
13670nohideblocks @r{Do not hide blocks on startup}
55e0839d 13671@end example
86fbb8ca 13672@cindex org-pretty-entities
acedf35c 13673The display of entities as UTF-8 characters is governed by the variable
86fbb8ca
CD
13674@code{org-pretty-entities} and the keywords
13675@cindex @code{entitiespretty}, STARTUP keyword
13676@cindex @code{entitiesplain}, STARTUP keyword
13677@example
acedf35c 13678entitiespretty @r{Show entities as UTF-8 characters where possible}
86fbb8ca
CD
13679entitiesplain @r{Leave entities plain}
13680@end example
4009494e 13681@item #+TAGS: TAG1(c1) TAG2(c2)
c8d0cf5c 13682@vindex org-tag-alist
cad1d376 13683These lines (several such lines are allowed) specify the valid tags in
4009494e
GM
13684this file, and (potentially) the corresponding @emph{fast tag selection}
13685keys. The corresponding variable is @code{org-tag-alist}.
13686@item #+TBLFM:
13687This line contains the formulas for the table directly above the line.
c8d0cf5c 13688@item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+DATE:,
86fbb8ca
CD
13689@itemx #+OPTIONS:, #+BIND:, #+XSLT:,
13690@itemx #+DESCRIPTION:, #+KEYWORDS:,
c8d0cf5c
CD
13691@itemx #+LATEX_HEADER:, #+STYLE:, #+LINK_UP:, #+LINK_HOME:,
13692@itemx #+EXPORT_SELECT_TAGS:, #+EXPORT_EXCLUDE_TAGS:
4009494e
GM
13693These lines provide settings for exporting files. For more details see
13694@ref{Export options}.
c8d0cf5c
CD
13695@item #+TODO: #+SEQ_TODO: #+TYP_TODO:
13696@vindex org-todo-keywords
4009494e 13697These lines set the TODO keywords and their interpretation in the
c8d0cf5c 13698current file. The corresponding variable is @code{org-todo-keywords}.
4009494e
GM
13699@end table
13700
13701@node The very busy C-c C-c key, Clean view, In-buffer settings, Miscellaneous
13702@section The very busy C-c C-c key
13703@kindex C-c C-c
13704@cindex C-c C-c, overview
13705
a7808fba 13706The key @kbd{C-c C-c} has many purposes in Org, which are all
4009494e
GM
13707mentioned scattered throughout this manual. One specific function of
13708this key is to add @emph{tags} to a headline (@pxref{Tags}). In many
c8d0cf5c
CD
13709other circumstances it means something like @emph{``Hey Org, look
13710here and update according to what you see here''}. Here is a summary of
4009494e
GM
13711what this means in different contexts.
13712
13713@itemize @minus
13714@item
13715If there are highlights in the buffer from the creation of a sparse
13716tree, or from clock display, remove these highlights.
13717@item
13718If the cursor is in one of the special @code{#+KEYWORD} lines, this
13719triggers scanning the buffer for these lines and updating the
28a16a1b 13720information.
4009494e
GM
13721@item
13722If the cursor is inside a table, realign the table. This command
13723works even if the automatic table editor has been turned off.
13724@item
13725If the cursor is on a @code{#+TBLFM} line, re-apply the formulas to
13726the entire table.
13727@item
86fbb8ca 13728If the current buffer is a capture buffer, close the note and file it.
4009494e
GM
13729With a prefix argument, file it, without further interaction, to the
13730default location.
13731@item
13732If the cursor is on a @code{<<<target>>>}, update radio targets and
13733corresponding links in this buffer.
13734@item
13735If the cursor is in a property line or at the start or end of a property
13736drawer, offer property commands.
13737@item
55e0839d
CD
13738If the cursor is at a footnote reference, go to the corresponding
13739definition, and vice versa.
13740@item
6eb02347
CD
13741If the cursor is on a statistics cookie, update it.
13742@item
4009494e
GM
13743If the cursor is in a plain list item with a checkbox, toggle the status
13744of the checkbox.
13745@item
13746If the cursor is on a numbered item in a plain list, renumber the
13747ordered list.
dbc28aaa 13748@item
c8d0cf5c 13749If the cursor is on the @code{#+BEGIN} line of a dynamic block, the
dbc28aaa 13750block is updated.
4009494e
GM
13751@end itemize
13752
13753@node Clean view, TTY keys, The very busy C-c C-c key, Miscellaneous
13754@section A cleaner outline view
13755@cindex hiding leading stars
b349f79f
CD
13756@cindex dynamic indentation
13757@cindex odd-levels-only outlines
4009494e
GM
13758@cindex clean outline view
13759
c8d0cf5c
CD
13760Some people find it noisy and distracting that the Org headlines start with a
13761potentially large number of stars, and that text below the headlines is not
6eb02347
CD
13762indented. While this is no problem when writing a @emph{book-like} document
13763where the outline headings are really section headings, in a more
13764@emph{list-oriented} outline, indented structure is a lot cleaner:
4009494e
GM
13765
13766@example
b349f79f
CD
13767@group
13768* Top level headline | * Top level headline
13769** Second level | * Second level
13770*** 3rd level | * 3rd level
13771some text | some text
13772*** 3rd level | * 3rd level
13773more text | more text
13774* Another top level headline | * Another top level headline
13775@end group
4009494e
GM
13776@end example
13777
13778@noindent
86fbb8ca
CD
13779
13780If you are using at least Emacs 23.2@footnote{Emacs 23.1 can actually crash
13781with @code{org-indent-mode}} and version 6.29 of Org, this kind of view can
13782be achieved dynamically at display time using @code{org-indent-mode}. In
13783this minor mode, all lines are prefixed for display with the necessary amount
13784of space@footnote{@code{org-indent-mode} also sets the @code{wrap-prefix}
13785property, such that @code{visual-line-mode} (or purely setting
13786@code{word-wrap}) wraps long lines (including headlines) correctly indented.
13787}. Also headlines are prefixed with additional stars, so that the amount of
13788indentation shifts by two@footnote{See the variable
ed21c5c8
CD
13789@code{org-indent-indentation-per-level}.} spaces per level. All headline
13790stars but the last one are made invisible using the @code{org-hide}
13791face@footnote{Turning on @code{org-indent-mode} sets
13792@code{org-hide-leading-stars} to @code{t} and @code{org-adapt-indentation} to
13793@code{nil}.} - see below under @samp{2.} for more information on how this
13794works. You can turn on @code{org-indent-mode} for all files by customizing
13795the variable @code{org-startup-indented}, or you can turn it on for
13796individual files using
c8d0cf5c
CD
13797
13798@example
13799#+STARTUP: indent
13800@end example
13801
acedf35c 13802If you want a similar effect in an earlier version of Emacs and/or Org, or if
c8d0cf5c
CD
13803you want the indentation to be hard space characters so that the plain text
13804file looks as similar as possible to the Emacs display, Org supports you in
13805the following way:
4009494e 13806
b349f79f 13807@enumerate
96c8522a 13808@item
b349f79f
CD
13809@emph{Indentation of text below headlines}@*
13810You may indent text below each headline to make the left boundary line up
13811with the headline, like
4009494e 13812
b349f79f
CD
13813@example
13814*** 3rd level
13815 more text, now indented
13816@end example
13817
c8d0cf5c
CD
13818@vindex org-adapt-indentation
13819Org supports this with paragraph filling, line wrapping, and structure
13820editing@footnote{See also the variable @code{org-adapt-indentation}.},
13821preserving or adapting the indentation as appropriate.
b349f79f
CD
13822
13823@item
c8d0cf5c 13824@vindex org-hide-leading-stars
b349f79f
CD
13825@emph{Hiding leading stars}@* You can modify the display in such a way that
13826all leading stars become invisible. To do this in a global way, configure
13827the variable @code{org-hide-leading-stars} or change this on a per-file basis
13828with
4009494e
GM
13829
13830@example
4009494e 13831#+STARTUP: hidestars
c8d0cf5c 13832#+STARTUP: showstars
4009494e
GM
13833@end example
13834
b349f79f 13835With hidden stars, the tree becomes:
4009494e
GM
13836
13837@example
b349f79f 13838@group
4009494e
GM
13839* Top level headline
13840 * Second level
13841 * 3rd level
b349f79f
CD
13842 ...
13843@end group
4009494e
GM
13844@end example
13845
13846@noindent
c8d0cf5c
CD
13847@vindex org-hide @r{(face)}
13848The leading stars are not truly replaced by whitespace, they are only
13849fontified with the face @code{org-hide} that uses the background color as
13850font color. If you are not using either white or black background, you may
13851have to customize this face to get the wanted effect. Another possibility is
13852to set this font such that the extra stars are @i{almost} invisible, for
13853example using the color @code{grey90} on a white background.
4009494e 13854
b349f79f 13855@item
c8d0cf5c 13856@vindex org-odd-levels-only
b349f79f
CD
13857Things become cleaner still if you skip all the even levels and use only odd
13858levels 1, 3, 5..., effectively adding two stars to go from one outline level
c8d0cf5c
CD
13859to the next@footnote{When you need to specify a level for a property search
13860or refile targets, @samp{LEVEL=2} will correspond to 3 stars, etc@.}. In this
13861way we get the outline view shown at the beginning of this section. In order
13862to make the structure editing and export commands handle this convention
13863correctly, configure the variable @code{org-odd-levels-only}, or set this on
13864a per-file basis with one of the following lines:
4009494e
GM
13865
13866@example
13867#+STARTUP: odd
13868#+STARTUP: oddeven
13869@end example
13870
a7808fba 13871You can convert an Org file from single-star-per-level to the
4009494e
GM
13872double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
13873RET} in that file. The reverse operation is @kbd{M-x
13874org-convert-to-oddeven-levels}.
b349f79f 13875@end enumerate
4009494e
GM
13876
13877@node TTY keys, Interaction, Clean view, Miscellaneous
a7808fba
CD
13878@section Using Org on a tty
13879@cindex tty key bindings
4009494e 13880
c8d0cf5c 13881Because Org contains a large number of commands, by default many of
a7808fba 13882Org's core commands are bound to keys that are generally not
dbc28aaa
CD
13883accessible on a tty, such as the cursor keys (@key{left}, @key{right},
13884@key{up}, @key{down}), @key{TAB} and @key{RET}, in particular when used
13885together with modifiers like @key{Meta} and/or @key{Shift}. To access
13886these commands on a tty when special keys are unavailable, the following
13887alternative bindings can be used. The tty bindings below will likely be
13888more cumbersome; you may find for some of the bindings below that a
c8d0cf5c
CD
13889customized workaround suits you better. For example, changing a timestamp
13890is really only fun with @kbd{S-@key{cursor}} keys, whereas on a
dbc28aaa 13891tty you would rather use @kbd{C-c .} to re-insert the timestamp.
4009494e 13892
17673adf 13893@multitable @columnfractions 0.15 0.2 0.1 0.2
86fbb8ca
CD
13894@item @b{Default} @tab @b{Alternative 1} @tab @b{Speed key} @tab @b{Alternative 2}
13895@item @kbd{S-@key{TAB}} @tab @kbd{C-u @key{TAB}} @tab @kbd{C} @tab
13896@item @kbd{M-@key{left}} @tab @kbd{C-c C-x l} @tab @kbd{l} @tab @kbd{@key{Esc} @key{left}}
13897@item @kbd{M-S-@key{left}} @tab @kbd{C-c C-x L} @tab @kbd{L} @tab
17673adf 13898@item @kbd{M-@key{right}} @tab @kbd{C-c C-x r} @tab @kbd{r} @tab @kbd{@key{Esc} @key{right}}
86fbb8ca
CD
13899@item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R} @tab @kbd{R} @tab
13900@item @kbd{M-@key{up}} @tab @kbd{C-c C-x u} @tab @kbd{ } @tab @kbd{@key{Esc} @key{up}}
13901@item @kbd{M-S-@key{up}} @tab @kbd{C-c C-x U} @tab @kbd{U} @tab
17673adf 13902@item @kbd{M-@key{down}} @tab @kbd{C-c C-x d} @tab @kbd{ } @tab @kbd{@key{Esc} @key{down}}
86fbb8ca 13903@item @kbd{M-S-@key{down}} @tab @kbd{C-c C-x D} @tab @kbd{D} @tab
17673adf
CD
13904@item @kbd{S-@key{RET}} @tab @kbd{C-c C-x c} @tab @kbd{ } @tab
13905@item @kbd{M-@key{RET}} @tab @kbd{C-c C-x m} @tab @kbd{ } @tab @kbd{@key{Esc} @key{RET}}
13906@item @kbd{M-S-@key{RET}} @tab @kbd{C-c C-x M} @tab @kbd{ } @tab
13907@item @kbd{S-@key{left}} @tab @kbd{C-c @key{left}} @tab @kbd{ } @tab
13908@item @kbd{S-@key{right}} @tab @kbd{C-c @key{right}} @tab @kbd{ } @tab
13909@item @kbd{S-@key{up}} @tab @kbd{C-c @key{up}} @tab @kbd{ } @tab
13910@item @kbd{S-@key{down}} @tab @kbd{C-c @key{down}} @tab @kbd{ } @tab
13911@item @kbd{C-S-@key{left}} @tab @kbd{C-c C-x @key{left}} @tab @kbd{ } @tab
13912@item @kbd{C-S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab @kbd{ } @tab
4009494e
GM
13913@end multitable
13914
c8d0cf5c 13915
ce57c2fe 13916@node Interaction, org-crypt.el, TTY keys, Miscellaneous
4009494e
GM
13917@section Interaction with other packages
13918@cindex packages, interaction with other
a7808fba 13919Org lives in the world of GNU Emacs and interacts in various ways
4009494e
GM
13920with other code out there.
13921
13922@menu
c0468714
GM
13923* Cooperation:: Packages Org cooperates with
13924* Conflicts:: Packages that lead to conflicts
4009494e
GM
13925@end menu
13926
13927@node Cooperation, Conflicts, Interaction, Interaction
a7808fba 13928@subsection Packages that Org cooperates with
4009494e
GM
13929
13930@table @asis
13931@cindex @file{calc.el}
c8d0cf5c 13932@cindex Gillespie, Dave
4009494e 13933@item @file{calc.el} by Dave Gillespie
a7808fba
CD
13934Org uses the Calc package for implementing spreadsheet
13935functionality in its tables (@pxref{The spreadsheet}). Org
13936checks for the availability of Calc by looking for the function
c8d0cf5c 13937@code{calc-eval} which will have been autoloaded during setup if Calc has
a7808fba 13938been installed properly. As of Emacs 22, Calc is part of the Emacs
4009494e 13939distribution. Another possibility for interaction between the two
ce57c2fe 13940packages is using Calc for embedded calculations. @xref{Embedded Mode,
a7808fba 13941, Embedded Mode, Calc, GNU Emacs Calc Manual}.
4009494e 13942@item @file{constants.el} by Carsten Dominik
c8d0cf5c
CD
13943@cindex @file{constants.el}
13944@cindex Dominik, Carsten
13945@vindex org-table-formula-constants
4009494e
GM
13946In a table formula (@pxref{The spreadsheet}), it is possible to use
13947names for natural constants or units. Instead of defining your own
13948constants in the variable @code{org-table-formula-constants}, install
13949the @file{constants} package which defines a large number of constants
13950and units, and lets you use unit prefixes like @samp{M} for
c8d0cf5c 13951@samp{Mega}, etc@. You will need version 2.0 of this package, available
ce57c2fe 13952at @url{http://www.astro.uva.nl/~dominik/Tools}. Org checks for
4009494e
GM
13953the function @code{constants-get}, which has to be autoloaded in your
13954setup. See the installation instructions in the file
13955@file{constants.el}.
13956@item @file{cdlatex.el} by Carsten Dominik
13957@cindex @file{cdlatex.el}
c8d0cf5c 13958@cindex Dominik, Carsten
86fbb8ca 13959Org-mode can make use of the CDLa@TeX{} package to efficiently enter
acedf35c 13960@LaTeX{} fragments into Org files. See @ref{CDLaTeX mode}.
dbc28aaa
CD
13961@item @file{imenu.el} by Ake Stenhoff and Lars Lindberg
13962@cindex @file{imenu.el}
86fbb8ca 13963Imenu allows menu access to an index of items in a file. Org-mode
c8d0cf5c 13964supports Imenu---all you need to do to get the index is the following:
dbc28aaa 13965@lisp
28a16a1b 13966(add-hook 'org-mode-hook
a7808fba 13967 (lambda () (imenu-add-to-menubar "Imenu")))
dbc28aaa 13968@end lisp
c8d0cf5c
CD
13969@vindex org-imenu-depth
13970By default the index is two levels deep---you can modify the depth using
dbc28aaa 13971the option @code{org-imenu-depth}.
4009494e
GM
13972@item @file{remember.el} by John Wiegley
13973@cindex @file{remember.el}
c8d0cf5c 13974@cindex Wiegley, John
86fbb8ca 13975Org used to use this package for capture, but no longer does.
dbc28aaa
CD
13976@item @file{speedbar.el} by Eric M. Ludlam
13977@cindex @file{speedbar.el}
c8d0cf5c 13978@cindex Ludlam, Eric M.
dbc28aaa 13979Speedbar is a package that creates a special frame displaying files and
86fbb8ca 13980index items in files. Org-mode supports Speedbar and allows you to
c8d0cf5c 13981drill into Org files directly from the Speedbar. It also allows you to
dbc28aaa 13982restrict the scope of agenda commands to a file or a subtree by using
a7808fba 13983the command @kbd{<} in the Speedbar frame.
4009494e
GM
13984@cindex @file{table.el}
13985@item @file{table.el} by Takaaki Ota
13986@kindex C-c C-c
13987@cindex table editor, @file{table.el}
13988@cindex @file{table.el}
c8d0cf5c 13989@cindex Ota, Takaaki
4009494e 13990
ed21c5c8
CD
13991Complex ASCII tables with automatic line wrapping, column- and row-spanning,
13992and alignment can be created using the Emacs table package by Takaaki Ota
13993(@uref{http://sourceforge.net/projects/table}, and also part of Emacs 22).
13994Org-mode will recognize these tables and export them properly. Because of
13995interference with other Org-mode functionality, you unfortunately cannot edit
13996these tables directly in the buffer. Instead, you need to use the command
13997@kbd{C-c '} to edit them, similar to source code snippets.
4009494e
GM
13998
13999@table @kbd
acedf35c 14000@orgcmd{C-c ',org-edit-special}
ed21c5c8 14001Edit a @file{table.el} table. Works when the cursor is in a table.el table.
4009494e 14002@c
acedf35c 14003@orgcmd{C-c ~,org-table-create-with-table.el}
c8d0cf5c
CD
14004Insert a @file{table.el} table. If there is already a table at point, this
14005command converts it between the @file{table.el} format and the Org-mode
4009494e
GM
14006format. See the documentation string of the command
14007@code{org-convert-table} for the restrictions under which this is
14008possible.
14009@end table
ed21c5c8 14010@file{table.el} is part of Emacs since Emacs 22.
4009494e 14011@item @file{footnote.el} by Steven L. Baur
c8d0cf5c
CD
14012@cindex @file{footnote.el}
14013@cindex Baur, Steven L.
86fbb8ca
CD
14014Org-mode recognizes numerical footnotes as provided by this package.
14015However, Org-mode also has its own footnote support (@pxref{Footnotes}),
55e0839d 14016which makes using @file{footnote.el} unnecessary.
4009494e
GM
14017@end table
14018
14019@node Conflicts, , Cooperation, Interaction
86fbb8ca 14020@subsection Packages that lead to conflicts with Org-mode
4009494e
GM
14021
14022@table @asis
14023
3da3282e 14024@cindex @code{shift-selection-mode}
c8d0cf5c 14025@vindex org-support-shift-select
3da3282e
CD
14026In Emacs 23, @code{shift-selection-mode} is on by default, meaning that
14027cursor motions combined with the shift key should start or enlarge regions.
14028This conflicts with the use of @kbd{S-@key{cursor}} commands in Org to change
14029timestamps, TODO keywords, priorities, and item bullet types if the cursor is
14030at such a location. By default, @kbd{S-@key{cursor}} commands outside
14031special contexts don't do anything, but you can customize the variable
86fbb8ca 14032@code{org-support-shift-select}. Org-mode then tries to accommodate shift
3da3282e
CD
14033selection by (i) using it outside of the special contexts where special
14034commands apply, and by (ii) extending an existing active region even if the
14035cursor moves across a special context.
4009494e 14036
4009494e 14037@item @file{CUA.el} by Kim. F. Storm
c8d0cf5c
CD
14038@cindex @file{CUA.el}
14039@cindex Storm, Kim. F.
14040@vindex org-replace-disputed-keys
3da3282e 14041Key bindings in Org conflict with the @kbd{S-<cursor>} keys used by CUA mode
c8d0cf5c 14042(as well as @code{pc-select-mode} and @code{s-region-mode}) to select and extend the
3da3282e
CD
14043region. In fact, Emacs 23 has this built-in in the form of
14044@code{shift-selection-mode}, see previous paragraph. If you are using Emacs
c8d0cf5c 1404523, you probably don't want to use another package for this purpose. However,
3da3282e 14046if you prefer to leave these keys to a different package while working in
86fbb8ca 14047Org-mode, configure the variable @code{org-replace-disputed-keys}. When set,
3da3282e
CD
14048Org will move the following key bindings in Org files, and in the agenda
14049buffer (but not during date selection).
4009494e
GM
14050
14051@example
ce57c2fe
BG
14052S-UP @result{} M-p S-DOWN @result{} M-n
14053S-LEFT @result{} M-- S-RIGHT @result{} M-+
14054C-S-LEFT @result{} M-S-- C-S-RIGHT @result{} M-S-+
4009494e
GM
14055@end example
14056
c8d0cf5c 14057@vindex org-disputed-keys
4009494e
GM
14058Yes, these are unfortunately more difficult to remember. If you want
14059to have other replacement keys, look at the variable
14060@code{org-disputed-keys}.
3da3282e 14061
c8d0cf5c
CD
14062@item @file{yasnippet.el}
14063@cindex @file{yasnippet.el}
ce57c2fe 14064The way Org mode binds the TAB key (binding to @code{[tab]} instead of
acedf35c 14065@code{"\t"}) overrules YASnippet's access to this key. The following code
c8d0cf5c
CD
14066fixed this problem:
14067
14068@lisp
14069(add-hook 'org-mode-hook
c0468714
GM
14070 (lambda ()
14071 (org-set-local 'yas/trigger-key [tab])
14072 (define-key yas/keymap [tab] 'yas/next-field-group)))
c8d0cf5c
CD
14073@end lisp
14074
ce57c2fe
BG
14075The latest version of yasnippet doesn't play well with Org mode. If the
14076above code does not fix the conflict, start by defining the following
14077function:
14078
14079@lisp
14080(defun yas/org-very-safe-expand ()
14081 (let ((yas/fallback-behavior 'return-nil)) (yas/expand)))
14082@end lisp
14083
14084Then, tell Org mode what to do with the new function:
14085
14086@lisp
14087(add-hook 'org-mode-hook
14088 (lambda ()
14089 (make-variable-buffer-local 'yas/trigger-key)
14090 (setq yas/trigger-key [tab])
14091 (add-to-list 'org-tab-first-hook 'yas/org-very-safe-expand)
14092 (define-key yas/keymap [tab] 'yas/next-field)))
14093@end lisp
14094
4009494e
GM
14095@item @file{windmove.el} by Hovav Shacham
14096@cindex @file{windmove.el}
c8d0cf5c 14097This package also uses the @kbd{S-<cursor>} keys, so everything written
86fbb8ca
CD
14098in the paragraph above about CUA mode also applies here. If you want make
14099the windmove function active in locations where Org-mode does not have
14100special functionality on @kbd{S-@key{cursor}}, add this to your
14101configuration:
14102
14103@lisp
14104;; Make windmove work in org-mode:
14105(add-hook 'org-shiftup-final-hook 'windmove-up)
14106(add-hook 'org-shiftleft-final-hook 'windmove-left)
14107(add-hook 'org-shiftdown-final-hook 'windmove-down)
14108(add-hook 'org-shiftright-final-hook 'windmove-right)
14109@end lisp
4009494e 14110
a351880d
CD
14111@item @file{viper.el} by Michael Kifer
14112@cindex @file{viper.el}
14113@kindex C-c /
14114Viper uses @kbd{C-c /} and therefore makes this key not access the
14115corresponding Org-mode command @code{org-sparse-tree}. You need to find
14116another key for this command, or override the key in
14117@code{viper-vi-global-user-map} with
14118
14119@lisp
14120(define-key viper-vi-global-user-map "C-c /" 'org-sparse-tree)
14121@end lisp
14122
4009494e
GM
14123@end table
14124
ce57c2fe
BG
14125@node org-crypt.el, , Interaction, Miscellaneous
14126@section org-crypt.el
14127@cindex @file{org-crypt.el}
14128@cindex @code{org-decrypt-entry}
14129
14130Org-crypt will encrypt the text of an entry, but not the headline, or
14131properties. Org-crypt uses the Emacs EasyPG library to encrypt and decrypt
14132files.
14133
14134Any text below a headline that has a @samp{:crypt:} tag will be automatically
14135be encrypted when the file is saved. If you want to use a different tag just
14136customize the @code{org-crypt-tag-matcher} setting.
14137
14138To use org-crypt it is suggested that you have the following in your
14139@file{.emacs}:
14140
14141@example
14142(require 'org-crypt)
14143(org-crypt-use-before-save-magic)
14144(setq org-tags-exclude-from-inheritance (quote ("crypt")))
14145
14146(setq org-crypt-key nil)
14147 ;; GPG key to use for encryption
14148 ;; Either the Key ID or set to nil to use symmetric encryption.
14149
14150(setq auto-save-default nil)
14151 ;; Auto-saving does not cooperate with org-crypt.el: so you need
14152 ;; to turn it off if you plan to use org-crypt.el quite often.
14153 ;; Otherwise, you'll get an (annoying) message each time you
14154 ;; start Org.
14155
14156 ;; To turn it off only locally, you can insert this:
14157 ;;
14158 ;; # -*- buffer-auto-save-file-name: nil; -*-
14159@end example
14160
14161Excluding the crypt tag from inheritance prevents already encrypted text
14162being encrypted again.
7006d207
CD
14163
14164@node Hacking, MobileOrg, Miscellaneous, Top
b349f79f 14165@appendix Hacking
c8d0cf5c 14166@cindex hacking
b349f79f
CD
14167
14168This appendix covers some aspects where users can extend the functionality of
a7808fba 14169Org.
4009494e
GM
14170
14171@menu
c0468714
GM
14172* Hooks:: Who to reach into Org's internals
14173* Add-on packages:: Available extensions
14174* Adding hyperlink types:: New custom link types
14175* Context-sensitive commands:: How to add functionality to such commands
acedf35c 14176* Tables in arbitrary syntax:: Orgtbl for @LaTeX{} and other programs
c0468714
GM
14177* Dynamic blocks:: Automatically filled blocks
14178* Special agenda views:: Customized views
c8d0cf5c 14179* Extracting agenda information:: Postprocessing of agenda information
c0468714
GM
14180* Using the property API:: Writing programs that use entry properties
14181* Using the mapping API:: Mapping over all or selected entries
4009494e
GM
14182@end menu
14183
c8d0cf5c
CD
14184@node Hooks, Add-on packages, Hacking, Hacking
14185@section Hooks
14186@cindex hooks
14187
14188Org has a large number of hook variables that can be used to add
14189functionality. This appendix about hacking is going to illustrate the
14190use of some of them. A complete list of all hooks with documentation is
14191maintained by the Worg project and can be found at
14192@uref{http://orgmode.org/worg/org-configs/org-hooks.php}.
14193
14194@node Add-on packages, Adding hyperlink types, Hooks, Hacking
14195@section Add-on packages
14196@cindex add-on packages
14197
14198A large number of add-on packages have been written by various authors.
14199These packages are not part of Emacs, but they are distributed as contributed
86fbb8ca 14200packages with the separate release available at the Org-mode home page at
c8d0cf5c
CD
14201@uref{http://orgmode.org}. The list of contributed packages, along with
14202documentation about each package, is maintained by the Worg project at
14203@uref{http://orgmode.org/worg/org-contrib/}.
14204
14205
14206
14207@node Adding hyperlink types, Context-sensitive commands, Add-on packages, Hacking
4009494e
GM
14208@section Adding hyperlink types
14209@cindex hyperlinks, adding new types
14210
a7808fba 14211Org has a large number of hyperlink types built-in
c8d0cf5c
CD
14212(@pxref{Hyperlinks}). If you would like to add new link types, Org
14213provides an interface for doing so. Let's look at an example file,
14214@file{org-man.el}, that will add support for creating links like
a7808fba 14215@samp{[[man:printf][The printf manpage]]} to show Unix manual pages inside
c8d0cf5c 14216Emacs:
4009494e
GM
14217
14218@lisp
a7808fba 14219;;; org-man.el - Support for links to manpages in Org
4009494e
GM
14220
14221(require 'org)
14222
14223(org-add-link-type "man" 'org-man-open)
14224(add-hook 'org-store-link-functions 'org-man-store-link)
14225
14226(defcustom org-man-command 'man
14227 "The Emacs command to be used to display a man page."
14228 :group 'org-link
14229 :type '(choice (const man) (const woman)))
14230
14231(defun org-man-open (path)
14232 "Visit the manpage on PATH.
14233PATH should be a topic that can be thrown at the man command."
14234 (funcall org-man-command path))
14235
14236(defun org-man-store-link ()
14237 "Store a link to a manpage."
14238 (when (memq major-mode '(Man-mode woman-mode))
14239 ;; This is a man page, we do make this link
14240 (let* ((page (org-man-get-page-name))
14241 (link (concat "man:" page))
14242 (description (format "Manpage for %s" page)))
14243 (org-store-link-props
14244 :type "man"
14245 :link link
14246 :description description))))
14247
14248(defun org-man-get-page-name ()
14249 "Extract the page name from the buffer name."
14250 ;; This works for both `Man-mode' and `woman-mode'.
14251 (if (string-match " \\(\\S-+\\)\\*" (buffer-name))
14252 (match-string 1 (buffer-name))
14253 (error "Cannot create link to this man page")))
14254
14255(provide 'org-man)
14256
14257;;; org-man.el ends here
14258@end lisp
14259
14260@noindent
14261You would activate this new link type in @file{.emacs} with
14262
14263@lisp
14264(require 'org-man)
14265@end lisp
14266
14267@noindent
864c9740 14268Let's go through the file and see what it does.
4009494e 14269@enumerate
28a16a1b 14270@item
4009494e
GM
14271It does @code{(require 'org)} to make sure that @file{org.el} has been
14272loaded.
14273@item
14274The next line calls @code{org-add-link-type} to define a new link type
14275with prefix @samp{man}. The call also contains the name of a function
14276that will be called to follow such a link.
14277@item
c8d0cf5c 14278@vindex org-store-link-functions
4009494e
GM
14279The next line adds a function to @code{org-store-link-functions}, in
14280order to allow the command @kbd{C-c l} to record a useful link in a
14281buffer displaying a man page.
14282@end enumerate
14283
14284The rest of the file defines the necessary variables and functions.
c8d0cf5c 14285First there is a customization variable that determines which Emacs
a7808fba 14286command should be used to display man pages. There are two options,
4009494e 14287@code{man} and @code{woman}. Then the function to follow a link is
c8d0cf5c 14288defined. It gets the link path as an argument---in this case the link
4009494e
GM
14289path is just a topic for the manual command. The function calls the
14290value of @code{org-man-command} to display the man page.
14291
14292Finally the function @code{org-man-store-link} is defined. When you try
c8d0cf5c 14293to store a link with @kbd{C-c l}, this function will be called to
4009494e 14294try to make a link. The function must first decide if it is supposed to
c8d0cf5c 14295create the link for this buffer type; we do this by checking the value
4009494e 14296of the variable @code{major-mode}. If not, the function must exit and
a7808fba
CD
14297return the value @code{nil}. If yes, the link is created by getting the
14298manual topic from the buffer name and prefixing it with the string
4009494e
GM
14299@samp{man:}. Then it must call the command @code{org-store-link-props}
14300and set the @code{:type} and @code{:link} properties. Optionally you
14301can also set the @code{:description} property to provide a default for
a7808fba 14302the link description when the link is later inserted into an Org
4009494e
GM
14303buffer with @kbd{C-c C-l}.
14304
acedf35c 14305When it makes sense for your new link type, you may also define a function
ce57c2fe 14306@code{org-PREFIX-complete-link} that implements special (e.g.@: completion)
c8d0cf5c
CD
14307support for inserting such a link with @kbd{C-c C-l}. Such a function should
14308not accept any arguments, and return the full link with prefix.
14309
14310@node Context-sensitive commands, Tables in arbitrary syntax, Adding hyperlink types, Hacking
14311@section Context-sensitive commands
14312@cindex context-sensitive commands, hooks
14313@cindex add-ons, context-sensitive commands
14314@vindex org-ctrl-c-ctrl-c-hook
14315
14316Org has several commands that act differently depending on context. The most
14317important example it the @kbd{C-c C-c} (@pxref{The very busy C-c C-c key}).
14318Also the @kbd{M-cursor} and @kbd{M-S-cursor} keys have this property.
14319
14320Add-ons can tap into this functionality by providing a function that detects
14321special context for that add-on and executes functionality appropriate for
14322the context. Here is an example from Dan Davison's @file{org-R.el} which
afe98dfa
CD
14323allows you to evaluate commands based on the @file{R} programming language
14324@footnote{@file{org-R.el} has been replaced by the org-mode functionality
14325described in @ref{Working With Source Code} and is now obsolete.}. For this
14326package, special contexts are lines that start with @code{#+R:} or
c8d0cf5c
CD
14327@code{#+RR:}.
14328
14329@lisp
14330(defun org-R-apply-maybe ()
14331 "Detect if this is context for org-R and execute R commands."
14332 (if (save-excursion
14333 (beginning-of-line 1)
14334 (looking-at "#\\+RR?:"))
14335 (progn (call-interactively 'org-R-apply)
14336 t) ;; to signal that we took action
14337 nil)) ;; to signal that we did not
14338
14339(add-hook 'org-ctrl-c-ctrl-c-hook 'org-R-apply-maybe)
14340@end lisp
14341
14342The function first checks if the cursor is in such a line. If that is the
14343case, @code{org-R-apply} is called and the function returns @code{t} to
14344signal that action was taken, and @kbd{C-c C-c} will stop looking for other
ce57c2fe
BG
14345contexts. If the function finds it should do nothing locally, it returns
14346@code{nil} so that other, similar functions can have a try.
c8d0cf5c
CD
14347
14348
14349@node Tables in arbitrary syntax, Dynamic blocks, Context-sensitive commands, Hacking
a7808fba 14350@section Tables and lists in arbitrary syntax
4009494e 14351@cindex tables, in other modes
dbc28aaa 14352@cindex lists, in other modes
a7808fba 14353@cindex Orgtbl mode
4009494e 14354
a7808fba 14355Since Orgtbl mode can be used as a minor mode in arbitrary buffers, a
4009494e 14356frequent feature request has been to make it work with native tables in
acedf35c 14357specific languages, for example @LaTeX{}. However, this is extremely
dbc28aaa 14358hard to do in a general way, would lead to a customization nightmare,
ce57c2fe 14359and would take away much of the simplicity of the Orgtbl mode table
dbc28aaa
CD
14360editor.
14361
a7808fba 14362This appendix describes a different approach. We keep the Orgtbl mode
4009494e
GM
14363table in its native format (the @i{source table}), and use a custom
14364function to @i{translate} the table to the correct syntax, and to
14365@i{install} it in the right location (the @i{target table}). This puts
14366the burden of writing conversion functions on the user, but it allows
14367for a very flexible system.
14368
86fbb8ca
CD
14369Bastien added the ability to do the same with lists, in Orgstruct mode. You
14370can use Org's facilities to edit and structure lists by turning
14371@code{orgstruct-mode} on, then locally exporting such lists in another format
acedf35c 14372(HTML, @LaTeX{} or Texinfo.)
dbc28aaa
CD
14373
14374
4009494e 14375@menu
c0468714
GM
14376* Radio tables:: Sending and receiving radio tables
14377* A LaTeX example:: Step by step, almost a tutorial
14378* Translator functions:: Copy and modify
14379* Radio lists:: Doing the same for lists
4009494e
GM
14380@end menu
14381
14382@node Radio tables, A LaTeX example, Tables in arbitrary syntax, Tables in arbitrary syntax
14383@subsection Radio tables
14384@cindex radio tables
14385
14386To define the location of the target table, you first need to create two
14387lines that are comments in the current mode, but contain magic words for
a7808fba 14388Orgtbl mode to find. Orgtbl mode will insert the translated table
4009494e
GM
14389between these lines, replacing whatever was there before. For example:
14390
14391@example
14392/* BEGIN RECEIVE ORGTBL table_name */
14393/* END RECEIVE ORGTBL table_name */
14394@end example
14395
14396@noindent
14397Just above the source table, we put a special line that tells
a7808fba 14398Orgtbl mode how to translate this table and where to install it. For
4009494e 14399example:
c8d0cf5c 14400@cindex #+ORGTBL
4009494e
GM
14401@example
14402#+ORGTBL: SEND table_name translation_function arguments....
14403@end example
14404
14405@noindent
14406@code{table_name} is the reference name for the table that is also used
ce57c2fe 14407in the receiver lines. @code{translation_function} is the Lisp function
4009494e
GM
14408that does the translation. Furthermore, the line can contain a list of
14409arguments (alternating key and value) at the end. The arguments will be
14410passed as a property list to the translation function for
14411interpretation. A few standard parameters are already recognized and
14412acted upon before the translation function is called:
14413
14414@table @code
14415@item :skip N
b349f79f
CD
14416Skip the first N lines of the table. Hlines do count as separate lines for
14417this parameter!
14418
4009494e
GM
14419@item :skipcols (n1 n2 ...)
14420List of columns that should be skipped. If the table has a column with
14421calculation marks, that column is automatically discarded as well.
14422Please note that the translator function sees the table @emph{after} the
14423removal of these columns, the function never knows that there have been
14424additional columns.
14425@end table
14426
14427@noindent
14428The one problem remaining is how to keep the source table in the buffer
14429without disturbing the normal workings of the file, for example during
acedf35c 14430compilation of a C file or processing of a @LaTeX{} file. There are a
4009494e
GM
14431number of different solutions:
14432
14433@itemize @bullet
14434@item
14435The table could be placed in a block comment if that is supported by the
a7808fba 14436language. For example, in C mode you could wrap the table between
4009494e 14437@samp{/*} and @samp{*/} lines.
28a16a1b 14438@item
4009494e 14439Sometimes it is possible to put the table after some kind of @i{END}
c8d0cf5c 14440statement, for example @samp{\bye} in @TeX{} and @samp{\end@{document@}}
acedf35c 14441in @LaTeX{}.
4009494e 14442@item
c8d0cf5c 14443You can just comment the table line-by-line whenever you want to process
4009494e 14444the file, and uncomment it whenever you need to edit the table. This
c8d0cf5c
CD
14445only sounds tedious---the command @kbd{M-x orgtbl-toggle-comment}
14446makes this comment-toggling very easy, in particular if you bind it to a
4009494e
GM
14447key.
14448@end itemize
14449
14450@node A LaTeX example, Translator functions, Radio tables, Tables in arbitrary syntax
acedf35c
CD
14451@subsection A @LaTeX{} example of radio tables
14452@cindex @LaTeX{}, and Orgtbl mode
4009494e 14453
acedf35c 14454The best way to wrap the source table in @LaTeX{} is to use the
4009494e
GM
14455@code{comment} environment provided by @file{comment.sty}. It has to be
14456activated by placing @code{\usepackage@{comment@}} into the document
a7808fba 14457header. Orgtbl mode can insert a radio table skeleton@footnote{By
acedf35c 14458default this works only for @LaTeX{}, HTML, and Texinfo. Configure the
4009494e
GM
14459variable @code{orgtbl-radio-tables} to install templates for other
14460modes.} with the command @kbd{M-x orgtbl-insert-radio-table}. You will
55e0839d 14461be prompted for a table name, let's say we use @samp{salesfigures}. You
4009494e
GM
14462will then get the following template:
14463
c8d0cf5c 14464@cindex #+ORGTBL, SEND
4009494e
GM
14465@example
14466% BEGIN RECEIVE ORGTBL salesfigures
14467% END RECEIVE ORGTBL salesfigures
14468\begin@{comment@}
14469#+ORGTBL: SEND salesfigures orgtbl-to-latex
14470| | |
14471\end@{comment@}
14472@end example
14473
14474@noindent
acedf35c 14475@vindex @LaTeX{}-verbatim-environments
a7808fba 14476The @code{#+ORGTBL: SEND} line tells Orgtbl mode to use the function
acedf35c 14477@code{orgtbl-to-latex} to convert the table into @LaTeX{} and to put it
4009494e 14478into the receiver location with name @code{salesfigures}. You may now
acedf35c 14479fill in the table---feel free to use the spreadsheet features@footnote{If
4009494e 14480the @samp{#+TBLFM} line contains an odd number of dollar characters,
acedf35c 14481this may cause problems with font-lock in @LaTeX{} mode. As shown in the
4009494e
GM
14482example you can fix this by adding an extra line inside the
14483@code{comment} environment that is used to balance the dollar
c8d0cf5c 14484expressions. If you are using AUC@TeX{} with the font-latex library, a
4009494e
GM
14485much better solution is to add the @code{comment} environment to the
14486variable @code{LaTeX-verbatim-environments}.}:
14487
14488@example
14489% BEGIN RECEIVE ORGTBL salesfigures
14490% END RECEIVE ORGTBL salesfigures
14491\begin@{comment@}
14492#+ORGTBL: SEND salesfigures orgtbl-to-latex
14493| Month | Days | Nr sold | per day |
14494|-------+------+---------+---------|
14495| Jan | 23 | 55 | 2.4 |
14496| Feb | 21 | 16 | 0.8 |
14497| March | 22 | 278 | 12.6 |
14498#+TBLFM: $4=$3/$2;%.1f
14499% $ (optional extra dollar to keep font-lock happy, see footnote)
14500\end@{comment@}
14501@end example
14502
14503@noindent
14504When you are done, press @kbd{C-c C-c} in the table to get the converted
14505table inserted between the two marker lines.
14506
55e0839d 14507Now let's assume you want to make the table header by hand, because you
c8d0cf5c
CD
14508want to control how columns are aligned, etc@. In this case we make sure
14509that the table translator skips the first 2 lines of the source
ce57c2fe 14510table, and tell the command to work as a @i{splice}, i.e.@: to not produce
4009494e
GM
14511header and footer commands of the target table:
14512
14513@example
14514\begin@{tabular@}@{lrrr@}
14515Month & \multicolumn@{1@}@{c@}@{Days@} & Nr.\ sold & per day\\
14516% BEGIN RECEIVE ORGTBL salesfigures
14517% END RECEIVE ORGTBL salesfigures
14518\end@{tabular@}
14519%
14520\begin@{comment@}
14521#+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2
14522| Month | Days | Nr sold | per day |
14523|-------+------+---------+---------|
14524| Jan | 23 | 55 | 2.4 |
14525| Feb | 21 | 16 | 0.8 |
14526| March | 22 | 278 | 12.6 |
14527#+TBLFM: $4=$3/$2;%.1f
14528\end@{comment@}
14529@end example
14530
acedf35c 14531The @LaTeX{} translator function @code{orgtbl-to-latex} is already part of
a7808fba 14532Orgtbl mode. It uses a @code{tabular} environment to typeset the table
4009494e 14533and marks horizontal lines with @code{\hline}. Furthermore, it
c8d0cf5c 14534interprets the following parameters (see also @pxref{Translator functions}):
4009494e
GM
14535
14536@table @code
14537@item :splice nil/t
14538When set to t, return only table body lines, don't wrap them into a
14539tabular environment. Default is nil.
14540
14541@item :fmt fmt
c8d0cf5c 14542A format to be used to wrap each field, it should contain @code{%s} for the
4009494e
GM
14543original field value. For example, to wrap each field value in dollars,
14544you could use @code{:fmt "$%s$"}. This may also be a property list with
ce57c2fe 14545column numbers and formats, for example @code{:fmt (2 "$%s$" 4 "%s\\%%")}.
a7808fba
CD
14546A function of one argument can be used in place of the strings; the
14547function must return a formatted string.
4009494e
GM
14548
14549@item :efmt efmt
14550Use this format to print numbers with exponentials. The format should
14551have @code{%s} twice for inserting mantissa and exponent, for example
14552@code{"%s\\times10^@{%s@}"}. The default is @code{"%s\\,(%s)"}. This
14553may also be a property list with column numbers and formats, for example
14554@code{:efmt (2 "$%s\\times10^@{%s@}$" 4 "$%s\\cdot10^@{%s@}$")}. After
14555@code{efmt} has been applied to a value, @code{fmt} will also be
a7808fba
CD
14556applied. Similar to @code{fmt}, functions of two arguments can be
14557supplied instead of strings.
4009494e
GM
14558@end table
14559
dbc28aaa 14560@node Translator functions, Radio lists, A LaTeX example, Tables in arbitrary syntax
4009494e 14561@subsection Translator functions
a7808fba 14562@cindex HTML, and Orgtbl mode
4009494e
GM
14563@cindex translator function
14564
b349f79f
CD
14565Orgtbl mode has several translator functions built-in: @code{orgtbl-to-csv}
14566(comma-separated values), @code{orgtbl-to-tsv} (TAB-separated values)
14567@code{orgtbl-to-latex}, @code{orgtbl-to-html}, and @code{orgtbl-to-texinfo}.
14568Except for @code{orgtbl-to-html}@footnote{The HTML translator uses the same
14569code that produces tables during HTML export.}, these all use a generic
14570translator, @code{orgtbl-to-generic}. For example, @code{orgtbl-to-latex}
14571itself is a very short function that computes the column definitions for the
14572@code{tabular} environment, defines a few field and line separators and then
c8d0cf5c 14573hands processing over to the generic translator. Here is the entire code:
4009494e
GM
14574
14575@lisp
14576@group
14577(defun orgtbl-to-latex (table params)
a7808fba 14578 "Convert the Orgtbl mode TABLE to LaTeX."
4009494e
GM
14579 (let* ((alignment (mapconcat (lambda (x) (if x "r" "l"))
14580 org-table-last-alignment ""))
14581 (params2
14582 (list
14583 :tstart (concat "\\begin@{tabular@}@{" alignment "@}")
14584 :tend "\\end@{tabular@}"
14585 :lstart "" :lend " \\\\" :sep " & "
14586 :efmt "%s\\,(%s)" :hline "\\hline")))
14587 (orgtbl-to-generic table (org-combine-plists params2 params))))
14588@end group
14589@end lisp
14590
14591As you can see, the properties passed into the function (variable
14592@var{PARAMS}) are combined with the ones newly defined in the function
ce57c2fe 14593(variable @var{PARAMS2}). The ones passed into the function (i.e.@: the
4009494e 14594ones set by the @samp{ORGTBL SEND} line) take precedence. So if you
acedf35c 14595would like to use the @LaTeX{} translator, but wanted the line endings to
4009494e
GM
14596be @samp{\\[2mm]} instead of the default @samp{\\}, you could just
14597overrule the default with
14598
14599@example
14600#+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]"
14601@end example
14602
14603For a new language, you can either write your own converter function in
acedf35c 14604analogy with the @LaTeX{} translator, or you can use the generic function
4009494e
GM
14605directly. For example, if you have a language where a table is started
14606with @samp{!BTBL!}, ended with @samp{!ETBL!}, and where table lines are
c8d0cf5c 14607started with @samp{!BL!}, ended with @samp{!EL!}, and where the field
4009494e
GM
14608separator is a TAB, you could call the generic translator like this (on
14609a single line!):
14610
14611@example
14612#+ORGTBL: SEND test orgtbl-to-generic :tstart "!BTBL!" :tend "!ETBL!"
14613 :lstart "!BL! " :lend " !EL!" :sep "\t"
14614@end example
14615
14616@noindent
14617Please check the documentation string of the function
14618@code{orgtbl-to-generic} for a full list of parameters understood by
c8d0cf5c 14619that function, and remember that you can pass each of them into
4009494e
GM
14620@code{orgtbl-to-latex}, @code{orgtbl-to-texinfo}, and any other function
14621using the generic function.
14622
14623Of course you can also write a completely new function doing complicated
14624things the generic translator cannot do. A translator function takes
14625two arguments. The first argument is the table, a list of lines, each
14626line either the symbol @code{hline} or a list of fields. The second
14627argument is the property list containing all parameters specified in the
14628@samp{#+ORGTBL: SEND} line. The function must return a single string
14629containing the formatted table. If you write a generally useful
c8d0cf5c 14630translator, please post it on @email{emacs-orgmode@@gnu.org} so that
4009494e
GM
14631others can benefit from your work.
14632
86fbb8ca 14633@node Radio lists, , Translator functions, Tables in arbitrary syntax
dbc28aaa
CD
14634@subsection Radio lists
14635@cindex radio lists
14636@cindex org-list-insert-radio-list
14637
acedf35c 14638Sending and receiving radio lists works exactly the same way as sending and
6eb02347 14639receiving radio tables (@pxref{Radio tables}). As for radio tables, you can
acedf35c 14640insert radio list templates in HTML, @LaTeX{} and Texinfo modes by calling
6eb02347 14641@code{org-list-insert-radio-list}.
dbc28aaa
CD
14642
14643Here are the differences with radio tables:
14644
14645@itemize @minus
14646@item
86fbb8ca
CD
14647Orgstruct mode must be active.
14648@item
14649Use the @code{ORGLST} keyword instead of @code{ORGTBL}.
dbc28aaa
CD
14650@item
14651The available translation functions for radio lists don't take
14652parameters.
28a16a1b 14653@item
c8d0cf5c 14654@kbd{C-c C-c} will work when pressed on the first item of the list.
dbc28aaa
CD
14655@end itemize
14656
acedf35c
CD
14657Here is a @LaTeX{} example. Let's say that you have this in your
14658@LaTeX{} file:
dbc28aaa 14659
86fbb8ca 14660@cindex #+ORGLST
dbc28aaa
CD
14661@example
14662% BEGIN RECEIVE ORGLST to-buy
14663% END RECEIVE ORGLST to-buy
14664\begin@{comment@}
86fbb8ca 14665#+ORGLST: SEND to-buy org-list-to-latex
dbc28aaa
CD
14666- a new house
14667- a new computer
14668 + a new keyboard
14669 + a new mouse
14670- a new life
14671\end@{comment@}
14672@end example
14673
14674Pressing `C-c C-c' on @code{a new house} and will insert the converted
acedf35c 14675@LaTeX{} list between the two marker lines.
dbc28aaa 14676
b349f79f 14677@node Dynamic blocks, Special agenda views, Tables in arbitrary syntax, Hacking
4009494e
GM
14678@section Dynamic blocks
14679@cindex dynamic blocks
14680
a7808fba 14681Org documents can contain @emph{dynamic blocks}. These are
4009494e
GM
14682specially marked regions that are updated by some user-written function.
14683A good example for such a block is the clock table inserted by the
14684command @kbd{C-c C-x C-r} (@pxref{Clocking work time}).
14685
acedf35c 14686Dynamic blocks are enclosed by a BEGIN-END structure that assigns a name
4009494e
GM
14687to the block and can also specify parameters for the function producing
14688the content of the block.
14689
acedf35c 14690@cindex #+BEGIN:dynamic block
4009494e
GM
14691@example
14692#+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
14693
14694#+END:
14695@end example
14696
14697Dynamic blocks are updated with the following commands
14698
14699@table @kbd
acedf35c 14700@orgcmd{C-c C-x C-u,org-dblock-update}
4009494e 14701Update dynamic block at point.
acedf35c 14702@orgkey{C-u C-c C-x C-u}
4009494e
GM
14703Update all dynamic blocks in the current file.
14704@end table
14705
14706Updating a dynamic block means to remove all the text between BEGIN and
14707END, parse the BEGIN line for parameters and then call the specific
28a16a1b
CD
14708writer function for this block to insert the new content. If you want
14709to use the original content in the writer function, you can use the
14710extra parameter @code{:content}.
14711
14712For a block with name @code{myblock}, the writer function is
4009494e
GM
14713@code{org-dblock-write:myblock} with as only parameter a property list
14714with the parameters given in the begin line. Here is a trivial example
14715of a block that keeps track of when the block update function was last
14716run:
14717
14718@example
14719#+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M"
14720
14721#+END:
14722@end example
14723
14724@noindent
14725The corresponding block writer function could look like this:
14726
14727@lisp
14728(defun org-dblock-write:block-update-time (params)
14729 (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
14730 (insert "Last block update at: "
14731 (format-time-string fmt (current-time)))))
14732@end lisp
14733
14734If you want to make sure that all dynamic blocks are always up-to-date,
14735you could add the function @code{org-update-all-dblocks} to a hook, for
14736example @code{before-save-hook}. @code{org-update-all-dblocks} is
c8d0cf5c 14737written in a way such that it does nothing in buffers that are not in
a7808fba 14738@code{org-mode}.
4009494e 14739
ce57c2fe
BG
14740You can narrow the current buffer to the current dynamic block (like any
14741other block) with @code{org-narrow-to-block}.
14742
c8d0cf5c 14743@node Special agenda views, Extracting agenda information, Dynamic blocks, Hacking
a7808fba 14744@section Special agenda views
4009494e
GM
14745@cindex agenda views, user-defined
14746
ce57c2fe
BG
14747@vindex org-agenda-skip-function
14748@vindex org-agenda-skip-function-global
afe98dfa 14749Org provides a special hook that can be used to narrow down the selection
ce57c2fe
BG
14750made by these agenda views: @code{agenda}, @code{todo}, @code{alltodo},
14751@code{tags}, @code{tags-todo}, @code{tags-tree}. You may specify a function
14752that is used at each match to verify if the match should indeed be part of
14753the agenda view, and if not, how much should be skipped. You can specify a
14754global condition that will be applied to all agenda views, this condition
14755would be stored in the variable @code{org-agenda-skip-function-global}. More
14756commonly, such a definition is applied only to specific custom searches,
14757using @code{org-agenda-skip-function}.
4009494e
GM
14758
14759Let's say you want to produce a list of projects that contain a WAITING
14760tag anywhere in the project tree. Let's further assume that you have
a7808fba
CD
14761marked all tree headings that define a project with the TODO keyword
14762PROJECT. In this case you would run a TODO search for the keyword
4009494e
GM
14763PROJECT, but skip the match unless there is a WAITING tag anywhere in
14764the subtree belonging to the project line.
14765
14766To achieve this, you must write a function that searches the subtree for
14767the tag. If the tag is found, the function must return @code{nil} to
14768indicate that this match should not be skipped. If there is no such
14769tag, return the location of the end of the subtree, to indicate that
14770search should continue from there.
14771
14772@lisp
14773(defun my-skip-unless-waiting ()
14774 "Skip trees that are not waiting"
14775 (let ((subtree-end (save-excursion (org-end-of-subtree t))))
dbc28aaa 14776 (if (re-search-forward ":waiting:" subtree-end t)
4009494e
GM
14777 nil ; tag found, do not skip
14778 subtree-end))) ; tag not found, continue after end of subtree
14779@end lisp
14780
14781Now you may use this function in an agenda custom command, for example
14782like this:
14783
14784@lisp
14785(org-add-agenda-custom-command
14786 '("b" todo "PROJECT"
e45e3595 14787 ((org-agenda-skip-function 'my-skip-unless-waiting)
4009494e
GM
14788 (org-agenda-overriding-header "Projects waiting for something: "))))
14789@end lisp
14790
c8d0cf5c 14791@vindex org-agenda-overriding-header
4009494e
GM
14792Note that this also binds @code{org-agenda-overriding-header} to get a
14793meaningful header in the agenda view.
14794
c8d0cf5c
CD
14795@vindex org-odd-levels-only
14796@vindex org-agenda-skip-function
a7808fba
CD
14797A general way to create custom searches is to base them on a search for
14798entries with a certain level limit. If you want to study all entries with
c8d0cf5c
CD
14799your custom search function, simply do a search for
14800@samp{LEVEL>0}@footnote{Note that, when using @code{org-odd-levels-only}, a
14801level number corresponds to order in the hierarchy, not to the number of
14802stars.}, and then use @code{org-agenda-skip-function} to select the entries
14803you really want to have.
a7808fba 14804
4009494e
GM
14805You may also put a Lisp form into @code{org-agenda-skip-function}. In
14806particular, you may use the functions @code{org-agenda-skip-entry-if}
14807and @code{org-agenda-skip-subtree-if} in this form, for example:
14808
14809@table @code
6d72f719 14810@item (org-agenda-skip-entry-if 'scheduled)
4009494e 14811Skip current entry if it has been scheduled.
6d72f719 14812@item (org-agenda-skip-entry-if 'notscheduled)
4009494e 14813Skip current entry if it has not been scheduled.
6d72f719 14814@item (org-agenda-skip-entry-if 'deadline)
4009494e 14815Skip current entry if it has a deadline.
6d72f719 14816@item (org-agenda-skip-entry-if 'scheduled 'deadline)
4009494e 14817Skip current entry if it has a deadline, or if it is scheduled.
6d72f719 14818@item (org-agenda-skip-entry-if 'todo '("TODO" "WAITING"))
ed21c5c8 14819Skip current entry if the TODO keyword is TODO or WAITING.
6d72f719 14820@item (org-agenda-skip-entry-if 'todo 'done)
ed21c5c8 14821Skip current entry if the TODO keyword marks a DONE state.
6d72f719 14822@item (org-agenda-skip-entry-if 'timestamp)
c8d0cf5c 14823Skip current entry if it has any timestamp, may also be deadline or scheduled.
6d72f719 14824@item (org-agenda-skip-entry 'regexp "regular expression")
dbc28aaa 14825Skip current entry if the regular expression matches in the entry.
6d72f719 14826@item (org-agenda-skip-entry 'notregexp "regular expression")
dbc28aaa 14827Skip current entry unless the regular expression matches.
6d72f719 14828@item (org-agenda-skip-subtree-if 'regexp "regular expression")
4009494e
GM
14829Same as above, but check and skip the entire subtree.
14830@end table
14831
14832Therefore we could also have written the search for WAITING projects
14833like this, even without defining a special function:
14834
14835@lisp
14836(org-add-agenda-custom-command
14837 '("b" todo "PROJECT"
14838 ((org-agenda-skip-function '(org-agenda-skip-subtree-if
dbc28aaa 14839 'regexp ":waiting:"))
4009494e
GM
14840 (org-agenda-overriding-header "Projects waiting for something: "))))
14841@end lisp
14842
c8d0cf5c
CD
14843@node Extracting agenda information, Using the property API, Special agenda views, Hacking
14844@section Extracting agenda information
14845@cindex agenda, pipe
14846@cindex Scripts, for agenda processing
14847
14848@vindex org-agenda-custom-commands
14849Org provides commands to access agenda information for the command
14850line in Emacs batch mode. This extracted information can be sent
14851directly to a printer, or it can be read by a program that does further
14852processing of the data. The first of these commands is the function
14853@code{org-batch-agenda}, that produces an agenda view and sends it as
14854ASCII text to STDOUT. The command takes a single string as parameter.
14855If the string has length 1, it is used as a key to one of the commands
14856you have configured in @code{org-agenda-custom-commands}, basically any
14857key you can use after @kbd{C-c a}. For example, to directly print the
14858current TODO list, you could use
14859
14860@example
14861emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
14862@end example
14863
14864If the parameter is a string with 2 or more characters, it is used as a
14865tags/TODO match string. For example, to print your local shopping list
14866(all items with the tag @samp{shop}, but excluding the tag
14867@samp{NewYork}), you could use
14868
14869@example
14870emacs -batch -l ~/.emacs \
14871 -eval '(org-batch-agenda "+shop-NewYork")' | lpr
14872@end example
14873
14874@noindent
14875You may also modify parameters on the fly like this:
14876
14877@example
14878emacs -batch -l ~/.emacs \
14879 -eval '(org-batch-agenda "a" \
acedf35c 14880 org-agenda-span month \
c8d0cf5c
CD
14881 org-agenda-include-diary nil \
14882 org-agenda-files (quote ("~/org/project.org")))' \
14883 | lpr
14884@end example
14885
14886@noindent
14887which will produce a 30-day agenda, fully restricted to the Org file
14888@file{~/org/projects.org}, not even including the diary.
14889
14890If you want to process the agenda data in more sophisticated ways, you
14891can use the command @code{org-batch-agenda-csv} to get a comma-separated
14892list of values for each agenda item. Each line in the output will
14893contain a number of fields separated by commas. The fields in a line
14894are:
14895
14896@example
14897category @r{The category of the item}
14898head @r{The headline, without TODO keyword, TAGS and PRIORITY}
14899type @r{The type of the agenda entry, can be}
14900 todo @r{selected in TODO match}
14901 tagsmatch @r{selected in tags match}
14902 diary @r{imported from diary}
14903 deadline @r{a deadline}
14904 scheduled @r{scheduled}
14905 timestamp @r{appointment, selected by timestamp}
14906 closed @r{entry was closed on date}
14907 upcoming-deadline @r{warning about nearing deadline}
14908 past-scheduled @r{forwarded scheduled item}
14909 block @r{entry has date block including date}
14910todo @r{The TODO keyword, if any}
14911tags @r{All tags including inherited ones, separated by colons}
14912date @r{The relevant date, like 2007-2-14}
14913time @r{The time, like 15:00-16:50}
14914extra @r{String with extra planning info}
14915priority-l @r{The priority letter if any was given}
14916priority-n @r{The computed numerical priority}
14917@end example
14918
14919@noindent
14920Time and date will only be given if a timestamp (or deadline/scheduled)
14921led to the selection of the item.
14922
14923A CSV list like this is very easy to use in a post-processing script.
14924For example, here is a Perl program that gets the TODO list from
14925Emacs/Org and prints all the items, preceded by a checkbox:
14926
14927@example
14928#!/usr/bin/perl
14929
14930# define the Emacs command to run
14931$cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'";
14932
14933# run it and capture the output
14934$agenda = qx@{$cmd 2>/dev/null@};
14935
14936# loop over all lines
14937foreach $line (split(/\n/,$agenda)) @{
14938 # get the individual values
14939 ($category,$head,$type,$todo,$tags,$date,$time,$extra,
14940 $priority_l,$priority_n) = split(/,/,$line);
14941 # process and print
14942 print "[ ] $head\n";
14943@}
14944@end example
14945
c8d0cf5c 14946@node Using the property API, Using the mapping API, Extracting agenda information, Hacking
4009494e
GM
14947@section Using the property API
14948@cindex API, for properties
14949@cindex properties, API
14950
14951Here is a description of the functions that can be used to work with
14952properties.
14953
14954@defun org-entry-properties &optional pom which
c8d0cf5c 14955Get all properties of the entry at point-or-marker POM.@*
4009494e
GM
14956This includes the TODO keyword, the tags, time strings for deadline,
14957scheduled, and clocking, and any additional properties defined in the
acedf35c 14958entry. The return value is an alist. Keys may occur multiple times
c8d0cf5c 14959if the property key was used several times.@*
4009494e
GM
14960POM may also be nil, in which case the current entry is used.
14961If WHICH is nil or `all', get all properties. If WHICH is
14962`special' or `standard', only get that subclass.
14963@end defun
c8d0cf5c 14964@vindex org-use-property-inheritance
4009494e 14965@defun org-entry-get pom property &optional inherit
a7808fba
CD
14966Get value of PROPERTY for entry at point-or-marker POM. By default,
14967this only looks at properties defined locally in the entry. If INHERIT
14968is non-nil and the entry does not have the property, then also check
14969higher levels of the hierarchy. If INHERIT is the symbol
14970@code{selective}, use inheritance if and only if the setting of
14971@code{org-use-property-inheritance} selects PROPERTY for inheritance.
4009494e
GM
14972@end defun
14973
14974@defun org-entry-delete pom property
14975Delete the property PROPERTY from entry at point-or-marker POM.
14976@end defun
14977
14978@defun org-entry-put pom property value
14979Set PROPERTY to VALUE for entry at point-or-marker POM.
14980@end defun
14981
14982@defun org-buffer-property-keys &optional include-specials
14983Get all property keys in the current buffer.
14984@end defun
14985
14986@defun org-insert-property-drawer
14987Insert a property drawer at point.
14988@end defun
14989
864c9740
CD
14990@defun org-entry-put-multivalued-property pom property &rest values
14991Set PROPERTY at point-or-marker POM to VALUES. VALUES should be a list of
14992strings. They will be concatenated, with spaces as separators.
14993@end defun
14994
14995@defun org-entry-get-multivalued-property pom property
14996Treat the value of the property PROPERTY as a whitespace-separated list of
14997values and return the values as a list of strings.
14998@end defun
14999
a7808fba
CD
15000@defun org-entry-add-to-multivalued-property pom property value
15001Treat the value of the property PROPERTY as a whitespace-separated list of
15002values and make sure that VALUE is in this list.
15003@end defun
15004
15005@defun org-entry-remove-from-multivalued-property pom property value
15006Treat the value of the property PROPERTY as a whitespace-separated list of
15007values and make sure that VALUE is @emph{not} in this list.
15008@end defun
15009
15010@defun org-entry-member-in-multivalued-property pom property value
15011Treat the value of the property PROPERTY as a whitespace-separated list of
15012values and check if VALUE is in this list.
15013@end defun
15014
ed21c5c8 15015@defopt org-property-allowed-value-functions
acedf35c 15016Hook for functions supplying allowed values for a specific property.
ed21c5c8
CD
15017The functions must take a single argument, the name of the property, and
15018return a flat list of allowed values. If @samp{:ETC} is one of
15019the values, use the values as completion help, but allow also other values
15020to be entered. The functions must return @code{nil} if they are not
15021responsible for this property.
15022@end defopt
15023
b349f79f
CD
15024@node Using the mapping API, , Using the property API, Hacking
15025@section Using the mapping API
15026@cindex API, for mapping
15027@cindex mapping entries, API
15028
15029Org has sophisticated mapping capabilities to find all entries satisfying
15030certain criteria. Internally, this functionality is used to produce agenda
15031views, but there is also an API that can be used to execute arbitrary
15032functions for each or selected entries. The main entry point for this API
96c8522a 15033is:
b349f79f
CD
15034
15035@defun org-map-entries func &optional match scope &rest skip
15036Call FUNC at each headline selected by MATCH in SCOPE.
15037
c8d0cf5c 15038FUNC is a function or a Lisp form. The function will be called without
b349f79f
CD
15039arguments, with the cursor positioned at the beginning of the headline.
15040The return values of all calls to the function will be collected and
15041returned as a list.
15042
c8d0cf5c
CD
15043The call to FUNC will be wrapped into a save-excursion form, so FUNC
15044does not need to preserve point. After evaluation, the cursor will be
15045moved to the end of the line (presumably of the headline of the
15046processed entry) and search continues from there. Under some
15047circumstances, this may not produce the wanted results. For example,
ce57c2fe 15048if you have removed (e.g.@: archived) the current (sub)tree it could
c8d0cf5c
CD
15049mean that the next entry will be skipped entirely. In such cases, you
15050can specify the position from where search should continue by making
15051FUNC set the variable `org-map-continue-from' to the desired buffer
15052position.
15053
864c9740 15054MATCH is a tags/property/todo match as it is used in the agenda match view.
b349f79f
CD
15055Only headlines that are matched by this query will be considered during
15056the iteration. When MATCH is nil or t, all headlines will be
15057visited by the iteration.
15058
15059SCOPE determines the scope of this command. It can be any of:
15060
15061@example
15062nil @r{the current buffer, respecting the restriction if any}
15063tree @r{the subtree started with the entry at point}
ce57c2fe 15064region @r{The entries within the active region, if any}
b349f79f
CD
15065file @r{the current buffer, without restriction}
15066file-with-archives
15067 @r{the current buffer, and any archives associated with it}
15068agenda @r{all agenda files}
15069agenda-with-archives
15070 @r{all agenda files with any archive files associated with them}
15071(file1 file2 ...)
15072 @r{if this is a list, all files in the list will be scanned}
15073@end example
c8d0cf5c 15074@noindent
b349f79f
CD
15075The remaining args are treated as settings for the skipping facilities of
15076the scanner. The following items can be given here:
15077
c8d0cf5c 15078@vindex org-agenda-skip-function
b349f79f
CD
15079@example
15080archive @r{skip trees with the archive tag}
15081comment @r{skip trees with the COMMENT keyword}
15082function or Lisp form
15083 @r{will be used as value for @code{org-agenda-skip-function},}
867d4bb3 15084 @r{so whenever the function returns t, FUNC}
b349f79f
CD
15085 @r{will not be called for that entry and search will}
15086 @r{continue from the point where the function leaves it}
15087@end example
15088@end defun
15089
15090The function given to that mapping routine can really do anything you like.
a50253cc
GM
15091It can use the property API (@pxref{Using the property API}) to gather more
15092information about the entry, or in order to change metadata in the entry.
b349f79f 15093Here are a couple of functions that might be handy:
96c8522a 15094
b349f79f 15095@defun org-todo &optional arg
acedf35c 15096Change the TODO state of the entry. See the docstring of the functions for
b349f79f
CD
15097the many possible values for the argument ARG.
15098@end defun
15099
15100@defun org-priority &optional action
acedf35c 15101Change the priority of the entry. See the docstring of this function for the
b349f79f
CD
15102possible values for ACTION.
15103@end defun
15104
15105@defun org-toggle-tag tag &optional onoff
15106Toggle the tag TAG in the current entry. Setting ONOFF to either @code{on}
15107or @code{off} will not toggle tag, but ensure that it is either on or off.
15108@end defun
15109
15110@defun org-promote
15111Promote the current entry.
15112@end defun
15113
15114@defun org-demote
15115Demote the current entry.
15116@end defun
15117
15118Here is a simple example that will turn all entries in the current file with
15119a tag @code{TOMORROW} into TODO entries with the keyword @code{UPCOMING}.
15120Entries in comment trees and in archive trees will be ignored.
15121
15122@lisp
15123(org-map-entries
15124 '(org-todo "UPCOMING")
15125 "+TOMORROW" 'file 'archive 'comment)
15126@end lisp
15127
15128The following example counts the number of entries with TODO keyword
15129@code{WAITING}, in all agenda files.
15130
15131@lisp
96c8522a 15132(length (org-map-entries t "/+WAITING" 'agenda))
b349f79f
CD
15133@end lisp
15134
7006d207
CD
15135@node MobileOrg, History and Acknowledgments, Hacking, Top
15136@appendix MobileOrg
15137@cindex iPhone
15138@cindex MobileOrg
15139
86fbb8ca
CD
15140@uref{http://mobileorg.ncogni.to/, MobileOrg} is an application for the
15141@i{iPhone/iPod Touch} series of devices, developed by Richard Moreland.
15142@i{MobileOrg} offers offline viewing and capture support for an Org-mode
15143system rooted on a ``real'' computer. It does also allow you to record
15144changes to existing entries. Android users should check out
15145@uref{http://wiki.github.com/matburt/mobileorg-android/, MobileOrg Android}
15146by Matt Jones.
7006d207
CD
15147
15148This appendix describes the support Org has for creating agenda views in a
15149format that can be displayed by @i{MobileOrg}, and for integrating notes
a351880d
CD
15150captured and changes made by @i{MobileOrg} into the main system.
15151
15152For changing tags and TODO states in MobileOrg, you should have set up the
15153customization variables @code{org-todo-keywords} and @code{org-tags-alist} to
86fbb8ca 15154cover all important tags and TODO keywords, even if individual files use only
a351880d 15155part of these. MobileOrg will also offer you states and tags set up with
86fbb8ca 15156in-buffer settings, but it will understand the logistics of TODO state
a351880d
CD
15157@i{sets} (@pxref{Per-file keywords}) and @i{mutually exclusive} tags
15158(@pxref{Setting tags}) only for those set in these variables.
7006d207
CD
15159
15160@menu
c0468714
GM
15161* Setting up the staging area:: Where to interact with the mobile device
15162* Pushing to MobileOrg:: Uploading Org files and agendas
15163* Pulling from MobileOrg:: Integrating captured and flagged items
7006d207
CD
15164@end menu
15165
15166@node Setting up the staging area, Pushing to MobileOrg, MobileOrg, MobileOrg
15167@section Setting up the staging area
15168
acedf35c 15169MobileOrg needs to interact with Emacs through a directory on a server. If you
afe98dfa
CD
15170are using a public server, you should consider to encrypt the files that are
15171uploaded to the server. This can be done with Org-mode 7.02 and with
15172@i{MobileOrg 1.5} (iPhone version), and you need an @file{openssl}
15173installation on your system. To turn on encryption, set a password in
15174@i{MobileOrg} and, on the Emacs side, configure the variable
15175@code{org-mobile-use-encryption}@footnote{If you can safely store the
15176password in your Emacs setup, you might also want to configure
15177@code{org-mobile-encryption-password}. Please read the docstring of that
15178variable. Note that encryption will apply only to the contents of the
15179@file{.org} files. The file names themselves will remain visible.}.
15180
15181The easiest way to create that directory is to use a free
15182@uref{http://dropbox.com,Dropbox.com} account@footnote{If you cannot use
15183Dropbox, or if your version of MobileOrg does not support it, you can use a
acedf35c 15184webdav server. For more information, check out the documentation of MobileOrg and also this
ce57c2fe 15185@uref{http://orgmode.org/worg/org-faq.html#mobileorg_webdav, FAQ entry}.}.
86fbb8ca
CD
15186When MobileOrg first connects to your Dropbox, it will create a directory
15187@i{MobileOrg} inside the Dropbox. After the directory has been created, tell
15188Emacs about it:
a351880d 15189
86fbb8ca
CD
15190@lisp
15191(setq org-mobile-directory "~/Dropbox/MobileOrg")
15192@end lisp
a351880d 15193
86fbb8ca
CD
15194Org-mode has commands to put files for @i{MobileOrg} into that directory,
15195and to read captured notes from there.
7006d207
CD
15196
15197@node Pushing to MobileOrg, Pulling from MobileOrg, Setting up the staging area, MobileOrg
15198@section Pushing to MobileOrg
15199
15200This operation copies all files currently listed in @code{org-mobile-files}
15201to the directory @code{org-mobile-directory}. By default this list contains
15202all agenda files (as listed in @code{org-agenda-files}), but additional files
ce57c2fe 15203can be included by customizing @code{org-mobile-files}. File names will be
acedf35c 15204staged with paths relative to @code{org-directory}, so all files should be
86fbb8ca
CD
15205inside this directory. The push operation also creates a special Org file
15206@file{agendas.org} with all custom agenda view defined by the
afe98dfa
CD
15207user@footnote{While creating the agendas, Org-mode will force ID properties
15208on all referenced entries, so that these entries can be uniquely identified
15209if @i{MobileOrg} flags them for further action. If you do not want to get
15210these properties in so many entries, you can set the variable
15211@code{org-mobile-force-id-on-agenda-items} to @code{nil}. Org mode will then
15212rely on outline paths, in the hope that these will be unique enough.}.
15213Finally, Org writes the file @file{index.org}, containing links to all other
15214files. @i{MobileOrg} first reads this file from the server, and then
15215downloads all agendas and Org files listed in it. To speed up the download,
15216MobileOrg will only read files whose checksums@footnote{stored automatically
15217in the file @file{checksums.dat}} have changed.
7006d207
CD
15218
15219@node Pulling from MobileOrg, , Pushing to MobileOrg, MobileOrg
15220@section Pulling from MobileOrg
15221
86fbb8ca
CD
15222When @i{MobileOrg} synchronizes with the server, it not only pulls the Org
15223files for viewing. It also appends captured entries and pointers to flagged
15224and changed entries to the file @file{mobileorg.org} on the server. Org has
15225a @emph{pull} operation that integrates this information into an inbox file
15226and operates on the pointers to flagged entries. Here is how it works:
7006d207
CD
15227
15228@enumerate
15229@item
15230Org moves all entries found in
15231@file{mobileorg.org}@footnote{@file{mobileorg.org} will be empty after this
15232operation.} and appends them to the file pointed to by the variable
a351880d
CD
15233@code{org-mobile-inbox-for-pull}. Each captured entry and each editing event
15234will be a top-level entry in the inbox file.
15235@item
15236After moving the entries, Org will attempt to implement the changes made in
15237@i{MobileOrg}. Some changes are applied directly and without user
15238interaction. Examples are all changes to tags, TODO state, headline and body
15239text that can be cleanly applied. Entries that have been flagged for further
15240action will receive a tag @code{:FLAGGED:}, so that they can be easily found
15241again. When there is a problem finding an entry or applying the change, the
15242pointer entry will remain in the inbox and will be marked with an error
15243message. You need to later resolve these issues by hand.
7006d207
CD
15244@item
15245Org will then generate an agenda view with all flagged entries. The user
15246should then go through these entries and do whatever actions are necessary.
15247If a note has been stored while flagging an entry in @i{MobileOrg}, that note
15248will be displayed in the echo area when the cursor is on the corresponding
15249agenda line.
15250@table @kbd
15251@kindex ?
15252@item ?
15253Pressing @kbd{?} in that special agenda will display the full flagging note in
15254another window and also push it onto the kill ring. So you could use @kbd{?
15255z C-y C-c C-c} to store that flagging note as a normal note in the entry.
15256Pressing @kbd{?} twice in succession will offer to remove the
15257@code{:FLAGGED:} tag along with the recorded flagging note (which is stored
acedf35c 15258in a property). In this way you indicate that the intended processing for
a351880d 15259this flagged entry is finished.
7006d207
CD
15260@end table
15261@end enumerate
15262
15263@kindex C-c a ?
15264If you are not able to process all flagged entries directly, you can always
afe98dfa
CD
15265return to this agenda view@footnote{Note, however, that there is a subtle
15266difference. The view created automatically by @kbd{M-x org-mobile-pull
15267@key{RET}} is guaranteed to search all files that have been addressed by the
15268last pull. This might include a file that is not currently in your list of
15269agenda files. If you later use @kbd{C-c a ?} to regenerate the view, only
15270the current agenda files will be searched.} using @kbd{C-c a ?}.
7006d207
CD
15271
15272@node History and Acknowledgments, Main Index, MobileOrg, Top
86fbb8ca
CD
15273@appendix History and acknowledgments
15274@cindex acknowledgments
4009494e
GM
15275@cindex history
15276@cindex thanks
15277
86fbb8ca
CD
15278Org was born in 2003, out of frustration over the user interface of the Emacs
15279Outline mode. I was trying to organize my notes and projects, and using
15280Emacs seemed to be the natural way to go. However, having to remember eleven
15281different commands with two or three keys per command, only to hide and show
15282parts of the outline tree, that seemed entirely unacceptable to me. Also,
15283when using outlines to take notes, I constantly wanted to restructure the
15284tree, organizing it parallel to my thoughts and plans. @emph{Visibility
15285cycling} and @emph{structure editing} were originally implemented in the
15286package @file{outline-magic.el}, but quickly moved to the more general
15287@file{org.el}. As this environment became comfortable for project planning,
15288the next step was adding @emph{TODO entries}, basic @emph{timestamps}, and
15289@emph{table support}. These areas highlighted the two main goals that Org
15290still has today: to be a new, outline-based, plain text mode with innovative
15291and intuitive editing features, and to incorporate project planning
15292functionality directly into a notes file.
a7808fba 15293
c8d0cf5c
CD
15294Since the first release, literally thousands of emails to me or to
15295@email{emacs-orgmode@@gnu.org} have provided a constant stream of bug
4009494e
GM
15296reports, feedback, new ideas, and sometimes patches and add-on code.
15297Many thanks to everyone who has helped to improve this package. I am
15298trying to keep here a list of the people who had significant influence
a7808fba 15299in shaping one or more aspects of Org. The list may not be
4009494e
GM
15300complete, if I have forgotten someone, please accept my apologies and
15301let me know.
15302
86fbb8ca
CD
15303Before I get to this list, a few special mentions are in order:
15304
15305@table @i
15306@item Bastien Guerry
15307Bastien has written a large number of extensions to Org (most of them
15308integrated into the core by now), including the LaTeX exporter and the plain
15309list parser. His support during the early days, when he basically acted as
15310co-maintainer, was central to the success of this project. Bastien also
15311invented Worg, helped establishing the Web presence of Org, and sponsors
15312hosting costs for the orgmode.org website.
15313@item Eric Schulte and Dan Davison
15314Eric and Dan are jointly responsible for the Org-babel system, which turns
15315Org into a multi-language environment for evaluating code and doing literate
15316programming and reproducible research.
15317@item John Wiegley
acedf35c
CD
15318John has contributed a number of great ideas and patches directly to Org,
15319including the attachment system (@file{org-attach.el}), integration with
15320Apple Mail (@file{org-mac-message.el}), hierarchical dependencies of TODO
15321items, habit tracking (@file{org-habits.el}), and encryption
15322(@file{org-crypt.el}). Also, the capture system is really an extended copy
15323of his great @file{remember.el}.
86fbb8ca
CD
15324@item Sebastian Rose
15325Without Sebastian, the HTML/XHTML publishing of Org would be the pitiful work
15326of an ignorant amateur. Sebastian has pushed this part of Org onto a much
15327higher level. He also wrote @file{org-info.js}, a Java script for displaying
15328webpages derived from Org using an Info-like or a folding interface with
15329single-key navigation.
15330@end table
15331
15332@noindent OK, now to the full list of contributions! Again, please let me
15333know what I am missing here!
15334
4009494e
GM
15335@itemize @bullet
15336
15337@item
15338@i{Russel Adams} came up with the idea for drawers.
15339@item
a7808fba 15340@i{Thomas Baumann} wrote @file{org-bbdb.el} and @file{org-mhe.el}.
4009494e 15341@item
b349f79f
CD
15342@i{Christophe Bataillon} created the great unicorn logo that we use on the
15343Org-mode website.
15344@item
c8d0cf5c
CD
15345@i{Alex Bochannek} provided a patch for rounding timestamps.
15346@item
ed21c5c8
CD
15347@i{Jan Böcker} wrote @file{org-docview.el}.
15348@item
c8d0cf5c
CD
15349@i{Brad Bozarth} showed how to pull RSS feed data into Org-mode files.
15350@item
15351@i{Tom Breton} wrote @file{org-choose.el}.
4009494e
GM
15352@item
15353@i{Charles Cave}'s suggestion sparked the implementation of templates
86fbb8ca 15354for Remember, which are now templates for capture.
4009494e
GM
15355@item
15356@i{Pavel Chalmoviansky} influenced the agenda treatment of items with
15357specified time.
15358@item
c8d0cf5c 15359@i{Gregory Chernov} patched support for Lisp forms into table
4009494e
GM
15360calculations and improved XEmacs compatibility, in particular by porting
15361@file{nouline.el} to XEmacs.
15362@item
c8d0cf5c
CD
15363@i{Sacha Chua} suggested copying some linking code from Planner.
15364@item
15365@i{Baoqiu Cui} contributed the DocBook exporter.
4009494e 15366@item
5fbc0f11 15367@i{Eddward DeVilla} proposed and tested checkbox statistics. He also
4009494e
GM
15368came up with the idea of properties, and that there should be an API for
15369them.
15370@item
c8d0cf5c
CD
15371@i{Nick Dokos} tracked down several nasty bugs.
15372@item
4009494e
GM
15373@i{Kees Dullemond} used to edit projects lists directly in HTML and so
15374inspired some of the early development, including HTML export. He also
15375asked for a way to narrow wide table columns.
15376@item
86fbb8ca
CD
15377@i{Thomas S. Dye} contributed documentation on Worg and helped integrating
15378the Org-Babel documentation into the manual.
15379@item
acedf35c
CD
15380@i{Christian Egli} converted the documentation into Texinfo format, inspired
15381the agenda, patched CSS formatting into the HTML exporter, and wrote
15382@file{org-taskjuggler.el}.
4009494e
GM
15383@item
15384@i{David Emery} provided a patch for custom CSS support in exported
15385HTML agendas.
15386@item
15387@i{Nic Ferrier} contributed mailcap and XOXO support.
15388@item
28a16a1b
CD
15389@i{Miguel A. Figueroa-Villanueva} implemented hierarchical checkboxes.
15390@item
4009494e
GM
15391@i{John Foerch} figured out how to make incremental search show context
15392around a match in a hidden outline tree.
15393@item
a351880d
CD
15394@i{Raimar Finken} wrote @file{org-git-line.el}.
15395@item
15396@i{Mikael Fornius} works as a mailing list moderator.
15397@item
15398@i{Austin Frank} works as a mailing list moderator.
15399@item
acedf35c
CD
15400@i{Eric Fraga} drove the development of BEAMER export with ideas and
15401testing.
15402@item
15403@i{Barry Gidden} did proofreading the manual in preparation for the book
15404publication through Network Theory Ltd.
15405@item
dbc28aaa 15406@i{Niels Giesen} had the idea to automatically archive DONE trees.
4009494e 15407@item
afe98dfa
CD
15408@i{Nicolas Goaziou} rewrote much of the plain list code.
15409@item
4009494e
GM
15410@i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
15411@item
acedf35c
CD
15412@i{Brian Gough} of Network Theory Ltd publishes the Org mode manual as a
15413book.
15414@item
a7808fba
CD
15415@i{Bernt Hansen} has driven much of the support for auto-repeating tasks,
15416task state change logging, and the clocktable. His clear explanations have
c8d0cf5c 15417been critical when we started to adopt the Git version control system.
a7808fba 15418@item
c8d0cf5c 15419@i{Manuel Hermenegildo} has contributed various ideas, small fixes and
864c9740
CD
15420patches.
15421@item
a7808fba
CD
15422@i{Phil Jackson} wrote @file{org-irc.el}.
15423@item
4009494e
GM
15424@i{Scott Jaderholm} proposed footnotes, control over whitespace between
15425folded entries, and column view for properties.
15426@item
86fbb8ca
CD
15427@i{Matt Jones} wrote @i{MobileOrg Android}.
15428@item
a7808fba
CD
15429@i{Tokuya Kameshima} wrote @file{org-wl.el} and @file{org-mew.el}.
15430@item
acedf35c 15431@i{Shidai Liu} ("Leo") asked for embedded @LaTeX{} and tested it. He also
4009494e
GM
15432provided frequent feedback and some patches.
15433@item
55e0839d
CD
15434@i{Matt Lundin} has proposed last-row references for table formulas and named
15435invisible anchors. He has also worked a lot on the FAQ.
15436@item
86fbb8ca
CD
15437@i{David Maus} wrote @file{org-atom.el}, maintains the issues file for Org,
15438and is a prolific contributor on the mailing list with competent replies,
15439small fixes and patches.
15440@item
4009494e
GM
15441@i{Jason F. McBrayer} suggested agenda export to CSV format.
15442@item
dbc28aaa
CD
15443@i{Max Mikhanosha} came up with the idea of refiling.
15444@item
4009494e
GM
15445@i{Dmitri Minaev} sent a patch to set priority limits on a per-file
15446basis.
15447@item
15448@i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
15449happy.
15450@item
7006d207
CD
15451@i{Richard Moreland} wrote @i{MobileOrg} for the iPhone.
15452@item
c8d0cf5c
CD
15453@i{Rick Moynihan} proposed allowing multiple TODO sequences in a file
15454and being able to quickly restrict the agenda to a subtree.
4009494e 15455@item
c8d0cf5c
CD
15456@i{Todd Neal} provided patches for links to Info files and Elisp forms.
15457@item
15458@i{Greg Newman} refreshed the unicorn logo into its current form.
4009494e
GM
15459@item
15460@i{Tim O'Callaghan} suggested in-file links, search options for general
15461file links, and TAGS.
15462@item
acedf35c 15463@i{Osamu Okano} wrote @file{orgcard2ref.pl}, a Perl program to create a text
86fbb8ca
CD
15464version of the reference card.
15465@item
4009494e
GM
15466@i{Takeshi Okano} translated the manual and David O'Toole's tutorial
15467into Japanese.
15468@item
15469@i{Oliver Oppitz} suggested multi-state TODO items.
15470@item
15471@i{Scott Otterson} sparked the introduction of descriptive text for
15472links, among other things.
15473@item
15474@i{Pete Phillips} helped during the development of the TAGS feature, and
15475provided frequent feedback.
15476@item
c8d0cf5c
CD
15477@i{Martin Pohlack} provided the code snippet to bundle character insertion
15478into bundles of 20 for undo.
15479@item
4009494e
GM
15480@i{T.V. Raman} reported bugs and suggested improvements.
15481@item
15482@i{Matthias Rempe} (Oelde) provided ideas, Windows support, and quality
15483control.
15484@item
a351880d
CD
15485@i{Paul Rivier} provided the basic implementation of named footnotes. He
15486also acted as mailing list moderator for some time.
55e0839d 15487@item
4009494e
GM
15488@i{Kevin Rogers} contributed code to access VM files on remote hosts.
15489@item
15490@i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a
15491conflict with @file{allout.el}.
15492@item
c8d0cf5c 15493@i{Jason Riedy} generalized the send-receive mechanism for Orgtbl tables with
b349f79f 15494extensive patches.
4009494e 15495@item
b349f79f
CD
15496@i{Philip Rooke} created the Org reference card, provided lots
15497of feedback, developed and applied standards to the Org documentation.
4009494e
GM
15498@item
15499@i{Christian Schlauer} proposed angular brackets around links, among
15500other things.
15501@item
ed21c5c8
CD
15502@i{Paul Sexton} wrote @file{org-ctags.el}.
15503@item
b349f79f 15504Linking to VM/BBDB/Gnus was first inspired by @i{Tom Shannon}'s
4009494e
GM
15505@file{organizer-mode.el}.
15506@item
55e0839d
CD
15507@i{Ilya Shlyakhter} proposed the Archive Sibling, line numbering in literal
15508examples, and remote highlighting for referenced code lines.
a7808fba 15509@item
64fb801f
CD
15510@i{Stathis Sideris} wrote the @file{ditaa.jar} ASCII to PNG converter that is
15511now packaged into Org's @file{contrib} directory.
15512@item
4009494e
GM
15513@i{Daniel Sinder} came up with the idea of internal archiving by locking
15514subtrees.
15515@item
15516@i{Dale Smith} proposed link abbreviations.
15517@item
864c9740
CD
15518@i{James TD Smith} has contributed a large number of patches for useful
15519tweaks and features.
15520@item
b349f79f
CD
15521@i{Adam Spiers} asked for global linking commands, inspired the link
15522extension system, added support for mairix, and proposed the mapping API.
4009494e 15523@item
86fbb8ca
CD
15524@i{Ulf Stegemann} created the table to translate special symbols to HTML,
15525LaTeX, UTF-8, Latin-1 and ASCII.
15526@item
96c8522a
CD
15527@i{Andy Stewart} contributed code to @file{org-w3m.el}, to copy HTML content
15528with links transformation to Org syntax.
15529@item
4009494e
GM
15530@i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
15531chapter about publishing.
15532@item
ce57c2fe
BG
15533@i{Jambunathan K} contributed the OpenDocumentText exporter.
15534@item
acedf35c
CD
15535@i{Sebastien Vauban} reported many issues with LaTeX and BEAMER export and
15536enabled source code highlighling in Gnus.
15537@item
86fbb8ca
CD
15538@i{Stefan Vollmar} organized a video-recorded talk at the
15539Max-Planck-Institute for Neurology. He also inspired the creation of a
15540concept index for HTML export.
15541@item
4009494e
GM
15542@i{J@"urgen Vollmer} contributed code generating the table of contents
15543in HTML output.
15544@item
ed21c5c8
CD
15545@i{Samuel Wales} has provided important feedback and bug reports.
15546@item
4009494e
GM
15547@i{Chris Wallace} provided a patch implementing the @samp{QUOTE}
15548keyword.
15549@item
15550@i{David Wainberg} suggested archiving, and improvements to the linking
15551system.
15552@item
4009494e 15553@i{Carsten Wimmer} suggested some changes and helped fix a bug in
a7808fba 15554linking to Gnus.
4009494e 15555@item
a7808fba 15556@i{Roland Winkler} requested additional key bindings to make Org
4009494e
GM
15557work on a tty.
15558@item
15559@i{Piotr Zielinski} wrote @file{org-mouse.el}, proposed agenda blocks
15560and contributed various ideas and code snippets.
ce57c2fe 15561@item
4009494e
GM
15562@end itemize
15563
15564
dbc28aaa 15565@node Main Index, Key Index, History and Acknowledgments, Top
86fbb8ca 15566@unnumbered Concept index
4009494e
GM
15567
15568@printindex cp
15569
afe98dfa 15570@node Key Index, Command and Function Index, Main Index, Top
86fbb8ca 15571@unnumbered Key index
4009494e
GM
15572
15573@printindex ky
15574
afe98dfa
CD
15575@node Command and Function Index, Variable Index, Key Index, Top
15576@unnumbered Command and function index
15577
15578@printindex fn
15579
15580@node Variable Index, , Command and Function Index, Top
86fbb8ca 15581@unnumbered Variable index
c8d0cf5c
CD
15582
15583This is not a complete index of variables and faces, only the ones that are
15584mentioned in the manual. For a more complete list, use @kbd{M-x
a351880d 15585org-customize @key{RET}} and then click yourself through the tree.
c8d0cf5c
CD
15586
15587@printindex vr
15588
4009494e
GM
15589@bye
15590
a7808fba 15591@c Local variables:
a7808fba 15592@c fill-column: 77
afe98dfa 15593@c indent-tabs-mode: nil
acedf35c
CD
15594@c paragraph-start: "\b\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|\f\\|[ ]*$"
15595@c paragraph-separate: "\b\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|[ \f]*$"
a7808fba 15596@c End:
44ce9197 15597
7006d207
CD
15598
15599@c LocalWords: webdavhost pre