Optionally, undo several consequential deletion in one step.
[bpt/emacs.git] / doc / misc / org.texi
CommitLineData
4009494e
GM
1\input texinfo
2@c %**start of header
29993416 3@setfilename ../../info/org.info
a7808fba 4@settitle The Org Manual
30cb51f1 5@set VERSION 8.2.6
86fbb8ca 6
4009494e 7@c Version and Contact Info
271672fa 8@set MAINTAINERSITE @uref{http://orgmode.org,maintainers web page}
4009494e
GM
9@set AUTHOR Carsten Dominik
10@set MAINTAINER Carsten Dominik
dbc28aaa
CD
11@set MAINTAINEREMAIL @email{carsten at orgmode dot org}
12@set MAINTAINERCONTACT @uref{mailto:carsten at orgmode dot org,contact the maintainer}
c6ab4664 13@documentencoding UTF-8
4009494e
GM
14@c %**end of header
15@finalout
16
acedf35c
CD
17
18@c -----------------------------------------------------------------------------
19
20@c Macro definitions for commands and keys
21@c =======================================
22
23@c The behavior of the key/command macros will depend on the flag cmdnames
24@c When set, commands names are shown. When clear, they are not shown.
25
26@set cmdnames
27
28@c Below we define the following macros for Org key tables:
29
ce57c2fe 30@c orgkey{key} A key item
acedf35c 31@c orgcmd{key,cmd} Key with command name
27e428e7 32@c xorgcmd{key,cmd} Key with command name as @itemx
acedf35c
CD
33@c orgcmdnki{key,cmd} Like orgcmd, but do not index the key
34@c orgcmdtkc{text,key,cmd} Like orgcmd,special text instead of key
35@c orgcmdkkc{key1,key2,cmd} Two keys with one command name, use "or"
36@c orgcmdkxkc{key1,key2,cmd} Two keys with one command name, but
37@c different functions, so format as @itemx
38@c orgcmdkskc{key1,key2,cmd} Same as orgcmdkkc, but use "or short"
39@c xorgcmdkskc{key1,key2,cmd} Same as previous, but use @itemx
40@c orgcmdkkcc{key1,key2,cmd1,cmd2} Two keys and two commands
41
42@c a key but no command
43@c Inserts: @item key
44@macro orgkey{key}
45@kindex \key\
46@item @kbd{\key\}
47@end macro
48
49@macro xorgkey{key}
50@kindex \key\
51@itemx @kbd{\key\}
52@end macro
53
54@c one key with a command
55@c Inserts: @item KEY COMMAND
afe98dfa 56@macro orgcmd{key,command}
acedf35c 57@ifset cmdnames
afe98dfa
CD
58@kindex \key\
59@findex \command\
acedf35c 60@iftex
afe98dfa
CD
61@item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
62@end iftex
63@ifnottex
acedf35c
CD
64@item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
65@end ifnottex
66@end ifset
67@ifclear cmdnames
68@kindex \key\
69@item @kbd{\key\}
70@end ifclear
71@end macro
72
73@c One key with one command, formatted using @itemx
74@c Inserts: @itemx KEY COMMAND
75@macro xorgcmd{key,command}
76@ifset cmdnames
77@kindex \key\
78@findex \command\
79@iftex
80@itemx @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
81@end iftex
82@ifnottex
83@itemx @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
84@end ifnottex
85@end ifset
86@ifclear cmdnames
afe98dfa 87@kindex \key\
acedf35c
CD
88@itemx @kbd{\key\}
89@end ifclear
90@end macro
91
92@c one key with a command, bit do not index the key
93@c Inserts: @item KEY COMMAND
94@macro orgcmdnki{key,command}
95@ifset cmdnames
afe98dfa 96@findex \command\
acedf35c
CD
97@iftex
98@item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
99@end iftex
100@ifnottex
afe98dfa
CD
101@item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
102@end ifnottex
acedf35c
CD
103@end ifset
104@ifclear cmdnames
105@item @kbd{\key\}
106@end ifclear
afe98dfa
CD
107@end macro
108
acedf35c
CD
109@c one key with a command, and special text to replace key in item
110@c Inserts: @item TEXT COMMAND
111@macro orgcmdtkc{text,key,command}
112@ifset cmdnames
afe98dfa 113@kindex \key\
acedf35c
CD
114@findex \command\
115@iftex
116@item @kbd{\text\} @hskip 0pt plus 1filll @code{\command\}
117@end iftex
118@ifnottex
119@item @kbd{\text\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
120@end ifnottex
121@end ifset
122@ifclear cmdnames
123@kindex \key\
124@item @kbd{\text\}
125@end ifclear
afe98dfa
CD
126@end macro
127
acedf35c
CD
128@c two keys with one command
129@c Inserts: @item KEY1 or KEY2 COMMAND
130@macro orgcmdkkc{key1,key2,command}
131@ifset cmdnames
132@kindex \key1\
133@kindex \key2\
134@findex \command\
c8d0cf5c 135@iftex
acedf35c 136@item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
c8d0cf5c 137@end iftex
acedf35c
CD
138@ifnottex
139@item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
140@end ifnottex
141@end ifset
142@ifclear cmdnames
143@kindex \key1\
144@kindex \key2\
145@item @kbd{\key1\} @ @r{or} @ @kbd{\key2\}
146@end ifclear
c8d0cf5c 147@end macro
acedf35c
CD
148
149@c Two keys with one command name, but different functions, so format as
150@c @itemx
151@c Inserts: @item KEY1
152@c @itemx KEY2 COMMAND
153@macro orgcmdkxkc{key1,key2,command}
154@ifset cmdnames
155@kindex \key1\
156@kindex \key2\
157@findex \command\
158@iftex
159@item @kbd{\key1\}
160@itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
161@end iftex
162@ifnottex
163@item @kbd{\key1\}
164@itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
165@end ifnottex
166@end ifset
167@ifclear cmdnames
168@kindex \key1\
169@kindex \key2\
170@item @kbd{\key1\}
171@itemx @kbd{\key2\}
172@end ifclear
c8d0cf5c 173@end macro
acedf35c
CD
174
175@c Same as previous, but use "or short"
176@c Inserts: @item KEY1 or short KEY2 COMMAND
177@macro orgcmdkskc{key1,key2,command}
178@ifset cmdnames
179@kindex \key1\
180@kindex \key2\
181@findex \command\
182@iftex
183@item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
184@end iftex
185@ifnottex
186@item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
187@end ifnottex
188@end ifset
189@ifclear cmdnames
190@kindex \key1\
191@kindex \key2\
192@item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
193@end ifclear
c8d0cf5c 194@end macro
acedf35c
CD
195
196@c Same as previous, but use @itemx
197@c Inserts: @itemx KEY1 or short KEY2 COMMAND
198@macro xorgcmdkskc{key1,key2,command}
199@ifset cmdnames
200@kindex \key1\
201@kindex \key2\
202@findex \command\
203@iftex
204@itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
205@end iftex
206@ifnottex
207@itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
208@end ifnottex
209@end ifset
210@ifclear cmdnames
211@kindex \key1\
212@kindex \key2\
213@itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
214@end ifclear
c8d0cf5c 215@end macro
4009494e 216
acedf35c
CD
217@c two keys with two commands
218@c Inserts: @item KEY1 COMMAND1
219@c @itemx KEY2 COMMAND2
220@macro orgcmdkkcc{key1,key2,command1,command2}
221@ifset cmdnames
222@kindex \key1\
223@kindex \key2\
224@findex \command1\
225@findex \command2\
226@iftex
227@item @kbd{\key1\} @hskip 0pt plus 1filll @code{\command1\}
228@itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command2\}
229@end iftex
230@ifnottex
231@item @kbd{\key1\} @tie{}@tie{}@tie{}@tie{}(@code{\command1\})
232@itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command2\})
233@end ifnottex
234@end ifset
235@ifclear cmdnames
236@kindex \key1\
237@kindex \key2\
238@item @kbd{\key1\}
239@itemx @kbd{\key2\}
240@end ifclear
241@end macro
242@c -----------------------------------------------------------------------------
243
244@iftex
245@c @hyphenation{time-stamp time-stamps time-stamp-ing time-stamp-ed}
246@end iftex
247
4009494e
GM
248@c Subheadings inside a table.
249@macro tsubheading{text}
250@ifinfo
251@subsubheading \text\
252@end ifinfo
253@ifnotinfo
254@item @b{\text\}
255@end ifnotinfo
256@end macro
257
258@copying
c8d0cf5c 259This manual is for Org version @value{VERSION}.
4009494e 260
6bc383b1 261Copyright @copyright{} 2004--2014 Free Software Foundation, Inc.
4009494e
GM
262
263@quotation
264Permission is granted to copy, distribute and/or modify this document
d60b1ba1 265under the terms of the GNU Free Documentation License, Version 1.3 or
4009494e 266any later version published by the Free Software Foundation; with no
551a89e1 267Invariant Sections, with the Front-Cover Texts being ``A GNU Manual,''
47271179
GM
268and with the Back-Cover Texts as in (a) below. A copy of the license
269is included in the section entitled ``GNU Free Documentation License.''
4009494e 270
6f093307 271(a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
76ef8423 272modify this GNU manual.''
4009494e
GM
273@end quotation
274@end copying
275
9e7a4bcf 276@dircategory Emacs editing modes
5dc584b5 277@direntry
30cb51f1 278* Org Mode: (org). Outline-based notes management and organizer
5dc584b5
KB
279@end direntry
280
4009494e 281@titlepage
a7808fba 282@title The Org Manual
4009494e
GM
283
284@subtitle Release @value{VERSION}
285@author by Carsten Dominik
271672fa
BG
286with contributions by David O'Toole, Bastien Guerry, Philip Rooke, Dan
287Davison, Eric Schulte, Thomas Dye, Jambunathan K and Nicolas Goaziou.
4009494e
GM
288
289@c The following two commands start the copyright page.
290@page
291@vskip 0pt plus 1filll
292@insertcopying
293@end titlepage
294
295@c Output the table of contents at the beginning.
296@contents
297
298@ifnottex
257b2c7d
GM
299@c FIXME These hand-written next,prev,up node pointers make editing a lot
300@c harder. There should be no need for them, makeinfo can do it
301@c automatically for any document with a normal structure.
4009494e
GM
302@node Top, Introduction, (dir), (dir)
303@top Org Mode Manual
304
305@insertcopying
306@end ifnottex
307
308@menu
c0468714
GM
309* Introduction:: Getting started
310* Document Structure:: A tree works like your brain
311* Tables:: Pure magic for quick formatting
312* Hyperlinks:: Notes in context
313* TODO Items:: Every tree branch can be a TODO item
314* Tags:: Tagging headlines and matching sets of tags
315* Properties and Columns:: Storing information about an entry
316* Dates and Times:: Making items useful for planning
317* Capture - Refile - Archive:: The ins and outs for projects
318* Agenda Views:: Collecting information into views
319* Markup:: Prepare text for rich export
271672fa 320* Exporting:: Sharing and publishing notes
c0468714
GM
321* Publishing:: Create a web site of linked Org files
322* Working With Source Code:: Export, evaluate, and tangle code blocks
323* Miscellaneous:: All the rest which did not fit elsewhere
324* Hacking:: How to hack your way around
325* MobileOrg:: Viewing and capture on a mobile device
326* History and Acknowledgments:: How Org came into being
257b2c7d 327* GNU Free Documentation License:: The license for this documentation.
c0468714
GM
328* Main Index:: An index of Org's concepts and features
329* Key Index:: Key bindings and where they are described
afe98dfa 330* Command and Function Index:: Command names and some internal functions
c0468714 331* Variable Index:: Variables mentioned in the manual
4009494e
GM
332
333@detailmenu
334 --- The Detailed Node Listing ---
335
336Introduction
337
c0468714 338* Summary:: Brief summary of what Org does
a89c8ef0 339* Installation:: Installing Org
c0468714
GM
340* Activation:: How to activate Org for certain buffers
341* Feedback:: Bug reports, ideas, patches etc.
8223b1d2 342* Conventions:: Typesetting conventions in the manual
86fbb8ca
CD
343
344Document structure
345
c0468714
GM
346* Outlines:: Org is based on Outline mode
347* Headlines:: How to typeset Org tree headlines
348* Visibility cycling:: Show and hide, much simplified
349* Motion:: Jumping to other headlines
350* Structure editing:: Changing sequence and level of headlines
351* Sparse trees:: Matches embedded in context
352* Plain lists:: Additional structure within an entry
353* Drawers:: Tucking stuff away
354* Blocks:: Folding blocks
355* Footnotes:: How footnotes are defined in Org's syntax
356* Orgstruct mode:: Structure editing outside Org
271672fa
BG
357* Org syntax:: Formal description of Org's syntax
358
359Visibility cycling
360
361* Global and local cycling:: Cycling through various visibility states
362* Initial visibility:: Setting the initial visibility state
363* Catching invisible edits:: Preventing mistakes when editing invisible parts
364
365Global and local cycling
366
367* Initial visibility:: Setting the initial visibility state
368* Catching invisible edits:: Preventing mistakes when editing invisible parts
4009494e 369
4009494e
GM
370Tables
371
c0468714
GM
372* Built-in table editor:: Simple tables
373* Column width and alignment:: Overrule the automatic settings
374* Column groups:: Grouping to trigger vertical lines
375* Orgtbl mode:: The table editor as minor mode
376* The spreadsheet:: The table editor has spreadsheet capabilities
377* Org-Plot:: Plotting from org tables
4009494e
GM
378
379The spreadsheet
380
c0468714
GM
381* References:: How to refer to another field or range
382* Formula syntax for Calc:: Using Calc to compute stuff
383* Formula syntax for Lisp:: Writing formulas in Emacs Lisp
ce57c2fe
BG
384* Durations and time values:: How to compute durations and time values
385* Field and range formulas:: Formula for specific (ranges of) fields
c0468714 386* Column formulas:: Formulas valid for an entire column
271672fa 387* Lookup functions:: Lookup functions for searching tables
4009494e 388* Editing and debugging formulas:: Fixing formulas
c0468714 389* Updating the table:: Recomputing all dependent fields
e66ba1df 390* Advanced features:: Field and column names, parameters and automatic recalc
4009494e
GM
391
392Hyperlinks
393
c0468714
GM
394* Link format:: How links in Org are formatted
395* Internal links:: Links to other places in the current file
396* External links:: URL-like links to the world
397* Handling links:: Creating, inserting and following
398* Using links outside Org:: Linking from my C source code?
399* Link abbreviations:: Shortcuts for writing complex links
400* Search options:: Linking to a specific location
401* Custom searches:: When the default search is not enough
4009494e
GM
402
403Internal links
404
c0468714 405* Radio targets:: Make targets trigger links in plain text
4009494e 406
86fbb8ca 407TODO items
4009494e 408
c0468714
GM
409* TODO basics:: Marking and displaying TODO entries
410* TODO extensions:: Workflow and assignments
411* Progress logging:: Dates and notes for progress
412* Priorities:: Some things are more important than others
413* Breaking down tasks:: Splitting a task into manageable pieces
414* Checkboxes:: Tick-off lists
4009494e
GM
415
416Extended use of TODO keywords
417
c0468714
GM
418* Workflow states:: From TODO to DONE in steps
419* TODO types:: I do this, Fred does the rest
420* Multiple sets in one file:: Mixing it all, and still finding your way
421* Fast access to TODO states:: Single letter selection of a state
422* Per-file keywords:: Different files, different requirements
423* Faces for TODO keywords:: Highlighting states
424* TODO dependencies:: When one task needs to wait for others
dbc28aaa 425
a7808fba 426Progress logging
dbc28aaa 427
c0468714
GM
428* Closing items:: When was this entry marked DONE?
429* Tracking TODO state changes:: When did the status change?
430* Tracking your habits:: How consistent have you been?
4009494e
GM
431
432Tags
433
c0468714
GM
434* Tag inheritance:: Tags use the tree structure of the outline
435* Setting tags:: How to assign tags to a headline
271672fa 436* Tag groups:: Use one tag to search for several tags
c0468714 437* Tag searches:: Searching for combinations of tags
4009494e 438
86fbb8ca 439Properties and columns
4009494e 440
c0468714 441* Property syntax:: How properties are spelled out
e66ba1df 442* Special properties:: Access to other Org mode features
c0468714
GM
443* Property searches:: Matching property values
444* Property inheritance:: Passing values down the tree
445* Column view:: Tabular viewing and editing
446* Property API:: Properties for Lisp programmers
4009494e 447
a7808fba 448Column view
4009494e 449
c0468714
GM
450* Defining columns:: The COLUMNS format property
451* Using column view:: How to create and use column view
452* Capturing column view:: A dynamic block for column view
4009494e 453
a7808fba 454Defining columns
4009494e 455
c0468714
GM
456* Scope of column definitions:: Where defined, where valid?
457* Column attributes:: Appearance and content of a column
4009494e 458
86fbb8ca 459Dates and times
4009494e 460
c0468714
GM
461* Timestamps:: Assigning a time to a tree entry
462* Creating timestamps:: Commands which insert timestamps
463* Deadlines and scheduling:: Planning your work
464* Clocking work time:: Tracking how long you spend on a task
c0468714
GM
465* Effort estimates:: Planning work effort in advance
466* Relative timer:: Notes with a running timer
afe98dfa 467* Countdown timer:: Starting a countdown timer for a task
4009494e
GM
468
469Creating timestamps
470
e66ba1df 471* The date/time prompt:: How Org mode helps you entering date and time
c0468714 472* Custom time format:: Making dates look different
4009494e 473
a7808fba 474Deadlines and scheduling
4009494e 475
c0468714
GM
476* Inserting deadline/schedule:: Planning items
477* Repeated tasks:: Items that show up again and again
4009494e 478
acedf35c
CD
479Clocking work time
480
481* Clocking commands:: Starting and stopping a clock
482* The clock table:: Detailed reports
483* Resolving idle time:: Resolving time when you've been idle
484
a351880d 485Capture - Refile - Archive
864c9740 486
c0468714
GM
487* Capture:: Capturing new stuff
488* Attachments:: Add files to tasks
489* RSS Feeds:: Getting input from RSS feeds
1df7defd 490* Protocols:: External (e.g., Browser) access to Emacs and Org
271672fa 491* Refile and copy:: Moving/copying a tree from one place to another
c0468714 492* Archiving:: What to do with finished projects
86fbb8ca
CD
493
494Capture
495
c0468714
GM
496* Setting up capture:: Where notes will be stored
497* Using capture:: Commands to invoke and terminate capture
498* Capture templates:: Define the outline of different note types
864c9740 499
86fbb8ca 500Capture templates
4009494e 501
c0468714
GM
502* Template elements:: What is needed for a complete template entry
503* Template expansion:: Filling in information about time and context
8223b1d2 504* Templates in contexts:: Only show a template in a specific context
a351880d
CD
505
506Archiving
507
c0468714
GM
508* Moving subtrees:: Moving a tree to an archive file
509* Internal archiving:: Switch off a tree but keep it in the file
4009494e 510
86fbb8ca 511Agenda views
4009494e 512
c0468714
GM
513* Agenda files:: Files being searched for agenda information
514* Agenda dispatcher:: Keyboard access to agenda views
515* Built-in agenda views:: What is available out of the box?
516* Presentation and sorting:: How agenda items are prepared for display
517* Agenda commands:: Remote editing of Org trees
518* Custom agenda views:: Defining special searches and views
519* Exporting Agenda Views:: Writing a view to a file
520* Agenda column view:: Using column view for collected entries
4009494e
GM
521
522The built-in agenda views
523
c0468714
GM
524* Weekly/daily agenda:: The calendar page with current tasks
525* Global TODO list:: All unfinished action items
4009494e 526* Matching tags and properties:: Structured information with fine-tuned search
c0468714
GM
527* Timeline:: Time-sorted view for single file
528* Search view:: Find entries by searching for text
529* Stuck projects:: Find projects you need to review
4009494e
GM
530
531Presentation and sorting
532
c0468714
GM
533* Categories:: Not all tasks are equal
534* Time-of-day specifications:: How the agenda knows the time
271672fa
BG
535* Sorting agenda items:: The order of things
536* Filtering/limiting agenda items:: Dynamically narrow the agenda
4009494e
GM
537
538Custom agenda views
539
c0468714
GM
540* Storing searches:: Type once, use often
541* Block agenda:: All the stuff you need in a single buffer
542* Setting Options:: Changing the rules
4009494e 543
a351880d
CD
544Markup for rich export
545
c0468714 546* Structural markup elements:: The basic structure as seen by the exporter
271672fa 547* Images and tables:: Images, tables and caption mechanism
c0468714
GM
548* Literal examples:: Source code examples with special formatting
549* Include files:: Include additional files into a document
550* Index entries:: Making an index
271672fa 551* Macro replacement:: Use macros to create templates
e66ba1df 552* Embedded @LaTeX{}:: LaTeX can be freely used inside Org documents
271672fa 553* Special blocks:: Containers targeted at export back-ends
a351880d
CD
554
555Structural markup elements
556
c0468714
GM
557* Document title:: Where the title is taken from
558* Headings and sections:: The document structure as seen by the exporter
559* Table of contents:: The if and where of the table of contents
c0468714
GM
560* Lists:: Lists
561* Paragraphs:: Paragraphs
562* Footnote markup:: Footnotes
563* Emphasis and monospace:: Bold, italic, etc.
564* Horizontal rules:: Make a line
565* Comment lines:: What will *not* be exported
a351880d 566
acedf35c 567Embedded @LaTeX{}
4009494e 568
c0468714
GM
569* Special symbols:: Greek letters and other symbols
570* Subscripts and superscripts:: Simple syntax for raising/lowering text
8223b1d2 571* @LaTeX{} fragments:: Complex formulas made easy
e66ba1df 572* Previewing @LaTeX{} fragments:: What will this snippet look like?
c0468714 573* CDLaTeX mode:: Speed up entering of formulas
4009494e
GM
574
575Exporting
576
271672fa
BG
577* The Export Dispatcher:: The main exporter interface
578* Export back-ends:: Built-in export formats
579* Export settings:: Generic export settings
c0468714 580* ASCII/Latin-1/UTF-8 export:: Exporting to flat files with encoding
271672fa 581* Beamer export:: Exporting as a Beamer presentation
c0468714 582* HTML export:: Exporting to HTML
e66ba1df 583* @LaTeX{} and PDF export:: Exporting to @LaTeX{}, and processing to PDF
271672fa 584* Markdown export:: Exporting to Markdown
e66ba1df 585* OpenDocument Text export:: Exporting to OpenDocument Text
3c8b09ca 586* Org export:: Exporting to Org
271672fa 587* iCalendar export:: Exporting to iCalendar
30cb51f1
BG
588* Other built-in back-ends:: Exporting to @code{Texinfo} or a man page
589* Export in foreign buffers:: Author tables and lists in Org syntax
271672fa 590* Advanced configuration:: Fine-tuning the export output
b349f79f 591
4009494e
GM
592HTML export
593
c0468714 594* HTML Export commands:: How to invoke HTML export
271672fa 595* HTML doctypes:: Org can export to various (X)HTML flavors
ce57c2fe 596* HTML preamble and postamble:: How to insert a preamble and a postamble
e66ba1df 597* Quoting HTML tags:: Using direct HTML in Org mode
c0468714
GM
598* Links in HTML export:: How links will be interpreted and formatted
599* Tables in HTML export:: How to modify the formatting of tables
600* Images in HTML export:: How to insert figures into HTML output
afe98dfa 601* Math formatting in HTML export:: Beautiful math also on the web
c0468714
GM
602* Text areas in HTML export:: An alternative way to show an example
603* CSS support:: Changing the appearance of the output
604* JavaScript support:: Info and Folding in a web browser
4009494e 605
acedf35c 606@LaTeX{} and PDF export
4009494e 607
271672fa 608* @LaTeX{} export commands:: How to export to LaTeX and PDF
c0468714 609* Header and sectioning:: Setting up the export file structure
e66ba1df 610* Quoting @LaTeX{} code:: Incorporating literal @LaTeX{} code
271672fa 611* @LaTeX{} specific attributes:: Controlling @LaTeX{} output
4009494e 612
e66ba1df 613OpenDocument Text export
ce57c2fe 614
153ae947
BG
615* Pre-requisites for ODT export:: What packages ODT exporter relies on
616* ODT export commands:: How to invoke ODT export
617* Extending ODT export:: How to produce @samp{doc}, @samp{pdf} files
e66ba1df 618* Applying custom styles:: How to apply custom styles to the output
153ae947
BG
619* Links in ODT export:: How links will be interpreted and formatted
620* Tables in ODT export:: How Tables are exported
621* Images in ODT export:: How to insert images
622* Math formatting in ODT export:: How @LaTeX{} fragments are formatted
623* Labels and captions in ODT export:: How captions are rendered
624* Literal examples in ODT export:: How source and example blocks are formatted
625* Advanced topics in ODT export:: Read this if you are a power user
e66ba1df 626
153ae947 627Math formatting in ODT export
e66ba1df
BG
628
629* Working with @LaTeX{} math snippets:: How to embed @LaTeX{} math fragments
630* Working with MathML or OpenDocument formula files:: How to embed equations in native format
631
153ae947 632Advanced topics in ODT export
e66ba1df 633
153ae947 634* Configuring a document converter:: How to register a document converter
e66ba1df
BG
635* Working with OpenDocument style files:: Explore the internals
636* Creating one-off styles:: How to produce custom highlighting etc
153ae947 637* Customizing tables in ODT export:: How to define and use Table templates
e66ba1df 638* Validating OpenDocument XML:: How to debug corrupt OpenDocument files
ce57c2fe 639
4009494e
GM
640Publishing
641
c0468714
GM
642* Configuration:: Defining projects
643* Uploading files:: How to get files up on the server
644* Sample configuration:: Example projects
645* Triggering publication:: Publication commands
4009494e
GM
646
647Configuration
648
c0468714
GM
649* Project alist:: The central configuration variable
650* Sources and destinations:: From here to there
651* Selecting files:: What files are part of the project?
652* Publishing action:: Setting the function doing the publishing
ce57c2fe 653* Publishing options:: Tweaking HTML/@LaTeX{} export
c0468714
GM
654* Publishing links:: Which links keep working after publishing?
655* Sitemap:: Generating a list of all pages
656* Generating an index:: An index that reaches across pages
4009494e
GM
657
658Sample configuration
659
c0468714
GM
660* Simple example:: One-component publishing
661* Complex example:: A multi-component publishing example
86fbb8ca
CD
662
663Working with source code
664
c0468714
GM
665* Structure of code blocks:: Code block syntax described
666* Editing source code:: Language major-mode editing
667* Exporting code blocks:: Export contents and/or results
668* Extracting source code:: Create pure source code files
e66ba1df 669* Evaluating code blocks:: Place results of evaluation in the Org mode buffer
c0468714
GM
670* Library of Babel:: Use and contribute to a library of useful code blocks
671* Languages:: List of supported code block languages
672* Header arguments:: Configure code block functionality
673* Results of evaluation:: How evaluation results are handled
e66ba1df 674* Noweb reference syntax:: Literate programming in Org mode
86fbb8ca 675* Key bindings and useful functions:: Work quickly with code blocks
c0468714 676* Batch execution:: Call functions from the command line
86fbb8ca
CD
677
678Header arguments
679
c0468714
GM
680* Using header arguments:: Different ways to set header arguments
681* Specific header arguments:: List of header arguments
86fbb8ca
CD
682
683Using header arguments
684
685* System-wide header arguments:: Set global default values
c0468714 686* Language-specific header arguments:: Set default values by language
e66ba1df 687* Header arguments in Org mode properties:: Set default values for a buffer or heading
d1389828 688* Language-specific header arguments in Org mode properties:: Set language-specific default values for a buffer or heading
86fbb8ca 689* Code block specific header arguments:: The most common way to set values
afe98dfa 690* Header arguments in function calls:: The most specific level
86fbb8ca
CD
691
692Specific header arguments
693
c0468714 694* var:: Pass arguments to code blocks
afe98dfa
CD
695* results:: Specify the type of results and how they will
696 be collected and handled
c0468714 697* file:: Specify a path for file output
8223b1d2 698* file-desc:: Specify a description for file results
afe98dfa
CD
699* dir:: Specify the default (possibly remote)
700 directory for code block execution
c0468714
GM
701* exports:: Export code and/or results
702* tangle:: Toggle tangling and specify file name
ce57c2fe
BG
703* mkdirp:: Toggle creation of parent directories of target
704 files during tangling
afe98dfa
CD
705* comments:: Toggle insertion of comments in tangled
706 code files
ce57c2fe
BG
707* padline:: Control insertion of padding lines in tangled
708 code files
afe98dfa
CD
709* no-expand:: Turn off variable assignment and noweb
710 expansion during tangling
c0468714
GM
711* session:: Preserve the state of code evaluation
712* noweb:: Toggle expansion of noweb references
ce57c2fe 713* noweb-ref:: Specify block's noweb reference resolution target
153ae947 714* noweb-sep:: String used to separate noweb references
c0468714 715* cache:: Avoid re-evaluating unchanged code blocks
ce57c2fe 716* sep:: Delimiter for writing tabular results outside Org
c0468714
GM
717* hlines:: Handle horizontal lines in tables
718* colnames:: Handle column names in tables
719* rownames:: Handle row names in tables
720* shebang:: Make tangled files executable
271672fa 721* tangle-mode:: Set permission of tangled files
afe98dfa 722* eval:: Limit evaluation of specific code blocks
8223b1d2 723* wrap:: Mark source block evaluation results
271672fa
BG
724* post:: Post processing of code block results
725* prologue:: Text to prepend to code block body
726* epilogue:: Text to append to code block body
4009494e
GM
727
728Miscellaneous
729
c0468714 730* Completion:: M-TAB knows what you need
afe98dfa 731* Easy Templates:: Quick insertion of structural elements
c0468714
GM
732* Speed keys:: Electric commands at the beginning of a headline
733* Code evaluation security:: Org mode files evaluate inline code
734* Customization:: Adapting Org to your taste
735* In-buffer settings:: Overview of the #+KEYWORDS
736* The very busy C-c C-c key:: When in doubt, press C-c C-c
737* Clean view:: Getting rid of leading stars in the outline
738* TTY keys:: Using Org on a tty
739* Interaction:: Other Emacs packages
271672fa 740* org-crypt:: Encrypting Org files
4009494e
GM
741
742Interaction with other packages
743
c0468714
GM
744* Cooperation:: Packages Org cooperates with
745* Conflicts:: Packages that lead to conflicts
4009494e 746
b349f79f 747Hacking
4009494e 748
8223b1d2 749* Hooks:: How to reach into Org's internals
c0468714
GM
750* Add-on packages:: Available extensions
751* Adding hyperlink types:: New custom link types
271672fa 752* Adding export back-ends:: How to write new export back-ends
c0468714 753* Context-sensitive commands:: How to add functionality to such commands
acedf35c 754* Tables in arbitrary syntax:: Orgtbl for @LaTeX{} and other programs
c0468714
GM
755* Dynamic blocks:: Automatically filled blocks
756* Special agenda views:: Customized views
271672fa
BG
757* Speeding up your agendas:: Tips on how to speed up your agendas
758* Extracting agenda information:: Post-processing of agenda information
c0468714
GM
759* Using the property API:: Writing programs that use entry properties
760* Using the mapping API:: Mapping over all or selected entries
4009494e 761
a7808fba 762Tables and lists in arbitrary syntax
4009494e 763
c0468714 764* Radio tables:: Sending and receiving radio tables
e66ba1df 765* A @LaTeX{} example:: Step by step, almost a tutorial
c0468714 766* Translator functions:: Copy and modify
271672fa 767* Radio lists:: Sending and receiving lists
4009494e 768
7006d207
CD
769MobileOrg
770
c0468714
GM
771* Setting up the staging area:: Where to interact with the mobile device
772* Pushing to MobileOrg:: Uploading Org files and agendas
773* Pulling from MobileOrg:: Integrating captured and flagged items
7006d207 774
4009494e
GM
775@end detailmenu
776@end menu
777
a7808fba 778@node Introduction, Document Structure, Top, Top
4009494e
GM
779@chapter Introduction
780@cindex introduction
781
782@menu
c0468714 783* Summary:: Brief summary of what Org does
a89c8ef0 784* Installation:: Installing Org
c0468714
GM
785* Activation:: How to activate Org for certain buffers
786* Feedback:: Bug reports, ideas, patches etc.
8223b1d2 787* Conventions:: Typesetting conventions in the manual
4009494e
GM
788@end menu
789
790@node Summary, Installation, Introduction, Introduction
791@section Summary
792@cindex summary
793
a7808fba 794Org is a mode for keeping notes, maintaining TODO lists, and doing
4009494e
GM
795project planning with a fast and effective plain-text system.
796
a7808fba
CD
797Org develops organizational tasks around NOTES files that contain
798lists or information about projects as plain text. Org is
799implemented on top of Outline mode, which makes it possible to keep the
4009494e
GM
800content of large files well structured. Visibility cycling and
801structure editing help to work with the tree. Tables are easily created
a7808fba 802with a built-in table editor. Org supports TODO items, deadlines,
c8d0cf5c 803timestamps, and scheduling. It dynamically compiles entries into an
4009494e
GM
804agenda that utilizes and smoothly integrates much of the Emacs calendar
805and diary. Plain text URL-like links connect to websites, emails,
806Usenet messages, BBDB entries, and any files related to the projects.
271672fa 807For printing and sharing notes, an Org file can be exported as a
dbc28aaa 808structured ASCII file, as HTML, or (TODO and agenda items only) as an
4009494e 809iCalendar file. It can also serve as a publishing tool for a set of
a7808fba 810linked web pages.
4009494e 811
86fbb8ca
CD
812As a project planning environment, Org works by adding metadata to outline
813nodes. Based on this data, specific entries can be extracted in queries and
814create dynamic @i{agenda views}.
815
acedf35c
CD
816Org mode contains the Org Babel environment which allows you to work with
817embedded source code blocks in a file, to facilitate code evaluation,
ce57c2fe 818documentation, and literate programming techniques.
86fbb8ca
CD
819
820Org's automatic, context-sensitive table editor with spreadsheet
821capabilities can be integrated into any major mode by activating the
822minor Orgtbl mode. Using a translation step, it can be used to maintain
acedf35c 823tables in arbitrary file types, for example in @LaTeX{}. The structure
86fbb8ca
CD
824editing and list creation capabilities can be used outside Org with
825the minor Orgstruct mode.
4009494e 826
a7808fba 827Org keeps simple things simple. When first fired up, it should
4009494e
GM
828feel like a straightforward, easy to use outliner. Complexity is not
829imposed, but a large amount of functionality is available when you need
86fbb8ca
CD
830it. Org is a toolbox and can be used in different ways and for different
831ends, for example:
4009494e
GM
832
833@example
c8d0cf5c
CD
834@r{@bullet{} an outline extension with visibility cycling and structure editing}
835@r{@bullet{} an ASCII system and table editor for taking structured notes}
c8d0cf5c
CD
836@r{@bullet{} a TODO list editor}
837@r{@bullet{} a full agenda and planner with deadlines and work scheduling}
838@pindex GTD, Getting Things Done
86fbb8ca 839@r{@bullet{} an environment in which to implement David Allen's GTD system}
acedf35c 840@r{@bullet{} a simple hypertext system, with HTML and @LaTeX{} export}
271672fa 841@r{@bullet{} a publishing tool to create a set of interlinked web pages}
86fbb8ca 842@r{@bullet{} an environment for literate programming}
4009494e
GM
843@end example
844
4009494e 845@cindex FAQ
a7808fba
CD
846There is a website for Org which provides links to the newest
847version of Org, as well as additional information, frequently asked
1df7defd 848questions (FAQ), links to tutorials, etc. This page is located at
dbc28aaa 849@uref{http://orgmode.org}.
4009494e 850
ce57c2fe
BG
851@cindex print edition
852The version 7.3 of this manual is available as a
853@uref{http://www.network-theory.co.uk/org/manual/, paperback book from Network
854Theory Ltd.}
855
4009494e
GM
856@page
857
858
859@node Installation, Activation, Summary, Introduction
860@section Installation
861@cindex installation
862@cindex XEmacs
863
a89c8ef0
BG
864Org is part of recent distributions of GNU Emacs, so you normally don't need
865to install it. If, for one reason or another, you want to install Org on top
866of this pre-packaged version, there are three ways to do it:
a7808fba 867
8223b1d2 868@itemize @bullet
a89c8ef0
BG
869@item By using Emacs package system.
870@item By downloading Org as an archive.
871@item By using Org's git repository.
8223b1d2 872@end itemize
a7808fba 873
a89c8ef0 874We @b{strongly recommend} to stick to a single installation method.
4009494e 875
a89c8ef0 876@subsubheading Using Emacs packaging system
8223b1d2 877
a89c8ef0
BG
878Recent Emacs distributions include a packaging system which lets you install
879Elisp libraries. You can install Org with @kbd{M-x package-install RET org}.
30cb51f1
BG
880
881@noindent @b{Important}: you need to do this in a session where no @code{.org} file has
882been visited, i.e. where no Org built-in function have been loaded.
883Otherwise autoload Org functions will mess up the installation.
884
271672fa
BG
885Then, to make sure your Org configuration is taken into account, initialize
886the package system with @code{(package-initialize)} in your @file{.emacs}
887before setting any Org option. If you want to use Org's package repository,
888check out the @uref{http://orgmode.org/elpa.html, Org ELPA page}.
8223b1d2 889
a89c8ef0 890@subsubheading Downloading Org as an archive
8223b1d2 891
a89c8ef0
BG
892You can download Org latest release from @uref{http://orgmode.org/, Org's
893website}. In this case, make sure you set the load-path correctly in your
894@file{.emacs}:
4009494e 895
271672fa 896@lisp
8223b1d2 897(add-to-list 'load-path "~/path/to/orgdir/lisp")
271672fa 898@end lisp
4009494e 899
a89c8ef0
BG
900The downloaded archive contains contributed libraries that are not included
901in Emacs. If you want to use them, add the @file{contrib} directory to your
902load-path:
4009494e 903
271672fa 904@lisp
8223b1d2 905(add-to-list 'load-path "~/path/to/orgdir/contrib/lisp" t)
271672fa 906@end lisp
c8d0cf5c 907
a89c8ef0
BG
908Optionally, you can compile the files and/or install them in your system.
909Run @code{make help} to list compilation and installation options.
910
911@subsubheading Using Org's git repository
8223b1d2 912
a89c8ef0 913You can clone Org's repository and install Org like this:
ce57c2fe
BG
914
915@example
a89c8ef0
BG
916$ cd ~/src/
917$ git clone git://orgmode.org/org-mode.git
918$ make autoloads
ce57c2fe
BG
919@end example
920
d3517077
BG
921Note that in this case, @code{make autoloads} is mandatory: it defines Org's
922version in @file{org-version.el} and Org's autoloads in
a89c8ef0 923@file{org-loaddefs.el}.
c8d0cf5c 924
a89c8ef0 925Remember to add the correct load-path as described in the method above.
4009494e 926
d3517077
BG
927You can also compile with @code{make}, generate the documentation with
928@code{make doc}, create a local configuration with @code{make config} and
929install Org with @code{make install}. Please run @code{make help} to get
930the list of compilation/installation options.
a89c8ef0
BG
931
932For more detailed explanations on Org's build system, please check the Org
d3517077
BG
933Build System page on @uref{http://orgmode.org/worg/dev/org-build-system.html,
934Worg}.
a7808fba 935
4009494e
GM
936@node Activation, Feedback, Installation, Introduction
937@section Activation
938@cindex activation
939@cindex autoload
8223b1d2 940@cindex ELPA
a7808fba
CD
941@cindex global key bindings
942@cindex key bindings, global
8223b1d2
BG
943@findex org-agenda
944@findex org-capture
945@findex org-store-link
946@findex org-iswitchb
947
948Since Emacs 22.2, files with the @file{.org} extension use Org mode by
949default. If you are using an earlier version of Emacs, add this line to your
950@file{.emacs} file:
4009494e 951
4009494e 952@lisp
4009494e 953(add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
ce57c2fe 954@end lisp
8223b1d2 955
f99f1641 956Org mode buffers need font-lock to be turned on: this is the default in
8223b1d2
BG
957Emacs@footnote{If you don't use font-lock globally, turn it on in Org buffer
958with @code{(add-hook 'org-mode-hook 'turn-on-font-lock)}}.
959
960There are compatibility issues between Org mode and some other Elisp
961packages, please take the time to check the list (@pxref{Conflicts}).
ce57c2fe
BG
962
963The four Org commands @command{org-store-link}, @command{org-capture},
964@command{org-agenda}, and @command{org-iswitchb} should be accessible through
1df7defd 965global keys (i.e., anywhere in Emacs, not just in Org buffers). Here are
ce57c2fe
BG
966suggested bindings for these keys, please modify the keys to your own
967liking.
968@lisp
4009494e 969(global-set-key "\C-cl" 'org-store-link)
ce57c2fe 970(global-set-key "\C-cc" 'org-capture)
4009494e 971(global-set-key "\C-ca" 'org-agenda)
a7808fba 972(global-set-key "\C-cb" 'org-iswitchb)
4009494e
GM
973@end lisp
974
e66ba1df 975@cindex Org mode, turning on
4009494e 976With this setup, all files with extension @samp{.org} will be put
e66ba1df 977into Org mode. As an alternative, make the first line of a file look
4009494e
GM
978like this:
979
980@example
981MY PROJECTS -*- mode: org; -*-
982@end example
983
c8d0cf5c 984@vindex org-insert-mode-line-in-empty-file
e66ba1df 985@noindent which will select Org mode for this buffer no matter what
4009494e
GM
986the file's name is. See also the variable
987@code{org-insert-mode-line-in-empty-file}.
988
c8d0cf5c
CD
989Many commands in Org work on the region if the region is @i{active}. To make
990use of this, you need to have @code{transient-mark-mode}
991(@code{zmacs-regions} in XEmacs) turned on. In Emacs 23 this is the default,
992in Emacs 22 you need to do this yourself with
b6cb4cd5
CD
993@lisp
994(transient-mark-mode 1)
995@end lisp
c8d0cf5c
CD
996@noindent If you do not like @code{transient-mark-mode}, you can create an
997active region by using the mouse to select a region, or pressing
998@kbd{C-@key{SPC}} twice before moving the cursor.
b6cb4cd5 999
dbc28aaa 1000@node Feedback, Conventions, Activation, Introduction
4009494e
GM
1001@section Feedback
1002@cindex feedback
1003@cindex bug reports
1004@cindex maintainer
1005@cindex author
1006
b349f79f 1007If you find problems with Org, or if you have questions, remarks, or ideas
c8d0cf5c 1008about it, please mail to the Org mailing list @email{emacs-orgmode@@gnu.org}.
6eb02347 1009If you are not a member of the mailing list, your mail will be passed to the
afe98dfa
CD
1010list after a moderator has approved it@footnote{Please consider subscribing
1011to the mailing list, in order to minimize the work the mailing list
1012moderators have to do.}.
1013
1014For bug reports, please first try to reproduce the bug with the latest
acedf35c 1015version of Org available---if you are running an outdated version, it is
afe98dfa
CD
1016quite possible that the bug has been fixed already. If the bug persists,
1017prepare a report and provide as much information as possible, including the
1018version information of Emacs (@kbd{M-x emacs-version @key{RET}}) and Org
271672fa 1019(@kbd{M-x org-version RET}), as well as the Org related setup in
6eb02347
CD
1020@file{.emacs}. The easiest way to do this is to use the command
1021@example
271672fa 1022@kbd{M-x org-submit-bug-report RET}
6eb02347
CD
1023@end example
1024@noindent which will put all this information into an Emacs mail buffer so
1025that you only need to add your description. If you re not sending the Email
1026from within Emacs, please copy and paste the content into your Email program.
1027
e66ba1df
BG
1028Sometimes you might face a problem due to an error in your Emacs or Org mode
1029setup. Before reporting a bug, it is very helpful to start Emacs with minimal
7bd20f91 1030customizations and reproduce the problem. Doing so often helps you determine
27e428e7 1031if the problem is with your customization or with Org mode itself. You can
e66ba1df
BG
1032start a typical minimal session with a command like the example below.
1033
1034@example
1035$ emacs -Q -l /path/to/minimal-org.el
1036@end example
1037
1038However if you are using Org mode as distributed with Emacs, a minimal setup
8223b1d2
BG
1039is not necessary. In that case it is sufficient to start Emacs as
1040@code{emacs -Q}. The @code{minimal-org.el} setup file can have contents as
1041shown below.
e66ba1df 1042
271672fa 1043@lisp
e66ba1df
BG
1044;;; Minimal setup to load latest `org-mode'
1045
1046;; activate debugging
1047(setq debug-on-error t
1048 debug-on-signal nil
1049 debug-on-quit nil)
1050
1051;; add latest org-mode to load path
1052(add-to-list 'load-path (expand-file-name "/path/to/org-mode/lisp"))
8223b1d2 1053(add-to-list 'load-path (expand-file-name "/path/to/org-mode/contrib/lisp" t))
271672fa 1054@end lisp
e66ba1df 1055
6eb02347
CD
1056If an error occurs, a backtrace can be very useful (see below on how to
1057create one). Often a small example file helps, along with clear information
1058about:
4009494e
GM
1059
1060@enumerate
1061@item What exactly did you do?
1062@item What did you expect to happen?
1063@item What happened instead?
1064@end enumerate
afe98dfa 1065@noindent Thank you for helping to improve this program.
4009494e
GM
1066
1067@subsubheading How to create a useful backtrace
1068
1069@cindex backtrace of an error
a7808fba 1070If working with Org produces an error with a message you don't
4009494e 1071understand, you may have hit a bug. The best way to report this is by
c8d0cf5c 1072providing, in addition to what was mentioned above, a @emph{backtrace}.
4009494e
GM
1073This is information from the built-in debugger about where and how the
1074error occurred. Here is how to produce a useful backtrace:
1075
1076@enumerate
1077@item
e66ba1df 1078Reload uncompiled versions of all Org mode Lisp files. The backtrace
c8d0cf5c
CD
1079contains much more information if it is produced with uncompiled code.
1080To do this, use
4009494e 1081@example
271672fa 1082@kbd{C-u M-x org-reload RET}
4009494e 1083@end example
c8d0cf5c
CD
1084@noindent
1085or select @code{Org -> Refresh/Reload -> Reload Org uncompiled} from the
1086menu.
4009494e
GM
1087@item
1088Go to the @code{Options} menu and select @code{Enter Debugger on Error}
1089(XEmacs has this option in the @code{Troubleshooting} sub-menu).
1090@item
1091Do whatever you have to do to hit the error. Don't forget to
1092document the steps you take.
1093@item
1094When you hit the error, a @file{*Backtrace*} buffer will appear on the
1095screen. Save this buffer to a file (for example using @kbd{C-x C-w}) and
1096attach it to your bug report.
1097@end enumerate
1098
dbc28aaa
CD
1099@node Conventions, , Feedback, Introduction
1100@section Typesetting conventions used in this manual
1101
8223b1d2
BG
1102@subsubheading TODO keywords, tags, properties, etc.
1103
1104Org mainly uses three types of keywords: TODO keywords, tags and property
dbc28aaa
CD
1105names. In this manual we use the following conventions:
1106
1107@table @code
1108@item TODO
1109@itemx WAITING
1110TODO keywords are written with all capitals, even if they are
1111user-defined.
1112@item boss
1113@itemx ARCHIVE
1114User-defined tags are written in lowercase; built-in tags with special
1115meaning are written with all capitals.
1116@item Release
1117@itemx PRIORITY
1118User-defined properties are capitalized; built-in properties with
1119special meaning are written with all capitals.
1120@end table
1121
8223b1d2
BG
1122Moreover, Org uses @i{option keywords} (like @code{#+TITLE} to set the title)
1123and @i{environment keywords} (like @code{#+BEGIN_HTML} to start a @code{HTML}
1124environment). They are written in uppercase in the manual to enhance its
1125readability, but you can use lowercase in your Org files@footnote{Easy
1126templates insert lowercase keywords and Babel dynamically inserts
271672fa 1127@code{#+results}.}.
8223b1d2
BG
1128
1129@subsubheading Keybindings and commands
1130@kindex C-c a
1131@findex org-agenda
1132@kindex C-c c
1133@findex org-capture
1134
1135The manual suggests two global keybindings: @kbd{C-c a} for @code{org-agenda}
1136and @kbd{C-c c} for @code{org-capture}. These are only suggestions, but the
1137rest of the manual assumes that you are using these keybindings.
1138
1139Also, the manual lists both the keys and the corresponding commands for
1140accessing a functionality. Org mode often uses the same key for different
1141functions, depending on context. The command that is bound to such keys has
1142a generic name, like @code{org-metaright}. In the manual we will, wherever
1143possible, give the function that is internally called by the generic command.
1144For example, in the chapter on document structure, @kbd{M-@key{right}} will
1145be listed to call @code{org-do-demote}, while in the chapter on tables, it
1146will be listed to call @code{org-table-move-column-right}. If you prefer,
1147you can compile the manual without the command names by unsetting the flag
1148@code{cmdnames} in @file{org.texi}.
acedf35c 1149
a7808fba 1150@node Document Structure, Tables, Introduction, Top
86fbb8ca 1151@chapter Document structure
4009494e
GM
1152@cindex document structure
1153@cindex structure of document
1154
c8d0cf5c 1155Org is based on Outline mode and provides flexible commands to
4009494e
GM
1156edit the structure of the document.
1157
1158@menu
c0468714
GM
1159* Outlines:: Org is based on Outline mode
1160* Headlines:: How to typeset Org tree headlines
1161* Visibility cycling:: Show and hide, much simplified
1162* Motion:: Jumping to other headlines
1163* Structure editing:: Changing sequence and level of headlines
1164* Sparse trees:: Matches embedded in context
1165* Plain lists:: Additional structure within an entry
1166* Drawers:: Tucking stuff away
1167* Blocks:: Folding blocks
1168* Footnotes:: How footnotes are defined in Org's syntax
1169* Orgstruct mode:: Structure editing outside Org
271672fa 1170* Org syntax:: Formal description of Org's syntax
4009494e
GM
1171@end menu
1172
a7808fba 1173@node Outlines, Headlines, Document Structure, Document Structure
4009494e
GM
1174@section Outlines
1175@cindex outlines
a7808fba 1176@cindex Outline mode
4009494e 1177
a7808fba 1178Org is implemented on top of Outline mode. Outlines allow a
4009494e
GM
1179document to be organized in a hierarchical structure, which (at least
1180for me) is the best representation of notes and thoughts. An overview
1181of this structure is achieved by folding (hiding) large parts of the
1182document to show only the general document structure and the parts
a7808fba 1183currently being worked on. Org greatly simplifies the use of
4009494e 1184outlines by compressing the entire show/hide functionality into a single
c8d0cf5c 1185command, @command{org-cycle}, which is bound to the @key{TAB} key.
4009494e 1186
a7808fba 1187@node Headlines, Visibility cycling, Outlines, Document Structure
4009494e
GM
1188@section Headlines
1189@cindex headlines
1190@cindex outline tree
c8d0cf5c 1191@vindex org-special-ctrl-a/e
86fbb8ca
CD
1192@vindex org-special-ctrl-k
1193@vindex org-ctrl-k-protect-subtree
4009494e 1194
86fbb8ca
CD
1195Headlines define the structure of an outline tree. The headlines in Org
1196start with one or more stars, on the left margin@footnote{See the variables
1197@code{org-special-ctrl-a/e}, @code{org-special-ctrl-k}, and
1198@code{org-ctrl-k-protect-subtree} to configure special behavior of @kbd{C-a},
8223b1d2
BG
1199@kbd{C-e}, and @kbd{C-k} in headlines.} @footnote{Clocking only works with
1200headings indented less then 30 stars.}. For example:
4009494e
GM
1201
1202@example
1203* Top level headline
1204** Second level
1205*** 3rd level
1206 some text
1207*** 3rd level
1208 more text
1209
1210* Another top level headline
1211@end example
1212
1213@noindent Some people find the many stars too noisy and would prefer an
1214outline that has whitespace followed by a single star as headline
c8d0cf5c 1215starters. @ref{Clean view}, describes a setup to realize this.
4009494e 1216
c8d0cf5c 1217@vindex org-cycle-separator-lines
4009494e
GM
1218An empty line after the end of a subtree is considered part of it and
1219will be hidden when the subtree is folded. However, if you leave at
1220least two empty lines, one empty line will remain visible after folding
1221the subtree, in order to structure the collapsed view. See the
1222variable @code{org-cycle-separator-lines} to modify this behavior.
1223
a7808fba 1224@node Visibility cycling, Motion, Headlines, Document Structure
4009494e
GM
1225@section Visibility cycling
1226@cindex cycling, visibility
1227@cindex visibility cycling
1228@cindex trees, visibility
1229@cindex show hidden text
1230@cindex hide text
1231
271672fa
BG
1232@menu
1233* Global and local cycling:: Cycling through various visibility states
1234* Initial visibility:: Setting the initial visibility state
1235* Catching invisible edits:: Preventing mistakes when editing invisible parts
1236@end menu
1237
1238@node Global and local cycling, Initial visibility, Visibility cycling, Visibility cycling
1239@subsection Global and local cycling
1240
4009494e 1241Outlines make it possible to hide parts of the text in the buffer.
a7808fba 1242Org uses just two commands, bound to @key{TAB} and
4009494e
GM
1243@kbd{S-@key{TAB}} to change the visibility in the buffer.
1244
1245@cindex subtree visibility states
1246@cindex subtree cycling
1247@cindex folded, subtree visibility state
1248@cindex children, subtree visibility state
1249@cindex subtree, subtree visibility state
afe98dfa
CD
1250@table @asis
1251@orgcmd{@key{TAB},org-cycle}
4009494e
GM
1252@emph{Subtree cycling}: Rotate current subtree among the states
1253
1254@example
1255,-> FOLDED -> CHILDREN -> SUBTREE --.
1256'-----------------------------------'
1257@end example
1258
c8d0cf5c
CD
1259@vindex org-cycle-emulate-tab
1260@vindex org-cycle-global-at-bob
4009494e
GM
1261The cursor must be on a headline for this to work@footnote{see, however,
1262the option @code{org-cycle-emulate-tab}.}. When the cursor is at the
1263beginning of the buffer and the first line is not a headline, then
1264@key{TAB} actually runs global cycling (see below)@footnote{see the
1265option @code{org-cycle-global-at-bob}.}. Also when called with a prefix
1266argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
1267
1268@cindex global visibility states
1269@cindex global cycling
1270@cindex overview, global visibility state
1271@cindex contents, global visibility state
1272@cindex show all, global visibility state
afe98dfa 1273@orgcmd{S-@key{TAB},org-global-cycle}
4009494e
GM
1274@itemx C-u @key{TAB}
1275@emph{Global cycling}: Rotate the entire buffer among the states
1276
1277@example
1278,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
1279'--------------------------------------'
1280@end example
1281
a7808fba
CD
1282When @kbd{S-@key{TAB}} is called with a numeric prefix argument N, the
1283CONTENTS view up to headlines of level N will be shown. Note that inside
1284tables, @kbd{S-@key{TAB}} jumps to the previous field.
4009494e 1285
3c8b09ca
BG
1286@cindex set startup visibility, command
1287@orgcmd{C-u C-u @key{TAB},org-set-startup-visibility}
1288Switch back to the startup visibility of the buffer (@pxref{Initial visibility}).
4009494e 1289@cindex show all, command
afe98dfa 1290@orgcmd{C-u C-u C-u @key{TAB},show-all}
864c9740 1291Show all, including drawers.
8223b1d2 1292@cindex revealing context
afe98dfa 1293@orgcmd{C-c C-r,org-reveal}
a7808fba
CD
1294Reveal context around point, showing the current entry, the following heading
1295and the hierarchy above. Useful for working near a location that has been
1296exposed by a sparse tree command (@pxref{Sparse trees}) or an agenda command
1297(@pxref{Agenda commands}). With a prefix argument show, on each
27e428e7 1298level, all sibling headings. With a double prefix argument, also show the
e66ba1df 1299entire subtree of the parent.
8223b1d2 1300@cindex show branches, command
afe98dfa 1301@orgcmd{C-c C-k,show-branches}
86fbb8ca 1302Expose all the headings of the subtree, CONTENT view for just one subtree.
8223b1d2
BG
1303@cindex show children, command
1304@orgcmd{C-c @key{TAB},show-children}
1305Expose all direct children of the subtree. With a numeric prefix argument N,
1df7defd 1306expose all children down to level N@.
afe98dfa 1307@orgcmd{C-c C-x b,org-tree-to-indirect-buffer}
4009494e
GM
1308Show the current subtree in an indirect buffer@footnote{The indirect
1309buffer
1310@ifinfo
1311(@pxref{Indirect Buffers,,,emacs,GNU Emacs Manual})
1312@end ifinfo
1313@ifnotinfo
1314(see the Emacs manual for more information about indirect buffers)
1315@end ifnotinfo
1316will contain the entire buffer, but will be narrowed to the current
1317tree. Editing the indirect buffer will also change the original buffer,
a7808fba
CD
1318but without affecting visibility in that buffer.}. With a numeric
1319prefix argument N, go up to level N and then take that tree. If N is
1320negative then go up that many levels. With a @kbd{C-u} prefix, do not remove
4009494e 1321the previously used indirect buffer.
ce57c2fe
BG
1322@orgcmd{C-c C-x v,org-copy-visible}
1323Copy the @i{visible} text in the region into the kill ring.
4009494e
GM
1324@end table
1325
271672fa
BG
1326@menu
1327* Initial visibility:: Setting the initial visibility state
1328* Catching invisible edits:: Preventing mistakes when editing invisible parts
1329@end menu
1330
1331@node Initial visibility, Catching invisible edits, Global and local cycling, Visibility cycling
1332@subsection Initial visibility
1333
1334@cindex visibility, initialize
c8d0cf5c 1335@vindex org-startup-folded
8a28a5b8 1336@vindex org-agenda-inhibit-startup
c8d0cf5c
CD
1337@cindex @code{overview}, STARTUP keyword
1338@cindex @code{content}, STARTUP keyword
1339@cindex @code{showall}, STARTUP keyword
7006d207 1340@cindex @code{showeverything}, STARTUP keyword
c8d0cf5c 1341
271672fa
BG
1342When Emacs first visits an Org file, the global state is set to OVERVIEW,
1343i.e., only the top level headlines are visible@footnote{When
1344@code{org-agenda-inhibit-startup} is non-@code{nil}, Org will not honor the default
1345visibility state when first opening a file for the agenda (@pxref{Speeding up
30cb51f1 1346your agendas}).}. This can be configured through the variable
271672fa
BG
1347@code{org-startup-folded}, or on a per-file basis by adding one of the
1348following lines anywhere in the buffer:
4009494e
GM
1349
1350@example
1351#+STARTUP: overview
1352#+STARTUP: content
1353#+STARTUP: showall
7006d207 1354#+STARTUP: showeverything
4009494e
GM
1355@end example
1356
8a28a5b8
BG
1357The startup visibility options are ignored when the file is open for the
1358first time during the agenda generation: if you want the agenda to honor
271672fa 1359the startup visibility, set @code{org-agenda-inhibit-startup} to @code{nil}.
8a28a5b8 1360
c8d0cf5c 1361@cindex property, VISIBILITY
b349f79f 1362@noindent
a50253cc 1363Furthermore, any entries with a @samp{VISIBILITY} property (@pxref{Properties
b349f79f
CD
1364and Columns}) will get their visibility adapted accordingly. Allowed values
1365for this property are @code{folded}, @code{children}, @code{content}, and
1366@code{all}.
271672fa 1367
afe98dfa
CD
1368@table @asis
1369@orgcmd{C-u C-u @key{TAB},org-set-startup-visibility}
1df7defd 1370Switch back to the startup visibility of the buffer, i.e., whatever is
b349f79f
CD
1371requested by startup options and @samp{VISIBILITY} properties in individual
1372entries.
1373@end table
1374
271672fa
BG
1375@node Catching invisible edits, , Initial visibility, Visibility cycling
1376@subsection Catching invisible edits
1377
1378@vindex org-catch-invisible-edits
1379@cindex edits, catching invisible
1380Sometimes you may inadvertently edit an invisible part of the buffer and be
1381confused on what has been edited and how to undo the mistake. Setting
1382@code{org-catch-invisible-edits} to non-@code{nil} will help prevent this. See the
1383docstring of this option on how Org should catch invisible edits and process
1384them.
1385
a7808fba 1386@node Motion, Structure editing, Visibility cycling, Document Structure
4009494e
GM
1387@section Motion
1388@cindex motion, between headlines
1389@cindex jumping, to headlines
1390@cindex headline navigation
1391The following commands jump to other headlines in the buffer.
1392
afe98dfa
CD
1393@table @asis
1394@orgcmd{C-c C-n,outline-next-visible-heading}
4009494e 1395Next heading.
afe98dfa 1396@orgcmd{C-c C-p,outline-previous-visible-heading}
4009494e 1397Previous heading.
afe98dfa 1398@orgcmd{C-c C-f,org-forward-same-level}
4009494e 1399Next heading same level.
afe98dfa 1400@orgcmd{C-c C-b,org-backward-same-level}
4009494e 1401Previous heading same level.
afe98dfa 1402@orgcmd{C-c C-u,outline-up-heading}
4009494e 1403Backward to higher level heading.
afe98dfa 1404@orgcmd{C-c C-j,org-goto}
4009494e
GM
1405Jump to a different place without changing the current outline
1406visibility. Shows the document structure in a temporary buffer, where
1407you can use the following keys to find your destination:
c8d0cf5c 1408@vindex org-goto-auto-isearch
4009494e
GM
1409@example
1410@key{TAB} @r{Cycle visibility.}
1411@key{down} / @key{up} @r{Next/previous visible headline.}
71d35b24
CD
1412@key{RET} @r{Select this location.}
1413@kbd{/} @r{Do a Sparse-tree search}
1414@r{The following keys work if you turn off @code{org-goto-auto-isearch}}
4009494e
GM
1415n / p @r{Next/previous visible headline.}
1416f / b @r{Next/previous headline same level.}
1417u @r{One level up.}
14180-9 @r{Digit argument.}
71d35b24 1419q @r{Quit}
4009494e 1420@end example
c8d0cf5c
CD
1421@vindex org-goto-interface
1422@noindent
271672fa 1423See also the option @code{org-goto-interface}.
4009494e
GM
1424@end table
1425
a351880d 1426@node Structure editing, Sparse trees, Motion, Document Structure
4009494e
GM
1427@section Structure editing
1428@cindex structure editing
1429@cindex headline, promotion and demotion
1430@cindex promotion, of subtrees
1431@cindex demotion, of subtrees
1432@cindex subtree, cut and paste
1433@cindex pasting, of subtrees
1434@cindex cutting, of subtrees
1435@cindex copying, of subtrees
6eb02347 1436@cindex sorting, of subtrees
4009494e
GM
1437@cindex subtrees, cut and paste
1438
afe98dfa
CD
1439@table @asis
1440@orgcmd{M-@key{RET},org-insert-heading}
c8d0cf5c 1441@vindex org-M-RET-may-split-line
271672fa
BG
1442Insert a new heading/item with the same level than the one at point.
1443If the cursor is in a plain list item, a new item is created
1444(@pxref{Plain lists}). To prevent this behavior in lists, call the
1445command with a prefix argument. When this command is used in the
1446middle of a line, the line is split and the rest of the line becomes
1447the new item or headline@footnote{If you do not want the line to be
1448split, customize the variable @code{org-M-RET-may-split-line}.}. If
1449the command is used at the @emph{beginning} of a headline, the new
1450headline is created before the current line. If the command is used
1451at the @emph{end} of a folded subtree (i.e., behind the ellipses at
1452the end of a headline), then a headline will be
1453inserted after the end of the subtree. Calling this command with
1454@kbd{C-u C-u} will unconditionally respect the headline's content and
1455create a new item at the end of the parent subtree.
afe98dfa 1456@orgcmd{C-@key{RET},org-insert-heading-respect-content}
71d35b24
CD
1457Just like @kbd{M-@key{RET}}, except when adding a new heading below the
1458current heading, the new heading is placed after the body instead of before
1459it. This command works from anywhere in the entry.
afe98dfa 1460@orgcmd{M-S-@key{RET},org-insert-todo-heading}
c8d0cf5c
CD
1461@vindex org-treat-insert-todo-heading-as-state-change
1462Insert new TODO entry with same level as current heading. See also the
1463variable @code{org-treat-insert-todo-heading-as-state-change}.
afe98dfa 1464@orgcmd{C-S-@key{RET},org-insert-todo-heading-respect-content}
864c9740
CD
1465Insert new TODO entry with same level as current heading. Like
1466@kbd{C-@key{RET}}, the new headline will be inserted after the current
1467subtree.
afe98dfa 1468@orgcmd{@key{TAB},org-cycle}
a351880d
CD
1469In a new entry with no text yet, the first @key{TAB} demotes the entry to
1470become a child of the previous one. The next @key{TAB} makes it a parent,
1471and so on, all the way to top level. Yet another @key{TAB}, and you are back
1472to the initial level.
afe98dfa 1473@orgcmd{M-@key{left},org-do-promote}
4009494e 1474Promote current heading by one level.
afe98dfa 1475@orgcmd{M-@key{right},org-do-demote}
4009494e 1476Demote current heading by one level.
afe98dfa 1477@orgcmd{M-S-@key{left},org-promote-subtree}
4009494e 1478Promote the current subtree by one level.
afe98dfa 1479@orgcmd{M-S-@key{right},org-demote-subtree}
4009494e 1480Demote the current subtree by one level.
afe98dfa 1481@orgcmd{M-S-@key{up},org-move-subtree-up}
4009494e
GM
1482Move subtree up (swap with previous subtree of same
1483level).
afe98dfa 1484@orgcmd{M-S-@key{down},org-move-subtree-down}
4009494e 1485Move subtree down (swap with next subtree of same level).
6d3e4c80
BG
1486@orgcmd{M-h,org-mark-element}
1487Mark the element at point. Hitting repeatedly will mark subsequent elements
65e7ca35 1488of the one just marked. E.g., hitting @key{M-h} on a paragraph will mark it,
6d3e4c80
BG
1489hitting @key{M-h} immediately again will mark the next one.
1490@orgcmd{C-c @@,org-mark-subtree}
1491Mark the subtree at point. Hitting repeatedly will mark subsequent subtrees
1492of the same level than the marked subtree.
afe98dfa 1493@orgcmd{C-c C-x C-w,org-cut-subtree}
1df7defd 1494Kill subtree, i.e., remove it from buffer but save in kill ring.
a7808fba 1495With a numeric prefix argument N, kill N sequential subtrees.
afe98dfa 1496@orgcmd{C-c C-x M-w,org-copy-subtree}
a7808fba
CD
1497Copy subtree to kill ring. With a numeric prefix argument N, copy the N
1498sequential subtrees.
afe98dfa 1499@orgcmd{C-c C-x C-y,org-paste-subtree}
4009494e 1500Yank subtree from kill ring. This does modify the level of the subtree to
a7808fba
CD
1501make sure the tree fits in nicely at the yank position. The yank level can
1502also be specified with a numeric prefix argument, or by yanking after a
4009494e 1503headline marker like @samp{****}.
afe98dfa 1504@orgcmd{C-y,org-yank}
c8d0cf5c
CD
1505@vindex org-yank-adjusted-subtrees
1506@vindex org-yank-folded-subtrees
271672fa 1507Depending on the options @code{org-yank-adjusted-subtrees} and
e45e3595
CD
1508@code{org-yank-folded-subtrees}, Org's internal @code{yank} command will
1509paste subtrees folded and in a clever way, using the same command as @kbd{C-c
55033558
CD
1510C-x C-y}. With the default settings, no level adjustment will take place,
1511but the yanked tree will be folded unless doing so would swallow text
1512previously visible. Any prefix argument to this command will force a normal
1513@code{yank} to be executed, with the prefix passed along. A good way to
1514force a normal yank is @kbd{C-u C-y}. If you use @code{yank-pop} after a
1515yank, it will yank previous kill items plainly, without adjustment and
1516folding.
afe98dfa 1517@orgcmd{C-c C-x c,org-clone-subtree-with-time-shift}
c8d0cf5c
CD
1518Clone a subtree by making a number of sibling copies of it. You will be
1519prompted for the number of copies to make, and you can also specify if any
1520timestamps in the entry should be shifted. This can be useful, for example,
1521to create a number of tasks related to a series of lectures to prepare. For
1522more details, see the docstring of the command
1523@code{org-clone-subtree-with-time-shift}.
afe98dfa 1524@orgcmd{C-c C-w,org-refile}
271672fa 1525Refile entry or region to a different location. @xref{Refile and copy}.
8223b1d2 1526@orgcmd{C-c ^,org-sort}
a7808fba
CD
1527Sort same-level entries. When there is an active region, all entries in the
1528region will be sorted. Otherwise the children of the current headline are
1529sorted. The command prompts for the sorting method, which can be
c8d0cf5c
CD
1530alphabetically, numerically, by time (first timestamp with active preferred,
1531creation time, scheduled time, deadline time), by priority, by TODO keyword
1532(in the sequence the keywords have been defined in the setup) or by the value
1533of a property. Reverse sorting is possible as well. You can also supply
1534your own function to extract the sorting key. With a @kbd{C-u} prefix,
153ae947 1535sorting will be case-sensitive.
afe98dfa 1536@orgcmd{C-x n s,org-narrow-to-subtree}
b349f79f 1537Narrow buffer to current subtree.
ce57c2fe
BG
1538@orgcmd{C-x n b,org-narrow-to-block}
1539Narrow buffer to current block.
afe98dfa 1540@orgcmd{C-x n w,widen}
c8d0cf5c 1541Widen buffer to remove narrowing.
afe98dfa 1542@orgcmd{C-c *,org-toggle-heading}
55e0839d
CD
1543Turn a normal line or plain list item into a headline (so that it becomes a
1544subheading at its location). Also turn a headline into a normal line by
1545removing the stars. If there is an active region, turn all lines in the
1546region into headlines. If the first line in the region was an item, turn
1547only the item lines into headlines. Finally, if the first line is a
28a16a1b 1548headline, remove the stars from all headlines in the region.
4009494e
GM
1549@end table
1550
1551@cindex region, active
1552@cindex active region
c8d0cf5c
CD
1553@cindex transient mark mode
1554When there is an active region (Transient Mark mode), promotion and
4009494e
GM
1555demotion work on all headlines in the region. To select a region of
1556headlines, it is best to place both point and mark at the beginning of a
1557line, mark at the beginning of the first headline, and point at the line
1558just after the last headline to change. Note that when the cursor is
1559inside a table (@pxref{Tables}), the Meta-Cursor keys have different
1560functionality.
1561
28a16a1b 1562
a351880d 1563@node Sparse trees, Plain lists, Structure editing, Document Structure
4009494e
GM
1564@section Sparse trees
1565@cindex sparse trees
1566@cindex trees, sparse
1567@cindex folding, sparse trees
1568@cindex occur, command
1569
c8d0cf5c
CD
1570@vindex org-show-hierarchy-above
1571@vindex org-show-following-heading
1572@vindex org-show-siblings
1573@vindex org-show-entry-below
e66ba1df 1574An important feature of Org mode is the ability to construct @emph{sparse
b349f79f
CD
1575trees} for selected information in an outline tree, so that the entire
1576document is folded as much as possible, but the selected information is made
1577visible along with the headline structure above it@footnote{See also the
1578variables @code{org-show-hierarchy-above}, @code{org-show-following-heading},
1579@code{org-show-siblings}, and @code{org-show-entry-below} for detailed
1580control on how much context is shown around each match.}. Just try it out
1581and you will see immediately how it works.
dbc28aaa 1582
e66ba1df 1583Org mode contains several commands creating such trees, all these
dbc28aaa 1584commands can be accessed through a dispatcher:
4009494e 1585
afe98dfa
CD
1586@table @asis
1587@orgcmd{C-c /,org-sparse-tree}
dbc28aaa 1588This prompts for an extra key to select a sparse-tree creating command.
acedf35c 1589@orgcmd{C-c / r,org-occur}
c8d0cf5c 1590@vindex org-remove-highlights-with-change
ce57c2fe 1591Prompts for a regexp and shows a sparse tree with all matches. If
b349f79f
CD
1592the match is in a headline, the headline is made visible. If the match is in
1593the body of an entry, headline and body are made visible. In order to
1594provide minimal context, also the full hierarchy of headlines above the match
1595is shown, as well as the headline following the match. Each match is also
1596highlighted; the highlights disappear when the buffer is changed by an
c8d0cf5c 1597editing command@footnote{This depends on the option
b349f79f
CD
1598@code{org-remove-highlights-with-change}}, or by pressing @kbd{C-c C-c}.
1599When called with a @kbd{C-u} prefix argument, previous highlights are kept,
1600so several calls to this command can be stacked.
ce57c2fe
BG
1601@orgcmdkkc{M-g n,M-g M-n,next-error}
1602Jump to the next sparse tree match in this buffer.
1603@orgcmdkkc{M-g p,M-g M-p,previous-error}
1604Jump to the previous sparse tree match in this buffer.
4009494e 1605@end table
dbc28aaa 1606
4009494e 1607@noindent
c8d0cf5c 1608@vindex org-agenda-custom-commands
4009494e 1609For frequently used sparse trees of specific search strings, you can
271672fa 1610use the option @code{org-agenda-custom-commands} to define fast
4009494e
GM
1611keyboard access to specific sparse trees. These commands will then be
1612accessible through the agenda dispatcher (@pxref{Agenda dispatcher}).
1613For example:
1614
1615@lisp
1616(setq org-agenda-custom-commands
1617 '(("f" occur-tree "FIXME")))
1618@end lisp
1619
1620@noindent will define the key @kbd{C-c a f} as a shortcut for creating
1621a sparse tree matching the string @samp{FIXME}.
1622
dbc28aaa
CD
1623The other sparse tree commands select headings based on TODO keywords,
1624tags, or properties and will be discussed later in this manual.
4009494e 1625
271672fa 1626@kindex C-c C-e C-v
4009494e
GM
1627@cindex printing sparse trees
1628@cindex visible text, printing
1629To print a sparse tree, you can use the Emacs command
1630@code{ps-print-buffer-with-faces} which does not print invisible parts
1631of the document @footnote{This does not work under XEmacs, because
1632XEmacs uses selective display for outlining, not text properties.}.
271672fa
BG
1633Or you can use @kbd{C-c C-e C-v} to export only the visible part of
1634the document and print the resulting file.
4009494e 1635
a7808fba 1636@node Plain lists, Drawers, Sparse trees, Document Structure
4009494e
GM
1637@section Plain lists
1638@cindex plain lists
1639@cindex lists, plain
1640@cindex lists, ordered
1641@cindex ordered lists
1642
1643Within an entry of the outline tree, hand-formatted lists can provide
afe98dfa
CD
1644additional structure. They also provide a way to create lists of checkboxes
1645(@pxref{Checkboxes}). Org supports editing such lists, and every exporter
1646(@pxref{Exporting}) can parse and format them.
4009494e 1647
b349f79f
CD
1648Org knows ordered lists, unordered lists, and description lists.
1649@itemize @bullet
1650@item
1651@emph{Unordered} list items start with @samp{-}, @samp{+}, or
1652@samp{*}@footnote{When using @samp{*} as a bullet, lines must be indented or
1653they will be seen as top-level headlines. Also, when you are hiding leading
ce57c2fe
BG
1654stars to get a clean outline view, plain list items starting with a star may
1655be hard to distinguish from true headlines. In short: even though @samp{*}
1656is supported, it may be better to not use it for plain list items.} as
1657bullets.
b349f79f 1658@item
afe98dfa 1659@vindex org-plain-list-ordered-item-terminator
271672fa 1660@vindex org-list-allow-alphabetical
b349f79f 1661@emph{Ordered} list items start with a numeral followed by either a period or
afe98dfa
CD
1662a right parenthesis@footnote{You can filter out any of them by configuring
1663@code{org-plain-list-ordered-item-terminator}.}, such as @samp{1.} or
ce57c2fe 1664@samp{1)}@footnote{You can also get @samp{a.}, @samp{A.}, @samp{a)} and
271672fa 1665@samp{A)} by configuring @code{org-list-allow-alphabetical}. To minimize
ce57c2fe
BG
1666confusion with normal text, those are limited to one character only. Beyond
1667that limit, bullets will automatically fallback to numbers.}. If you want a
1df7defd 1668list to start with a different value (e.g., 20), start the text of the item
ce57c2fe
BG
1669with @code{[@@20]}@footnote{If there's a checkbox in the item, the cookie
1670must be put @emph{before} the checkbox. If you have activated alphabetical
1671lists, you can also use counters like @code{[@@b]}.}. Those constructs can
1672be used in any item of the list in order to enforce a particular numbering.
b349f79f 1673@item
a351880d 1674@emph{Description} list items are unordered list items, and contain the
ce57c2fe 1675separator @samp{ :: } to distinguish the description @emph{term} from the
a50253cc 1676description.
b349f79f
CD
1677@end itemize
1678
1679Items belonging to the same list must have the same indentation on the first
1680line. In particular, if an ordered list reaches number @samp{10.}, then the
16812--digit numbers must be written left-aligned with the other numbers in the
ce57c2fe
BG
1682list. An item ends before the next line that is less or equally indented
1683than its bullet/number.
afe98dfa 1684
271672fa 1685@vindex org-list-empty-line-terminates-plain-lists
153ae947
BG
1686A list ends whenever every item has ended, which means before any line less
1687or equally indented than items at top level. It also ends before two blank
271672fa
BG
1688lines@footnote{See also @code{org-list-empty-line-terminates-plain-lists}.}.
1689In that case, all items are closed. Here is an example:
4009494e
GM
1690
1691@example
1692@group
1693** Lord of the Rings
1694 My favorite scenes are (in this order)
1695 1. The attack of the Rohirrim
a50253cc 1696 2. Eowyn's fight with the witch king
4009494e
GM
1697 + this was already my favorite scene in the book
1698 + I really like Miranda Otto.
1699 3. Peter Jackson being shot by Legolas
afe98dfa 1700 - on DVD only
ce57c2fe 1701 He makes a really funny face when it happens.
a50253cc 1702 But in the end, no individual scenes matter but the film as a whole.
b349f79f 1703 Important actors in this film are:
a50253cc 1704 - @b{Elijah Wood} :: He plays Frodo
ac20fddf 1705 - @b{Sean Austin} :: He plays Sam, Frodo's friend. I still remember
c8d0cf5c 1706 him very well from his role as Mikey Walsh in @i{The Goonies}.
4009494e
GM
1707@end group
1708@end example
1709
c8d0cf5c
CD
1710Org supports these lists by tuning filling and wrapping commands to deal with
1711them correctly@footnote{Org only changes the filling settings for Emacs. For
1712XEmacs, you should use Kyle E. Jones' @file{filladapt.el}. To turn this on,
1713put into @file{.emacs}: @code{(require 'filladapt)}}, and by exporting them
1714properly (@pxref{Exporting}). Since indentation is what governs the
1715structure of these lists, many structural constructs like @code{#+BEGIN_...}
ce57c2fe 1716blocks can be indented to signal that they belong to a particular item.
4009494e 1717
86fbb8ca 1718@vindex org-list-demote-modify-bullet
ce57c2fe 1719@vindex org-list-indent-offset
86fbb8ca
CD
1720If you find that using a different bullet for a sub-list (than that used for
1721the current list-level) improves readability, customize the variable
ce57c2fe
BG
1722@code{org-list-demote-modify-bullet}. To get a greater difference of
1723indentation between items and theirs sub-items, customize
1724@code{org-list-indent-offset}.
86fbb8ca 1725
afe98dfa
CD
1726@vindex org-list-automatic-rules
1727The following commands act on items when the cursor is in the first line of
1728an item (the line with the bullet or number). Some of them imply the
acedf35c 1729application of automatic rules to keep list structure intact. If some of
afe98dfa
CD
1730these actions get in your way, configure @code{org-list-automatic-rules}
1731to disable them individually.
4009494e 1732
afe98dfa
CD
1733@table @asis
1734@orgcmd{@key{TAB},org-cycle}
e66ba1df 1735@cindex cycling, in plain lists
c8d0cf5c
CD
1736@vindex org-cycle-include-plain-lists
1737Items can be folded just like headline levels. Normally this works only if
1738the cursor is on a plain list item. For more details, see the variable
acedf35c
CD
1739@code{org-cycle-include-plain-lists}. If this variable is set to
1740@code{integrate}, plain list items will be treated like low-level
e66ba1df
BG
1741headlines. The level of an item is then given by the indentation of the
1742bullet/number. Items are always subordinate to real headlines, however; the
1743hierarchies remain completely separated. In a new item with no text yet, the
1744first @key{TAB} demotes the item to become a child of the previous
1745one. Subsequent @key{TAB}s move the item to meaningful levels in the list
1746and eventually get it back to its initial position.
afe98dfa 1747@orgcmd{M-@key{RET},org-insert-heading}
c8d0cf5c 1748@vindex org-M-RET-may-split-line
afe98dfa 1749@vindex org-list-automatic-rules
a7808fba
CD
1750Insert new item at current level. With a prefix argument, force a new
1751heading (@pxref{Structure editing}). If this command is used in the middle
ce57c2fe
BG
1752of an item, that item is @emph{split} in two, and the second part becomes the
1753new item@footnote{If you do not want the item to be split, customize the
1754variable @code{org-M-RET-may-split-line}.}. If this command is executed
1755@emph{before item's body}, the new item is created @emph{before} the current
1756one.
e66ba1df
BG
1757@end table
1758
1759@table @kbd
4009494e 1760@kindex M-S-@key{RET}
271672fa 1761@item M-S-@key{RET}
4009494e 1762Insert a new item with a checkbox (@pxref{Checkboxes}).
4009494e 1763@kindex S-@key{down}
e66ba1df
BG
1764@item S-up
1765@itemx S-down
3da3282e 1766@cindex shift-selection-mode
c8d0cf5c 1767@vindex org-support-shift-select
ce57c2fe
BG
1768@vindex org-list-use-circular-motion
1769Jump to the previous/next item in the current list@footnote{If you want to
1770cycle around items that way, you may customize
1771@code{org-list-use-circular-motion}.}, but only if
3da3282e
CD
1772@code{org-support-shift-select} is off. If not, you can still use paragraph
1773jumping commands like @kbd{C-@key{up}} and @kbd{C-@key{down}} to quite
1774similar effect.
ce57c2fe
BG
1775@kindex M-@key{up}
1776@kindex M-@key{down}
e66ba1df
BG
1777@item M-up
1778@itemx M-down
ce57c2fe 1779Move the item including subitems up/down@footnote{See
271672fa 1780@code{org-list-use-circular-motion} for a cyclic behavior.} (swap with
ce57c2fe
BG
1781previous/next item of same indentation). If the list is ordered, renumbering
1782is automatic.
86fbb8ca
CD
1783@kindex M-@key{left}
1784@kindex M-@key{right}
e66ba1df
BG
1785@item M-left
1786@itemx M-right
86fbb8ca 1787Decrease/increase the indentation of an item, leaving children alone.
4009494e
GM
1788@kindex M-S-@key{left}
1789@kindex M-S-@key{right}
271672fa
BG
1790@item M-S-@key{left}
1791@itemx M-S-@key{right}
4009494e 1792Decrease/increase the indentation of the item, including subitems.
afe98dfa
CD
1793Initially, the item tree is selected based on current indentation. When
1794these commands are executed several times in direct succession, the initially
1795selected region is used, even if the new indentation would imply a different
1796hierarchy. To use the new hierarchy, break the command chain with a cursor
1797motion or so.
1798
1799As a special case, using this command on the very first item of a list will
1800move the whole list. This behavior can be disabled by configuring
1801@code{org-list-automatic-rules}. The global indentation of a list has no
1802influence on the text @emph{after} the list.
4009494e
GM
1803@kindex C-c C-c
1804@item C-c C-c
1805If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the
ce57c2fe
BG
1806state of the checkbox. In any case, verify bullets and indentation
1807consistency in the whole list.
4009494e 1808@kindex C-c -
afe98dfa 1809@vindex org-plain-list-ordered-item-terminator
4009494e 1810@item C-c -
a7808fba 1811Cycle the entire list level through the different itemize/enumerate bullets
afe98dfa
CD
1812(@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}) or a subset of them,
1813depending on @code{org-plain-list-ordered-item-terminator}, the type of list,
8223b1d2
BG
1814and its indentation. With a numeric prefix argument N, select the Nth bullet
1815from this list. If there is an active region when calling this, selected
1816text will be changed into an item. With a prefix argument, all lines will be
1817converted to list items. If the first line already was a list item, any item
1818marker will be removed from the list. Finally, even without an active
1819region, a normal line will be converted into a list item.
c8d0cf5c
CD
1820@kindex C-c *
1821@item C-c *
1822Turn a plain list item into a headline (so that it becomes a subheading at
ce57c2fe
BG
1823its location). @xref{Structure editing}, for a detailed explanation.
1824@kindex C-c C-*
1825@item C-c C-*
1826Turn the whole plain list into a subtree of the current heading. Checkboxes
1827(@pxref{Checkboxes}) will become TODO (resp. DONE) keywords when unchecked
1828(resp. checked).
64fb801f
CD
1829@kindex S-@key{left}
1830@kindex S-@key{right}
e66ba1df 1831@item S-left/right
c8d0cf5c 1832@vindex org-support-shift-select
3da3282e
CD
1833This command also cycles bullet styles when the cursor in on the bullet or
1834anywhere in an item line, details depending on
1835@code{org-support-shift-select}.
c8d0cf5c 1836@kindex C-c ^
271672fa 1837@cindex sorting, of plain list
c8d0cf5c
CD
1838@item C-c ^
1839Sort the plain list. You will be prompted for the sorting method:
271672fa
BG
1840numerically, alphabetically, by time, by checked status for check lists,
1841or by a custom function.
4009494e
GM
1842@end table
1843
c8d0cf5c 1844@node Drawers, Blocks, Plain lists, Document Structure
4009494e
GM
1845@section Drawers
1846@cindex drawers
c8d0cf5c 1847@cindex #+DRAWERS
4009494e
GM
1848@cindex visibility cycling, drawers
1849
c8d0cf5c 1850@vindex org-drawers
8223b1d2
BG
1851@cindex org-insert-drawer
1852@kindex C-c C-x d
4009494e 1853Sometimes you want to keep information associated with an entry, but you
e66ba1df 1854normally don't want to see it. For this, Org mode has @emph{drawers}.
271672fa
BG
1855Drawers need to be configured with the option @code{org-drawers}@footnote{You
1856can define additional drawers on a per-file basis with a line like
1857@code{#+DRAWERS: HIDDEN STATE}}. Drawers look like this:
4009494e
GM
1858
1859@example
1860** This is a headline
1861 Still outside the drawer
1862 :DRAWERNAME:
ce57c2fe 1863 This is inside the drawer.
4009494e
GM
1864 :END:
1865 After the drawer.
1866@end example
1867
8223b1d2
BG
1868You can interactively insert drawers at point by calling
1869@code{org-insert-drawer}, which is bound to @key{C-c C-x d}. With an active
1870region, this command will put the region inside the drawer. With a prefix
1871argument, this command calls @code{org-insert-property-drawer} and add a
1872property drawer right below the current headline. Completion over drawer
1873keywords is also possible using @key{M-TAB}.
1874
c8d0cf5c
CD
1875Visibility cycling (@pxref{Visibility cycling}) on the headline will hide and
1876show the entry, but keep the drawer collapsed to a single line. In order to
1877look inside the drawer, you need to move the cursor to the drawer line and
e66ba1df 1878press @key{TAB} there. Org mode uses the @code{PROPERTIES} drawer for
c8d0cf5c
CD
1879storing properties (@pxref{Properties and Columns}), and you can also arrange
1880for state change notes (@pxref{Tracking TODO state changes}) and clock times
ed21c5c8 1881(@pxref{Clocking work time}) to be stored in a drawer @code{LOGBOOK}. If you
acedf35c 1882want to store a quick note in the LOGBOOK drawer, in a similar way to state changes, use
ed21c5c8
CD
1883
1884@table @kbd
1885@kindex C-c C-z
1886@item C-c C-z
1887Add a time-stamped note to the LOGBOOK drawer.
1888@end table
c8d0cf5c 1889
271672fa
BG
1890@vindex org-export-with-drawers
1891You can select the name of the drawers which should be exported with
1892@code{org-export-with-drawers}. In that case, drawer contents will appear in
1893export output. Property drawers are not affected by this variable and are
1894never exported.
1895
c8d0cf5c
CD
1896@node Blocks, Footnotes, Drawers, Document Structure
1897@section Blocks
1898
1899@vindex org-hide-block-startup
1900@cindex blocks, folding
e66ba1df 1901Org mode uses begin...end blocks for various purposes from including source
c8d0cf5c
CD
1902code examples (@pxref{Literal examples}) to capturing time logging
1903information (@pxref{Clocking work time}). These blocks can be folded and
1904unfolded by pressing TAB in the begin line. You can also get all blocks
271672fa 1905folded at startup by configuring the option @code{org-hide-block-startup}
c8d0cf5c 1906or on a per-file basis by using
4009494e 1907
c8d0cf5c
CD
1908@cindex @code{hideblocks}, STARTUP keyword
1909@cindex @code{nohideblocks}, STARTUP keyword
1910@example
1911#+STARTUP: hideblocks
1912#+STARTUP: nohideblocks
1913@end example
1914
1915@node Footnotes, Orgstruct mode, Blocks, Document Structure
55e0839d
CD
1916@section Footnotes
1917@cindex footnotes
1918
e66ba1df 1919Org mode supports the creation of footnotes. In contrast to the
271672fa
BG
1920@file{footnote.el} package, Org mode's footnotes are designed for work on
1921a larger document, not only for one-off documents like emails.
1922
1923A footnote is started by a footnote marker in square brackets in column 0, no
1924indentation allowed. It ends at the next footnote definition, headline, or
1925after two consecutive empty lines. The footnote reference is simply the
1926marker in square brackets, inside text. For example:
55e0839d
CD
1927
1928@example
1929The Org homepage[fn:1] now looks a lot better than it used to.
1930...
1931[fn:1] The link is: http://orgmode.org
1932@end example
1933
e66ba1df 1934Org mode extends the number-based syntax to @emph{named} footnotes and
55e0839d
CD
1935optional inline definition. Using plain numbers as markers (as
1936@file{footnote.el} does) is supported for backward compatibility, but not
acedf35c 1937encouraged because of possible conflicts with @LaTeX{} snippets (@pxref{Embedded
e66ba1df 1938@LaTeX{}}). Here are the valid references:
55e0839d
CD
1939
1940@table @code
1941@item [1]
c8d0cf5c 1942A plain numeric footnote marker. Compatible with @file{footnote.el}, but not
86fbb8ca 1943recommended because something like @samp{[1]} could easily be part of a code
c8d0cf5c 1944snippet.
55e0839d
CD
1945@item [fn:name]
1946A named footnote reference, where @code{name} is a unique label word, or, for
1947simplicity of automatic creation, a number.
1948@item [fn:: This is the inline definition of this footnote]
acedf35c 1949A @LaTeX{}-like anonymous footnote where the definition is given directly at the
55e0839d
CD
1950reference point.
1951@item [fn:name: a definition]
1952An inline definition of a footnote, which also specifies a name for the note.
867d4bb3 1953Since Org allows multiple references to the same note, you can then use
55e0839d
CD
1954@code{[fn:name]} to create additional references.
1955@end table
1956
c8d0cf5c
CD
1957@vindex org-footnote-auto-label
1958Footnote labels can be created automatically, or you can create names yourself.
55e0839d 1959This is handled by the variable @code{org-footnote-auto-label} and its
acedf35c 1960corresponding @code{#+STARTUP} keywords. See the docstring of that variable
55e0839d
CD
1961for details.
1962
1963@noindent The following command handles footnotes:
1964
1965@table @kbd
1966@kindex C-c C-x f
1967@item C-c C-x f
1968The footnote action command.
1969
1970When the cursor is on a footnote reference, jump to the definition. When it
1971is at a definition, jump to the (first) reference.
1972
c8d0cf5c
CD
1973@vindex org-footnote-define-inline
1974@vindex org-footnote-section
1975@vindex org-footnote-auto-adjust
271672fa 1976Otherwise, create a new footnote. Depending on the option
55e0839d
CD
1977@code{org-footnote-define-inline}@footnote{The corresponding in-buffer
1978setting is: @code{#+STARTUP: fninline} or @code{#+STARTUP: nofninline}}, the
1979definition will be placed right into the text as part of the reference, or
271672fa 1980separately into the location determined by the option
55e0839d
CD
1981@code{org-footnote-section}.
1982
1983When this command is called with a prefix argument, a menu of additional
1984options is offered:
1985@example
1986s @r{Sort the footnote definitions by reference sequence. During editing,}
1987 @r{Org makes no effort to sort footnote definitions into a particular}
1988 @r{sequence. If you want them sorted, use this command, which will}
c8d0cf5c
CD
1989 @r{also move entries according to @code{org-footnote-section}. Automatic}
1990 @r{sorting after each insertion/deletion can be configured using the}
271672fa 1991 @r{option @code{org-footnote-auto-adjust}.}
c8d0cf5c 1992r @r{Renumber the simple @code{fn:N} footnotes. Automatic renumbering}
271672fa 1993 @r{after each insertion/deletion can be configured using the option}
c8d0cf5c
CD
1994 @r{@code{org-footnote-auto-adjust}.}
1995S @r{Short for first @code{r}, then @code{s} action.}
55e0839d
CD
1996n @r{Normalize the footnotes by collecting all definitions (including}
1997 @r{inline definitions) into a special section, and then numbering them}
1998 @r{in sequence. The references will then also be numbers. This is}
1df7defd 1999 @r{meant to be the final step before finishing a document (e.g., sending}
271672fa 2000 @r{off an email).}
55e0839d
CD
2001d @r{Delete the footnote at point, and all definitions of and references}
2002 @r{to it.}
2003@end example
c8d0cf5c
CD
2004Depending on the variable @code{org-footnote-auto-adjust}@footnote{the
2005corresponding in-buffer options are @code{fnadjust} and @code{nofnadjust}.},
2006renumbering and sorting footnotes can be automatic after each insertion or
2007deletion.
2008
55e0839d
CD
2009@kindex C-c C-c
2010@item C-c C-c
2011If the cursor is on a footnote reference, jump to the definition. If it is a
2012the definition, jump back to the reference. When called at a footnote
2013location with a prefix argument, offer the same menu as @kbd{C-c C-x f}.
2014@kindex C-c C-o
2015@kindex mouse-1
2016@kindex mouse-2
c8d0cf5c 2017@item C-c C-o @r{or} mouse-1/2
55e0839d
CD
2018Footnote labels are also links to the corresponding definition/reference, and
2019you can use the usual commands to follow these links.
2020@end table
2021
271672fa 2022@node Orgstruct mode, Org syntax, Footnotes, Document Structure
4009494e 2023@section The Orgstruct minor mode
a7808fba 2024@cindex Orgstruct mode
4009494e
GM
2025@cindex minor mode for structure editing
2026
e66ba1df 2027If you like the intuitive way the Org mode structure editing and list
c8d0cf5c
CD
2028formatting works, you might want to use these commands in other modes like
2029Text mode or Mail mode as well. The minor mode @code{orgstruct-mode} makes
271672fa 2030this possible. Toggle the mode with @kbd{M-x orgstruct-mode RET}, or
ce57c2fe 2031turn it on by default, for example in Message mode, with one of:
4009494e
GM
2032
2033@lisp
ce57c2fe
BG
2034(add-hook 'message-mode-hook 'turn-on-orgstruct)
2035(add-hook 'message-mode-hook 'turn-on-orgstruct++)
4009494e
GM
2036@end lisp
2037
c8d0cf5c
CD
2038When this mode is active and the cursor is on a line that looks to Org like a
2039headline or the first line of a list item, most structure editing commands
2040will work, even if the same keys normally have different functionality in the
2041major mode you are using. If the cursor is not in one of those special
271672fa
BG
2042lines, Orgstruct mode lurks silently in the shadows.
2043
2044When you use @code{orgstruct++-mode}, Org will also export indentation and
2045autofill settings into that mode, and detect item context after the first
2046line of an item.
2047
2048@vindex orgstruct-heading-prefix-regexp
2049You can also use Org structure editing to fold and unfold headlines in
2050@emph{any} file, provided you defined @code{orgstruct-heading-prefix-regexp}:
2051the regular expression must match the local prefix to use before Org's
2052headlines. For example, if you set this variable to @code{";; "} in Emacs
2053Lisp files, you will be able to fold and unfold headlines in Emacs Lisp
2054commented lines. Some commands like @code{org-demote} are disabled when the
2055prefix is set, but folding/unfolding will work correctly.
2056
2057@node Org syntax, , Orgstruct mode, Document Structure
2058@section Org syntax
2059@cindex Org syntax
2060
2061A reference document providing a formal description of Org's syntax is
2062available as @uref{http://orgmode.org/worg/dev/org-syntax.html, a draft on
2063Worg}, written and maintained by Nicolas Goaziou. It defines Org's core
2064internal concepts such as @code{headlines}, @code{sections}, @code{affiliated
2065keywords}, @code{(greater) elements} and @code{objects}. Each part of an Org
2066file falls into one of the categories above.
2067
2068To explore the abstract structure of an Org buffer, run this in a buffer:
2069
2070@lisp
2071M-: (org-element-parse-buffer) RET
2072@end lisp
2073
2074It will output a list containing the buffer's content represented as an
2075abstract structure. The export engine relies on the information stored in
2076this list. Most interactive commands (e.g., for structure editing) also
2077rely on the syntactic meaning of the surrounding context.
4009494e 2078
a7808fba 2079@node Tables, Hyperlinks, Document Structure, Top
4009494e
GM
2080@chapter Tables
2081@cindex tables
2082@cindex editing tables
2083
a7808fba 2084Org comes with a fast and intuitive table editor. Spreadsheet-like
acedf35c 2085calculations are supported using the Emacs @file{calc} package
153ae947 2086(@pxref{Top, Calc, , calc, Gnu Emacs Calculator Manual}).
4009494e
GM
2087
2088@menu
c0468714
GM
2089* Built-in table editor:: Simple tables
2090* Column width and alignment:: Overrule the automatic settings
2091* Column groups:: Grouping to trigger vertical lines
2092* Orgtbl mode:: The table editor as minor mode
2093* The spreadsheet:: The table editor has spreadsheet capabilities
2094* Org-Plot:: Plotting from org tables
4009494e
GM
2095@end menu
2096
c8d0cf5c 2097@node Built-in table editor, Column width and alignment, Tables, Tables
4009494e
GM
2098@section The built-in table editor
2099@cindex table editor, built-in
2100
1df7defd 2101Org makes it easy to format tables in plain ASCII@. Any line with @samp{|} as
ce57c2fe
BG
2102the first non-whitespace character is considered part of a table. @samp{|}
2103is also the column separator@footnote{To insert a vertical bar into a table
2104field, use @code{\vert} or, inside a word @code{abc\vert@{@}def}.}. A table
2105might look like this:
4009494e
GM
2106
2107@example
2108| Name | Phone | Age |
2109|-------+-------+-----|
2110| Peter | 1234 | 17 |
2111| Anna | 4321 | 25 |
2112@end example
2113
2114A table is re-aligned automatically each time you press @key{TAB} or
2115@key{RET} or @kbd{C-c C-c} inside the table. @key{TAB} also moves to
2116the next field (@key{RET} to the next row) and creates new table rows
2117at the end of the table or before horizontal lines. The indentation
2118of the table is set by the first line. Any line starting with
2119@samp{|-} is considered as a horizontal separator line and will be
2120expanded on the next re-align to span the whole table width. So, to
2121create the above table, you would only type
2122
2123@example
2124|Name|Phone|Age|
2125|-
2126@end example
2127
2128@noindent and then press @key{TAB} to align the table and start filling in
55e0839d
CD
2129fields. Even faster would be to type @code{|Name|Phone|Age} followed by
2130@kbd{C-c @key{RET}}.
4009494e 2131
c8d0cf5c
CD
2132@vindex org-enable-table-editor
2133@vindex org-table-auto-blank-field
a7808fba 2134When typing text into a field, Org treats @key{DEL},
4009494e
GM
2135@key{Backspace}, and all character keys in a special way, so that
2136inserting and deleting avoids shifting other fields. Also, when
2137typing @emph{immediately after the cursor was moved into a new field
2138with @kbd{@key{TAB}}, @kbd{S-@key{TAB}} or @kbd{@key{RET}}}, the
2139field is automatically made blank. If this behavior is too
271672fa 2140unpredictable for you, configure the options
4009494e
GM
2141@code{org-enable-table-editor} and @code{org-table-auto-blank-field}.
2142
2143@table @kbd
2144@tsubheading{Creation and conversion}
afe98dfa 2145@orgcmd{C-c |,org-table-create-or-convert-from-region}
ce57c2fe 2146Convert the active region to table. If every line contains at least one
4009494e 2147TAB character, the function assumes that the material is tab separated.
dbc28aaa 2148If every line contains a comma, comma-separated values (CSV) are assumed.
4009494e 2149If not, lines are split at whitespace into fields. You can use a prefix
dbc28aaa
CD
2150argument to force a specific separator: @kbd{C-u} forces CSV, @kbd{C-u
2151C-u} forces TAB, and a numeric argument N indicates that at least N
a7808fba 2152consecutive spaces, or alternatively a TAB will be the separator.
28a16a1b 2153@*
a7808fba 2154If there is no active region, this command creates an empty Org
ce57c2fe 2155table. But it is easier just to start typing, like
4009494e
GM
2156@kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
2157
2158@tsubheading{Re-aligning and field motion}
acedf35c 2159@orgcmd{C-c C-c,org-table-align}
271672fa 2160Re-align the table and don't move to another field.
4009494e 2161@c
acedf35c 2162@orgcmd{<TAB>,org-table-next-field}
4009494e
GM
2163Re-align the table, move to the next field. Creates a new row if
2164necessary.
2165@c
acedf35c 2166@orgcmd{S-@key{TAB},org-table-previous-field}
4009494e
GM
2167Re-align, move to previous field.
2168@c
acedf35c 2169@orgcmd{@key{RET},org-table-next-row}
4009494e
GM
2170Re-align the table and move down to next row. Creates a new row if
2171necessary. At the beginning or end of a line, @key{RET} still does
2172NEWLINE, so it can be used to split a table.
c8d0cf5c 2173@c
acedf35c 2174@orgcmd{M-a,org-table-beginning-of-field}
c8d0cf5c 2175Move to beginning of the current table field, or on to the previous field.
acedf35c 2176@orgcmd{M-e,org-table-end-of-field}
c8d0cf5c 2177Move to end of the current table field, or on to the next field.
4009494e
GM
2178
2179@tsubheading{Column and row editing}
acedf35c 2180@orgcmdkkcc{M-@key{left},M-@key{right},org-table-move-column-left,org-table-move-column-right}
4009494e
GM
2181Move the current column left/right.
2182@c
acedf35c 2183@orgcmd{M-S-@key{left},org-table-delete-column}
4009494e
GM
2184Kill the current column.
2185@c
acedf35c 2186@orgcmd{M-S-@key{right},org-table-insert-column}
4009494e
GM
2187Insert a new column to the left of the cursor position.
2188@c
acedf35c 2189@orgcmdkkcc{M-@key{up},M-@key{down},org-table-move-row-up,org-table-move-row-down}
4009494e
GM
2190Move the current row up/down.
2191@c
acedf35c 2192@orgcmd{M-S-@key{up},org-table-kill-row}
4009494e
GM
2193Kill the current row or horizontal line.
2194@c
acedf35c 2195@orgcmd{M-S-@key{down},org-table-insert-row}
a7808fba
CD
2196Insert a new row above the current row. With a prefix argument, the line is
2197created below the current one.
4009494e 2198@c
acedf35c 2199@orgcmd{C-c -,org-table-insert-hline}
2096a1b6 2200Insert a horizontal line below current row. With a prefix argument, the line
4009494e
GM
2201is created above the current line.
2202@c
acedf35c 2203@orgcmd{C-c @key{RET},org-table-hline-and-move}
2096a1b6 2204Insert a horizontal line below current row, and move the cursor into the row
55e0839d
CD
2205below that line.
2206@c
acedf35c 2207@orgcmd{C-c ^,org-table-sort-lines}
4009494e
GM
2208Sort the table lines in the region. The position of point indicates the
2209column to be used for sorting, and the range of lines is the range
2210between the nearest horizontal separator lines, or the entire table. If
2211point is before the first column, you will be prompted for the sorting
2212column. If there is an active region, the mark specifies the first line
2213and the sorting column, while point should be in the last line to be
2214included into the sorting. The command prompts for the sorting type
2215(alphabetically, numerically, or by time). When called with a prefix
2216argument, alphabetic sorting will be case-sensitive.
2217
2218@tsubheading{Regions}
acedf35c 2219@orgcmd{C-c C-x M-w,org-table-copy-region}
c8d0cf5c
CD
2220Copy a rectangular region from a table to a special clipboard. Point and
2221mark determine edge fields of the rectangle. If there is no active region,
2222copy just the current field. The process ignores horizontal separator lines.
4009494e 2223@c
acedf35c 2224@orgcmd{C-c C-x C-w,org-table-cut-region}
4009494e
GM
2225Copy a rectangular region from a table to a special clipboard, and
2226blank all fields in the rectangle. So this is the ``cut'' operation.
2227@c
acedf35c 2228@orgcmd{C-c C-x C-y,org-table-paste-rectangle}
4009494e 2229Paste a rectangular region into a table.
864c9740 2230The upper left corner ends up in the current field. All involved fields
4009494e
GM
2231will be overwritten. If the rectangle does not fit into the present table,
2232the table is enlarged as needed. The process ignores horizontal separator
2233lines.
2234@c
acedf35c
CD
2235@orgcmd{M-@key{RET},org-table-wrap-region}
2236Split the current field at the cursor position and move the rest to the line
2237below. If there is an active region, and both point and mark are in the same
2238column, the text in the column is wrapped to minimum width for the given
2239number of lines. A numeric prefix argument may be used to change the number
2240of desired lines. If there is no region, but you specify a prefix argument,
2241the current field is made blank, and the content is appended to the field
2242above.
4009494e
GM
2243
2244@tsubheading{Calculations}
2245@cindex formula, in tables
2246@cindex calculations, in tables
2247@cindex region, active
2248@cindex active region
c8d0cf5c 2249@cindex transient mark mode
acedf35c 2250@orgcmd{C-c +,org-table-sum}
4009494e
GM
2251Sum the numbers in the current column, or in the rectangle defined by
2252the active region. The result is shown in the echo area and can
2253be inserted with @kbd{C-y}.
2254@c
acedf35c 2255@orgcmd{S-@key{RET},org-table-copy-down}
c8d0cf5c 2256@vindex org-table-copy-increment
864c9740
CD
2257When current field is empty, copy from first non-empty field above. When not
2258empty, copy current field down to next row and move cursor along with it.
271672fa 2259Depending on the option @code{org-table-copy-increment}, integer field
864c9740 2260values will be incremented during copy. Integers that are too large will not
a50253cc 2261be incremented. Also, a @code{0} prefix argument temporarily disables the
c8d0cf5c
CD
2262increment. This key is also used by shift-selection and related modes
2263(@pxref{Conflicts}).
4009494e
GM
2264
2265@tsubheading{Miscellaneous}
acedf35c 2266@orgcmd{C-c `,org-table-edit-field}
c8d0cf5c
CD
2267Edit the current field in a separate window. This is useful for fields that
2268are not fully visible (@pxref{Column width and alignment}). When called with
2269a @kbd{C-u} prefix, just make the full field visible, so that it can be
ce57c2fe
BG
2270edited in place. When called with two @kbd{C-u} prefixes, make the editor
2271window follow the cursor through the table and always show the current
2272field. The follow mode exits automatically when the cursor leaves the table,
2273or when you repeat this command with @kbd{C-u C-u C-c `}.
4009494e 2274@c
271672fa 2275@item M-x org-table-import RET
c8d0cf5c
CD
2276Import a file as a table. The table should be TAB or whitespace
2277separated. Use, for example, to import a spreadsheet table or data
dbc28aaa
CD
2278from a database, because these programs generally can write
2279TAB-separated text files. This command works by inserting the file into
2280the buffer and then converting the region to a table. Any prefix
2281argument is passed on to the converter, which uses it to determine the
2282separator.
acedf35c 2283@orgcmd{C-c |,org-table-create-or-convert-from-region}
a7808fba 2284Tables can also be imported by pasting tabular text into the Org
4009494e 2285buffer, selecting the pasted text with @kbd{C-x C-x} and then using the
44ce9197 2286@kbd{C-c |} command (see above under @i{Creation and conversion}).
4009494e 2287@c
271672fa 2288@item M-x org-table-export RET
acedf35c 2289@findex org-table-export
c8d0cf5c
CD
2290@vindex org-table-export-default-format
2291Export the table, by default as a TAB-separated file. Use for data
a7808fba 2292exchange with, for example, spreadsheet or database programs. The format
271672fa 2293used to export the file can be configured in the option
a7808fba
CD
2294@code{org-table-export-default-format}. You may also use properties
2295@code{TABLE_EXPORT_FILE} and @code{TABLE_EXPORT_FORMAT} to specify the file
b349f79f
CD
2296name and the format for table export in a subtree. Org supports quite
2297general formats for exported tables. The exporter format is the same as the
c8d0cf5c 2298format used by Orgtbl radio tables, see @ref{Translator functions}, for a
b349f79f 2299detailed description.
4009494e
GM
2300@end table
2301
2302If you don't like the automatic table editor because it gets in your
2303way on lines which you would like to start with @samp{|}, you can turn
2304it off with
2305
2306@lisp
2307(setq org-enable-table-editor nil)
2308@end lisp
2309
2310@noindent Then the only table command that still works is
2311@kbd{C-c C-c} to do a manual re-align.
2312
c8d0cf5c
CD
2313@node Column width and alignment, Column groups, Built-in table editor, Tables
2314@section Column width and alignment
4009494e 2315@cindex narrow columns in tables
c8d0cf5c
CD
2316@cindex alignment in tables
2317
2318The width of columns is automatically determined by the table editor. And
2319also the alignment of a column is determined automatically from the fraction
2320of number-like versus non-number fields in the column.
4009494e 2321
ed21c5c8
CD
2322Sometimes a single field or a few fields need to carry more text, leading to
2323inconveniently wide columns. Or maybe you want to make a table with several
2324columns having a fixed width, regardless of content. To set@footnote{This
2325feature does not work on XEmacs.} the width of a column, one field anywhere
2326in the column may contain just the string @samp{<N>} where @samp{N} is an
2327integer specifying the width of the column in characters. The next re-align
2328will then set the width of this column to this value.
4009494e
GM
2329
2330@example
2331@group
2332|---+------------------------------| |---+--------|
2333| | | | | <6> |
2334| 1 | one | | 1 | one |
2335| 2 | two | ----\ | 2 | two |
2336| 3 | This is a long chunk of text | ----/ | 3 | This=> |
2337| 4 | four | | 4 | four |
2338|---+------------------------------| |---+--------|
2339@end group
2340@end example
2341
2342@noindent
2343Fields that are wider become clipped and end in the string @samp{=>}.
acedf35c 2344Note that the full text is still in the buffer but is hidden.
c8d0cf5c 2345To see the full text, hold the mouse over the field---a tool-tip window
4009494e
GM
2346will show the full content. To edit such a field, use the command
2347@kbd{C-c `} (that is @kbd{C-c} followed by the backquote). This will
2348open a new window with the full field. Edit it and finish with @kbd{C-c
2349C-c}.
2350
c8d0cf5c 2351@vindex org-startup-align-all-tables
4009494e
GM
2352When visiting a file containing a table with narrowed columns, the
2353necessary character hiding has not yet happened, and the table needs to
2354be aligned before it looks nice. Setting the option
2355@code{org-startup-align-all-tables} will realign all tables in a file
2356upon visiting, but also slow down startup. You can also set this option
2357on a per-file basis with:
2358
2359@example
2360#+STARTUP: align
2361#+STARTUP: noalign
2362@end example
2363
c8d0cf5c 2364If you would like to overrule the automatic alignment of number-rich columns
acedf35c 2365to the right and of string-rich column to the left, you can use @samp{<r>},
8223b1d2 2366@samp{<c>}@footnote{Centering does not work inside Emacs, but it does have an
afe98dfa 2367effect when exporting to HTML.} or @samp{<l>} in a similar fashion. You may
271672fa 2368also combine alignment and field width like this: @samp{<r10>}.
c8d0cf5c 2369
86fbb8ca
CD
2370Lines which only contain these formatting cookies will be removed
2371automatically when exporting the document.
2372
c8d0cf5c 2373@node Column groups, Orgtbl mode, Column width and alignment, Tables
4009494e
GM
2374@section Column groups
2375@cindex grouping columns in tables
2376
a7808fba 2377When Org exports tables, it does so by default without vertical
4009494e
GM
2378lines because that is visually more satisfying in general. Occasionally
2379however, vertical lines can be useful to structure a table into groups
2380of columns, much like horizontal lines can do for groups of rows. In
2381order to specify column groups, you can use a special row where the
2382first field contains only @samp{/}. The further fields can either
2383contain @samp{<} to indicate that this column should start a group,
153ae947
BG
2384@samp{>} to indicate the end of a column, or @samp{<>} (no space between @samp{<}
2385and @samp{>}) to make a column
a7808fba 2386a group of its own. Boundaries between column groups will upon export be
4009494e
GM
2387marked with vertical lines. Here is an example:
2388
2389@example
86fbb8ca
CD
2390| N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
2391|---+-----+-----+-----+---------+------------|
2392| / | < | | > | < | > |
2393| 1 | 1 | 1 | 1 | 1 | 1 |
2394| 2 | 4 | 8 | 16 | 1.4142 | 1.1892 |
2395| 3 | 9 | 27 | 81 | 1.7321 | 1.3161 |
2396|---+-----+-----+-----+---------+------------|
2397#+TBLFM: $2=$1^2::$3=$1^3::$4=$1^4::$5=sqrt($1)::$6=sqrt(sqrt(($1)))
4009494e
GM
2398@end example
2399
a7808fba 2400It is also sufficient to just insert the column group starters after
86fbb8ca 2401every vertical line you would like to have:
4009494e
GM
2402
2403@example
2404| N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
2405|----+-----+-----+-----+---------+------------|
2406| / | < | | | < | |
2407@end example
2408
a7808fba 2409@node Orgtbl mode, The spreadsheet, Column groups, Tables
4009494e 2410@section The Orgtbl minor mode
a7808fba 2411@cindex Orgtbl mode
4009494e
GM
2412@cindex minor mode for tables
2413
a7808fba
CD
2414If you like the intuitive way the Org table editor works, you
2415might also want to use it in other modes like Text mode or Mail mode.
2416The minor mode Orgtbl mode makes this possible. You can always toggle
271672fa 2417the mode with @kbd{M-x orgtbl-mode RET}. To turn it on by default, for
ce57c2fe 2418example in Message mode, use
4009494e
GM
2419
2420@lisp
ce57c2fe 2421(add-hook 'message-mode-hook 'turn-on-orgtbl)
4009494e
GM
2422@end lisp
2423
2424Furthermore, with some special setup, it is possible to maintain tables
a7808fba 2425in arbitrary syntax with Orgtbl mode. For example, it is possible to
acedf35c 2426construct @LaTeX{} tables with the underlying ease and power of
a7808fba 2427Orgtbl mode, including spreadsheet capabilities. For details, see
4009494e
GM
2428@ref{Tables in arbitrary syntax}.
2429
c8d0cf5c 2430@node The spreadsheet, Org-Plot, Orgtbl mode, Tables
4009494e
GM
2431@section The spreadsheet
2432@cindex calculations, in tables
2433@cindex spreadsheet capabilities
2434@cindex @file{calc} package
2435
2436The table editor makes use of the Emacs @file{calc} package to implement
2437spreadsheet-like capabilities. It can also evaluate Emacs Lisp forms to
ed21c5c8
CD
2438derive fields from other fields. While fully featured, Org's implementation
2439is not identical to other spreadsheets. For example, Org knows the concept
2440of a @emph{column formula} that will be applied to all non-header fields in a
2441column without having to copy the formula to each relevant field. There is
2442also a formula debugger, and a formula editor with features for highlighting
2443fields in the table corresponding to the references at the point in the
2444formula, moving these references by arrow keys
4009494e
GM
2445
2446@menu
c0468714
GM
2447* References:: How to refer to another field or range
2448* Formula syntax for Calc:: Using Calc to compute stuff
2449* Formula syntax for Lisp:: Writing formulas in Emacs Lisp
ce57c2fe
BG
2450* Durations and time values:: How to compute durations and time values
2451* Field and range formulas:: Formula for specific (ranges of) fields
c0468714 2452* Column formulas:: Formulas valid for an entire column
271672fa 2453* Lookup functions:: Lookup functions for searching tables
4009494e 2454* Editing and debugging formulas:: Fixing formulas
c0468714 2455* Updating the table:: Recomputing all dependent fields
e66ba1df 2456* Advanced features:: Field and column names, parameters and automatic recalc
4009494e
GM
2457@end menu
2458
2459@node References, Formula syntax for Calc, The spreadsheet, The spreadsheet
2460@subsection References
2461@cindex references
2462
2463To compute fields in the table from other fields, formulas must
a7808fba 2464reference other fields or ranges. In Org, fields can be referenced
4009494e
GM
2465by name, by absolute coordinates, and by relative coordinates. To find
2466out what the coordinates of a field are, press @kbd{C-c ?} in that
2467field, or press @kbd{C-c @}} to toggle the display of a grid.
2468
2469@subsubheading Field references
2470@cindex field references
2471@cindex references, to fields
2472
2473Formulas can reference the value of another field in two ways. Like in
2474any other spreadsheet, you may reference fields with a letter/number
2475combination like @code{B3}, meaning the 2nd field in the 3rd row.
ce57c2fe
BG
2476@vindex org-table-use-standard-references
2477However, Org prefers@footnote{Org will understand references typed by the
2478user as @samp{B4}, but it will not use this syntax when offering a formula
271672fa
BG
2479for editing. You can customize this behavior using the option
2480@code{org-table-use-standard-references}.} to use another, more general
ce57c2fe 2481representation that looks like this:
4009494e 2482@example
c8d0cf5c 2483@@@var{row}$@var{column}
4009494e
GM
2484@end example
2485
ce57c2fe 2486Column specifications can be absolute like @code{$1},
1df7defd 2487@code{$2},...@code{$@var{N}}, or relative to the current column (i.e., the
ce57c2fe
BG
2488column of the field which is being computed) like @code{$+1} or @code{$-2}.
2489@code{$<} and @code{$>} are immutable references to the first and last
2490column, respectively, and you can use @code{$>>>} to indicate the third
2491column from the right.
2492
2493The row specification only counts data lines and ignores horizontal separator
2494lines (hlines). Like with columns, you can use absolute row numbers
2495@code{@@1}, @code{@@2},...@code{@@@var{N}}, and row numbers relative to the
2496current row like @code{@@+3} or @code{@@-1}. @code{@@<} and @code{@@>} are
2497immutable references the first and last@footnote{For backward compatibility
2498you can also use special names like @code{$LR5} and @code{$LR12} to refer in
2499a stable way to the 5th and 12th field in the last row of the table.
2500However, this syntax is deprecated, it should not be used for new documents.
2501Use @code{@@>$} instead.} row in the table, respectively. You may also
2502specify the row relative to one of the hlines: @code{@@I} refers to the first
1df7defd 2503hline, @code{@@II} to the second, etc. @code{@@-I} refers to the first such
ce57c2fe
BG
2504line above the current line, @code{@@+I} to the first such line below the
2505current line. You can also write @code{@@III+2} which is the second data line
2506after the third hline in the table.
2507
2508@code{@@0} and @code{$0} refer to the current row and column, respectively,
1df7defd 2509i.e., to the row/column for the field being computed. Also, if you omit
ce57c2fe
BG
2510either the column or the row part of the reference, the current row/column is
2511implied.
4009494e 2512
a7808fba 2513Org's references with @emph{unsigned} numbers are fixed references
4009494e
GM
2514in the sense that if you use the same reference in the formula for two
2515different fields, the same field will be referenced each time.
a7808fba 2516Org's references with @emph{signed} numbers are floating
4009494e
GM
2517references because the same reference operator can reference different
2518fields depending on the field being calculated by the formula.
2519
2520Here are a few examples:
2521
2522@example
ce57c2fe
BG
2523@@2$3 @r{2nd row, 3rd column (same as @code{C2})}
2524$5 @r{column 5 in the current row (same as @code{E&})}
4009494e
GM
2525@@2 @r{current column, row 2}
2526@@-1$-3 @r{the field one row up, three columns to the left}
2527@@-I$2 @r{field just under hline above current row, column 2}
ce57c2fe 2528@@>$5 @r{field in the last row, in column 5}
4009494e
GM
2529@end example
2530
2531@subsubheading Range references
2532@cindex range references
2533@cindex references, to ranges
2534
2535You may reference a rectangular range of fields by specifying two field
2536references connected by two dots @samp{..}. If both fields are in the
2537current row, you may simply use @samp{$2..$7}, but if at least one field
2538is in a different row, you need to use the general @code{@@row$column}
8a28a5b8 2539format at least for the first field (i.e the reference must start with
4009494e
GM
2540@samp{@@} in order to be interpreted correctly). Examples:
2541
2542@example
ce57c2fe
BG
2543$1..$3 @r{first three fields in the current row}
2544$P..$Q @r{range, using column names (see under Advanced)}
2545$<<<..$>> @r{start in third column, continue to the one but last}
2546@@2$1..@@4$3 @r{6 fields between these two fields (same as @code{A2..C4})}
271672fa 2547@@-1$-2..@@-1 @r{3 fields in the row above, starting from 2 columns on the left}
ce57c2fe 2548@@I..II @r{between first and second hline, short for @code{@@I..@@II}}
4009494e
GM
2549@end example
2550
2551@noindent Range references return a vector of values that can be fed
271672fa
BG
2552into Calc vector functions. Empty fields in ranges are normally suppressed,
2553so that the vector contains only the non-empty fields. For other options
2554with the mode switches @samp{E}, @samp{N} and examples @pxref{Formula syntax
2555for Calc}.
4009494e 2556
ed21c5c8
CD
2557@subsubheading Field coordinates in formulas
2558@cindex field coordinates
2559@cindex coordinates, of field
2560@cindex row, of field coordinates
2561@cindex column, of field coordinates
2562
2563For Calc formulas and Lisp formulas @code{@@#} and @code{$#} can be used to
2564get the row or column number of the field where the formula result goes.
2565The traditional Lisp formula equivalents are @code{org-table-current-dline}
2566and @code{org-table-current-column}. Examples:
2567
2568@example
2569if(@@# % 2, $#, string("")) @r{column number on odd lines only}
2570$3 = remote(FOO, @@@@#$2) @r{copy column 2 from table FOO into}
2571 @r{column 3 of the current table}
2572@end example
2573
2574@noindent For the second example, table FOO must have at least as many rows
ce57c2fe 2575as the current table. Note that this is inefficient@footnote{The computation time scales as
ed21c5c8
CD
2576O(N^2) because table FOO is parsed for each field to be copied.} for large
2577number of rows.
2578
4009494e
GM
2579@subsubheading Named references
2580@cindex named references
2581@cindex references, named
2582@cindex name, of column or field
2583@cindex constants, in calculations
c8d0cf5c 2584@cindex #+CONSTANTS
4009494e 2585
c8d0cf5c 2586@vindex org-table-formula-constants
4009494e 2587@samp{$name} is interpreted as the name of a column, parameter or
271672fa 2588constant. Constants are defined globally through the option
4009494e
GM
2589@code{org-table-formula-constants}, and locally (for the file) through a
2590line like
2591
2592@example
2593#+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6
2594@end example
2595
2596@noindent
c8d0cf5c
CD
2597@vindex constants-unit-system
2598@pindex constants.el
a7808fba 2599Also properties (@pxref{Properties and Columns}) can be used as
c8d0cf5c 2600constants in table formulas: for a property @samp{:Xyz:} use the name
dbc28aaa 2601@samp{$PROP_Xyz}, and the property will be searched in the current
4009494e
GM
2602outline entry and in the hierarchy above it. If you have the
2603@file{constants.el} package, it will also be used to resolve constants,
2604including natural constants like @samp{$h} for Planck's constant, and
c8d0cf5c 2605units like @samp{$km} for kilometers@footnote{@file{constants.el} can
4009494e
GM
2606supply the values of constants in two different unit systems, @code{SI}
2607and @code{cgs}. Which one is used depends on the value of the variable
2608@code{constants-unit-system}. You can use the @code{#+STARTUP} options
2609@code{constSI} and @code{constcgs} to set this value for the current
2610buffer.}. Column names and parameters can be specified in special table
2611lines. These are described below, see @ref{Advanced features}. All
2612names must start with a letter, and further consist of letters and
2613numbers.
2614
55e0839d
CD
2615@subsubheading Remote references
2616@cindex remote references
2617@cindex references, remote
2618@cindex references, to a different table
2619@cindex name, of column or field
2620@cindex constants, in calculations
271672fa 2621@cindex #+NAME, for table
55e0839d
CD
2622
2623You may also reference constants, fields and ranges from a different table,
2624either in the current file or even in a different file. The syntax is
2625
2626@example
2627remote(NAME-OR-ID,REF)
2628@end example
2629
2630@noindent
2631where NAME can be the name of a table in the current file as set by a
271672fa 2632@code{#+NAME: Name} line before the table. It can also be the ID of an
55e0839d
CD
2633entry, even in a different file, and the reference then refers to the first
2634table in that entry. REF is an absolute field or range reference as
c8d0cf5c
CD
2635described above for example @code{@@3$3} or @code{$somename}, valid in the
2636referenced table.
55e0839d 2637
4009494e
GM
2638@node Formula syntax for Calc, Formula syntax for Lisp, References, The spreadsheet
2639@subsection Formula syntax for Calc
2640@cindex formula syntax, Calc
2641@cindex syntax, of formulas
2642
271672fa
BG
2643A formula can be any algebraic expression understood by the Emacs @file{Calc}
2644package. Note that @file{calc} has the non-standard convention that @samp{/}
2645has lower precedence than @samp{*}, so that @samp{a/b*c} is interpreted as
2646@samp{a/(b*c)}. Before evaluation by @code{calc-eval} (@pxref{Calling Calc
2647from Your Programs, calc-eval, Calling Calc from Your Lisp Programs, calc,
2648GNU Emacs Calc Manual}), variable substitution takes place according to the
2649rules described above.
4009494e 2650@cindex vectors, in table calculations
a7808fba 2651The range vectors can be directly fed into the Calc vector functions
4009494e
GM
2652like @samp{vmean} and @samp{vsum}.
2653
2654@cindex format specifier
2655@cindex mode, for @file{calc}
c8d0cf5c 2656@vindex org-calc-default-modes
4009494e
GM
2657A formula can contain an optional mode string after a semicolon. This
2658string consists of flags to influence Calc and other modes during
a7808fba 2659execution. By default, Org uses the standard Calc modes (precision
44ce9197 266012, angular units degrees, fraction and symbolic modes off). The display
c8d0cf5c 2661format, however, has been changed to @code{(float 8)} to keep tables
271672fa 2662compact. The default settings can be configured using the option
4009494e
GM
2663@code{org-calc-default-modes}.
2664
271672fa
BG
2665@noindent List of modes:
2666
2667@table @asis
2668@item @code{p20}
2669Set the internal Calc calculation precision to 20 digits.
2670@item @code{n3}, @code{s3}, @code{e2}, @code{f4}
2671Normal, scientific, engineering or fixed format of the result of Calc passed
2672back to Org. Calc formatting is unlimited in precision as long as the Calc
2673calculation precision is greater.
2674@item @code{D}, @code{R}
2675Degree and radian angle modes of Calc.
2676@item @code{F}, @code{S}
2677Fraction and symbolic modes of Calc.
2678@item @code{T}, @code{t}
2679Duration computations in Calc or Lisp, @pxref{Durations and time values}.
2680@item @code{E}
2681If and how to consider empty fields. Without @samp{E} empty fields in range
2682references are suppressed so that the Calc vector or Lisp list contains only
2683the non-empty fields. With @samp{E} the empty fields are kept. For empty
2684fields in ranges or empty field references the value @samp{nan} (not a
2685number) is used in Calc formulas and the empty string is used for Lisp
2686formulas. Add @samp{N} to use 0 instead for both formula types. For the
2687value of a field the mode @samp{N} has higher precedence than @samp{E}.
2688@item @code{N}
2689Interpret all fields as numbers, use 0 for non-numbers. See the next section
2690to see how this is essential for computations with Lisp formulas. In Calc
2691formulas it is used only occasionally because there number strings are
2692already interpreted as numbers without @samp{N}.
2693@item @code{L}
2694Literal, for Lisp formulas only. See the next section.
2695@end table
4009494e
GM
2696
2697@noindent
271672fa
BG
2698Unless you use large integer numbers or high-precision-calculation and
2699-display for floating point numbers you may alternatively provide a
2700@samp{printf} format specifier to reformat the Calc result after it has been
ed21c5c8 2701passed back to Org instead of letting Calc already do the
271672fa
BG
2702formatting@footnote{The @samp{printf} reformatting is limited in precision
2703because the value passed to it is converted into an @samp{integer} or
2704@samp{double}. The @samp{integer} is limited in size by truncating the
2705signed value to 32 bits. The @samp{double} is limited in precision to 64
2706bits overall which leaves approximately 16 significant decimal digits.}. A
2707few examples:
4009494e
GM
2708
2709@example
2710$1+$2 @r{Sum of first and second field}
2711$1+$2;%.2f @r{Same, format result to two decimals}
2712exp($2)+exp($1) @r{Math functions can be used}
2713$0;%.1f @r{Reformat current cell to 1 decimal}
2714($3-32)*5/9 @r{Degrees F -> C conversion}
2715$c/$1/$cm @r{Hz -> cm conversion, using @file{constants.el}}
2716tan($1);Dp3s1 @r{Compute in degrees, precision 3, display SCI 1}
2717sin($1);Dp3%.1e @r{Same, but use printf specifier for display}
acedf35c 2718taylor($3,x=7,2) @r{Taylor series of $3, at x=7, second degree}
4009494e
GM
2719@end example
2720
271672fa
BG
2721Calc also contains a complete set of logical operations, (@pxref{Logical
2722Operations, , Logical Operations, calc, GNU Emacs Calc Manual}). For example
4009494e 2723
271672fa
BG
2724@table @code
2725@item if($1 < 20, teen, string(""))
2726"teen" if age $1 is less than 20, else the Org table result field is set to
2727empty with the empty string.
2728@item if("$1" == "nan" || "$2" == "nan", string(""), $1 + $2); E
2729Sum of the first two columns. When at least one of the input fields is empty
2730the Org table result field is set to empty.
2731@item if(typeof(vmean($1..$7)) == 12, string(""), vmean($1..$7); E
2732Mean value of a range unless there is any empty field. Every field in the
2733range that is empty is replaced by @samp{nan} which lets @samp{vmean} result
2734in @samp{nan}. Then @samp{typeof == 12} detects the @samp{nan} from
2735@samp{vmean} and the Org table result field is set to empty. Use this when
2736the sample set is expected to never have missing values.
2737@item if("$1..$7" == "[]", string(""), vmean($1..$7))
2738Mean value of a range with empty fields skipped. Every field in the range
2739that is empty is skipped. When all fields in the range are empty the mean
2740value is not defined and the Org table result field is set to empty. Use
2741this when the sample set can have a variable size.
2742@item vmean($1..$7); EN
2743To complete the example before: Mean value of a range with empty fields
2744counting as samples with value 0. Use this only when incomplete sample sets
2745should be padded with 0 to the full size.
2746@end table
4009494e 2747
271672fa
BG
2748You can add your own Calc functions defined in Emacs Lisp with @code{defmath}
2749and use them in formula syntax for Calc.
ce57c2fe
BG
2750
2751@node Formula syntax for Lisp, Durations and time values, Formula syntax for Calc, The spreadsheet
4009494e
GM
2752@subsection Emacs Lisp forms as formulas
2753@cindex Lisp forms, as table formulas
2754
8223b1d2 2755It is also possible to write a formula in Emacs Lisp. This can be useful
735135f9
PE
2756for string manipulation and control structures, if Calc's functionality is
2757not enough.
8223b1d2
BG
2758
2759If a formula starts with a single-quote followed by an opening parenthesis,
2760then it is evaluated as a Lisp form. The evaluation should return either a
2761string or a number. Just as with @file{calc} formulas, you can specify modes
735135f9 2762and a printf format after a semicolon.
8223b1d2
BG
2763
2764With Emacs Lisp forms, you need to be conscious about the way field
2765references are interpolated into the form. By default, a reference will be
2766interpolated as a Lisp string (in double-quotes) containing the field. If
2767you provide the @samp{N} mode switch, all referenced elements will be numbers
2768(non-number fields will be zero) and interpolated as Lisp numbers, without
2769quotes. If you provide the @samp{L} flag, all fields will be interpolated
2770literally, without quotes. I.e., if you want a reference to be interpreted
2771as a string by the Lisp form, enclose the reference operator itself in
2772double-quotes, like @code{"$3"}. Ranges are inserted as space-separated
2773fields, so you can embed them in list or vector syntax.
2774
2775Here are a few examples---note how the @samp{N} mode is used when we do
2776computations in Lisp:
4009494e 2777
271672fa
BG
2778@table @code
2779@item '(concat (substring $1 1 2) (substring $1 0 1) (substring $1 2))
2780Swap the first two characters of the content of column 1.
2781@item '(+ $1 $2);N
2782Add columns 1 and 2, equivalent to Calc's @code{$1+$2}.
2783@item '(apply '+ '($1..$4));N
2784Compute the sum of columns 1 to 4, like Calc's @code{vsum($1..$4)}.
2785@end table
4009494e 2786
ce57c2fe
BG
2787@node Durations and time values, Field and range formulas, Formula syntax for Lisp, The spreadsheet
2788@subsection Durations and time values
2789@cindex Duration, computing
2790@cindex Time, computing
2791@vindex org-table-duration-custom-format
2792
2793If you want to compute time values use the @code{T} flag, either in Calc
2794formulas or Elisp formulas:
2795
2796@example
2797@group
2798 | Task 1 | Task 2 | Total |
2799 |---------+----------+----------|
2800 | 2:12 | 1:47 | 03:59:00 |
2801 | 3:02:20 | -2:07:00 | 0.92 |
2802 #+TBLFM: @@2$3=$1+$2;T::@@3$3=$1+$2;t
2803@end group
2804@end example
2805
2806Input duration values must be of the form @code{[HH:MM[:SS]}, where seconds
2807are optional. With the @code{T} flag, computed durations will be displayed
8c8b834f 2808as @code{HH:MM:SS} (see the first formula above). With the @code{t} flag,
271672fa 2809computed durations will be displayed according to the value of the option
ce57c2fe
BG
2810@code{org-table-duration-custom-format}, which defaults to @code{'hours} and
2811will display the result as a fraction of hours (see the second formula in the
2812example above).
2813
2814Negative duration values can be manipulated as well, and integers will be
2815considered as seconds in addition and subtraction.
2816
2817@node Field and range formulas, Column formulas, Durations and time values, The spreadsheet
2818@subsection Field and range formulas
4009494e 2819@cindex field formula
ce57c2fe 2820@cindex range formula
4009494e 2821@cindex formula, for individual table field
ce57c2fe 2822@cindex formula, for range of fields
4009494e 2823
ce57c2fe
BG
2824To assign a formula to a particular field, type it directly into the field,
2825preceded by @samp{:=}, for example @samp{:=vsum(@@II..III)}. When you press
2826@key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the field,
2827the formula will be stored as the formula for this field, evaluated, and the
2828current field will be replaced with the result.
4009494e 2829
c8d0cf5c 2830@cindex #+TBLFM
ce57c2fe
BG
2831Formulas are stored in a special line starting with @samp{#+TBLFM:} directly
2832below the table. If you type the equation in the 4th field of the 3rd data
2833line in the table, the formula will look like @samp{@@3$4=$1+$2}. When
2834inserting/deleting/swapping column and rows with the appropriate commands,
2835@i{absolute references} (but not relative ones) in stored formulas are
2836modified in order to still reference the same field. To avoid this from
2837happening, in particular in range references, anchor ranges at the table
2838borders (using @code{@@<}, @code{@@>}, @code{$<}, @code{$>}), or at hlines
2839using the @code{@@I} notation. Automatic adaptation of field references does
8223b1d2 2840of course not happen if you edit the table structure with normal editing
ce57c2fe
BG
2841commands---then you must fix the equations yourself.
2842
2843Instead of typing an equation into the field, you may also use the following
2844command
4009494e
GM
2845
2846@table @kbd
acedf35c 2847@orgcmd{C-u C-c =,org-table-eval-formula}
4009494e 2848Install a new formula for the current field. The command prompts for a
c8d0cf5c
CD
2849formula with default taken from the @samp{#+TBLFM:} line, applies
2850it to the current field, and stores it.
4009494e
GM
2851@end table
2852
ce57c2fe
BG
2853The left-hand side of a formula can also be a special expression in order to
2854assign the formula to a number of different fields. There is no keyboard
2855shortcut to enter such range formulas. To add them, use the formula editor
2856(@pxref{Editing and debugging formulas}) or edit the @code{#+TBLFM:} line
2857directly.
2858
2859@table @code
2860@item $2=
2861Column formula, valid for the entire column. This is so common that Org
2862treats these formulas in a special way, see @ref{Column formulas}.
2863@item @@3=
2864Row formula, applies to all fields in the specified row. @code{@@>=} means
2865the last row.
2866@item @@1$2..@@4$3=
2867Range formula, applies to all fields in the given rectangular range. This
2868can also be used to assign a formula to some but not all fields in a row.
2869@item $name=
2870Named field, see @ref{Advanced features}.
2871@end table
2872
271672fa 2873@node Column formulas, Lookup functions, Field and range formulas, The spreadsheet
4009494e
GM
2874@subsection Column formulas
2875@cindex column formula
2876@cindex formula, for table column
2877
ce57c2fe
BG
2878When you assign a formula to a simple column reference like @code{$3=}, the
2879same formula will be used in all fields of that column, with the following
2880very convenient exceptions: (i) If the table contains horizontal separator
271672fa
BG
2881hlines with rows above and below, everything before the first such hline is
2882considered part of the table @emph{header} and will not be modified by column
2883formulas. Therefore a header is mandatory when you use column formulas and
2884want to add hlines to group rows, like for example to separate a total row at
2885the bottom from the summand rows above. (ii) Fields that already get a value
2886from a field/range formula will be left alone by column formulas. These
2887conditions make column formulas very easy to use.
4009494e
GM
2888
2889To assign a formula to a column, type it directly into any field in the
2890column, preceded by an equal sign, like @samp{=$1+$2}. When you press
c8d0cf5c
CD
2891@key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the field,
2892the formula will be stored as the formula for the current column, evaluated
2893and the current field replaced with the result. If the field contains only
2894@samp{=}, the previously stored formula for this column is used. For each
2895column, Org will only remember the most recently used formula. In the
ce57c2fe
BG
2896@samp{#+TBLFM:} line, column formulas will look like @samp{$4=$1+$2}. The
2897left-hand side of a column formula can not be the name of column, it must be
2898the numeric column reference or @code{$>}.
4009494e
GM
2899
2900Instead of typing an equation into the field, you may also use the
2901following command:
2902
2903@table @kbd
acedf35c 2904@orgcmd{C-c =,org-table-eval-formula}
a7808fba
CD
2905Install a new formula for the current column and replace current field with
2906the result of the formula. The command prompts for a formula, with default
2907taken from the @samp{#+TBLFM} line, applies it to the current field and
1df7defd 2908stores it. With a numeric prefix argument(e.g., @kbd{C-5 C-c =}) the command
4009494e
GM
2909will apply it to that many consecutive fields in the current column.
2910@end table
2911
271672fa
BG
2912@node Lookup functions, Editing and debugging formulas, Column formulas, The spreadsheet
2913@subsection Lookup functions
2914@cindex lookup functions in tables
2915@cindex table lookup functions
2916
2917Org has three predefined Emacs Lisp functions for lookups in tables.
2918@table @code
2919@item (org-lookup-first VAL S-LIST R-LIST &optional PREDICATE)
2920@findex org-lookup-first
2921Searches for the first element @code{S} in list @code{S-LIST} for which
2922@lisp
2923(PREDICATE VAL S)
2924@end lisp
2925is @code{t}; returns the value from the corresponding position in list
2926@code{R-LIST}. The default @code{PREDICATE} is @code{equal}. Note that the
2927parameters @code{VAL} and @code{S} are passed to @code{PREDICATE} in the same
2928order as the corresponding parameters are in the call to
2929@code{org-lookup-first}, where @code{VAL} precedes @code{S-LIST}. If
2930@code{R-LIST} is @code{nil}, the matching element @code{S} of @code{S-LIST}
2931is returned.
2932@item (org-lookup-last VAL S-LIST R-LIST &optional PREDICATE)
2933@findex org-lookup-last
2934Similar to @code{org-lookup-first} above, but searches for the @i{last}
2935element for which @code{PREDICATE} is @code{t}.
2936@item (org-lookup-all VAL S-LIST R-LIST &optional PREDICATE)
2937@findex org-lookup-all
2938Similar to @code{org-lookup-first}, but searches for @i{all} elements for
2939which @code{PREDICATE} is @code{t}, and returns @i{all} corresponding
2940values. This function can not be used by itself in a formula, because it
2941returns a list of values. However, powerful lookups can be built when this
2942function is combined with other Emacs Lisp functions.
2943@end table
2944
2945If the ranges used in these functions contain empty fields, the @code{E} mode
2946for the formula should usually be specified: otherwise empty fields will not be
2947included in @code{S-LIST} and/or @code{R-LIST} which can, for example, result
2948in an incorrect mapping from an element of @code{S-LIST} to the corresponding
2949element of @code{R-LIST}.
2950
2951These three functions can be used to implement associative arrays, count
2952matching cells, rank results, group data etc. For practical examples
2953see @uref{http://orgmode.org/worg/org-tutorials/org-lookups.html, this
2954tutorial on Worg}.
2955
2956@node Editing and debugging formulas, Updating the table, Lookup functions, The spreadsheet
a7808fba 2957@subsection Editing and debugging formulas
4009494e
GM
2958@cindex formula editing
2959@cindex editing, of table formulas
2960
c8d0cf5c 2961@vindex org-table-use-standard-references
271672fa
BG
2962You can edit individual formulas in the minibuffer or directly in the field.
2963Org can also prepare a special buffer with all active formulas of a table.
2964When offering a formula for editing, Org converts references to the standard
2965format (like @code{B3} or @code{D&}) if possible. If you prefer to only work
2966with the internal format (like @code{@@3$2} or @code{$4}), configure the
2967option @code{org-table-use-standard-references}.
4009494e
GM
2968
2969@table @kbd
acedf35c 2970@orgcmdkkc{C-c =,C-u C-c =,org-table-eval-formula}
4009494e 2971Edit the formula associated with the current column/field in the
ce57c2fe 2972minibuffer. See @ref{Column formulas}, and @ref{Field and range formulas}.
acedf35c 2973@orgcmd{C-u C-u C-c =,org-table-eval-formula}
4009494e
GM
2974Re-insert the active formula (either a
2975field formula, or a column formula) into the current field, so that you
2976can edit it directly in the field. The advantage over editing in the
2977minibuffer is that you can use the command @kbd{C-c ?}.
acedf35c 2978@orgcmd{C-c ?,org-table-field-info}
4009494e
GM
2979While editing a formula in a table field, highlight the field(s)
2980referenced by the reference at the cursor position in the formula.
2981@kindex C-c @}
acedf35c 2982@findex org-table-toggle-coordinate-overlays
4009494e 2983@item C-c @}
acedf35c
CD
2984Toggle the display of row and column numbers for a table, using overlays
2985(@command{org-table-toggle-coordinate-overlays}). These are updated each
2986time the table is aligned; you can force it with @kbd{C-c C-c}.
4009494e 2987@kindex C-c @{
acedf35c 2988@findex org-table-toggle-formula-debugger
4009494e 2989@item C-c @{
acedf35c
CD
2990Toggle the formula debugger on and off
2991(@command{org-table-toggle-formula-debugger}). See below.
2992@orgcmd{C-c ',org-table-edit-formulas}
4009494e
GM
2993Edit all formulas for the current table in a special buffer, where the
2994formulas will be displayed one per line. If the current field has an
2995active formula, the cursor in the formula editor will mark it.
a7808fba 2996While inside the special buffer, Org will automatically highlight
4009494e
GM
2997any field or range reference at the cursor position. You may edit,
2998remove and add formulas, and use the following commands:
271672fa 2999
4009494e 3000@table @kbd
acedf35c 3001@orgcmdkkc{C-c C-c,C-x C-s,org-table-fedit-finish}
4009494e
GM
3002Exit the formula editor and store the modified formulas. With @kbd{C-u}
3003prefix, also apply the new formulas to the entire table.
acedf35c 3004@orgcmd{C-c C-q,org-table-fedit-abort}
4009494e 3005Exit the formula editor without installing changes.
acedf35c 3006@orgcmd{C-c C-r,org-table-fedit-toggle-ref-type}
4009494e
GM
3007Toggle all references in the formula editor between standard (like
3008@code{B3}) and internal (like @code{@@3$2}).
acedf35c 3009@orgcmd{@key{TAB},org-table-fedit-lisp-indent}
c8d0cf5c
CD
3010Pretty-print or indent Lisp formula at point. When in a line containing
3011a Lisp formula, format the formula according to Emacs Lisp rules.
4009494e 3012Another @key{TAB} collapses the formula back again. In the open
c8d0cf5c 3013formula, @key{TAB} re-indents just like in Emacs Lisp mode.
acedf35c 3014@orgcmd{M-@key{TAB},lisp-complete-symbol}
c8d0cf5c 3015Complete Lisp symbols, just like in Emacs Lisp mode.
4009494e
GM
3016@kindex S-@key{up}
3017@kindex S-@key{down}
3018@kindex S-@key{left}
3019@kindex S-@key{right}
acedf35c
CD
3020@findex org-table-fedit-ref-up
3021@findex org-table-fedit-ref-down
3022@findex org-table-fedit-ref-left
3023@findex org-table-fedit-ref-right
4009494e
GM
3024@item S-@key{up}/@key{down}/@key{left}/@key{right}
3025Shift the reference at point. For example, if the reference is
3026@code{B3} and you press @kbd{S-@key{right}}, it will become @code{C3}.
c8d0cf5c 3027This also works for relative references and for hline references.
acedf35c 3028@orgcmdkkcc{M-S-@key{up},M-S-@key{down},org-table-fedit-line-up,org-table-fedit-line-down}
a7808fba 3029Move the test line for column formulas in the Org buffer up and
4009494e 3030down.
acedf35c 3031@orgcmdkkcc{M-@key{up},M-@key{down},org-table-fedit-scroll-down,org-table-fedit-scroll-up}
4009494e
GM
3032Scroll the window displaying the table.
3033@kindex C-c @}
acedf35c 3034@findex org-table-toggle-coordinate-overlays
4009494e
GM
3035@item C-c @}
3036Turn the coordinate grid in the table on and off.
3037@end table
3038@end table
3039
3040Making a table field blank does not remove the formula associated with
c8d0cf5c
CD
3041the field, because that is stored in a different line (the @samp{#+TBLFM}
3042line)---during the next recalculation the field will be filled again.
4009494e
GM
3043To remove a formula from a field, you have to give an empty reply when
3044prompted for the formula, or to edit the @samp{#+TBLFM} line.
3045
3046@kindex C-c C-c
3047You may edit the @samp{#+TBLFM} directly and re-apply the changed
c8d0cf5c 3048equations with @kbd{C-c C-c} in that line or with the normal
4009494e
GM
3049recalculation commands in the table.
3050
271672fa
BG
3051@anchor{Using multiple #+TBLFM lines}
3052@subsubheading Using multiple #+TBLFM lines
3053@cindex #+TBLFM line, multiple
3054@cindex #+TBLFM
3055@cindex #+TBLFM, switching
3056@kindex C-c C-c
3057
3058You may apply the formula temporarily. This is useful when you
3059switch the formula. Place multiple @samp{#+TBLFM} lines right
3060after the table, and then press @kbd{C-c C-c} on the formula to
3061apply. Here is an example:
3062
3063@example
3064| x | y |
3065|---+---|
3066| 1 | |
3067| 2 | |
3068#+TBLFM: $2=$1*1
3069#+TBLFM: $2=$1*2
3070@end example
3071
3072@noindent
3073Pressing @kbd{C-c C-c} in the line of @samp{#+TBLFM: $2=$1*2} yields:
3074
3075@example
3076| x | y |
3077|---+---|
3078| 1 | 2 |
3079| 2 | 4 |
3080#+TBLFM: $2=$1*1
3081#+TBLFM: $2=$1*2
3082@end example
3083
3084@noindent
3085Note: If you recalculate this table (with @kbd{C-u C-c *}, for example), you
3086will get the following result of applying only the first @samp{#+TBLFM} line.
3087
3088@example
3089| x | y |
3090|---+---|
3091| 1 | 1 |
3092| 2 | 2 |
3093#+TBLFM: $2=$1*1
3094#+TBLFM: $2=$1*2
3095@end example
3096
4009494e
GM
3097@subsubheading Debugging formulas
3098@cindex formula debugging
3099@cindex debugging, of table formulas
3100When the evaluation of a formula leads to an error, the field content
3101becomes the string @samp{#ERROR}. If you would like see what is going
3102on during variable substitution and calculation in order to find a bug,
3103turn on formula debugging in the @code{Tbl} menu and repeat the
3104calculation, for example by pressing @kbd{C-u C-u C-c = @key{RET}} in a
3105field. Detailed information will be displayed.
3106
3107@node Updating the table, Advanced features, Editing and debugging formulas, The spreadsheet
a7808fba 3108@subsection Updating the table
4009494e
GM
3109@cindex recomputing table fields
3110@cindex updating, table
3111
3112Recalculation of a table is normally not automatic, but needs to be
c8d0cf5c
CD
3113triggered by a command. See @ref{Advanced features}, for a way to make
3114recalculation at least semi-automatic.
4009494e
GM
3115
3116In order to recalculate a line of a table or the entire table, use the
3117following commands:
3118
3119@table @kbd
acedf35c 3120@orgcmd{C-c *,org-table-recalculate}
4009494e 3121Recalculate the current row by first applying the stored column formulas
ce57c2fe 3122from left to right, and all field/range formulas in the current row.
4009494e
GM
3123@c
3124@kindex C-u C-c *
3125@item C-u C-c *
3126@kindex C-u C-c C-c
3127@itemx C-u C-c C-c
3128Recompute the entire table, line by line. Any lines before the first
3129hline are left alone, assuming that these are part of the table header.
3130@c
acedf35c 3131@orgcmdkkc{C-u C-u C-c *,C-u C-u C-c C-c,org-table-iterate}
4009494e
GM
3132Iterate the table by recomputing it until no further changes occur.
3133This may be necessary if some computed fields use the value of other
3134fields that are computed @i{later} in the calculation sequence.
271672fa 3135@item M-x org-table-recalculate-buffer-tables RET
acedf35c 3136@findex org-table-recalculate-buffer-tables
86fbb8ca 3137Recompute all tables in the current buffer.
271672fa 3138@item M-x org-table-iterate-buffer-tables RET
acedf35c 3139@findex org-table-iterate-buffer-tables
86fbb8ca
CD
3140Iterate all tables in the current buffer, in order to converge table-to-table
3141dependencies.
4009494e
GM
3142@end table
3143
3144@node Advanced features, , Updating the table, The spreadsheet
3145@subsection Advanced features
3146
e66ba1df
BG
3147If you want the recalculation of fields to happen automatically, or if you
3148want to be able to assign @i{names}@footnote{Such names must start by an
3149alphabetic character and use only alphanumeric/underscore characters.} to
3150fields and columns, you need to reserve the first column of the table for
3151special marking characters.
ce57c2fe 3152
4009494e 3153@table @kbd
acedf35c 3154@orgcmd{C-#,org-table-rotate-recalc-marks}
a351880d 3155Rotate the calculation mark in first column through the states @samp{ },
864c9740
CD
3156@samp{#}, @samp{*}, @samp{!}, @samp{$}. When there is an active region,
3157change all marks in the region.
4009494e
GM
3158@end table
3159
3160Here is an example of a table that collects exam results of students and
3161makes use of these features:
3162
3163@example
3164@group
3165|---+---------+--------+--------+--------+-------+------|
3166| | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
3167|---+---------+--------+--------+--------+-------+------|
3168| ! | | P1 | P2 | P3 | Tot | |
3169| # | Maximum | 10 | 15 | 25 | 50 | 10.0 |
3170| ^ | | m1 | m2 | m3 | mt | |
3171|---+---------+--------+--------+--------+-------+------|
3172| # | Peter | 10 | 8 | 23 | 41 | 8.2 |
4009494e
GM
3173| # | Sam | 2 | 4 | 3 | 9 | 1.8 |
3174|---+---------+--------+--------+--------+-------+------|
8223b1d2 3175| | Average | | | | 25.0 | |
4009494e
GM
3176| ^ | | | | | at | |
3177| $ | max=50 | | | | | |
3178|---+---------+--------+--------+--------+-------+------|
3179#+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@@-II..@@-I);%.1f
3180@end group
3181@end example
3182
c8d0cf5c 3183@noindent @b{Important}: please note that for these special tables,
4009494e
GM
3184recalculating the table with @kbd{C-u C-c *} will only affect rows that
3185are marked @samp{#} or @samp{*}, and fields that have a formula assigned
3186to the field itself. The column formulas are not applied in rows with
3187empty first field.
3188
3189@cindex marking characters, tables
3190The marking characters have the following meaning:
271672fa 3191
4009494e
GM
3192@table @samp
3193@item !
3194The fields in this line define names for the columns, so that you may
3195refer to a column as @samp{$Tot} instead of @samp{$6}.
3196@item ^
3197This row defines names for the fields @emph{above} the row. With such
3198a definition, any formula in the table may use @samp{$m1} to refer to
3199the value @samp{10}. Also, if you assign a formula to a names field, it
3200will be stored as @samp{$name=...}.
3201@item _
3202Similar to @samp{^}, but defines names for the fields in the row
3203@emph{below}.
3204@item $
3205Fields in this row can define @emph{parameters} for formulas. For
3206example, if a field in a @samp{$} row contains @samp{max=50}, then
3207formulas in this table can refer to the value 50 using @samp{$max}.
3208Parameters work exactly like constants, only that they can be defined on
3209a per-table basis.
3210@item #
3211Fields in this row are automatically recalculated when pressing
3212@key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row. Also, this row
3213is selected for a global recalculation with @kbd{C-u C-c *}. Unmarked
3214lines will be left alone by this command.
3215@item *
3216Selects this line for global recalculation with @kbd{C-u C-c *}, but
3217not for automatic recalculation. Use this when automatic
3218recalculation slows down editing too much.
7b08ccf7 3219@item @w{ }
4009494e
GM
3220Unmarked lines are exempt from recalculation with @kbd{C-u C-c *}.
3221All lines that should be recalculated should be marked with @samp{#}
3222or @samp{*}.
3223@item /
3224Do not export this line. Useful for lines that contain the narrowing
6eb02347 3225@samp{<N>} markers or column group markers.
4009494e
GM
3226@end table
3227
c8d0cf5c
CD
3228Finally, just to whet your appetite for what can be done with the
3229fantastic @file{calc.el} package, here is a table that computes the Taylor
28a16a1b
CD
3230series of degree @code{n} at location @code{x} for a couple of
3231functions.
4009494e
GM
3232
3233@example
3234@group
3235|---+-------------+---+-----+--------------------------------------|
3236| | Func | n | x | Result |
3237|---+-------------+---+-----+--------------------------------------|
3238| # | exp(x) | 1 | x | 1 + x |
3239| # | exp(x) | 2 | x | 1 + x + x^2 / 2 |
3240| # | exp(x) | 3 | x | 1 + x + x^2 / 2 + x^3 / 6 |
3241| # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
3242| # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2 |
3243| * | tan(x) | 3 | x | 0.0175 x + 1.77e-6 x^3 |
3244|---+-------------+---+-----+--------------------------------------|
3245#+TBLFM: $5=taylor($2,$4,$3);n3
3246@end group
3247@end example
3248
c8d0cf5c
CD
3249@node Org-Plot, , The spreadsheet, Tables
3250@section Org-Plot
864c9740 3251@cindex graph, in tables
86fbb8ca 3252@cindex plot tables using Gnuplot
c8d0cf5c 3253@cindex #+PLOT
864c9740 3254
c8d0cf5c 3255Org-Plot can produce 2D and 3D graphs of information stored in org tables
71d35b24 3256using @file{Gnuplot} @uref{http://www.gnuplot.info/} and @file{gnuplot-mode}
d3517077
BG
3257@uref{http://xafs.org/BruceRavel/GnuplotMode}. To see this in action, ensure
3258that you have both Gnuplot and Gnuplot mode installed on your system, then
3259call @code{org-plot/gnuplot} on the following table.
864c9740
CD
3260
3261@example
3262@group
3263#+PLOT: title:"Citas" ind:1 deps:(3) type:2d with:histograms set:"yrange [0:]"
3264| Sede | Max cites | H-index |
3265|-----------+-----------+---------|
3266| Chile | 257.72 | 21.39 |
3267| Leeds | 165.77 | 19.68 |
3268| Sao Paolo | 71.00 | 11.50 |
3269| Stockholm | 134.19 | 14.33 |
3270| Morelia | 257.56 | 17.67 |
3271@end group
3272@end example
3273
c8d0cf5c 3274Notice that Org Plot is smart enough to apply the table's headers as labels.
864c9740 3275Further control over the labels, type, content, and appearance of plots can
c8d0cf5c
CD
3276be exercised through the @code{#+PLOT:} lines preceding a table. See below
3277for a complete list of Org-plot options. For more information and examples
3278see the Org-plot tutorial at
ce57c2fe 3279@uref{http://orgmode.org/worg/org-tutorials/org-plot.html}.
864c9740
CD
3280
3281@subsubheading Plot Options
3282
3283@table @code
3284@item set
c8d0cf5c 3285Specify any @command{gnuplot} option to be set when graphing.
864c9740
CD
3286
3287@item title
3288Specify the title of the plot.
3289
3290@item ind
3291Specify which column of the table to use as the @code{x} axis.
3292
3293@item deps
c8d0cf5c 3294Specify the columns to graph as a Lisp style list, surrounded by parentheses
71d35b24 3295and separated by spaces for example @code{dep:(3 4)} to graph the third and
c8d0cf5c 3296fourth columns (defaults to graphing all other columns aside from the @code{ind}
71d35b24 3297column).
864c9740
CD
3298
3299@item type
3300Specify whether the plot will be @code{2d}, @code{3d}, or @code{grid}.
3301
3302@item with
3303Specify a @code{with} option to be inserted for every col being plotted
1df7defd 3304(e.g., @code{lines}, @code{points}, @code{boxes}, @code{impulses}, etc...).
223b43fa 3305Defaults to @code{lines}.
864c9740
CD
3306
3307@item file
c8d0cf5c 3308If you want to plot to a file, specify @code{"@var{path/to/desired/output-file}"}.
864c9740
CD
3309
3310@item labels
acedf35c
CD
3311List of labels to be used for the @code{deps} (defaults to the column headers
3312if they exist).
864c9740
CD
3313
3314@item line
c8d0cf5c 3315Specify an entire line to be inserted in the Gnuplot script.
864c9740
CD
3316
3317@item map
3318When plotting @code{3d} or @code{grid} types, set this to @code{t} to graph a
3319flat mapping rather than a @code{3d} slope.
3320
e45e3595 3321@item timefmt
e66ba1df 3322Specify format of Org mode timestamps as they will be parsed by Gnuplot.
223b43fa 3323Defaults to @samp{%Y-%m-%d-%H:%M:%S}.
e45e3595 3324
864c9740 3325@item script
c8d0cf5c
CD
3326If you want total control, you can specify a script file (place the file name
3327between double-quotes) which will be used to plot. Before plotting, every
864c9740 3328instance of @code{$datafile} in the specified script will be replaced with
c8d0cf5c 3329the path to the generated data file. Note: even if you set this option, you
864c9740
CD
3330may still want to specify the plot type, as that can impact the content of
3331the data file.
3332@end table
3333
a7808fba 3334@node Hyperlinks, TODO Items, Tables, Top
4009494e
GM
3335@chapter Hyperlinks
3336@cindex hyperlinks
3337
a7808fba 3338Like HTML, Org provides links inside a file, external links to
dbc28aaa 3339other files, Usenet articles, emails, and much more.
4009494e
GM
3340
3341@menu
c0468714
GM
3342* Link format:: How links in Org are formatted
3343* Internal links:: Links to other places in the current file
3344* External links:: URL-like links to the world
3345* Handling links:: Creating, inserting and following
3346* Using links outside Org:: Linking from my C source code?
3347* Link abbreviations:: Shortcuts for writing complex links
3348* Search options:: Linking to a specific location
3349* Custom searches:: When the default search is not enough
4009494e
GM
3350@end menu
3351
3352@node Link format, Internal links, Hyperlinks, Hyperlinks
3353@section Link format
3354@cindex link format
3355@cindex format, of links
3356
a7808fba 3357Org will recognize plain URL-like links and activate them as
4009494e
GM
3358clickable links. The general link format, however, looks like this:
3359
3360@example
28a16a1b 3361[[link][description]] @r{or alternatively} [[link]]
4009494e
GM
3362@end example
3363
c8d0cf5c 3364@noindent
a7808fba 3365Once a link in the buffer is complete (all brackets present), Org
4009494e
GM
3366will change the display so that @samp{description} is displayed instead
3367of @samp{[[link][description]]} and @samp{link} is displayed instead of
3368@samp{[[link]]}. Links will be highlighted in the face @code{org-link},
3369which by default is an underlined face. You can directly edit the
3370visible part of a link. Note that this can be either the @samp{link}
3371part (if there is no description) or the @samp{description} part. To
3372edit also the invisible @samp{link} part, use @kbd{C-c C-l} with the
3373cursor on the link.
3374
3375If you place the cursor at the beginning or just behind the end of the
3376displayed text and press @key{BACKSPACE}, you will remove the
3377(invisible) bracket at that location. This makes the link incomplete
3378and the internals are again displayed as plain text. Inserting the
3379missing bracket hides the link internals again. To show the
3380internal structure of all links, use the menu entry
3381@code{Org->Hyperlinks->Literal links}.
3382
3383@node Internal links, External links, Link format, Hyperlinks
3384@section Internal links
3385@cindex internal links
3386@cindex links, internal
3387@cindex targets, for links
3388
c8d0cf5c
CD
3389@cindex property, CUSTOM_ID
3390If the link does not look like a URL, it is considered to be internal in the
3391current file. The most important case is a link like
3392@samp{[[#my-custom-id]]} which will link to the entry with the
271672fa
BG
3393@code{CUSTOM_ID} property @samp{my-custom-id}. You are responsible yourself
3394to make sure these custom IDs are unique in a file.
c8d0cf5c
CD
3395
3396Links such as @samp{[[My Target]]} or @samp{[[My Target][Find my target]]}
3397lead to a text search in the current file.
3398
3399The link can be followed with @kbd{C-c C-o} when the cursor is on the link,
3400or with a mouse click (@pxref{Handling links}). Links to custom IDs will
3401point to the corresponding headline. The preferred match for a text link is
271672fa
BG
3402a @i{dedicated target}: the same string in double angular brackets, like
3403@samp{<<My Target>>}.
3404
3405@cindex #+NAME
3406If no dedicated target exists, the link will then try to match the exact name
3407of an element within the buffer. Naming is done with the @code{#+NAME}
3408keyword, which has to be put the line before the element it refers to, as in
3409the following example
4009494e
GM
3410
3411@example
271672fa
BG
3412#+NAME: My Target
3413| a | table |
3414|----+------------|
3415| of | four cells |
4009494e
GM
3416@end example
3417
271672fa 3418If none of the above succeeds, Org will search for a headline that is exactly
afe98dfa 3419the link text but may also include a TODO keyword and tags@footnote{To insert
271672fa
BG
3420a link targeting a headline, in-buffer completion can be used. Just type
3421a star followed by a few optional letters into the buffer and press
afe98dfa 3422@kbd{M-@key{TAB}}. All headlines in the current buffer will be offered as
271672fa
BG
3423completions.}.
3424
3425During export, internal links will be used to mark objects and assign them
3426a number. Marked objects will then be referenced by links pointing to them.
3427In particular, links without a description will appear as the number assigned
3428to the marked object@footnote{When targeting a @code{#+NAME} keyword,
3429@code{#+CAPTION} keyword is mandatory in order to get proper numbering
3430(@pxref{Images and tables}).}. In the following excerpt from an Org buffer
3431
3432@example
3433- one item
3434- <<target>>another item
3435Here we refer to item [[target]].
3436@end example
3437
3438@noindent
3439The last sentence will appear as @samp{Here we refer to item 2} when
3440exported.
3441
3442In non-Org files, the search will look for the words in the link text. In
3443the above example the search would be for @samp{my target}.
4009494e 3444
a7808fba 3445Following a link pushes a mark onto Org's own mark ring. You can
4009494e
GM
3446return to the previous position with @kbd{C-c &}. Using this command
3447several times in direct succession goes back to positions recorded
3448earlier.
3449
3450@menu
c0468714 3451* Radio targets:: Make targets trigger links in plain text
4009494e
GM
3452@end menu
3453
3454@node Radio targets, , Internal links, Internal links
3455@subsection Radio targets
3456@cindex radio targets
3457@cindex targets, radio
3458@cindex links, radio targets
3459
a7808fba 3460Org can automatically turn any occurrences of certain target names
4009494e
GM
3461in normal text into a link. So without explicitly creating a link, the
3462text connects to the target radioing its position. Radio targets are
3463enclosed by triple angular brackets. For example, a target @samp{<<<My
3464Target>>>} causes each occurrence of @samp{my target} in normal text to
a7808fba 3465become activated as a link. The Org file is scanned automatically
4009494e
GM
3466for radio targets only when the file is first loaded into Emacs. To
3467update the target list during editing, press @kbd{C-c C-c} with the
3468cursor on or at a target.
3469
3470@node External links, Handling links, Internal links, Hyperlinks
3471@section External links
3472@cindex links, external
3473@cindex external links
a7808fba 3474@cindex Gnus links
4009494e 3475@cindex BBDB links
28a16a1b 3476@cindex IRC links
4009494e
GM
3477@cindex URL links
3478@cindex file links
4009494e 3479@cindex RMAIL links
4009494e
GM
3480@cindex MH-E links
3481@cindex USENET links
3482@cindex SHELL links
3483@cindex Info links
c8d0cf5c 3484@cindex Elisp links
4009494e 3485
271672fa
BG
3486Org supports links to files, websites, Usenet and email messages, BBDB
3487database entries and links to both IRC conversations and their logs.
3488External links are URL-like locators. They start with a short identifying
3489string followed by a colon. There can be no space after the colon. The
3490following list shows examples for each link type.
4009494e
GM
3491
3492@example
a7808fba 3493http://www.astro.uva.nl/~dominik @r{on the web}
86fbb8ca 3494doi:10.1000/182 @r{DOI for an electronic resource}
4009494e 3495file:/home/dominik/images/jupiter.jpg @r{file, absolute path}
44ce9197 3496/home/dominik/images/jupiter.jpg @r{same as above}
4009494e 3497file:papers/last.pdf @r{file, relative path}
44ce9197 3498./papers/last.pdf @r{same as above}
ed21c5c8
CD
3499file:/myself@@some.where:papers/last.pdf @r{file, path on remote machine}
3500/myself@@some.where:papers/last.pdf @r{same as above}
e66ba1df 3501file:sometextfile::NNN @r{file, jump to line number}
c8d0cf5c 3502file:projects.org @r{another Org file}
e66ba1df
BG
3503file:projects.org::some words @r{text search in Org file}@footnote{
3504The actual behavior of the search will depend on the value of
271672fa
BG
3505the option @code{org-link-search-must-match-exact-headline}. If its value
3506is @code{nil}, then a fuzzy text search will be done. If it is t, then only the
e66ba1df
BG
3507exact headline will be matched. If the value is @code{'query-to-create},
3508then an exact headline will be searched; if it is not found, then the user
3509will be queried to create it.}
c8d0cf5c 3510file:projects.org::*task title @r{heading search in Org file}
e66ba1df
BG
3511file+sys:/path/to/file @r{open via OS, like double-click}
3512file+emacs:/path/to/file @r{force opening by Emacs}
3513docview:papers/last.pdf::NNN @r{open in doc-view mode at page}
55e0839d 3514id:B7423F4D-2E8A-471B-8810-C40F074717E9 @r{Link to heading by ID}
4009494e 3515news:comp.emacs @r{Usenet link}
55e0839d 3516mailto:adent@@galaxy.net @r{Mail link}
4009494e
GM
3517mhe:folder @r{MH-E folder link}
3518mhe:folder#id @r{MH-E message link}
3519rmail:folder @r{RMAIL folder link}
3520rmail:folder#id @r{RMAIL message link}
a7808fba
CD
3521gnus:group @r{Gnus group link}
3522gnus:group#id @r{Gnus article link}
64fb801f 3523bbdb:R.*Stallman @r{BBDB link (with regexp)}
28a16a1b 3524irc:/irc.com/#emacs/bob @r{IRC link}
e66ba1df 3525info:org#External links @r{Info node link}
4009494e 3526shell:ls *.org @r{A shell command}
c8d0cf5c 3527elisp:org-agenda @r{Interactive Elisp command}
64fb801f 3528elisp:(find-file-other-frame "Elisp.org") @r{Elisp form to evaluate}
4009494e
GM
3529@end example
3530
271672fa
BG
3531@cindex VM links
3532@cindex WANDERLUST links
3533On top of these built-in link types, some are available through the
3534@code{contrib/} directory (@pxref{Installation}). For example, these links
3535to VM or Wanderlust messages are available when you load the corresponding
3536libraries from the @code{contrib/} directory:
3537
3538@example
3539vm:folder @r{VM folder link}
3540vm:folder#id @r{VM message link}
3541vm://myself@@some.where.org/folder#id @r{VM on remote machine}
3542vm-imap:account:folder @r{VM IMAP folder link}
3543vm-imap:account:folder#id @r{VM IMAP message link}
3544wl:folder @r{WANDERLUST folder link}
3545wl:folder#id @r{WANDERLUST message link}
3546@end example
3547
ce57c2fe
BG
3548For customizing Org to add new link types @ref{Adding hyperlink types}.
3549
271672fa
BG
3550A link should be enclosed in double brackets and may contain a descriptive
3551text to be displayed instead of the URL (@pxref{Link format}), for example:
4009494e
GM
3552
3553@example
3554[[http://www.gnu.org/software/emacs/][GNU Emacs]]
3555@end example
3556
3557@noindent
3558If the description is a file name or URL that points to an image, HTML
3559export (@pxref{HTML export}) will inline the image as a clickable
3560button. If there is no description at all and the link points to an
3561image,
3562that image will be inlined into the exported HTML file.
3563
c8d0cf5c 3564@cindex square brackets, around links
4009494e 3565@cindex plain text external links
a7808fba 3566Org also finds external links in the normal text and activates them
4009494e
GM
3567as links. If spaces must be part of the link (for example in
3568@samp{bbdb:Richard Stallman}), or if you need to remove ambiguities
c8d0cf5c 3569about the end of the link, enclose them in square brackets.
4009494e 3570
a7808fba 3571@node Handling links, Using links outside Org, External links, Hyperlinks
4009494e
GM
3572@section Handling links
3573@cindex links, handling
3574
a7808fba
CD
3575Org provides methods to create a link in the correct syntax, to
3576insert it into an Org file, and to follow the link.
4009494e
GM
3577
3578@table @kbd
acedf35c 3579@orgcmd{C-c l,org-store-link}
4009494e 3580@cindex storing links
55e0839d
CD
3581Store a link to the current location. This is a @emph{global} command (you
3582must create the key binding yourself) which can be used in any buffer to
3583create a link. The link will be stored for later insertion into an Org
c8d0cf5c
CD
3584buffer (see below). What kind of link will be created depends on the current
3585buffer:
55e0839d 3586
e66ba1df 3587@b{Org mode buffers}@*
55e0839d 3588For Org files, if there is a @samp{<<target>>} at the cursor, the link points
c8d0cf5c 3589to the target. Otherwise it points to the current headline, which will also
ce57c2fe 3590be the description@footnote{If the headline contains a timestamp, it will be
f99f1641 3591removed from the link and result in a wrong link---you should avoid putting
ce57c2fe 3592timestamp in the headline.}.
c8d0cf5c 3593
a89c8ef0 3594@vindex org-id-link-to-org-use-id
c8d0cf5c
CD
3595@cindex property, CUSTOM_ID
3596@cindex property, ID
3597If the headline has a @code{CUSTOM_ID} property, a link to this custom ID
3598will be stored. In addition or alternatively (depending on the value of
a89c8ef0 3599@code{org-id-link-to-org-use-id}), a globally unique @code{ID} property will
271672fa
BG
3600be created and/or used to construct a link@footnote{The library
3601@file{org-id.el} must first be loaded, either through @code{org-customize} by
3602enabling @code{org-id} in @code{org-modules}, or by adding @code{(require
3603'org-id)} in your @file{.emacs}.}. So using this command in Org buffers will
3604potentially create two links: a human-readable from the custom ID, and one
3605that is globally unique and works even if the entry is moved from file to
3606file. Later, when inserting the link, you need to decide which one to use.
c8d0cf5c
CD
3607
3608@b{Email/News clients: VM, Rmail, Wanderlust, MH-E, Gnus}@*
3609Pretty much all Emacs mail clients are supported. The link will point to the
3610current article, or, in some GNUS buffers, to the group. The description is
3611constructed from the author and the subject.
3612
3613@b{Web browsers: W3 and W3M}@*
3614Here the link will be the current URL, with the page title as description.
3615
3616@b{Contacts: BBDB}@*
3617Links created in a BBDB buffer will point to the current entry.
3618
3619@b{Chat: IRC}@*
3620@vindex org-irc-link-to-logs
271672fa
BG
3621For IRC links, if you set the option @code{org-irc-link-to-logs} to @code{t},
3622a @samp{file:/} style link to the relevant point in the logs for the current
3623conversation is created. Otherwise an @samp{irc:/} style link to the
3624user/channel/server under the point will be stored.
c8d0cf5c
CD
3625
3626@b{Other files}@*
55e0839d
CD
3627For any other files, the link will point to the file, with a search string
3628(@pxref{Search options}) pointing to the contents of the current line. If
3629there is an active region, the selected words will form the basis of the
3630search string. If the automatically created link is not working correctly or
3631accurately enough, you can write custom functions to select the search string
c8d0cf5c
CD
3632and to do the search for particular file types---see @ref{Custom searches}.
3633The key binding @kbd{C-c l} is only a suggestion---see @ref{Installation}.
7006d207
CD
3634
3635@b{Agenda view}@*
3636When the cursor is in an agenda view, the created link points to the
3637entry referenced by the current line.
3638
4009494e 3639@c
acedf35c 3640@orgcmd{C-c C-l,org-insert-link}
4009494e
GM
3641@cindex link completion
3642@cindex completion, of links
3643@cindex inserting links
c8d0cf5c
CD
3644@vindex org-keep-stored-link-after-insertion
3645Insert a link@footnote{ Note that you don't have to use this command to
3646insert a link. Links in Org are plain text, and you can type or paste them
3647straight into the buffer. By using this command, the links are automatically
3648enclosed in double brackets, and you will be asked for the optional
3649descriptive text.}. This prompts for a link to be inserted into the buffer.
3650You can just type a link, using text for an internal link, or one of the link
3651type prefixes mentioned in the examples above. The link will be inserted
3652into the buffer@footnote{After insertion of a stored link, the link will be
3653removed from the list of stored links. To keep it in the list later use, use
3654a triple @kbd{C-u} prefix argument to @kbd{C-c C-l}, or configure the option
a7808fba
CD
3655@code{org-keep-stored-link-after-insertion}.}, along with a descriptive text.
3656If some text was selected when this command is called, the selected text
c8d0cf5c
CD
3657becomes the default description.
3658
3659@b{Inserting stored links}@*
3660All links stored during the
3661current session are part of the history for this prompt, so you can access
3662them with @key{up} and @key{down} (or @kbd{M-p/n}).
3663
3664@b{Completion support}@* Completion with @key{TAB} will help you to insert
3665valid link prefixes like @samp{http:} or @samp{ftp:}, including the prefixes
3666defined through link abbreviations (@pxref{Link abbreviations}). If you
3667press @key{RET} after inserting only the @var{prefix}, Org will offer
3668specific completion support for some link types@footnote{This works by
3669calling a special function @code{org-PREFIX-complete-link}.} For
3670example, if you type @kbd{file @key{RET}}, file name completion (alternative
3671access: @kbd{C-u C-c C-l}, see below) will be offered, and after @kbd{bbdb
3672@key{RET}} you can complete contact names.
acedf35c 3673@orgkey C-u C-c C-l
4009494e
GM
3674@cindex file name completion
3675@cindex completion, of file names
4009494e
GM
3676When @kbd{C-c C-l} is called with a @kbd{C-u} prefix argument, a link to
3677a file will be inserted and you may use file name completion to select
3678the name of the file. The path to the file is inserted relative to the
c8d0cf5c 3679directory of the current Org file, if the linked file is in the current
a7808fba 3680directory or in a sub-directory of it, or if the path is written relative
4009494e
GM
3681to the current directory using @samp{../}. Otherwise an absolute path
3682is used, if possible with @samp{~/} for your home directory. You can
3683force an absolute path with two @kbd{C-u} prefixes.
3684@c
86fbb8ca 3685@item C-c C-l @ @r{(with cursor on existing link)}
4009494e
GM
3686When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
3687link and description parts of the link.
3688@c
3689@cindex following links
acedf35c 3690@orgcmd{C-c C-o,org-open-at-point}
c8d0cf5c 3691@vindex org-file-apps
e66ba1df 3692@vindex org-link-frame-setup
4009494e 3693Open link at point. This will launch a web browser for URLs (using
864c9740
CD
3694@command{browse-url-at-point}), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for
3695the corresponding links, and execute the command in a shell link. When the
04d3bb6c 3696cursor is on an internal link, this command runs the corresponding search.
864c9740 3697When the cursor is on a TAG list in a headline, it creates the corresponding
c8d0cf5c 3698TAGS view. If the cursor is on a timestamp, it compiles the agenda for that
864c9740
CD
3699date. Furthermore, it will visit text and remote files in @samp{file:} links
3700with Emacs and select a suitable application for local non-text files.
3701Classification of files is based on file extension only. See option
3702@code{org-file-apps}. If you want to override the default application and
e45e3595 3703visit the file with Emacs, use a @kbd{C-u} prefix. If you want to avoid
6eb02347
CD
3704opening in Emacs, use a @kbd{C-u C-u} prefix.@*
3705If the cursor is on a headline, but not on a link, offer all links in the
e66ba1df
BG
3706headline and entry text. If you want to setup the frame configuration for
3707following links, customize @code{org-link-frame-setup}.
3708
acedf35c
CD
3709@orgkey @key{RET}
3710@vindex org-return-follows-link
3711When @code{org-return-follows-link} is set, @kbd{@key{RET}} will also follow
3712the link at point.
4009494e
GM
3713@c
3714@kindex mouse-2
3715@kindex mouse-1
3716@item mouse-2
3717@itemx mouse-1
3718On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o}
acedf35c 3719would. Under Emacs 22 and later, @kbd{mouse-1} will also follow a link.
4009494e
GM
3720@c
3721@kindex mouse-3
3722@item mouse-3
c8d0cf5c 3723@vindex org-display-internal-link-with-indirect-buffer
4009494e
GM
3724Like @kbd{mouse-2}, but force file links to be opened with Emacs, and
3725internal links to be displayed in another window@footnote{See the
271672fa 3726option @code{org-display-internal-link-with-indirect-buffer}}.
4009494e 3727@c
acedf35c 3728@orgcmd{C-c C-x C-v,org-toggle-inline-images}
86fbb8ca
CD
3729@cindex inlining images
3730@cindex images, inlining
afe98dfa
CD
3731@vindex org-startup-with-inline-images
3732@cindex @code{inlineimages}, STARTUP keyword
3733@cindex @code{noinlineimages}, STARTUP keyword
86fbb8ca 3734Toggle the inline display of linked images. Normally this will only inline
1df7defd 3735images that have no description part in the link, i.e., images that will also
86fbb8ca 3736be inlined during export. When called with a prefix argument, also display
afe98dfa
CD
3737images that do have a link description. You can ask for inline images to be
3738displayed at startup by configuring the variable
3739@code{org-startup-with-inline-images}@footnote{with corresponding
271672fa 3740@code{#+STARTUP} keywords @code{inlineimages} and @code{noinlineimages}}.
acedf35c 3741@orgcmd{C-c %,org-mark-ring-push}
4009494e 3742@cindex mark ring
4009494e 3743Push the current position onto the mark ring, to be able to return
ce57c2fe 3744easily. Commands following an internal link do this automatically.
4009494e 3745@c
acedf35c 3746@orgcmd{C-c &,org-mark-ring-goto}
4009494e 3747@cindex links, returning to
4009494e
GM
3748Jump back to a recorded position. A position is recorded by the
3749commands following internal links, and by @kbd{C-c %}. Using this
3750command several times in direct succession moves through a ring of
3751previously recorded positions.
3752@c
acedf35c 3753@orgcmdkkcc{C-c C-x C-n,C-c C-x C-p,org-next-link,org-previous-link}
4009494e 3754@cindex links, finding next/previous
4009494e
GM
3755Move forward/backward to the next link in the buffer. At the limit of
3756the buffer, the search fails once, and then wraps around. The key
acedf35c 3757bindings for this are really too long; you might want to bind this also
4009494e
GM
3758to @kbd{C-n} and @kbd{C-p}
3759@lisp
3760(add-hook 'org-load-hook
3761 (lambda ()
ce57c2fe
BG
3762 (define-key org-mode-map "\C-n" 'org-next-link)
3763 (define-key org-mode-map "\C-p" 'org-previous-link)))
4009494e
GM
3764@end lisp
3765@end table
3766
a7808fba
CD
3767@node Using links outside Org, Link abbreviations, Handling links, Hyperlinks
3768@section Using links outside Org
4009494e 3769
a7808fba
CD
3770You can insert and follow links that have Org syntax not only in
3771Org, but in any Emacs buffer. For this, you should create two
4009494e
GM
3772global commands, like this (please select suitable global keys
3773yourself):
3774
3775@lisp
3776(global-set-key "\C-c L" 'org-insert-link-global)
3777(global-set-key "\C-c o" 'org-open-at-point-global)
3778@end lisp
3779
a7808fba 3780@node Link abbreviations, Search options, Using links outside Org, Hyperlinks
4009494e
GM
3781@section Link abbreviations
3782@cindex link abbreviations
3783@cindex abbreviation, links
3784
3785Long URLs can be cumbersome to type, and often many similar links are
3786needed in a document. For this you can use link abbreviations. An
3787abbreviated link looks like this
3788
3789@example
3790[[linkword:tag][description]]
3791@end example
3792
3793@noindent
c8d0cf5c 3794@vindex org-link-abbrev-alist
86fbb8ca
CD
3795where the tag is optional.
3796The @i{linkword} must be a word, starting with a letter, followed by
3797letters, numbers, @samp{-}, and @samp{_}. Abbreviations are resolved
c8d0cf5c
CD
3798according to the information in the variable @code{org-link-abbrev-alist}
3799that relates the linkwords to replacement text. Here is an example:
4009494e 3800
afe98dfa 3801@smalllisp
4009494e
GM
3802@group
3803(setq org-link-abbrev-alist
8223b1d2
BG
3804 '(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
3805 ("url-to-ja" . "http://translate.google.fr/translate?sl=en&tl=ja&u=%h")
3806 ("google" . "http://www.google.com/search?q=")
3807 ("gmap" . "http://maps.google.com/maps?q=%s")
3808 ("omap" . "http://nominatim.openstreetmap.org/search?q=%s&polygon=1")
3809 ("ads" . "http://adsabs.harvard.edu/cgi-bin/nph-abs_connect?author=%s&db_key=AST")))
4009494e 3810@end group
afe98dfa 3811@end smalllisp
4009494e
GM
3812
3813If the replacement text contains the string @samp{%s}, it will be
8223b1d2
BG
3814replaced with the tag. Using @samp{%h} instead of @samp{%s} will
3815url-encode the tag (see the example above, where we need to encode
3816the URL parameter.) Using @samp{%(my-function)} will pass the tag
3817to a custom function, and replace it by the resulting string.
3818
3819If the replacement text don't contain any specifier, it will simply
3820be appended to the string in order to create the link.
3821
3822Instead of a string, you may also specify a function that will be
3823called with the tag as the only argument to create the link.
4009494e
GM
3824
3825With the above setting, you could link to a specific bug with
3826@code{[[bugzilla:129]]}, search the web for @samp{OrgMode} with
afe98dfa
CD
3827@code{[[google:OrgMode]]}, show the map location of the Free Software
3828Foundation @code{[[gmap:51 Franklin Street, Boston]]} or of Carsten office
3829@code{[[omap:Science Park 904, Amsterdam, The Netherlands]]} and find out
3830what the Org author is doing besides Emacs hacking with
3831@code{[[ads:Dominik,C]]}.
4009494e 3832
a7808fba 3833If you need special abbreviations just for a single Org buffer, you
4009494e
GM
3834can define them in the file with
3835
c8d0cf5c 3836@cindex #+LINK
4009494e
GM
3837@example
3838#+LINK: bugzilla http://10.1.2.9/bugzilla/show_bug.cgi?id=
3839#+LINK: google http://www.google.com/search?q=%s
3840@end example
3841
3842@noindent
c8d0cf5c
CD
3843In-buffer completion (@pxref{Completion}) can be used after @samp{[} to
3844complete link abbreviations. You may also define a function
1df7defd 3845@code{org-PREFIX-complete-link} that implements special (e.g., completion)
c8d0cf5c
CD
3846support for inserting such a link with @kbd{C-c C-l}. Such a function should
3847not accept any arguments, and return the full link with prefix.
4009494e
GM
3848
3849@node Search options, Custom searches, Link abbreviations, Hyperlinks
3850@section Search options in file links
3851@cindex search option in file links
3852@cindex file links, searching
3853
3854File links can contain additional information to make Emacs jump to a
3855particular location in the file when following a link. This can be a
3856line number or a search option after a double@footnote{For backward
ce57c2fe 3857compatibility, line numbers can also follow a single colon.} colon. For
4009494e
GM
3858example, when the command @kbd{C-c l} creates a link (@pxref{Handling
3859links}) to a file, it encodes the words in the current line as a search
3860string that can be used to find this line back later when following the
28a16a1b 3861link with @kbd{C-c C-o}.
4009494e
GM
3862
3863Here is the syntax of the different ways to attach a search to a file
3864link, together with an explanation:
3865
3866@example
3867[[file:~/code/main.c::255]]
3868[[file:~/xx.org::My Target]]
3869[[file:~/xx.org::*My Target]]
ed21c5c8 3870[[file:~/xx.org::#my-custom-id]]
4009494e
GM
3871[[file:~/xx.org::/regexp/]]
3872@end example
3873
3874@table @code
3875@item 255
3876Jump to line 255.
3877@item My Target
3878Search for a link target @samp{<<My Target>>}, or do a text search for
3879@samp{my target}, similar to the search in internal links, see
3880@ref{Internal links}. In HTML export (@pxref{HTML export}), such a file
d1389828 3881link will become an HTML reference to the corresponding named anchor in
4009494e
GM
3882the linked file.
3883@item *My Target
a7808fba 3884In an Org file, restrict search to headlines.
ed21c5c8
CD
3885@item #my-custom-id
3886Link to a heading with a @code{CUSTOM_ID} property
4009494e
GM
3887@item /regexp/
3888Do a regular expression search for @code{regexp}. This uses the Emacs
3889command @code{occur} to list all matches in a separate window. If the
e66ba1df 3890target file is in Org mode, @code{org-occur} is used to create a
4009494e
GM
3891sparse tree with the matches.
3892@c If the target file is a directory,
3893@c @code{grep} will be used to search all files in the directory.
3894@end table
3895
3896As a degenerate case, a file link with an empty file name can be used
3897to search the current file. For example, @code{[[file:::find me]]} does
3898a search for @samp{find me} in the current file, just as
3899@samp{[[find me]]} would.
3900
dbc28aaa 3901@node Custom searches, , Search options, Hyperlinks
4009494e
GM
3902@section Custom Searches
3903@cindex custom search strings
3904@cindex search strings, custom
3905
3906The default mechanism for creating search strings and for doing the
3907actual search related to a file link may not work correctly in all
c8d0cf5c 3908cases. For example, Bib@TeX{} database files have many entries like
4009494e 3909@samp{year="1993"} which would not result in good search strings,
c8d0cf5c 3910because the only unique identification for a Bib@TeX{} entry is the
4009494e
GM
3911citation key.
3912
c8d0cf5c
CD
3913@vindex org-create-file-search-functions
3914@vindex org-execute-file-search-functions
4009494e
GM
3915If you come across such a problem, you can write custom functions to set
3916the right search string for a particular file type, and to do the search
3917for the string in the file. Using @code{add-hook}, these functions need
3918to be added to the hook variables
3919@code{org-create-file-search-functions} and
3920@code{org-execute-file-search-functions}. See the docstring for these
a7808fba 3921variables for more information. Org actually uses this mechanism
4009494e 3922for Bib@TeX{} database files, and you can use the corresponding code as
44ce9197 3923an implementation example. See the file @file{org-bibtex.el}.
4009494e 3924
a7808fba 3925@node TODO Items, Tags, Hyperlinks, Top
86fbb8ca 3926@chapter TODO items
4009494e
GM
3927@cindex TODO items
3928
e66ba1df 3929Org mode does not maintain TODO lists as separate documents@footnote{Of
a50253cc 3930course, you can make a document that contains only long lists of TODO items,
44ce9197
CD
3931but this is not required.}. Instead, TODO items are an integral part of the
3932notes file, because TODO items usually come up while taking notes! With Org
3933mode, simply mark any entry in a tree as being a TODO item. In this way,
3934information is not duplicated, and the entire context from which the TODO
3935item emerged is always present.
4009494e 3936
dbc28aaa 3937Of course, this technique for managing TODO items scatters them
e66ba1df 3938throughout your notes file. Org mode compensates for this by providing
dbc28aaa 3939methods to give you an overview of all the things that you have to do.
4009494e
GM
3940
3941@menu
c0468714
GM
3942* TODO basics:: Marking and displaying TODO entries
3943* TODO extensions:: Workflow and assignments
3944* Progress logging:: Dates and notes for progress
3945* Priorities:: Some things are more important than others
3946* Breaking down tasks:: Splitting a task into manageable pieces
3947* Checkboxes:: Tick-off lists
4009494e
GM
3948@end menu
3949
a7808fba 3950@node TODO basics, TODO extensions, TODO Items, TODO Items
4009494e
GM
3951@section Basic TODO functionality
3952
dbc28aaa
CD
3953Any headline becomes a TODO item when it starts with the word
3954@samp{TODO}, for example:
4009494e
GM
3955
3956@example
3957*** TODO Write letter to Sam Fortune
3958@end example
3959
3960@noindent
3961The most important commands to work with TODO entries are:
3962
3963@table @kbd
acedf35c 3964@orgcmd{C-c C-t,org-todo}
4009494e 3965@cindex cycling, of TODO states
c7cf0ebc
BG
3966@vindex org-use-fast-todo-selection
3967
4009494e
GM
3968Rotate the TODO state of the current item among
3969
3970@example
3971,-> (unmarked) -> TODO -> DONE --.
3972'--------------------------------'
3973@end example
3974
c7cf0ebc
BG
3975If TODO keywords have fast access keys (see @ref{Fast access to TODO
3976states}), you will be prompted for a TODO keyword through the fast selection
3977interface; this is the default behavior when
271672fa 3978@code{org-use-fast-todo-selection} is non-@code{nil}.
c7cf0ebc
BG
3979
3980The same rotation can also be done ``remotely'' from the timeline and agenda
3981buffers with the @kbd{t} command key (@pxref{Agenda commands}).
dbc28aaa 3982
acedf35c 3983@orgkey{C-u C-c C-t}
c7cf0ebc
BG
3984When TODO keywords have no selection keys, select a specific keyword using
3985completion; otherwise force cycling through TODO states with no prompt. When
271672fa 3986@code{org-use-fast-todo-selection} is set to @code{prefix}, use the fast
c7cf0ebc 3987selection interface.
dbc28aaa 3988
4009494e
GM
3989@kindex S-@key{right}
3990@kindex S-@key{left}
acedf35c 3991@item S-@key{right} @ @r{/} @ S-@key{left}
c8d0cf5c 3992@vindex org-treat-S-cursor-todo-selection-as-state-change
dbc28aaa
CD
3993Select the following/preceding TODO state, similar to cycling. Useful
3994mostly if more than two TODO states are possible (@pxref{TODO
c8d0cf5c
CD
3995extensions}). See also @ref{Conflicts}, for a discussion of the interaction
3996with @code{shift-selection-mode}. See also the variable
3997@code{org-treat-S-cursor-todo-selection-as-state-change}.
bdebdb64 3998@orgcmd{C-c / t,org-show-todo-tree}
4009494e 3999@cindex sparse tree, for TODO
c8d0cf5c
CD
4000@vindex org-todo-keywords
4001View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}). Folds the
86fbb8ca
CD
4002entire buffer, but shows all TODO items (with not-DONE state) and the
4003headings hierarchy above them. With a prefix argument (or by using @kbd{C-c
271672fa
BG
4004/ T}), search for a specific TODO@. You will be prompted for the keyword,
4005and you can also give a list of keywords like @code{KWD1|KWD2|...} to list
ce57c2fe 4006entries that match any one of these keywords. With a numeric prefix argument
271672fa
BG
4007N, show the tree for the Nth keyword in the option @code{org-todo-keywords}.
4008With two prefix arguments, find all TODO states, both un-done and done.
acedf35c 4009@orgcmd{C-c a t,org-todo-list}
86fbb8ca
CD
4010Show the global TODO list. Collects the TODO items (with not-DONE states)
4011from all agenda files (@pxref{Agenda Views}) into a single buffer. The new
4012buffer will be in @code{agenda-mode}, which provides commands to examine and
4013manipulate the TODO entries from the new buffer (@pxref{Agenda commands}).
4014@xref{Global TODO list}, for more information.
acedf35c 4015@orgcmd{S-M-@key{RET},org-insert-todo-heading}
4009494e
GM
4016Insert a new TODO entry below the current one.
4017@end table
4018
71d35b24 4019@noindent
c8d0cf5c 4020@vindex org-todo-state-tags-triggers
71d35b24
CD
4021Changing a TODO state can also trigger tag changes. See the docstring of the
4022option @code{org-todo-state-tags-triggers} for details.
4023
a7808fba 4024@node TODO extensions, Progress logging, TODO basics, TODO Items
4009494e
GM
4025@section Extended use of TODO keywords
4026@cindex extended TODO keywords
4027
c8d0cf5c 4028@vindex org-todo-keywords
dbc28aaa 4029By default, marked TODO entries have one of only two states: TODO and
1df7defd 4030DONE@. Org mode allows you to classify TODO items in more complex ways
dbc28aaa
CD
4031with @emph{TODO keywords} (stored in @code{org-todo-keywords}). With
4032special setup, the TODO keyword system can work differently in different
4033files.
4009494e
GM
4034
4035Note that @i{tags} are another way to classify headlines in general and
4036TODO items in particular (@pxref{Tags}).
4037
4038@menu
c0468714
GM
4039* Workflow states:: From TODO to DONE in steps
4040* TODO types:: I do this, Fred does the rest
4041* Multiple sets in one file:: Mixing it all, and still finding your way
4042* Fast access to TODO states:: Single letter selection of a state
4043* Per-file keywords:: Different files, different requirements
4044* Faces for TODO keywords:: Highlighting states
4045* TODO dependencies:: When one task needs to wait for others
4009494e
GM
4046@end menu
4047
4048@node Workflow states, TODO types, TODO extensions, TODO extensions
4049@subsection TODO keywords as workflow states
4050@cindex TODO workflow
4051@cindex workflow states as TODO keywords
4052
4053You can use TODO keywords to indicate different @emph{sequential} states
4054in the process of working on an item, for example@footnote{Changing
e66ba1df 4055this variable only becomes effective after restarting Org mode in a
4009494e
GM
4056buffer.}:
4057
4058@lisp
4059(setq org-todo-keywords
4060 '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
4061@end lisp
4062
4063The vertical bar separates the TODO keywords (states that @emph{need
44ce9197 4064action}) from the DONE states (which need @emph{no further action}). If
4009494e
GM
4065you don't provide the separator bar, the last state is used as the DONE
4066state.
4067@cindex completion, of TODO keywords
4068With this setup, the command @kbd{C-c C-t} will cycle an entry from TODO
1df7defd 4069to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED@. You may
a7808fba 4070also use a numeric prefix argument to quickly select a specific state. For
1df7defd 4071example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY@.
560bb6ea 4072Or you can use @kbd{S-@key{left}} to go backward through the sequence. If you
28a16a1b
CD
4073define many keywords, you can use in-buffer completion
4074(@pxref{Completion}) or even a special one-key selection scheme
4075(@pxref{Fast access to TODO states}) to insert these words into the
a7808fba 4076buffer. Changing a TODO state can be logged with a timestamp, see
c8d0cf5c 4077@ref{Tracking TODO state changes}, for more information.
4009494e
GM
4078
4079@node TODO types, Multiple sets in one file, Workflow states, TODO extensions
4080@subsection TODO keywords as types
4081@cindex TODO types
4082@cindex names as TODO keywords
4083@cindex types as TODO keywords
4084
4085The second possibility is to use TODO keywords to indicate different
4086@emph{types} of action items. For example, you might want to indicate
4087that items are for ``work'' or ``home''. Or, when you work with several
4088people on a single project, you might want to assign action items
4089directly to persons, by using their names as TODO keywords. This would
4090be set up like this:
4091
4092@lisp
4093(setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
4094@end lisp
4095
4096In this case, different keywords do not indicate a sequence, but rather
4097different types. So the normal work flow would be to assign a task to a
1df7defd 4098person, and later to mark it DONE@. Org mode supports this style by adapting
a7808fba
CD
4099the workings of the command @kbd{C-c C-t}@footnote{This is also true for the
4100@kbd{t} command in the timeline and agenda buffers.}. When used several
4101times in succession, it will still cycle through all names, in order to first
4102select the right type for a task. But when you return to the item after some
4103time and execute @kbd{C-c C-t} again, it will switch from any name directly
1df7defd 4104to DONE@. Use prefix arguments or completion to quickly select a specific
a7808fba 4105name. You can also review the items of a specific TODO type in a sparse tree
86fbb8ca
CD
4106by using a numeric prefix to @kbd{C-c / t}. For example, to see all things
4107Lucy has to do, you would use @kbd{C-3 C-c / t}. To collect Lucy's items
a7808fba 4108from all agenda files into a single buffer, you would use the numeric prefix
86fbb8ca 4109argument as well when creating the global TODO list: @kbd{C-3 C-c a t}.
4009494e 4110
dbc28aaa 4111@node Multiple sets in one file, Fast access to TODO states, TODO types, TODO extensions
4009494e 4112@subsection Multiple keyword sets in one file
a7808fba 4113@cindex TODO keyword sets
4009494e
GM
4114
4115Sometimes you may want to use different sets of TODO keywords in
4116parallel. For example, you may want to have the basic
4117@code{TODO}/@code{DONE}, but also a workflow for bug fixing, and a
4118separate state indicating that an item has been canceled (so it is not
4119DONE, but also does not require action). Your setup would then look
4120like this:
4121
4122@lisp
4123(setq org-todo-keywords
4124 '((sequence "TODO" "|" "DONE")
4125 (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
4126 (sequence "|" "CANCELED")))
4127@end lisp
4128
e66ba1df 4129The keywords should all be different, this helps Org mode to keep track
4009494e
GM
4130of which subsequence should be used for a given entry. In this setup,
4131@kbd{C-c C-t} only operates within a subsequence, so it switches from
4132@code{DONE} to (nothing) to @code{TODO}, and from @code{FIXED} to
4133(nothing) to @code{REPORT}. Therefore you need a mechanism to initially
4134select the correct sequence. Besides the obvious ways like typing a
4135keyword or using completion, you may also apply the following commands:
4136
4137@table @kbd
4138@kindex C-S-@key{right}
4139@kindex C-S-@key{left}
3da3282e
CD
4140@kindex C-u C-u C-c C-t
4141@item C-u C-u C-c C-t
4142@itemx C-S-@key{right}
4009494e
GM
4143@itemx C-S-@key{left}
4144These keys jump from one TODO subset to the next. In the above example,
3da3282e
CD
4145@kbd{C-u C-u C-c C-t} or @kbd{C-S-@key{right}} would jump from @code{TODO} or
4146@code{DONE} to @code{REPORT}, and any of the words in the second row to
4147@code{CANCELED}. Note that the @kbd{C-S-} key binding conflict with
4148@code{shift-selection-mode} (@pxref{Conflicts}).
4009494e
GM
4149@kindex S-@key{right}
4150@kindex S-@key{left}
4151@item S-@key{right}
4152@itemx S-@key{left}
3da3282e
CD
4153@kbd{S-@key{<left>}} and @kbd{S-@key{<right>}} and walk through @emph{all}
4154keywords from all sets, so for example @kbd{S-@key{<right>}} would switch
4155from @code{DONE} to @code{REPORT} in the example above. See also
c8d0cf5c 4156@ref{Conflicts}, for a discussion of the interaction with
3da3282e 4157@code{shift-selection-mode}.
4009494e
GM
4158@end table
4159
dbc28aaa
CD
4160@node Fast access to TODO states, Per-file keywords, Multiple sets in one file, TODO extensions
4161@subsection Fast access to TODO states
4162
4163If you would like to quickly change an entry to an arbitrary TODO state
8223b1d2
BG
4164instead of cycling through the states, you can set up keys for single-letter
4165access to the states. This is done by adding the selection character after
4166each keyword, in parentheses@footnote{All characters are allowed except
4167@code{@@^!}, which have a special meaning here.}. For example:
dbc28aaa
CD
4168
4169@lisp
4170(setq org-todo-keywords
4171 '((sequence "TODO(t)" "|" "DONE(d)")
4172 (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
4173 (sequence "|" "CANCELED(c)")))
4174@end lisp
4175
c8d0cf5c 4176@vindex org-fast-tag-selection-include-todo
ce57c2fe
BG
4177If you then press @kbd{C-c C-t} followed by the selection key, the entry
4178will be switched to this state. @kbd{SPC} can be used to remove any TODO
271672fa 4179keyword from an entry.@footnote{Check also the option
c8d0cf5c 4180@code{org-fast-tag-selection-include-todo}, it allows you to change the TODO
55033558
CD
4181state through the tags interface (@pxref{Setting tags}), in case you like to
4182mingle the two concepts. Note that this means you need to come up with
4183unique keys across both sets of keywords.}
dbc28aaa
CD
4184
4185@node Per-file keywords, Faces for TODO keywords, Fast access to TODO states, TODO extensions
4009494e
GM
4186@subsection Setting up keywords for individual files
4187@cindex keyword options
dbc28aaa 4188@cindex per-file keywords
c8d0cf5c
CD
4189@cindex #+TODO
4190@cindex #+TYP_TODO
4191@cindex #+SEQ_TODO
4009494e
GM
4192
4193It can be very useful to use different aspects of the TODO mechanism in
4194different files. For file-local settings, you need to add special lines
4195to the file which set the keywords and interpretation for that file
4196only. For example, to set one of the two examples discussed above, you
4197need one of the following lines, starting in column zero anywhere in the
4198file:
4199
4200@example
c8d0cf5c 4201#+TODO: TODO FEEDBACK VERIFY | DONE CANCELED
4009494e 4202@end example
c8d0cf5c
CD
4203@noindent (you may also write @code{#+SEQ_TODO} to be explicit about the
4204interpretation, but it means the same as @code{#+TODO}), or
4009494e
GM
4205@example
4206#+TYP_TODO: Fred Sara Lucy Mike | DONE
4207@end example
4208
4209A setup for using several sets in parallel would be:
4210
4211@example
c8d0cf5c
CD
4212#+TODO: TODO | DONE
4213#+TODO: REPORT BUG KNOWNCAUSE | FIXED
4214#+TODO: | CANCELED
4009494e
GM
4215@end example
4216
4217@cindex completion, of option keywords
4218@kindex M-@key{TAB}
4219@noindent To make sure you are using the correct keyword, type
4220@samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
4221
4222@cindex DONE, final TODO keyword
4223Remember that the keywords after the vertical bar (or the last keyword
4224if no bar is there) must always mean that the item is DONE (although you
4225may use a different word). After changing one of these lines, use
4226@kbd{C-c C-c} with the cursor still in the line to make the changes
e66ba1df
BG
4227known to Org mode@footnote{Org mode parses these lines only when
4228Org mode is activated after visiting a file. @kbd{C-c C-c} with the
4229cursor in a line starting with @samp{#+} is simply restarting Org mode
4009494e
GM
4230for the current buffer.}.
4231
7ddb1b5f 4232@node Faces for TODO keywords, TODO dependencies, Per-file keywords, TODO extensions
dbc28aaa
CD
4233@subsection Faces for TODO keywords
4234@cindex faces, for TODO keywords
4235
c8d0cf5c
CD
4236@vindex org-todo @r{(face)}
4237@vindex org-done @r{(face)}
4238@vindex org-todo-keyword-faces
e66ba1df 4239Org mode highlights TODO keywords with special faces: @code{org-todo}
dbc28aaa
CD
4240for keywords indicating that an item still has to be acted upon, and
4241@code{org-done} for keywords indicating that an item is finished. If
4242you are using more than 2 different states, you might want to use
271672fa 4243special faces for some of them. This can be done using the option
dbc28aaa
CD
4244@code{org-todo-keyword-faces}. For example:
4245
4246@lisp
96c8522a 4247@group
dbc28aaa 4248(setq org-todo-keyword-faces
ed21c5c8
CD
4249 '(("TODO" . org-warning) ("STARTED" . "yellow")
4250 ("CANCELED" . (:foreground "blue" :weight bold))))
96c8522a 4251@end group
dbc28aaa
CD
4252@end lisp
4253
ed21c5c8 4254While using a list with face properties as shown for CANCELED @emph{should}
27e428e7 4255work, this does not always seem to be the case. If necessary, define a
271672fa 4256special face and use that. A string is interpreted as a color. The option
ed21c5c8
CD
4257@code{org-faces-easy-properties} determines if that color is interpreted as a
4258foreground or a background color.
28a16a1b 4259
7ddb1b5f
CD
4260@node TODO dependencies, , Faces for TODO keywords, TODO extensions
4261@subsection TODO dependencies
2e461fc1
CD
4262@cindex TODO dependencies
4263@cindex dependencies, of TODO states
7ddb1b5f 4264
c8d0cf5c
CD
4265@vindex org-enforce-todo-dependencies
4266@cindex property, ORDERED
7ddb1b5f
CD
4267The structure of Org files (hierarchy and lists) makes it easy to define TODO
4268dependencies. Usually, a parent TODO task should not be marked DONE until
1df7defd 4269all subtasks (defined as children tasks) are marked as DONE@. And sometimes
7ddb1b5f
CD
4270there is a logical sequence to a number of (sub)tasks, so that one task
4271cannot be acted upon before all siblings above it are done. If you customize
271672fa 4272the option @code{org-enforce-todo-dependencies}, Org will block entries
1df7defd 4273from changing state to DONE while they have children that are not DONE@.
2e461fc1 4274Furthermore, if an entry has a property @code{ORDERED}, each of its children
1df7defd 4275will be blocked until all earlier siblings are marked DONE@. Here is an
2e461fc1 4276example:
7ddb1b5f
CD
4277
4278@example
4279* TODO Blocked until (two) is done
4280** DONE one
4281** TODO two
4282
4283* Parent
4284 :PROPERTIES:
ce57c2fe 4285 :ORDERED: t
7ddb1b5f
CD
4286 :END:
4287** TODO a
4288** TODO b, needs to wait for (a)
4289** TODO c, needs to wait for (a) and (b)
4290@end example
4291
bc283609 4292@table @kbd
acedf35c 4293@orgcmd{C-c C-x o,org-toggle-ordered-property}
c8d0cf5c
CD
4294@vindex org-track-ordered-property-with-tag
4295@cindex property, ORDERED
4296Toggle the @code{ORDERED} property of the current entry. A property is used
4297for this behavior because this should be local to the current entry, not
4298inherited like a tag. However, if you would like to @i{track} the value of
271672fa 4299this property with a tag for better visibility, customize the option
c8d0cf5c 4300@code{org-track-ordered-property-with-tag}.
acedf35c 4301@orgkey{C-u C-u C-u C-c C-t}
c8d0cf5c 4302Change TODO state, circumventing any state blocking.
bc283609
CD
4303@end table
4304
c8d0cf5c 4305@vindex org-agenda-dim-blocked-tasks
271672fa 4306If you set the option @code{org-agenda-dim-blocked-tasks}, TODO entries
7ddb1b5f
CD
4307that cannot be closed because of such dependencies will be shown in a dimmed
4308font or even made invisible in agenda views (@pxref{Agenda Views}).
4309
2e461fc1 4310@cindex checkboxes and TODO dependencies
c8d0cf5c 4311@vindex org-enforce-todo-dependencies
2e461fc1 4312You can also block changes of TODO states by looking at checkboxes
271672fa 4313(@pxref{Checkboxes}). If you set the option
2e461fc1
CD
4314@code{org-enforce-todo-checkbox-dependencies}, an entry that has unchecked
4315checkboxes will be blocked from switching to DONE.
4316
7ddb1b5f
CD
4317If you need more complex dependency structures, for example dependencies
4318between entries in different trees or files, check out the contributed
4319module @file{org-depend.el}.
4320
dbc28aaa 4321@page
a7808fba
CD
4322@node Progress logging, Priorities, TODO extensions, TODO Items
4323@section Progress logging
dbc28aaa
CD
4324@cindex progress logging
4325@cindex logging, of progress
4326
e66ba1df 4327Org mode can automatically record a timestamp and possibly a note when
28a16a1b 4328you mark a TODO item as DONE, or even each time you change the state of
8a28a5b8 4329a TODO item. This system is highly configurable; settings can be on a
28a16a1b
CD
4330per-keyword basis and can be localized to a file or even a subtree. For
4331information on how to clock working time for a task, see @ref{Clocking
4332work time}.
dbc28aaa
CD
4333
4334@menu
c0468714
GM
4335* Closing items:: When was this entry marked DONE?
4336* Tracking TODO state changes:: When did the status change?
4337* Tracking your habits:: How consistent have you been?
dbc28aaa
CD
4338@end menu
4339
4340@node Closing items, Tracking TODO state changes, Progress logging, Progress logging
4341@subsection Closing items
4342
28a16a1b
CD
4343The most basic logging is to keep track of @emph{when} a certain TODO
4344item was finished. This is achieved with@footnote{The corresponding
acedf35c 4345in-buffer setting is: @code{#+STARTUP: logdone}}
dbc28aaa
CD
4346
4347@lisp
28a16a1b 4348(setq org-log-done 'time)
dbc28aaa
CD
4349@end lisp
4350
271672fa 4351@vindex org-closed-keep-when-no-todo
dbc28aaa 4352@noindent
271672fa
BG
4353Then each time you turn an entry from a TODO (not-done) state into any of the
4354DONE states, a line @samp{CLOSED: [timestamp]} will be inserted just after
4355the headline. If you turn the entry back into a TODO item through further
4356state cycling, that line will be removed again. If you turn the entry back
4357to a non-TODO state (by pressing @key{C-c C-t SPC} for example), that line
4358will also be removed, unless you set @code{org-closed-keep-when-no-todo} to
4359non-@code{nil}. If you want to record a note along with the timestamp,
4360use@footnote{The corresponding in-buffer setting is: @code{#+STARTUP:
4361lognotedone}.}
dbc28aaa
CD
4362
4363@lisp
28a16a1b 4364(setq org-log-done 'note)
dbc28aaa
CD
4365@end lisp
4366
28a16a1b
CD
4367@noindent
4368You will then be prompted for a note, and that note will be stored below
4369the entry with a @samp{Closing Note} heading.
4370
4371In the timeline (@pxref{Timeline}) and in the agenda
a7808fba 4372(@pxref{Weekly/daily agenda}), you can then use the @kbd{l} key to
28a16a1b
CD
4373display the TODO items with a @samp{CLOSED} timestamp on each day,
4374giving you an overview of what has been done.
4375
a351880d 4376@node Tracking TODO state changes, Tracking your habits, Closing items, Progress logging
dbc28aaa 4377@subsection Tracking TODO state changes
c8d0cf5c
CD
4378@cindex drawer, for state change recording
4379
4380@vindex org-log-states-order-reversed
4381@vindex org-log-into-drawer
4382@cindex property, LOG_INTO_DRAWER
4383When TODO keywords are used as workflow states (@pxref{Workflow states}), you
4384might want to keep track of when a state change occurred and maybe take a
4385note about this change. You can either record just a timestamp, or a
4386time-stamped note for a change. These records will be inserted after the
271672fa 4387headline as an itemized list, newest first@footnote{See the option
c8d0cf5c
CD
4388@code{org-log-states-order-reversed}}. When taking a lot of notes, you might
4389want to get the notes out of the way into a drawer (@pxref{Drawers}).
271672fa
BG
4390Customize @code{org-log-into-drawer} to get this behavior---the recommended
4391drawer for this is called @code{LOGBOOK}@footnote{Note that the
8223b1d2
BG
4392@code{LOGBOOK} drawer is unfolded when pressing @key{SPC} in the agenda to
4393show an entry---use @key{C-u SPC} to keep it folded here}. You can also
4394overrule the setting of this variable for a subtree by setting a
c8d0cf5c
CD
4395@code{LOG_INTO_DRAWER} property.
4396
e66ba1df 4397Since it is normally too much to record a note for every state, Org mode
c8d0cf5c 4398expects configuration on a per-keyword basis for this. This is achieved by
e66ba1df
BG
4399adding special markers @samp{!} (for a timestamp) or @samp{@@} (for a note
4400with timestamp) in parentheses after each keyword. For example, with the
4401setting
dbc28aaa
CD
4402
4403@lisp
28a16a1b
CD
4404(setq org-todo-keywords
4405 '((sequence "TODO(t)" "WAIT(w@@/!)" "|" "DONE(d!)" "CANCELED(c@@)")))
dbc28aaa
CD
4406@end lisp
4407
e66ba1df
BG
4408To record a timestamp without a note for TODO keywords configured with
4409@samp{@@}, just type @kbd{C-c C-c} to enter a blank note when prompted.
4410
dbc28aaa 4411@noindent
c8d0cf5c 4412@vindex org-log-done
28a16a1b 4413you not only define global TODO keywords and fast access keys, but also
c8d0cf5c 4414request that a time is recorded when the entry is set to
e66ba1df 4415DONE@footnote{It is possible that Org mode will record two timestamps
28a16a1b 4416when you are using both @code{org-log-done} and state change logging.
c8d0cf5c 4417However, it will never prompt for two notes---if you have configured
28a16a1b
CD
4418both, the state change recording note will take precedence and cancel
4419the @samp{Closing Note}.}, and that a note is recorded when switching to
1df7defd 4420WAIT or CANCELED@. The setting for WAIT is even more special: the
28a16a1b 4421@samp{!} after the slash means that in addition to the note taken when
c8d0cf5c 4422entering the state, a timestamp should be recorded when @i{leaving} the
28a16a1b
CD
4423WAIT state, if and only if the @i{target} state does not configure
4424logging for entering it. So it has no effect when switching from WAIT
4425to DONE, because DONE is configured to record a timestamp only. But
4426when switching from WAIT back to TODO, the @samp{/!} in the WAIT
4427setting now triggers a timestamp even though TODO has no logging
4428configured.
4429
4430You can use the exact same syntax for setting logging preferences local
4431to a buffer:
4432@example
c8d0cf5c 4433#+TODO: TODO(t) WAIT(w@@/!) | DONE(d!) CANCELED(c@@)
28a16a1b
CD
4434@end example
4435
c8d0cf5c 4436@cindex property, LOGGING
28a16a1b
CD
4437In order to define logging settings that are local to a subtree or a
4438single item, define a LOGGING property in this entry. Any non-empty
271672fa 4439LOGGING property resets all logging settings to @code{nil}. You may then turn
28a16a1b
CD
4440on logging for this specific tree using STARTUP keywords like
4441@code{lognotedone} or @code{logrepeat}, as well as adding state specific
4442settings like @code{TODO(!)}. For example
4443
4444@example
4445* TODO Log each state with only a time
4446 :PROPERTIES:
4447 :LOGGING: TODO(!) WAIT(!) DONE(!) CANCELED(!)
4448 :END:
4449* TODO Only log when switching to WAIT, and when repeating
4450 :PROPERTIES:
4451 :LOGGING: WAIT(@@) logrepeat
4452 :END:
4453* TODO No logging at all
4454 :PROPERTIES:
4455 :LOGGING: nil
4456 :END:
dbc28aaa
CD
4457@end example
4458
a351880d
CD
4459@node Tracking your habits, , Tracking TODO state changes, Progress logging
4460@subsection Tracking your habits
4461@cindex habits
4462
4463Org has the ability to track the consistency of a special category of TODOs,
4464called ``habits''. A habit has the following properties:
4465
4466@enumerate
4467@item
271672fa 4468You have enabled the @code{habits} module by customizing @code{org-modules}.
a351880d 4469@item
ce57c2fe 4470The habit is a TODO item, with a TODO keyword representing an open state.
a351880d
CD
4471@item
4472The property @code{STYLE} is set to the value @code{habit}.
4473@item
afe98dfa
CD
4474The TODO has a scheduled date, usually with a @code{.+} style repeat
4475interval. A @code{++} style may be appropriate for habits with time
4476constraints, e.g., must be done on weekends, or a @code{+} style for an
4477unusual habit that can have a backlog, e.g., weekly reports.
a351880d
CD
4478@item
4479The TODO may also have minimum and maximum ranges specified by using the
4480syntax @samp{.+2d/3d}, which says that you want to do the task at least every
4481three days, but at most every two days.
4482@item
8223b1d2
BG
4483You must also have state logging for the @code{DONE} state enabled
4484(@pxref{Tracking TODO state changes}), in order for historical data to be
4485represented in the consistency graph. If it is not enabled it is not an
4486error, but the consistency graphs will be largely meaningless.
a351880d
CD
4487@end enumerate
4488
4489To give you an idea of what the above rules look like in action, here's an
4490actual habit with some history:
4491
4492@example
4493** TODO Shave
4494 SCHEDULED: <2009-10-17 Sat .+2d/4d>
4495 - State "DONE" from "TODO" [2009-10-15 Thu]
4496 - State "DONE" from "TODO" [2009-10-12 Mon]
4497 - State "DONE" from "TODO" [2009-10-10 Sat]
4498 - State "DONE" from "TODO" [2009-10-04 Sun]
4499 - State "DONE" from "TODO" [2009-10-02 Fri]
4500 - State "DONE" from "TODO" [2009-09-29 Tue]
4501 - State "DONE" from "TODO" [2009-09-25 Fri]
4502 - State "DONE" from "TODO" [2009-09-19 Sat]
4503 - State "DONE" from "TODO" [2009-09-16 Wed]
4504 - State "DONE" from "TODO" [2009-09-12 Sat]
4505 :PROPERTIES:
4506 :STYLE: habit
4507 :LAST_REPEAT: [2009-10-19 Mon 00:36]
4508 :END:
4509@end example
4510
4511What this habit says is: I want to shave at most every 2 days (given by the
4512@code{SCHEDULED} date and repeat interval) and at least every 4 days. If
4513today is the 15th, then the habit first appears in the agenda on Oct 17,
4514after the minimum of 2 days has elapsed, and will appear overdue on Oct 19,
4515after four days have elapsed.
4516
4517What's really useful about habits is that they are displayed along with a
4518consistency graph, to show how consistent you've been at getting that task
4519done in the past. This graph shows every day that the task was done over the
4520past three weeks, with colors for each day. The colors used are:
4521
4522@table @code
4523@item Blue
4524If the task wasn't to be done yet on that day.
4525@item Green
4526If the task could have been done on that day.
4527@item Yellow
4528If the task was going to be overdue the next day.
4529@item Red
4530If the task was overdue on that day.
4531@end table
4532
86fbb8ca 4533In addition to coloring each day, the day is also marked with an asterisk if
a351880d
CD
4534the task was actually done that day, and an exclamation mark to show where
4535the current day falls in the graph.
4536
4537There are several configuration variables that can be used to change the way
4538habits are displayed in the agenda.
4539
4540@table @code
4541@item org-habit-graph-column
4542The buffer column at which the consistency graph should be drawn. This will
ce57c2fe 4543overwrite any text in that column, so it is a good idea to keep your habits'
a351880d
CD
4544titles brief and to the point.
4545@item org-habit-preceding-days
4546The amount of history, in days before today, to appear in consistency graphs.
4547@item org-habit-following-days
4548The number of days after today that will appear in consistency graphs.
4549@item org-habit-show-habits-only-for-today
271672fa 4550If non-@code{nil}, only show habits in today's agenda view. This is set to true by
a351880d
CD
4551default.
4552@end table
4553
4554Lastly, pressing @kbd{K} in the agenda buffer will cause habits to
4555temporarily be disabled and they won't appear at all. Press @kbd{K} again to
4556bring them back. They are also subject to tag filtering, if you have habits
4557which should only be done in certain contexts, for example.
4558
a7808fba 4559@node Priorities, Breaking down tasks, Progress logging, TODO Items
4009494e
GM
4560@section Priorities
4561@cindex priorities
4562
e66ba1df 4563If you use Org mode extensively, you may end up with enough TODO items that
dbc28aaa 4564it starts to make sense to prioritize them. Prioritizing can be done by
86fbb8ca 4565placing a @emph{priority cookie} into the headline of a TODO item, like this
4009494e
GM
4566
4567@example
4568*** TODO [#A] Write letter to Sam Fortune
4569@end example
4570
4571@noindent
ed21c5c8 4572@vindex org-priority-faces
e66ba1df 4573By default, Org mode supports three priorities: @samp{A}, @samp{B}, and
ed21c5c8 4574@samp{C}. @samp{A} is the highest priority. An entry without a cookie is
afe98dfa
CD
4575treated just like priority @samp{B}. Priorities make a difference only for
4576sorting in the agenda (@pxref{Weekly/daily agenda}); outside the agenda, they
e66ba1df 4577have no inherent meaning to Org mode. The cookies can be highlighted with
271672fa 4578special faces by customizing @code{org-priority-faces}.
dbc28aaa 4579
afe98dfa
CD
4580Priorities can be attached to any outline node; they do not need to be TODO
4581items.
4009494e
GM
4582
4583@table @kbd
4009494e 4584@item @kbd{C-c ,}
acedf35c
CD
4585@kindex @kbd{C-c ,}
4586@findex org-priority
4587Set the priority of the current headline (@command{org-priority}). The
4588command prompts for a priority character @samp{A}, @samp{B} or @samp{C}.
4589When you press @key{SPC} instead, the priority cookie is removed from the
4590headline. The priorities can also be changed ``remotely'' from the timeline
4591and agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
4009494e 4592@c
acedf35c 4593@orgcmdkkcc{S-@key{up},S-@key{down},org-priority-up,org-priority-down}
c8d0cf5c 4594@vindex org-priority-start-cycle-with-default
3da3282e 4595Increase/decrease priority of current headline@footnote{See also the option
c8d0cf5c
CD
4596@code{org-priority-start-cycle-with-default}.}. Note that these keys are
4597also used to modify timestamps (@pxref{Creating timestamps}). See also
4598@ref{Conflicts}, for a discussion of the interaction with
3da3282e 4599@code{shift-selection-mode}.
4009494e
GM
4600@end table
4601
c8d0cf5c
CD
4602@vindex org-highest-priority
4603@vindex org-lowest-priority
4604@vindex org-default-priority
271672fa 4605You can change the range of allowed priorities by setting the options
4009494e
GM
4606@code{org-highest-priority}, @code{org-lowest-priority}, and
4607@code{org-default-priority}. For an individual buffer, you may set
4608these values (highest, lowest, default) like this (please make sure that
4609the highest priority is earlier in the alphabet than the lowest
4610priority):
4611
c8d0cf5c 4612@cindex #+PRIORITIES
4009494e
GM
4613@example
4614#+PRIORITIES: A C B
4615@end example
4616
a7808fba 4617@node Breaking down tasks, Checkboxes, Priorities, TODO Items
4009494e
GM
4618@section Breaking tasks down into subtasks
4619@cindex tasks, breaking down
6eb02347 4620@cindex statistics, for TODO items
4009494e 4621
c8d0cf5c 4622@vindex org-agenda-todo-list-sublevels
4009494e 4623It is often advisable to break down large tasks into smaller, manageable
b349f79f
CD
4624subtasks. You can do this by creating an outline tree below a TODO item,
4625with detailed subtasks on the tree@footnote{To keep subtasks out of the
4626global TODO list, see the @code{org-agenda-todo-list-sublevels}.}. To keep
4627the overview over the fraction of subtasks that are already completed, insert
4628either @samp{[/]} or @samp{[%]} anywhere in the headline. These cookies will
86fbb8ca 4629be updated each time the TODO status of a child changes, or when pressing
6eb02347 4630@kbd{C-c C-c} on the cookie. For example:
b349f79f
CD
4631
4632@example
4633* Organize Party [33%]
4634** TODO Call people [1/2]
4635*** TODO Peter
4636*** DONE Sarah
4637** TODO Buy food
4638** DONE Talk to neighbor
4639@end example
4640
c8d0cf5c
CD
4641@cindex property, COOKIE_DATA
4642If a heading has both checkboxes and TODO children below it, the meaning of
4643the statistics cookie become ambiguous. Set the property
4644@code{COOKIE_DATA} to either @samp{checkbox} or @samp{todo} to resolve
4645this issue.
4646
6eb02347
CD
4647@vindex org-hierarchical-todo-statistics
4648If you would like to have the statistics cookie count any TODO entries in the
271672fa 4649subtree (not just direct children), configure
6eb02347
CD
4650@code{org-hierarchical-todo-statistics}. To do this for a single subtree,
4651include the word @samp{recursive} into the value of the @code{COOKIE_DATA}
4652property.
4653
4654@example
4655* Parent capturing statistics [2/20]
4656 :PROPERTIES:
4657 :COOKIE_DATA: todo recursive
4658 :END:
4659@end example
4660
c8d0cf5c
CD
4661If you would like a TODO entry to automatically change to DONE
4662when all children are done, you can use the following setup:
b349f79f
CD
4663
4664@example
4665(defun org-summary-todo (n-done n-not-done)
4666 "Switch entry to DONE when all subentries are done, to TODO otherwise."
4667 (let (org-log-done org-log-states) ; turn off logging
4668 (org-todo (if (= n-not-done 0) "DONE" "TODO"))))
4669
4670(add-hook 'org-after-todo-statistics-hook 'org-summary-todo)
4671@end example
4672
4673
4674Another possibility is the use of checkboxes to identify (a hierarchy of) a
4675large number of subtasks (@pxref{Checkboxes}).
4009494e
GM
4676
4677
a7808fba 4678@node Checkboxes, , Breaking down tasks, TODO Items
4009494e
GM
4679@section Checkboxes
4680@cindex checkboxes
4681
afe98dfa
CD
4682@vindex org-list-automatic-rules
4683Every item in a plain list@footnote{With the exception of description
ce57c2fe 4684lists. But you can allow it by modifying @code{org-list-automatic-rules}
afe98dfa
CD
4685accordingly.} (@pxref{Plain lists}) can be made into a checkbox by starting
4686it with the string @samp{[ ]}. This feature is similar to TODO items
4687(@pxref{TODO Items}), but is more lightweight. Checkboxes are not included
8a28a5b8 4688in the global TODO list, so they are often great to split a task into a
afe98dfa
CD
4689number of simple steps. Or you can use them in a shopping list. To toggle a
4690checkbox, use @kbd{C-c C-c}, or use the mouse (thanks to Piotr Zielinski's
4691@file{org-mouse.el}).
dbc28aaa
CD
4692
4693Here is an example of a checkbox list.
4009494e
GM
4694
4695@example
28a16a1b
CD
4696* TODO Organize party [2/4]
4697 - [-] call people [1/3]
4009494e
GM
4698 - [ ] Peter
4699 - [X] Sarah
4700 - [ ] Sam
4701 - [X] order food
4702 - [ ] think about what music to play
4703 - [X] talk to the neighbors
4704@end example
4705
28a16a1b
CD
4706Checkboxes work hierarchically, so if a checkbox item has children that
4707are checkboxes, toggling one of the children checkboxes will make the
4708parent checkbox reflect if none, some, or all of the children are
4709checked.
4710
4009494e
GM
4711@cindex statistics, for checkboxes
4712@cindex checkbox statistics
c8d0cf5c 4713@cindex property, COOKIE_DATA
271672fa 4714@vindex org-checkbox-hierarchical-statistics
c8d0cf5c
CD
4715The @samp{[2/4]} and @samp{[1/3]} in the first and second line are cookies
4716indicating how many checkboxes present in this entry have been checked off,
4717and the total number of checkboxes present. This can give you an idea on how
4718many checkboxes remain, even without opening a folded entry. The cookies can
4719be placed into a headline or into (the first line of) a plain list item.
4720Each cookie covers checkboxes of direct children structurally below the
271672fa
BG
4721headline/item on which the cookie appears@footnote{Set the option
4722@code{org-checkbox-hierarchical-statistics} if you want such cookies to
ce57c2fe 4723count all checkboxes below the cookie, not just those belonging to direct
c8d0cf5c
CD
4724children.}. You have to insert the cookie yourself by typing either
4725@samp{[/]} or @samp{[%]}. With @samp{[/]} you get an @samp{n out of m}
4726result, as in the examples above. With @samp{[%]} you get information about
4727the percentage of checkboxes checked (in the above example, this would be
4728@samp{[50%]} and @samp{[33%]}, respectively). In a headline, a cookie can
4729count either checkboxes below the heading or TODO states of children, and it
4730will display whatever was changed last. Set the property @code{COOKIE_DATA}
4731to either @samp{checkbox} or @samp{todo} to resolve this issue.
4732
4733@cindex blocking, of checkboxes
4734@cindex checkbox blocking
4735@cindex property, ORDERED
4736If the current outline node has an @code{ORDERED} property, checkboxes must
4737be checked off in sequence, and an error will be thrown if you try to check
4738off a box while there are unchecked boxes above it.
4009494e
GM
4739
4740@noindent The following commands work with checkboxes:
4741
4742@table @kbd
acedf35c 4743@orgcmd{C-c C-c,org-toggle-checkbox}
27e428e7 4744Toggle checkbox status or (with prefix arg) checkbox presence at point.
e66ba1df 4745With a single prefix argument, add an empty checkbox or remove the current
d3517077 4746one@footnote{@kbd{C-u C-c C-c} on the @emph{first} item of a list with no checkbox
e66ba1df
BG
4747will add checkboxes to the rest of the list.}. With a double prefix argument, set it to @samp{[-]}, which is
4748considered to be an intermediate state.
acedf35c 4749@orgcmd{C-c C-x C-b,org-toggle-checkbox}
c8d0cf5c
CD
4750Toggle checkbox status or (with prefix arg) checkbox presence at point. With
4751double prefix argument, set it to @samp{[-]}, which is considered to be an
4752intermediate state.
4009494e
GM
4753@itemize @minus
4754@item
4755If there is an active region, toggle the first checkbox in the region
7ddb1b5f
CD
4756and set all remaining boxes to the same status as the first. With a prefix
4757arg, add or remove the checkbox for all items in the region.
4009494e
GM
4758@item
4759If the cursor is in a headline, toggle checkboxes in the region between
4760this headline and the next (so @emph{not} the entire subtree).
4761@item
4762If there is no active region, just toggle the checkbox at point.
4763@end itemize
acedf35c 4764@orgcmd{M-S-@key{RET},org-insert-todo-heading}
ce57c2fe
BG
4765Insert a new item with a checkbox. This works only if the cursor is already
4766in a plain list item (@pxref{Plain lists}).
acedf35c 4767@orgcmd{C-c C-x o,org-toggle-ordered-property}
c8d0cf5c
CD
4768@vindex org-track-ordered-property-with-tag
4769@cindex property, ORDERED
4770Toggle the @code{ORDERED} property of the entry, to toggle if checkboxes must
4771be checked off in sequence. A property is used for this behavior because
4772this should be local to the current entry, not inherited like a tag.
4773However, if you would like to @i{track} the value of this property with a tag
271672fa 4774for better visibility, customize @code{org-track-ordered-property-with-tag}.
acedf35c 4775@orgcmd{C-c #,org-update-statistics-cookies}
6eb02347
CD
4776Update the statistics cookie in the current outline entry. When called with
4777a @kbd{C-u} prefix, update the entire file. Checkbox statistic cookies are
4778updated automatically if you toggle checkboxes with @kbd{C-c C-c} and make
4779new ones with @kbd{M-S-@key{RET}}. TODO statistics cookies update when
4780changing TODO states. If you delete boxes/entries or add/change them by
ce57c2fe 4781hand, use this command to get things back into sync.
4009494e
GM
4782@end table
4783
a7808fba 4784@node Tags, Properties and Columns, TODO Items, Top
4009494e
GM
4785@chapter Tags
4786@cindex tags
4787@cindex headline tagging
4788@cindex matching, tags
4789@cindex sparse tree, tag based
4790
dbc28aaa 4791An excellent way to implement labels and contexts for cross-correlating
e66ba1df 4792information is to assign @i{tags} to headlines. Org mode has extensive
dbc28aaa 4793support for tags.
4009494e 4794
c8d0cf5c 4795@vindex org-tag-faces
dbc28aaa 4796Every headline can contain a list of tags; they occur at the end of the
96c8522a 4797headline. Tags are normal words containing letters, numbers, @samp{_}, and
a351880d 4798@samp{@@}. Tags must be preceded and followed by a single colon, e.g.,
96c8522a 4799@samp{:work:}. Several tags can be specified, as in @samp{:work:urgent:}.
c8d0cf5c 4800Tags will by default be in bold face with the same color as the headline.
271672fa 4801You may specify special faces for specific tags using the option
c8d0cf5c 4802@code{org-tag-faces}, in much the same way as you can for TODO keywords
96c8522a 4803(@pxref{Faces for TODO keywords}).
4009494e
GM
4804
4805@menu
c0468714
GM
4806* Tag inheritance:: Tags use the tree structure of the outline
4807* Setting tags:: How to assign tags to a headline
271672fa 4808* Tag groups:: Use one tag to search for several tags
c0468714 4809* Tag searches:: Searching for combinations of tags
4009494e
GM
4810@end menu
4811
4812@node Tag inheritance, Setting tags, Tags, Tags
4813@section Tag inheritance
dbc28aaa 4814@cindex tag inheritance
4009494e
GM
4815@cindex inheritance, of tags
4816@cindex sublevels, inclusion into tags match
4817
4818@i{Tags} make use of the hierarchical structure of outline trees. If a
4819heading has a certain tag, all subheadings will inherit the tag as
4820well. For example, in the list
4821
4822@example
dbc28aaa
CD
4823* Meeting with the French group :work:
4824** Summary by Frank :boss:notes:
4825*** TODO Prepare slides for him :action:
4009494e
GM
4826@end example
4827
4828@noindent
dbc28aaa
CD
4829the final heading will have the tags @samp{:work:}, @samp{:boss:},
4830@samp{:notes:}, and @samp{:action:} even though the final heading is not
b349f79f 4831explicitly marked with those tags. You can also set tags that all entries in
c8d0cf5c 4832a file should inherit just as if these tags were defined in a hypothetical
7006d207
CD
4833level zero that surrounds the entire file. Use a line like this@footnote{As
4834with all these in-buffer settings, pressing @kbd{C-c C-c} activates any
4835changes in the line.}:
b349f79f 4836
c8d0cf5c 4837@cindex #+FILETAGS
b349f79f
CD
4838@example
4839#+FILETAGS: :Peter:Boss:Secret:
4840@end example
4841
4842@noindent
c8d0cf5c
CD
4843@vindex org-use-tag-inheritance
4844@vindex org-tags-exclude-from-inheritance
6d3e4c80
BG
4845To limit tag inheritance to specific tags, use @code{org-tags-exclude-from-inheritance}.
4846To turn it off entirely, use @code{org-use-tag-inheritance}.
b349f79f 4847
c8d0cf5c 4848@vindex org-tags-match-list-sublevels
b349f79f 4849When a headline matches during a tags search while tag inheritance is turned
96c8522a 4850on, all the sublevels in the same tree will (for a simple match form) match
07450bee 4851as well@footnote{This is only true if the search does not involve more
96c8522a
CD
4852complex tests including properties (@pxref{Property searches}).}. The list
4853of matches may then become very long. If you only want to see the first tags
271672fa
BG
4854match in a subtree, configure @code{org-tags-match-list-sublevels} (not
4855recommended).
4009494e 4856
6d3e4c80
BG
4857@vindex org-agenda-use-tag-inheritance
4858Tag inheritance is relevant when the agenda search tries to match a tag,
4859either in the @code{tags} or @code{tags-todo} agenda types. In other agenda
4860types, @code{org-use-tag-inheritance} has no effect. Still, you may want to
4861have your tags correctly set in the agenda, so that tag filtering works fine,
4862with inherited tags. Set @code{org-agenda-use-tag-inheritance} to control
271672fa 4863this: the default value includes all agenda types, but setting this to @code{nil}
6d3e4c80
BG
4864can really speed up agenda generation.
4865
271672fa 4866@node Setting tags, Tag groups, Tag inheritance, Tags
4009494e
GM
4867@section Setting tags
4868@cindex setting tags
4869@cindex tags, setting
4870
4871@kindex M-@key{TAB}
4872Tags can simply be typed into the buffer at the end of a headline.
4873After a colon, @kbd{M-@key{TAB}} offers completion on tags. There is
4874also a special command for inserting tags:
4875
4876@table @kbd
acedf35c 4877@orgcmd{C-c C-q,org-set-tags-command}
4009494e 4878@cindex completion, of tags
c8d0cf5c 4879@vindex org-tags-column
e66ba1df 4880Enter new tags for the current headline. Org mode will either offer
4009494e
GM
4881completion or a special single-key interface for setting tags, see
4882below. After pressing @key{RET}, the tags will be inserted and aligned
4883to @code{org-tags-column}. When called with a @kbd{C-u} prefix, all
4884tags in the current buffer will be aligned to that column, just to make
4885things look nice. TAGS are automatically realigned after promotion,
4886demotion, and TODO state changes (@pxref{TODO basics}).
271672fa 4887
acedf35c 4888@orgcmd{C-c C-c,org-set-tags-command}
71d35b24 4889When the cursor is in a headline, this does the same as @kbd{C-c C-q}.
4009494e
GM
4890@end table
4891
c8d0cf5c 4892@vindex org-tag-alist
ce57c2fe 4893Org supports tag insertion based on a @emph{list of tags}. By
4009494e
GM
4894default this list is constructed dynamically, containing all tags
4895currently used in the buffer. You may also globally specify a hard list
4896of tags with the variable @code{org-tag-alist}. Finally you can set
4897the default tags for a given file with lines like
4898
c8d0cf5c 4899@cindex #+TAGS
4009494e 4900@example
dbc28aaa
CD
4901#+TAGS: @@work @@home @@tennisclub
4902#+TAGS: laptop car pc sailboat
4009494e
GM
4903@end example
4904
4905If you have globally defined your preferred set of tags using the
4906variable @code{org-tag-alist}, but would like to use a dynamic tag list
dbc28aaa 4907in a specific file, add an empty TAGS option line to that file:
4009494e
GM
4908
4909@example
4910#+TAGS:
4911@end example
4912
c8d0cf5c
CD
4913@vindex org-tag-persistent-alist
4914If you have a preferred set of tags that you would like to use in every file,
4915in addition to those defined on a per-file basis by TAGS option lines, then
4916you may specify a list of tags with the variable
4917@code{org-tag-persistent-alist}. You may turn this off on a per-file basis
4918by adding a STARTUP option line to that file:
4919
4920@example
4921#+STARTUP: noptag
4922@end example
4923
e66ba1df 4924By default Org mode uses the standard minibuffer completion facilities for
a7808fba
CD
4925entering tags. However, it also implements another, quicker, tag selection
4926method called @emph{fast tag selection}. This allows you to select and
4927deselect tags with just a single key press. For this to work well you should
4928assign unique letters to most of your commonly used tags. You can do this
4929globally by configuring the variable @code{org-tag-alist} in your
4930@file{.emacs} file. For example, you may find the need to tag many items in
4931different files with @samp{:@@home:}. In this case you can set something
4932like:
4009494e
GM
4933
4934@lisp
dbc28aaa 4935(setq org-tag-alist '(("@@work" . ?w) ("@@home" . ?h) ("laptop" . ?l)))
4009494e
GM
4936@end lisp
4937
c8d0cf5c
CD
4938@noindent If the tag is only relevant to the file you are working on, then you
4939can instead set the TAGS option line as:
4009494e
GM
4940
4941@example
dbc28aaa 4942#+TAGS: @@work(w) @@home(h) @@tennisclub(t) laptop(l) pc(p)
4009494e
GM
4943@end example
4944
c8d0cf5c
CD
4945@noindent The tags interface will show the available tags in a splash
4946window. If you want to start a new line after a specific tag, insert
4947@samp{\n} into the tag list
4948
4949@example
4950#+TAGS: @@work(w) @@home(h) @@tennisclub(t) \n laptop(l) pc(p)
4951@end example
4952
4953@noindent or write them in two lines:
4954
4955@example
4956#+TAGS: @@work(w) @@home(h) @@tennisclub(t)
4957#+TAGS: laptop(l) pc(p)
4958@end example
4959
4009494e 4960@noindent
c8d0cf5c 4961You can also group together tags that are mutually exclusive by using
a7808fba 4962braces, as in:
4009494e
GM
4963
4964@example
dbc28aaa 4965#+TAGS: @{ @@work(w) @@home(h) @@tennisclub(t) @} laptop(l) pc(p)
4009494e
GM
4966@end example
4967
dbc28aaa 4968@noindent you indicate that at most one of @samp{@@work}, @samp{@@home},
a7808fba 4969and @samp{@@tennisclub} should be selected. Multiple such groups are allowed.
4009494e
GM
4970
4971@noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
4972these lines to activate any changes.
4973
a7808fba 4974@noindent
271672fa 4975To set these mutually exclusive groups in the variable @code{org-tag-alist},
a7808fba 4976you must use the dummy tags @code{:startgroup} and @code{:endgroup} instead
c8d0cf5c
CD
4977of the braces. Similarly, you can use @code{:newline} to indicate a line
4978break. The previous example would be set globally by the following
a7808fba
CD
4979configuration:
4980
4981@lisp
4982(setq org-tag-alist '((:startgroup . nil)
4983 ("@@work" . ?w) ("@@home" . ?h)
4984 ("@@tennisclub" . ?t)
4985 (:endgroup . nil)
4986 ("laptop" . ?l) ("pc" . ?p)))
4987@end lisp
4988
4989If at least one tag has a selection key then pressing @kbd{C-c C-c} will
4990automatically present you with a special interface, listing inherited tags,
4991the tags of the current headline, and a list of all valid tags with
4992corresponding keys@footnote{Keys will automatically be assigned to tags which
4993have no configured keys.}. In this interface, you can use the following
4994keys:
4009494e
GM
4995
4996@table @kbd
4997@item a-z...
4998Pressing keys assigned to tags will add or remove them from the list of
4999tags in the current line. Selecting a tag in a group of mutually
5000exclusive tags will turn off any other tags from that group.
5001@kindex @key{TAB}
5002@item @key{TAB}
5003Enter a tag in the minibuffer, even if the tag is not in the predefined
5004list. You will be able to complete on all tags present in the buffer.
ce57c2fe
BG
5005You can also add several tags: just separate them with a comma.
5006
4009494e
GM
5007@kindex @key{SPC}
5008@item @key{SPC}
5009Clear all tags for this line.
5010@kindex @key{RET}
5011@item @key{RET}
5012Accept the modified set.
5013@item C-g
5014Abort without installing changes.
5015@item q
5016If @kbd{q} is not assigned to a tag, it aborts like @kbd{C-g}.
5017@item !
5018Turn off groups of mutually exclusive tags. Use this to (as an
5019exception) assign several tags from such a group.
5020@item C-c
5021Toggle auto-exit after the next change (see below).
5022If you are using expert mode, the first @kbd{C-c} will display the
5023selection window.
5024@end table
5025
5026@noindent
5027This method lets you assign tags to a headline with very few keys. With
dbc28aaa
CD
5028the above setup, you could clear the current tags and set @samp{@@home},
5029@samp{laptop} and @samp{pc} tags with just the following keys: @kbd{C-c
5030C-c @key{SPC} h l p @key{RET}}. Switching from @samp{@@home} to
5031@samp{@@work} would be done with @kbd{C-c C-c w @key{RET}} or
4009494e
GM
5032alternatively with @kbd{C-c C-c C-c w}. Adding the non-predefined tag
5033@samp{Sarah} could be done with @kbd{C-c C-c @key{TAB} S a r a h
5034@key{RET} @key{RET}}.
5035
c8d0cf5c
CD
5036@vindex org-fast-tag-selection-single-key
5037If you find that most of the time you need only a single key press to
271672fa
BG
5038modify your list of tags, set @code{org-fast-tag-selection-single-key}.
5039Then you no longer have to press @key{RET} to exit fast tag selection---it
5040will immediately exit after the first change. If you then occasionally
5041need more keys, press @kbd{C-c} to turn off auto-exit for the current tag
5042selection process (in effect: start selection with @kbd{C-c C-c C-c}
5043instead of @kbd{C-c C-c}). If you set the variable to the value
5044@code{expert}, the special window is not even shown for single-key tag
5045selection, it comes up only when you press an extra @kbd{C-c}.
5046
5047@node Tag groups, Tag searches, Setting tags, Tags
5048@section Tag groups
5049
5050@cindex group tags
5051@cindex tags, groups
5052In a set of mutually exclusive tags, the first tag can be defined as a
5053@emph{group tag}. When you search for a group tag, it will return matches
5054for all members in the group. In an agenda view, filtering by a group tag
5055will display headlines tagged with at least one of the members of the
5056group. This makes tag searches and filters even more flexible.
5057
5058You can set group tags by inserting a colon between the group tag and other
5059tags---beware that all whitespaces are mandatory so that Org can parse this
5060line correctly:
5061
5062@example
5063#+TAGS: @{ @@read : @@read_book @@read_ebook @}
5064@end example
5065
5066In this example, @samp{@@read} is a @emph{group tag} for a set of three
5067tags: @samp{@@read}, @samp{@@read_book} and @samp{@@read_ebook}.
5068
5069You can also use the @code{:grouptags} keyword directly when setting
5070@code{org-tag-alist}:
5071
5072@lisp
5073(setq org-tag-alist '((:startgroup . nil)
5074 ("@@read" . nil)
5075 (:grouptags . nil)
5076 ("@@read_book" . nil)
5077 ("@@read_ebook" . nil)
5078 (:endgroup . nil)))
5079@end lisp
5080
5081You cannot nest group tags or use a group tag as a tag in another group.
5082
5083@kindex C-c C-x q
5084@vindex org-group-tags
5085If you want to ignore group tags temporarily, toggle group tags support
5086with @command{org-toggle-tags-groups}, bound to @kbd{C-c C-x q}. If you
5087want to disable tag groups completely, set @code{org-group-tags} to @code{nil}.
5088
5089@node Tag searches, , Tag groups, Tags
4009494e
GM
5090@section Tag searches
5091@cindex tag searches
5092@cindex searching for tags
5093
dbc28aaa 5094Once a system of tags has been set up, it can be used to collect related
4009494e
GM
5095information into special lists.
5096
5097@table @kbd
ce57c2fe 5098@orgcmdkkc{C-c / m,C-c \\,org-match-sparse-tree}
271672fa
BG
5099Create a sparse tree with all headlines matching a tags/property/TODO search.
5100With a @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
4009494e 5101@xref{Matching tags and properties}.
271672fa
BG
5102@orgcmd{C-c a m,org-tags-view}
5103Create a global list of tag matches from all agenda files. @xref{Matching
5104tags and properties}.
acedf35c 5105@orgcmd{C-c a M,org-tags-view}
c8d0cf5c 5106@vindex org-tags-match-list-sublevels
4009494e 5107Create a global list of tag matches from all agenda files, but check
271672fa 5108only TODO items and force checking subitems (see the option
4009494e
GM
5109@code{org-tags-match-list-sublevels}).
5110@end table
5111
c8d0cf5c
CD
5112These commands all prompt for a match string which allows basic Boolean logic
5113like @samp{+boss+urgent-project1}, to find entries with tags @samp{boss} and
5114@samp{urgent}, but not @samp{project1}, or @samp{Kathy|Sally} to find entries
5115which are tagged, like @samp{Kathy} or @samp{Sally}. The full syntax of the search
5116string is rich and allows also matching against TODO keywords, entry levels
5117and properties. For a complete description with many examples, see
5118@ref{Matching tags and properties}.
dbc28aaa 5119
e45e3595 5120
a7808fba 5121@node Properties and Columns, Dates and Times, Tags, Top
86fbb8ca 5122@chapter Properties and columns
4009494e
GM
5123@cindex properties
5124
e66ba1df
BG
5125A property is a key-value pair associated with an entry. Properties can be
5126set so they are associated with a single entry, with every entry in a tree,
5127or with every entry in an Org mode file.
5128
5129There are two main applications for properties in Org mode. First,
5130properties are like tags, but with a value. Imagine maintaining a file where
c8d0cf5c 5131you document bugs and plan releases for a piece of software. Instead of
e66ba1df 5132using tags like @code{:release_1:}, @code{:release_2:}, you can use a
dbc28aaa 5133property, say @code{:Release:}, that in different subtrees has different
e66ba1df
BG
5134values, such as @code{1.0} or @code{2.0}. Second, you can use properties to
5135implement (very basic) database capabilities in an Org buffer. Imagine
5136keeping track of your music CDs, where properties could be things such as the
5137album, artist, date of release, number of tracks, and so on.
dbc28aaa 5138
28a16a1b 5139Properties can be conveniently edited and viewed in column view
dbc28aaa
CD
5140(@pxref{Column view}).
5141
4009494e 5142@menu
c0468714 5143* Property syntax:: How properties are spelled out
e66ba1df 5144* Special properties:: Access to other Org mode features
c0468714
GM
5145* Property searches:: Matching property values
5146* Property inheritance:: Passing values down the tree
5147* Column view:: Tabular viewing and editing
5148* Property API:: Properties for Lisp programmers
4009494e
GM
5149@end menu
5150
a7808fba
CD
5151@node Property syntax, Special properties, Properties and Columns, Properties and Columns
5152@section Property syntax
4009494e
GM
5153@cindex property syntax
5154@cindex drawer, for properties
5155
e66ba1df
BG
5156Properties are key-value pairs. When they are associated with a single entry
5157or with a tree they need to be inserted into a special
4009494e
GM
5158drawer (@pxref{Drawers}) with the name @code{PROPERTIES}. Each property
5159is specified on a single line, with the key (surrounded by colons)
5160first, and the value after it. Here is an example:
5161
5162@example
5163* CD collection
5164** Classic
5165*** Goldberg Variations
5166 :PROPERTIES:
5167 :Title: Goldberg Variations
5168 :Composer: J.S. Bach
28a16a1b 5169 :Artist: Glen Gould
c8d0cf5c 5170 :Publisher: Deutsche Grammophon
4009494e 5171 :NDisks: 1
28a16a1b 5172 :END:
4009494e
GM
5173@end example
5174
e66ba1df
BG
5175Depending on the value of @code{org-use-property-inheritance}, a property set
5176this way will either be associated with a single entry, or the sub-tree
5177defined by the entry, see @ref{Property inheritance}.
5178
dbc28aaa
CD
5179You may define the allowed values for a particular property @samp{:Xyz:}
5180by setting a property @samp{:Xyz_ALL:}. This special property is
4009494e
GM
5181@emph{inherited}, so if you set it in a level 1 entry, it will apply to
5182the entire tree. When allowed values are defined, setting the
5183corresponding property becomes easier and is less prone to typing
5184errors. For the example with the CD collection, we can predefine
5185publishers and the number of disks in a box like this:
5186
5187@example
5188* CD collection
5189 :PROPERTIES:
5190 :NDisks_ALL: 1 2 3 4
64fb801f 5191 :Publisher_ALL: "Deutsche Grammophon" Philips EMI
4009494e
GM
5192 :END:
5193@end example
5194
5195If you want to set properties that can be inherited by any entry in a
5196file, use a line like
c8d0cf5c
CD
5197@cindex property, _ALL
5198@cindex #+PROPERTY
4009494e
GM
5199@example
5200#+PROPERTY: NDisks_ALL 1 2 3 4
5201@end example
5202
271672fa
BG
5203Contrary to properties set from a special drawer, you have to refresh the
5204buffer with @kbd{C-c C-c} to activate this changes.
5205
e66ba1df
BG
5206If you want to add to the value of an existing property, append a @code{+} to
5207the property name. The following results in the property @code{var} having
5208the value ``foo=1 bar=2''.
5209@cindex property, +
5210@example
5211#+PROPERTY: var foo=1
5212#+PROPERTY: var+ bar=2
5213@end example
5214
5215It is also possible to add to the values of inherited properties. The
5216following results in the @code{genres} property having the value ``Classic
5217Baroque'' under the @code{Goldberg Variations} subtree.
5218@cindex property, +
5219@example
5220* CD collection
5221** Classic
5222 :PROPERTIES:
5223 :GENRES: Classic
5224 :END:
5225*** Goldberg Variations
5226 :PROPERTIES:
5227 :Title: Goldberg Variations
5228 :Composer: J.S. Bach
5229 :Artist: Glen Gould
5230 :Publisher: Deutsche Grammophon
5231 :NDisks: 1
5232 :GENRES+: Baroque
5233 :END:
5234@end example
5235Note that a property can only have one entry per Drawer.
5236
c8d0cf5c 5237@vindex org-global-properties
4009494e
GM
5238Property values set with the global variable
5239@code{org-global-properties} can be inherited by all entries in all
a7808fba 5240Org files.
4009494e
GM
5241
5242@noindent
5243The following commands help to work with properties:
5244
5245@table @kbd
ce57c2fe 5246@orgcmd{M-@key{TAB},pcomplete}
4009494e
GM
5247After an initial colon in a line, complete property keys. All keys used
5248in the current file will be offered as possible completions.
acedf35c 5249@orgcmd{C-c C-x p,org-set-property}
dbc28aaa
CD
5250Set a property. This prompts for a property name and a value. If
5251necessary, the property drawer is created as well.
271672fa 5252@item C-u M-x org-insert-drawer RET
8223b1d2 5253@cindex org-insert-drawer
4009494e
GM
5254Insert a property drawer into the current entry. The drawer will be
5255inserted early in the entry, but after the lines with planning
5256information like deadlines.
acedf35c 5257@orgcmd{C-c C-c,org-property-action}
4009494e 5258With the cursor in a property drawer, this executes property commands.
acedf35c 5259@orgcmd{C-c C-c s,org-set-property}
4009494e
GM
5260Set a property in the current entry. Both the property and the value
5261can be inserted using completion.
acedf35c 5262@orgcmdkkcc{S-@key{right},S-@key{left},org-property-next-allowed-value,org-property-previous-allowed-value}
4009494e 5263Switch property at point to the next/previous allowed value.
acedf35c 5264@orgcmd{C-c C-c d,org-delete-property}
4009494e 5265Remove a property from the current entry.
acedf35c 5266@orgcmd{C-c C-c D,org-delete-property-globally}
4009494e 5267Globally remove a property, from all entries in the current file.
acedf35c 5268@orgcmd{C-c C-c c,org-compute-property-at-point}
dbc28aaa
CD
5269Compute the property at point, using the operator and scope from the
5270nearest column format definition.
4009494e
GM
5271@end table
5272
a7808fba
CD
5273@node Special properties, Property searches, Property syntax, Properties and Columns
5274@section Special properties
4009494e
GM
5275@cindex properties, special
5276
e66ba1df 5277Special properties provide an alternative access method to Org mode features,
ce57c2fe
BG
5278like the TODO state or the priority of an entry, discussed in the previous
5279chapters. This interface exists so that you can include these states in a
5280column view (@pxref{Column view}), or to use them in queries. The following
5281property names are special and (except for @code{:CATEGORY:}) should not be
dbc28aaa 5282used as keys in the properties drawer:
4009494e 5283
8223b1d2 5284@cindex property, special, ID
c8d0cf5c
CD
5285@cindex property, special, TODO
5286@cindex property, special, TAGS
5287@cindex property, special, ALLTAGS
5288@cindex property, special, CATEGORY
5289@cindex property, special, PRIORITY
5290@cindex property, special, DEADLINE
5291@cindex property, special, SCHEDULED
5292@cindex property, special, CLOSED
5293@cindex property, special, TIMESTAMP
5294@cindex property, special, TIMESTAMP_IA
5295@cindex property, special, CLOCKSUM
8223b1d2 5296@cindex property, special, CLOCKSUM_T
ed21c5c8 5297@cindex property, special, BLOCKED
c8d0cf5c
CD
5298@c guessing that ITEM is needed in this area; also, should this list be sorted?
5299@cindex property, special, ITEM
ce57c2fe 5300@cindex property, special, FILE
4009494e 5301@example
8223b1d2
BG
5302ID @r{A globally unique ID used for synchronization during}
5303 @r{iCalendar or MobileOrg export.}
4009494e
GM
5304TODO @r{The TODO keyword of the entry.}
5305TAGS @r{The tags defined directly in the headline.}
5306ALLTAGS @r{All tags, including inherited ones.}
c8d0cf5c 5307CATEGORY @r{The category of an entry.}
4009494e
GM
5308PRIORITY @r{The priority of the entry, a string with a single letter.}
5309DEADLINE @r{The deadline time string, without the angular brackets.}
c8d0cf5c
CD
5310SCHEDULED @r{The scheduling timestamp, without the angular brackets.}
5311CLOSED @r{When was this entry closed?}
5312TIMESTAMP @r{The first keyword-less timestamp in the entry.}
5313TIMESTAMP_IA @r{The first inactive timestamp in the entry.}
dbc28aaa 5314CLOCKSUM @r{The sum of CLOCK intervals in the subtree. @code{org-clock-sum}}
ce57c2fe 5315 @r{must be run first to compute the values in the current buffer.}
8223b1d2
BG
5316CLOCKSUM_T @r{The sum of CLOCK intervals in the subtree for today.}
5317 @r{@code{org-clock-sum-today} must be run first to compute the}
5318 @r{values in the current buffer.}
ed21c5c8 5319BLOCKED @r{"t" if task is currently blocked by children or siblings}
8223b1d2 5320ITEM @r{The headline of the entry.}
ce57c2fe 5321FILE @r{The filename the entry is located in.}
4009494e
GM
5322@end example
5323
a7808fba 5324@node Property searches, Property inheritance, Special properties, Properties and Columns
4009494e
GM
5325@section Property searches
5326@cindex properties, searching
dbc28aaa 5327@cindex searching, of properties
4009494e 5328
a7808fba 5329To create sparse trees and special lists with selection based on properties,
c8d0cf5c 5330the same commands are used as for tag searches (@pxref{Tag searches}).
271672fa 5331
c8d0cf5c 5332@table @kbd
7b08ccf7 5333@orgcmdkkc{C-c / m,C-c \\,org-match-sparse-tree}
c8d0cf5c
CD
5334Create a sparse tree with all matching entries. With a
5335@kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
acedf35c 5336@orgcmd{C-c a m,org-tags-view}
c8d0cf5c
CD
5337Create a global list of tag/property matches from all agenda files.
5338@xref{Matching tags and properties}.
acedf35c 5339@orgcmd{C-c a M,org-tags-view}
c8d0cf5c
CD
5340@vindex org-tags-match-list-sublevels
5341Create a global list of tag matches from all agenda files, but check
271672fa 5342only TODO items and force checking of subitems (see the option
c8d0cf5c
CD
5343@code{org-tags-match-list-sublevels}).
5344@end table
a7808fba 5345
c8d0cf5c
CD
5346The syntax for the search string is described in @ref{Matching tags and
5347properties}.
dbc28aaa
CD
5348
5349There is also a special command for creating sparse trees based on a
5350single property:
5351
5352@table @kbd
acedf35c 5353@orgkey{C-c / p}
dbc28aaa
CD
5354Create a sparse tree based on the value of a property. This first
5355prompts for the name of a property, and then for a value. A sparse tree
5356is created with all entries that define this property with the given
acedf35c 5357value. If you enclose the value in curly braces, it is interpreted as
dbc28aaa
CD
5358a regular expression and matched against the property values.
5359@end table
5360
a7808fba 5361@node Property inheritance, Column view, Property searches, Properties and Columns
dbc28aaa 5362@section Property Inheritance
a7808fba
CD
5363@cindex properties, inheritance
5364@cindex inheritance, of properties
dbc28aaa 5365
c8d0cf5c 5366@vindex org-use-property-inheritance
e66ba1df 5367The outline structure of Org mode documents lends itself to an
c8d0cf5c 5368inheritance model of properties: if the parent in a tree has a certain
e66ba1df 5369property, the children can inherit this property. Org mode does not
dbc28aaa
CD
5370turn this on by default, because it can slow down property searches
5371significantly and is often not needed. However, if you find inheritance
5372useful, you can turn it on by setting the variable
c8d0cf5c 5373@code{org-use-property-inheritance}. It may be set to @code{t} to make
a7808fba
CD
5374all properties inherited from the parent, to a list of properties
5375that should be inherited, or to a regular expression that matches
271672fa 5376inherited properties. If a property has the value @code{nil}, this is
acedf35c 5377interpreted as an explicit undefine of the property, so that inheritance
86fbb8ca 5378search will stop at this value and return @code{nil}.
dbc28aaa 5379
e66ba1df 5380Org mode has a few properties for which inheritance is hard-coded, at
dbc28aaa
CD
5381least for the special applications for which they are used:
5382
c8d0cf5c 5383@cindex property, COLUMNS
dbc28aaa
CD
5384@table @code
5385@item COLUMNS
5386The @code{:COLUMNS:} property defines the format of column view
5387(@pxref{Column view}). It is inherited in the sense that the level
5388where a @code{:COLUMNS:} property is defined is used as the starting
5389point for a column view table, independently of the location in the
5390subtree from where columns view is turned on.
5391@item CATEGORY
c8d0cf5c 5392@cindex property, CATEGORY
dbc28aaa
CD
5393For agenda view, a category set through a @code{:CATEGORY:} property
5394applies to the entire subtree.
5395@item ARCHIVE
c8d0cf5c 5396@cindex property, ARCHIVE
dbc28aaa
CD
5397For archiving, the @code{:ARCHIVE:} property may define the archive
5398location for the entire subtree (@pxref{Moving subtrees}).
28a16a1b 5399@item LOGGING
c8d0cf5c 5400@cindex property, LOGGING
28a16a1b
CD
5401The LOGGING property may define logging settings for an entry or a
5402subtree (@pxref{Tracking TODO state changes}).
dbc28aaa
CD
5403@end table
5404
a7808fba
CD
5405@node Column view, Property API, Property inheritance, Properties and Columns
5406@section Column view
4009494e
GM
5407
5408A great way to view and edit properties in an outline tree is
c8d0cf5c 5409@emph{column view}. In column view, each outline node is turned into a
4009494e 5410table row. Columns in this table provide access to properties of the
e66ba1df 5411entries. Org mode implements columns by overlaying a tabular structure
4009494e
GM
5412over the headline of each item. While the headlines have been turned
5413into a table row, you can still change the visibility of the outline
5414tree. For example, you get a compact table by switching to CONTENTS
5415view (@kbd{S-@key{TAB} S-@key{TAB}}, or simply @kbd{c} while column view
5416is active), but you can still open, read, and edit the entry below each
5417headline. Or, you can switch to column view after executing a sparse
5418tree command and in this way get a table only for the selected items.
a7808fba 5419Column view also works in agenda buffers (@pxref{Agenda Views}) where
4009494e
GM
5420queries have collected selected items, possibly from a number of files.
5421
5422@menu
c0468714
GM
5423* Defining columns:: The COLUMNS format property
5424* Using column view:: How to create and use column view
5425* Capturing column view:: A dynamic block for column view
4009494e
GM
5426@end menu
5427
5428@node Defining columns, Using column view, Column view, Column view
a7808fba 5429@subsection Defining columns
4009494e
GM
5430@cindex column view, for properties
5431@cindex properties, column view
5432
5433Setting up a column view first requires defining the columns. This is
5434done by defining a column format line.
5435
5436@menu
c0468714
GM
5437* Scope of column definitions:: Where defined, where valid?
5438* Column attributes:: Appearance and content of a column
4009494e
GM
5439@end menu
5440
5441@node Scope of column definitions, Column attributes, Defining columns, Defining columns
5442@subsubsection Scope of column definitions
5443
5444To define a column format for an entire file, use a line like
5445
c8d0cf5c 5446@cindex #+COLUMNS
4009494e
GM
5447@example
5448#+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
5449@end example
5450
dbc28aaa
CD
5451To specify a format that only applies to a specific tree, add a
5452@code{:COLUMNS:} property to the top node of that tree, for example:
5453
4009494e
GM
5454@example
5455** Top node for columns view
5456 :PROPERTIES:
5457 :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
5458 :END:
5459@end example
5460
dbc28aaa 5461If a @code{:COLUMNS:} property is present in an entry, it defines columns
4009494e
GM
5462for the entry itself, and for the entire subtree below it. Since the
5463column definition is part of the hierarchical structure of the document,
5464you can define columns on level 1 that are general enough for all
5465sublevels, and more specific columns further down, when you edit a
5466deeper part of the tree.
5467
5468@node Column attributes, , Scope of column definitions, Defining columns
5469@subsubsection Column attributes
5470A column definition sets the attributes of a column. The general
5471definition looks like this:
5472
5473@example
c8d0cf5c 5474 %[@var{width}]@var{property}[(@var{title})][@{@var{summary-type}@}]
4009494e
GM
5475@end example
5476
5477@noindent
5478Except for the percent sign and the property name, all items are
5479optional. The individual parts have the following meaning:
5480
5481@example
c8d0cf5c 5482@var{width} @r{An integer specifying the width of the column in characters.}
72d803ad 5483 @r{If omitted, the width will be determined automatically.}
c8d0cf5c 5484@var{property} @r{The property that should be edited in this column.}
72d803ad
CD
5485 @r{Special properties representing meta data are allowed here}
5486 @r{as well (@pxref{Special properties})}
ce57c2fe 5487@var{title} @r{The header text for the column. If omitted, the property}
afe98dfa 5488 @r{name is used.}
c8d0cf5c 5489@{@var{summary-type}@} @r{The summary type. If specified, the column values for}
72d803ad
CD
5490 @r{parent nodes are computed from the children.}
5491 @r{Supported summary types are:}
5492 @{+@} @r{Sum numbers in this column.}
5493 @{+;%.1f@} @r{Like @samp{+}, but format result with @samp{%.1f}.}
5494 @{$@} @r{Currency, short for @samp{+;%.2f}.}
86fbb8ca 5495 @{:@} @r{Sum times, HH:MM, plain numbers are hours.}
72d803ad
CD
5496 @{X@} @r{Checkbox status, @samp{[X]} if all children are @samp{[X]}.}
5497 @{X/@} @r{Checkbox status, @samp{[n/m]}.}
5498 @{X%@} @r{Checkbox status, @samp{[n%]}.}
5499 @{min@} @r{Smallest number in column.}
5500 @{max@} @r{Largest number.}
5501 @{mean@} @r{Arithmetic mean of numbers.}
5502 @{:min@} @r{Smallest time value in column.}
5503 @{:max@} @r{Largest time value.}
5504 @{:mean@} @r{Arithmetic mean of time values.}
afe98dfa
CD
5505 @{@@min@} @r{Minimum age (in days/hours/mins/seconds).}
5506 @{@@max@} @r{Maximum age (in days/hours/mins/seconds).}
5507 @{@@mean@} @r{Arithmetic mean of ages (in days/hours/mins/seconds).}
5508 @{est+@} @r{Add low-high estimates.}
4009494e
GM
5509@end example
5510
5511@noindent
a351880d 5512Be aware that you can only have one summary type for any property you
ce57c2fe 5513include. Subsequent columns referencing the same property will all display the
a351880d
CD
5514same summary information.
5515
afe98dfa
CD
5516The @code{est+} summary type requires further explanation. It is used for
5517combining estimates, expressed as low-high ranges. For example, instead
5518of estimating a particular task will take 5 days, you might estimate it as
f99f1641
PE
55195--6 days if you're fairly confident you know how much work is required, or
55201--10 days if you don't really know what needs to be done. Both ranges
afe98dfa
CD
5521average at 5.5 days, but the first represents a more predictable delivery.
5522
5523When combining a set of such estimates, simply adding the lows and highs
ce57c2fe 5524produces an unrealistically wide result. Instead, @code{est+} adds the
afe98dfa
CD
5525statistical mean and variance of the sub-tasks, generating a final estimate
5526from the sum. For example, suppose you had ten tasks, each of which was
5527estimated at 0.5 to 2 days of work. Straight addition produces an estimate
5528of 5 to 20 days, representing what to expect if everything goes either
ce57c2fe 5529extremely well or extremely poorly. In contrast, @code{est+} estimates the
f99f1641 5530full job more realistically, at 10--15 days.
afe98dfa 5531
30cb51f1
BG
5532Numbers are right-aligned when a format specifier with an explicit width like
5533@code{%5d} or @code{%5.1f} is used.
5534
4009494e
GM
5535Here is an example for a complete columns definition, along with allowed
5536values.
5537
5538@example
7006d207 5539: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.}
8223b1d2 5540 %10Time_Estimate@{:@} %CLOCKSUM %CLOCKSUM_T
4009494e
GM
5541:Owner_ALL: Tammy Mark Karl Lisa Don
5542:Status_ALL: "In progress" "Not started yet" "Finished" ""
5543:Approved_ALL: "[ ]" "[X]"
5544@end example
5545
c8d0cf5c 5546@noindent
4009494e 5547The first column, @samp{%25ITEM}, means the first 25 characters of the
1df7defd 5548item itself, i.e., of the headline. You probably always should start the
28a16a1b
CD
5549column definition with the @samp{ITEM} specifier. The other specifiers
5550create columns @samp{Owner} with a list of names as allowed values, for
4009494e
GM
5551@samp{Status} with four different possible values, and for a checkbox
5552field @samp{Approved}. When no width is given after the @samp{%}
5553character, the column will be exactly as wide as it needs to be in order
5554to fully display all values. The @samp{Approved} column does have a
5555modified title (@samp{Approved?}, with a question mark). Summaries will
dbc28aaa 5556be created for the @samp{Time_Estimate} column by adding time duration
4009494e 5557expressions like HH:MM, and for the @samp{Approved} column, by providing
dbc28aaa 5558an @samp{[X]} status if all children have been checked. The
8223b1d2
BG
5559@samp{CLOCKSUM} and @samp{CLOCKSUM_T} columns are special, they lists the
5560sums of CLOCK intervals in the subtree, either for all clocks or just for
5561today.
4009494e 5562
a7808fba
CD
5563@node Using column view, Capturing column view, Defining columns, Column view
5564@subsection Using column view
4009494e
GM
5565
5566@table @kbd
5567@tsubheading{Turning column view on and off}
acedf35c 5568@orgcmd{C-c C-x C-c,org-columns}
c8d0cf5c
CD
5569@vindex org-columns-default-format
5570Turn on column view. If the cursor is before the first headline in the file,
5571column view is turned on for the entire file, using the @code{#+COLUMNS}
a351880d 5572definition. If the cursor is somewhere inside the outline, this command
c8d0cf5c
CD
5573searches the hierarchy, up from point, for a @code{:COLUMNS:} property that
5574defines a format. When one is found, the column view table is established
5575for the tree starting at the entry that contains the @code{:COLUMNS:}
5576property. If no such property is found, the format is taken from the
5577@code{#+COLUMNS} line or from the variable @code{org-columns-default-format},
5578and column view is established for the current entry and its subtree.
acedf35c 5579@orgcmd{r,org-columns-redo}
a7808fba 5580Recreate the column view, to include recent changes made in the buffer.
acedf35c 5581@orgcmd{g,org-columns-redo}
28a16a1b 5582Same as @kbd{r}.
acedf35c 5583@orgcmd{q,org-columns-quit}
4009494e
GM
5584Exit column view.
5585@tsubheading{Editing values}
5586@item @key{left} @key{right} @key{up} @key{down}
5587Move through the column view from field to field.
5588@kindex S-@key{left}
5589@kindex S-@key{right}
5590@item S-@key{left}/@key{right}
5591Switch to the next/previous allowed value of the field. For this, you
5592have to have specified allowed values for a property.
b349f79f 5593@item 1..9,0
acedf35c
CD
5594Directly select the Nth allowed value, @kbd{0} selects the 10th value.
5595@orgcmdkkcc{n,p,org-columns-next-allowed-value,org-columns-previous-allowed-value}
4009494e 5596Same as @kbd{S-@key{left}/@key{right}}
acedf35c 5597@orgcmd{e,org-columns-edit-value}
4009494e
GM
5598Edit the property at point. For the special properties, this will
5599invoke the same interface that you normally use to change that
5600property. For example, when editing a TAGS property, the tag completion
5601or fast selection interface will pop up.
acedf35c 5602@orgcmd{C-c C-c,org-columns-set-tags-or-toggle}
dbc28aaa 5603When there is a checkbox at point, toggle it.
acedf35c 5604@orgcmd{v,org-columns-show-value}
4009494e
GM
5605View the full value of this property. This is useful if the width of
5606the column is smaller than that of the value.
acedf35c 5607@orgcmd{a,org-columns-edit-allowed}
4009494e
GM
5608Edit the list of allowed values for this property. If the list is found
5609in the hierarchy, the modified values is stored there. If no list is
5610found, the new value is stored in the first entry that is part of the
5611current column view.
5612@tsubheading{Modifying the table structure}
acedf35c 5613@orgcmdkkcc{<,>,org-columns-narrow,org-columns-widen}
4009494e 5614Make the column narrower/wider by one character.
acedf35c 5615@orgcmd{S-M-@key{right},org-columns-new}
864c9740 5616Insert a new column, to the left of the current column.
acedf35c 5617@orgcmd{S-M-@key{left},org-columns-delete}
4009494e
GM
5618Delete the current column.
5619@end table
5620
a7808fba
CD
5621@node Capturing column view, , Using column view, Column view
5622@subsection Capturing column view
dbc28aaa
CD
5623
5624Since column view is just an overlay over a buffer, it cannot be
5625exported or printed directly. If you want to capture a column view, use
c8d0cf5c 5626a @code{columnview} dynamic block (@pxref{Dynamic blocks}). The frame
28a16a1b 5627of this block looks like this:
dbc28aaa 5628
c8d0cf5c 5629@cindex #+BEGIN, columnview
dbc28aaa
CD
5630@example
5631* The column view
5632#+BEGIN: columnview :hlines 1 :id "label"
5633
5634#+END:
5635@end example
5636
5637@noindent This dynamic block has the following parameters:
5638
5639@table @code
5640@item :id
c8d0cf5c 5641This is the most important parameter. Column view is a feature that is
dbc28aaa 5642often localized to a certain (sub)tree, and the capture block might be
c8d0cf5c
CD
5643at a different location in the file. To identify the tree whose view to
5644capture, you can use 4 values:
5645@cindex property, ID
dbc28aaa
CD
5646@example
5647local @r{use the tree in which the capture block is located}
5648global @r{make a global view, including all headings in the file}
c8d0cf5c 5649"file:@var{path-to-file}"
55e0839d 5650 @r{run column view at the top of this file}
c8d0cf5c 5651"@var{ID}" @r{call column view in the tree that has an @code{:ID:}}
b349f79f 5652 @r{property with the value @i{label}. You can use}
271672fa 5653 @r{@kbd{M-x org-id-copy RET} to create a globally unique ID for}
b349f79f 5654 @r{the current entry and copy it to the kill-ring.}
dbc28aaa
CD
5655@end example
5656@item :hlines
c8d0cf5c
CD
5657When @code{t}, insert an hline after every line. When a number @var{N}, insert
5658an hline before each headline with level @code{<= @var{N}}.
dbc28aaa 5659@item :vlines
c8d0cf5c 5660When set to @code{t}, force column groups to get vertical lines.
28a16a1b
CD
5661@item :maxlevel
5662When set to a number, don't capture entries below this level.
5663@item :skip-empty-rows
c8d0cf5c 5664When set to @code{t}, skip rows where the only non-empty specifier of the
28a16a1b
CD
5665column view is @code{ITEM}.
5666
dbc28aaa
CD
5667@end table
5668
5669@noindent
5670The following commands insert or update the dynamic block:
5671
5672@table @kbd
acedf35c 5673@orgcmd{C-c C-x i,org-insert-columns-dblock}
dbc28aaa 5674Insert a dynamic block capturing a column view. You will be prompted
c8d0cf5c 5675for the scope or ID of the view.
acedf35c 5676@orgcmdkkc{C-c C-c,C-c C-x C-u,org-dblock-update}
c8d0cf5c 5677Update dynamic block at point. The cursor needs to be in the
dbc28aaa 5678@code{#+BEGIN} line of the dynamic block.
acedf35c 5679@orgcmd{C-u C-c C-x C-u,org-update-all-dblocks}
dbc28aaa 5680Update all dynamic blocks (@pxref{Dynamic blocks}). This is useful if
acedf35c
CD
5681you have several clock table blocks, column-capturing blocks or other dynamic
5682blocks in a buffer.
dbc28aaa
CD
5683@end table
5684
864c9740 5685You can add formulas to the column view table and you may add plotting
c8d0cf5c 5686instructions in front of the table---these will survive an update of the
864c9740
CD
5687block. If there is a @code{#+TBLFM:} after the table, the table will
5688actually be recalculated automatically after an update.
5689
c8d0cf5c
CD
5690An alternative way to capture and process property values into a table is
5691provided by Eric Schulte's @file{org-collector.el} which is a contributed
5692package@footnote{Contributed packages are not part of Emacs, but are
5693distributed with the main distribution of Org (visit
5694@uref{http://orgmode.org}).}. It provides a general API to collect
5695properties from entries in a certain scope, and arbitrary Lisp expressions to
5696process these values before inserting them into a table or a dynamic block.
5697
a7808fba 5698@node Property API, , Column view, Properties and Columns
4009494e
GM
5699@section The Property API
5700@cindex properties, API
5701@cindex API, for properties
5702
5703There is a full API for accessing and changing properties. This API can
5704be used by Emacs Lisp programs to work with properties and to implement
5705features based on them. For more information see @ref{Using the
5706property API}.
5707
a351880d 5708@node Dates and Times, Capture - Refile - Archive, Properties and Columns, Top
86fbb8ca 5709@chapter Dates and times
dbc28aaa
CD
5710@cindex dates
5711@cindex times
c8d0cf5c
CD
5712@cindex timestamp
5713@cindex date stamp
4009494e 5714
dbc28aaa
CD
5715To assist project planning, TODO items can be labeled with a date and/or
5716a time. The specially formatted string carrying the date and time
e66ba1df 5717information is called a @emph{timestamp} in Org mode. This may be a
dbc28aaa 5718little confusing because timestamp is often used as indicating when
e66ba1df 5719something was created or last changed. However, in Org mode this term
dbc28aaa 5720is used in a much wider sense.
4009494e
GM
5721
5722@menu
c0468714
GM
5723* Timestamps:: Assigning a time to a tree entry
5724* Creating timestamps:: Commands which insert timestamps
5725* Deadlines and scheduling:: Planning your work
5726* Clocking work time:: Tracking how long you spend on a task
c0468714
GM
5727* Effort estimates:: Planning work effort in advance
5728* Relative timer:: Notes with a running timer
afe98dfa 5729* Countdown timer:: Starting a countdown timer for a task
4009494e
GM
5730@end menu
5731
5732
a7808fba 5733@node Timestamps, Creating timestamps, Dates and Times, Dates and Times
c8d0cf5c
CD
5734@section Timestamps, deadlines, and scheduling
5735@cindex timestamps
4009494e
GM
5736@cindex ranges, time
5737@cindex date stamps
5738@cindex deadlines
5739@cindex scheduling
5740
7006d207 5741A timestamp is a specification of a date (possibly with a time or a range of
e66ba1df
BG
5742times) in a special format, either @samp{<2003-09-16 Tue>}@footnote{In this
5743simplest form, the day name is optional when you type the date yourself.
5744However, any dates inserted or modified by Org will add that day name, for
5745reading convenience.} or @samp{<2003-09-16 Tue 09:39>} or @samp{<2003-09-16
5746Tue 12:00-12:30>}@footnote{This is inspired by the standard ISO 8601
5747date/time format. To use an alternative format, see @ref{Custom time
5748format}.}. A timestamp can appear anywhere in the headline or body of an Org
5749tree entry. Its presence causes entries to be shown on specific dates in the
5750agenda (@pxref{Weekly/daily agenda}). We distinguish:
4009494e
GM
5751
5752@table @var
c8d0cf5c 5753@item Plain timestamp; Event; Appointment
4009494e 5754@cindex timestamp
e66ba1df 5755@cindex appointment
c8d0cf5c 5756A simple timestamp just assigns a date/time to an item. This is just
dbc28aaa
CD
5757like writing down an appointment or event in a paper agenda. In the
5758timeline and agenda displays, the headline of an entry associated with a
c8d0cf5c 5759plain timestamp will be shown exactly on that date.
4009494e
GM
5760
5761@example
8223b1d2
BG
5762* Meet Peter at the movies
5763 <2006-11-01 Wed 19:15>
5764* Discussion on climate change
5765 <2006-11-02 Thu 20:00-22:00>
4009494e
GM
5766@end example
5767
c8d0cf5c 5768@item Timestamp with repeater interval
4009494e 5769@cindex timestamp, with repeater interval
c8d0cf5c 5770A timestamp may contain a @emph{repeater interval}, indicating that it
4009494e 5771applies not only on the given date, but again and again after a certain
c8d0cf5c 5772interval of N days (d), weeks (w), months (m), or years (y). The
4009494e
GM
5773following will show up in the agenda every Wednesday:
5774
5775@example
8223b1d2
BG
5776* Pick up Sam at school
5777 <2007-05-16 Wed 12:30 +1w>
4009494e
GM
5778@end example
5779
5780@item Diary-style sexp entries
e66ba1df 5781For more complex date specifications, Org mode supports using the special
ce57c2fe
BG
5782sexp diary entries implemented in the Emacs calendar/diary
5783package@footnote{When working with the standard diary sexp functions, you
5784need to be very careful with the order of the arguments. That order depend
5785evilly on the variable @code{calendar-date-style} (or, for older Emacs
5786versions, @code{european-calendar-style}). For example, to specify a date
5787December 12, 2005, the call might look like @code{(diary-date 12 1 2005)} or
5788@code{(diary-date 1 12 2005)} or @code{(diary-date 2005 12 1)}, depending on
e66ba1df 5789the settings. This has been the source of much confusion. Org mode users
ce57c2fe
BG
5790can resort to special versions of these functions like @code{org-date} or
5791@code{org-anniversary}. These work just like the corresponding @code{diary-}
5792functions, but with stable ISO order of arguments (year, month, day) wherever
153ae947
BG
5793applicable, independent of the value of @code{calendar-date-style}.}. For
5794example with optional time
4009494e
GM
5795
5796@example
153ae947 5797* 22:00-23:00 The nerd meeting on every 2nd Thursday of the month
c7cf0ebc 5798 <%%(diary-float t 4 2)>
4009494e
GM
5799@end example
5800
5801@item Time/Date range
5802@cindex timerange
5803@cindex date range
c8d0cf5c 5804Two timestamps connected by @samp{--} denote a range. The headline
4009494e
GM
5805will be shown on the first and last day of the range, and on any dates
5806that are displayed and fall in the range. Here is an example:
5807
5808@example
5809** Meeting in Amsterdam
5810 <2004-08-23 Mon>--<2004-08-26 Thu>
5811@end example
5812
c8d0cf5c 5813@item Inactive timestamp
4009494e
GM
5814@cindex timestamp, inactive
5815@cindex inactive timestamp
c8d0cf5c
CD
5816Just like a plain timestamp, but with square brackets instead of
5817angular ones. These timestamps are inactive in the sense that they do
4009494e
GM
5818@emph{not} trigger an entry to show up in the agenda.
5819
5820@example
8223b1d2
BG
5821* Gillian comes late for the fifth time
5822 [2006-11-01 Wed]
4009494e
GM
5823@end example
5824
5825@end table
5826
a7808fba 5827@node Creating timestamps, Deadlines and scheduling, Timestamps, Dates and Times
4009494e
GM
5828@section Creating timestamps
5829@cindex creating timestamps
5830@cindex timestamps, creating
5831
e66ba1df 5832For Org mode to recognize timestamps, they need to be in the specific
c8d0cf5c 5833format. All commands listed below produce timestamps in the correct
4009494e
GM
5834format.
5835
5836@table @kbd
afe98dfa 5837@orgcmd{C-c .,org-time-stamp}
c8d0cf5c
CD
5838Prompt for a date and insert a corresponding timestamp. When the cursor is
5839at an existing timestamp in the buffer, the command is used to modify this
864c9740
CD
5840timestamp instead of inserting a new one. When this command is used twice in
5841succession, a time range is inserted.
4009494e 5842@c
afe98dfa 5843@orgcmd{C-c !,org-time-stamp-inactive}
c8d0cf5c 5844Like @kbd{C-c .}, but insert an inactive timestamp that will not cause
4009494e
GM
5845an agenda entry.
5846@c
c8d0cf5c
CD
5847@kindex C-u C-c .
5848@kindex C-u C-c !
5849@item C-u C-c .
5850@itemx C-u C-c !
5851@vindex org-time-stamp-rounding-minutes
5852Like @kbd{C-c .} and @kbd{C-c !}, but use the alternative format which
5853contains date and time. The default time can be rounded to multiples of 5
5854minutes, see the option @code{org-time-stamp-rounding-minutes}.
5855@c
e66ba1df
BG
5856@orgkey{C-c C-c}
5857Normalize timestamp, insert/fix day name if missing or wrong.
5858@c
afe98dfa 5859@orgcmd{C-c <,org-date-from-calendar}
c8d0cf5c 5860Insert a timestamp corresponding to the cursor date in the Calendar.
4009494e 5861@c
afe98dfa 5862@orgcmd{C-c >,org-goto-calendar}
4009494e 5863Access the Emacs calendar for the current date. If there is a
a7808fba 5864timestamp in the current line, go to the corresponding date
4009494e
GM
5865instead.
5866@c
afe98dfa 5867@orgcmd{C-c C-o,org-open-at-point}
c8d0cf5c 5868Access the agenda for the date given by the timestamp or -range at
a7808fba 5869point (@pxref{Weekly/daily agenda}).
4009494e 5870@c
acedf35c 5871@orgcmdkkcc{S-@key{left},S-@key{right},org-timestamp-down-day,org-timestamp-up-day}
4009494e 5872Change date at cursor by one day. These key bindings conflict with
c8d0cf5c 5873shift-selection and related modes (@pxref{Conflicts}).
4009494e 5874@c
acedf35c 5875@orgcmdkkcc{S-@key{up},S-@key{down},org-timestamp-up,org-timestamp-down-down}
4009494e 5876Change the item under the cursor in a timestamp. The cursor can be on a
c8d0cf5c
CD
5877year, month, day, hour or minute. When the timestamp contains a time range
5878like @samp{15:30-16:30}, modifying the first time will also shift the second,
5879shifting the time block with constant length. To change the length, modify
5880the second time. Note that if the cursor is in a headline and not at a
5881timestamp, these same keys modify the priority of an item.
ce57c2fe 5882(@pxref{Priorities}). The key bindings also conflict with shift-selection and
c8d0cf5c 5883related modes (@pxref{Conflicts}).
4009494e 5884@c
acedf35c 5885@orgcmd{C-c C-y,org-evaluate-time-range}
4009494e 5886@cindex evaluate time range
a7808fba
CD
5887Evaluate a time range by computing the difference between start and end.
5888With a prefix argument, insert result after the time range (in a table: into
5889the following column).
4009494e
GM
5890@end table
5891
5892
5893@menu
e66ba1df 5894* The date/time prompt:: How Org mode helps you entering date and time
c0468714 5895* Custom time format:: Making dates look different
4009494e
GM
5896@end menu
5897
5898@node The date/time prompt, Custom time format, Creating timestamps, Creating timestamps
5899@subsection The date/time prompt
5900@cindex date, reading in minibuffer
5901@cindex time, reading in minibuffer
5902
c8d0cf5c 5903@vindex org-read-date-prefer-future
e66ba1df 5904When Org mode prompts for a date/time, the default is shown in default
7006d207 5905date/time format, and the prompt therefore seems to ask for a specific
271672fa
BG
5906format. But it will in fact accept date/time information in a variety of
5907formats. Generally, the information should start at the beginning of the
5908string. Org mode will find whatever information is in
7006d207
CD
5909there and derive anything you have not specified from the @emph{default date
5910and time}. The default is usually the current date and time, but when
5911modifying an existing timestamp, or when entering the second stamp of a
5912range, it is taken from the stamp in the buffer. When filling in
e66ba1df 5913information, Org mode assumes that most of the time you will want to enter a
7006d207
CD
5914date in the future: if you omit the month/year and the given day/month is
5915@i{before} today, it will assume that you mean a future date@footnote{See the
a351880d
CD
5916variable @code{org-read-date-prefer-future}. You may set that variable to
5917the symbol @code{time} to even make a time before now shift the date to
5918tomorrow.}. If the date has been automatically shifted into the future, the
5919time prompt will show this with @samp{(=>F).}
dbc28aaa 5920
07450bee 5921For example, let's assume that today is @b{June 13, 2006}. Here is how
e66ba1df 5922various inputs will be interpreted, the items filled in by Org mode are
dbc28aaa
CD
5923in @b{bold}.
5924
5925@example
ce57c2fe
BG
59263-2-5 @result{} 2003-02-05
59272/5/3 @result{} 2003-02-05
592814 @result{} @b{2006}-@b{06}-14
592912 @result{} @b{2006}-@b{07}-12
59302/5 @result{} @b{2007}-02-05
271672fa 5931Fri @result{} nearest Friday after the default date
ce57c2fe
BG
5932sep 15 @result{} @b{2006}-09-15
5933feb 15 @result{} @b{2007}-02-15
5934sep 12 9 @result{} 2009-09-12
593512:45 @result{} @b{2006}-@b{06}-@b{13} 12:45
593622 sept 0:34 @result{} @b{2006}-09-22 0:34
5937w4 @result{} ISO week for of the current year @b{2006}
59382012 w4 fri @result{} Friday of ISO week 4 in 2012
59392012-w04-5 @result{} Same as above
dbc28aaa
CD
5940@end example
5941
271672fa
BG
5942Furthermore you can specify a relative date by giving, as the @emph{first}
5943thing in the input: a plus/minus sign, a number and a letter ([hdwmy]) to
5944indicate change in hours, days, weeks, months, or years. With a single plus
5945or minus, the date is always relative to today. With a double plus or minus,
5946it is relative to the default date. If instead of a single letter, you use
5947the abbreviation of day name, the date will be the Nth such day, e.g.:
dbc28aaa
CD
5948
5949@example
ce57c2fe
BG
5950+0 @result{} today
5951. @result{} today
5952+4d @result{} four days from today
5953+4 @result{} same as above
5954+2w @result{} two weeks from today
5955++5 @result{} five days from default date
271672fa
BG
5956+2tue @result{} second Tuesday from now
5957-wed @result{} last Wednesday
4009494e
GM
5958@end example
5959
c8d0cf5c
CD
5960@vindex parse-time-months
5961@vindex parse-time-weekdays
4009494e
GM
5962The function understands English month and weekday abbreviations. If
5963you want to use unabbreviated names and/or other languages, configure
5964the variables @code{parse-time-months} and @code{parse-time-weekdays}.
5965
ce57c2fe
BG
5966@vindex org-read-date-force-compatible-dates
5967Not all dates can be represented in a given Emacs implementation. By default
5968Org mode forces dates into the compatibility range 1970--2037 which works on
5969all Emacs implementations. If you want to use dates outside of this range,
5970read the docstring of the variable
5971@code{org-read-date-force-compatible-dates}.
5972
afe98dfa 5973You can specify a time range by giving start and end times or by giving a
ce57c2fe
BG
5974start time and a duration (in HH:MM format). Use one or two dash(es) as the
5975separator in the former case and use '+' as the separator in the latter
1df7defd 5976case, e.g.:
afe98dfa
CD
5977
5978@example
ce57c2fe
BG
597911am-1:15pm @result{} 11:00-13:15
598011am--1:15pm @result{} same as above
598111am+2:15 @result{} same as above
afe98dfa
CD
5982@end example
5983
4009494e 5984@cindex calendar, for selecting date
c8d0cf5c 5985@vindex org-popup-calendar-for-date-prompt
4009494e
GM
5986Parallel to the minibuffer prompt, a calendar is popped up@footnote{If
5987you don't need/want the calendar, configure the variable
5988@code{org-popup-calendar-for-date-prompt}.}. When you exit the date
5989prompt, either by clicking on a date in the calendar, or by pressing
5990@key{RET}, the date selected in the calendar will be combined with the
5991information entered at the prompt. You can control the calendar fully
5992from the minibuffer:
5993
4009494e 5994@kindex <
4009494e 5995@kindex >
86fbb8ca
CD
5996@kindex M-v
5997@kindex C-v
4009494e 5998@kindex mouse-1
4009494e 5999@kindex S-@key{right}
4009494e 6000@kindex S-@key{left}
4009494e 6001@kindex S-@key{down}
4009494e 6002@kindex S-@key{up}
4009494e 6003@kindex M-S-@key{right}
4009494e 6004@kindex M-S-@key{left}
4009494e 6005@kindex @key{RET}
dbc28aaa 6006@example
86fbb8ca 6007@key{RET} @r{Choose date at cursor in calendar.}
dbc28aaa
CD
6008mouse-1 @r{Select date by clicking on it.}
6009S-@key{right}/@key{left} @r{One day forward/backward.}
6010S-@key{down}/@key{up} @r{One week forward/backward.}
6011M-S-@key{right}/@key{left} @r{One month forward/backward.}
86fbb8ca
CD
6012> / < @r{Scroll calendar forward/backward by one month.}
6013M-v / C-v @r{Scroll calendar forward/backward by 3 months.}
dbc28aaa
CD
6014@end example
6015
c8d0cf5c 6016@vindex org-read-date-display-live
a7808fba
CD
6017The actions of the date/time prompt may seem complex, but I assure you they
6018will grow on you, and you will start getting annoyed by pretty much any other
6019way of entering a date/time out there. To help you understand what is going
6020on, the current interpretation of your input will be displayed live in the
271672fa 6021minibuffer@footnote{If you find this distracting, turn the display off with
a7808fba 6022@code{org-read-date-display-live}.}.
4009494e
GM
6023
6024@node Custom time format, , The date/time prompt, Creating timestamps
6025@subsection Custom time format
6026@cindex custom date/time format
6027@cindex time format, custom
6028@cindex date format, custom
6029
c8d0cf5c
CD
6030@vindex org-display-custom-times
6031@vindex org-time-stamp-custom-formats
e66ba1df 6032Org mode uses the standard ISO notation for dates and times as it is
4009494e
GM
6033defined in ISO 8601. If you cannot get used to this and require another
6034representation of date and time to keep you happy, you can get it by
271672fa 6035customizing the options @code{org-display-custom-times} and
4009494e
GM
6036@code{org-time-stamp-custom-formats}.
6037
6038@table @kbd
acedf35c 6039@orgcmd{C-c C-x C-t,org-toggle-time-stamp-overlays}
4009494e
GM
6040Toggle the display of custom formats for dates and times.
6041@end table
6042
6043@noindent
e66ba1df 6044Org mode needs the default format for scanning, so the custom date/time
c8d0cf5c 6045format does not @emph{replace} the default format---instead it is put
4009494e
GM
6046@emph{over} the default format using text properties. This has the
6047following consequences:
6048@itemize @bullet
28a16a1b 6049@item
c8d0cf5c 6050You cannot place the cursor onto a timestamp anymore, only before or
4009494e
GM
6051after.
6052@item
6053The @kbd{S-@key{up}/@key{down}} keys can no longer be used to adjust
c8d0cf5c 6054each component of a timestamp. If the cursor is at the beginning of
4009494e
GM
6055the stamp, @kbd{S-@key{up}/@key{down}} will change the stamp by one day,
6056just like @kbd{S-@key{left}/@key{right}}. At the end of the stamp, the
6057time will be changed by one minute.
6058@item
c8d0cf5c 6059If the timestamp contains a range of clock times or a repeater, these
acedf35c 6060will not be overlaid, but remain in the buffer as they were.
4009494e 6061@item
c8d0cf5c 6062When you delete a timestamp character-by-character, it will only
4009494e
GM
6063disappear from the buffer after @emph{all} (invisible) characters
6064belonging to the ISO timestamp have been removed.
6065@item
c8d0cf5c 6066If the custom timestamp format is longer than the default and you are
4009494e
GM
6067using dates in tables, table alignment will be messed up. If the custom
6068format is shorter, things do work as expected.
6069@end itemize
6070
6071
a7808fba
CD
6072@node Deadlines and scheduling, Clocking work time, Creating timestamps, Dates and Times
6073@section Deadlines and scheduling
4009494e 6074
c8d0cf5c 6075A timestamp may be preceded by special keywords to facilitate planning:
4009494e
GM
6076
6077@table @var
6078@item DEADLINE
6079@cindex DEADLINE keyword
dbc28aaa
CD
6080
6081Meaning: the task (most likely a TODO item, though not necessarily) is supposed
6082to be finished on that date.
6083
c8d0cf5c 6084@vindex org-deadline-warning-days
271672fa 6085@vindex org-agenda-skip-deadline-prewarning-if-scheduled
dbc28aaa
CD
6086On the deadline date, the task will be listed in the agenda. In
6087addition, the agenda for @emph{today} will carry a warning about the
6088approaching or missed deadline, starting
6089@code{org-deadline-warning-days} before the due date, and continuing
1df7defd 6090until the entry is marked DONE@. An example:
4009494e
GM
6091
6092@example
6093*** TODO write article about the Earth for the Guide
4009494e 6094 DEADLINE: <2004-02-29 Sun>
801a68c8 6095 The editor in charge is [[bbdb:Ford Prefect]]
4009494e
GM
6096@end example
6097
6098You can specify a different lead time for warnings for a specific
6099deadlines using the following syntax. Here is an example with a warning
271672fa
BG
6100period of 5 days @code{DEADLINE: <2004-02-29 Sun -5d>}. This warning is
6101deactivated if the task get scheduled and you set
6102@code{org-agenda-skip-deadline-prewarning-if-scheduled} to @code{t}.
4009494e
GM
6103
6104@item SCHEDULED
6105@cindex SCHEDULED keyword
dbc28aaa
CD
6106
6107Meaning: you are planning to start working on that task on the given
6108date.
6109
c8d0cf5c 6110@vindex org-agenda-skip-scheduled-if-done
dbc28aaa 6111The headline will be listed under the given date@footnote{It will still
1df7defd 6112be listed on that date after it has been marked DONE@. If you don't like
4009494e
GM
6113this, set the variable @code{org-agenda-skip-scheduled-if-done}.}. In
6114addition, a reminder that the scheduled date has passed will be present
1df7defd 6115in the compilation for @emph{today}, until the entry is marked DONE, i.e.,
acedf35c 6116the task will automatically be forwarded until completed.
4009494e
GM
6117
6118@example
6119*** TODO Call Trillian for a date on New Years Eve.
6120 SCHEDULED: <2004-12-25 Sat>
6121@end example
dbc28aaa 6122
271672fa
BG
6123@vindex org-scheduled-delay-days
6124@vindex org-agenda-skip-scheduled-delay-if-deadline
6125If you want to @emph{delay} the display of this task in the agenda, use
6126@code{SCHEDULED: <2004-12-25 Sat -2d>}: the task is still scheduled on the
612725th but will appear two days later. In case the task contains a repeater,
6128the delay is considered to affect all occurrences; if you want the delay to
6129only affect the first scheduled occurrence of the task, use @code{--2d}
6130instead. See @code{org-scheduled-delay-days} and
6131@code{org-agenda-skip-scheduled-delay-if-deadline} for details on how to
6132control this globally or per agenda.
6133
dbc28aaa 6134@noindent
e66ba1df 6135@b{Important:} Scheduling an item in Org mode should @i{not} be
dbc28aaa
CD
6136understood in the same way that we understand @i{scheduling a meeting}.
6137Setting a date for a meeting is just a simple appointment, you should
c8d0cf5c
CD
6138mark this entry with a simple plain timestamp, to get this item shown
6139on the date where it applies. This is a frequent misunderstanding by
e66ba1df 6140Org users. In Org mode, @i{scheduling} means setting a date when you
dbc28aaa 6141want to start working on an action item.
4009494e
GM
6142@end table
6143
c8d0cf5c 6144You may use timestamps with repeaters in scheduling and deadline
e66ba1df 6145entries. Org mode will issue early and late warnings based on the
c8d0cf5c 6146assumption that the timestamp represents the @i{nearest instance} of
dbc28aaa
CD
6147the repeater. However, the use of diary sexp entries like
6148@c
c7cf0ebc 6149@code{<%%(diary-float t 42)>}
dbc28aaa 6150@c
e66ba1df 6151in scheduling and deadline timestamps is limited. Org mode does not
dbc28aaa
CD
6152know enough about the internals of each sexp function to issue early and
6153late warnings. However, it will show the item on each day where the
6154sexp entry matches.
6155
4009494e 6156@menu
c0468714
GM
6157* Inserting deadline/schedule:: Planning items
6158* Repeated tasks:: Items that show up again and again
4009494e
GM
6159@end menu
6160
6161@node Inserting deadline/schedule, Repeated tasks, Deadlines and scheduling, Deadlines and scheduling
a7808fba 6162@subsection Inserting deadlines or schedules
4009494e 6163
ce57c2fe
BG
6164The following commands allow you to quickly insert@footnote{The @samp{SCHEDULED} and
6165@samp{DEADLINE} dates are inserted on the line right below the headline. Don't put
6166any text between this line and the headline.} a deadline or to schedule
4009494e
GM
6167an item:
6168
6169@table @kbd
6170@c
acedf35c 6171@orgcmd{C-c C-d,org-deadline}
a351880d 6172Insert @samp{DEADLINE} keyword along with a stamp. The insertion will happen
ce57c2fe 6173in the line directly following the headline. Any CLOSED timestamp will be
91af3942 6174removed. When called with a prefix arg, an existing deadline will be removed
ce57c2fe 6175from the entry. Depending on the variable @code{org-log-redeadline}@footnote{with corresponding
a351880d
CD
6176@code{#+STARTUP} keywords @code{logredeadline}, @code{lognoteredeadline},
6177and @code{nologredeadline}}, a note will be taken when changing an existing
6178deadline.
ce57c2fe 6179
acedf35c 6180@orgcmd{C-c C-s,org-schedule}
4009494e 6181Insert @samp{SCHEDULED} keyword along with a stamp. The insertion will
a351880d
CD
6182happen in the line directly following the headline. Any CLOSED timestamp
6183will be removed. When called with a prefix argument, remove the scheduling
6184date from the entry. Depending on the variable
6185@code{org-log-reschedule}@footnote{with corresponding @code{#+STARTUP}
ce57c2fe
BG
6186keywords @code{logreschedule}, @code{lognotereschedule}, and
6187@code{nologreschedule}}, a note will be taken when changing an existing
a351880d 6188scheduling time.
b349f79f 6189@c
acedf35c 6190@orgcmd{C-c C-x C-k,org-mark-entry-for-agenda-action}
b349f79f
CD
6191@kindex k a
6192@kindex k s
b349f79f
CD
6193Mark the current entry for agenda action. After you have marked the entry
6194like this, you can open the agenda or the calendar to find an appropriate
6195date. With the cursor on the selected date, press @kbd{k s} or @kbd{k d} to
6196schedule the marked item.
c8d0cf5c 6197@c
acedf35c 6198@orgcmd{C-c / d,org-check-deadlines}
c8d0cf5c 6199@cindex sparse tree, for deadlines
c8d0cf5c
CD
6200@vindex org-deadline-warning-days
6201Create a sparse tree with all deadlines that are either past-due, or
6202which will become due within @code{org-deadline-warning-days}.
6203With @kbd{C-u} prefix, show all deadlines in the file. With a numeric
6204prefix, check that many days. For example, @kbd{C-1 C-c / d} shows
6205all deadlines due tomorrow.
6206@c
acedf35c 6207@orgcmd{C-c / b,org-check-before-date}
c8d0cf5c
CD
6208Sparse tree for deadlines and scheduled items before a given date.
6209@c
acedf35c 6210@orgcmd{C-c / a,org-check-after-date}
c8d0cf5c 6211Sparse tree for deadlines and scheduled items after a given date.
4009494e
GM
6212@end table
6213
ce57c2fe 6214Note that @code{org-schedule} and @code{org-deadline} supports
1df7defd 6215setting the date by indicating a relative time: e.g., +1d will set
ce57c2fe
BG
6216the date to the next day after today, and --1w will set the date
6217to the previous week before any current timestamp.
6218
4009494e 6219@node Repeated tasks, , Inserting deadline/schedule, Deadlines and scheduling
a7808fba 6220@subsection Repeated tasks
c8d0cf5c
CD
6221@cindex tasks, repeated
6222@cindex repeated tasks
4009494e 6223
e66ba1df 6224Some tasks need to be repeated again and again. Org mode helps to
28a16a1b 6225organize such tasks using a so-called repeater in a DEADLINE, SCHEDULED,
c8d0cf5c 6226or plain timestamp. In the following example
4009494e
GM
6227@example
6228** TODO Pay the rent
6229 DEADLINE: <2005-10-01 Sat +1m>
6230@end example
c8d0cf5c
CD
6231@noindent
6232the @code{+1m} is a repeater; the intended interpretation is that the task
6233has a deadline on <2005-10-01> and repeats itself every (one) month starting
8223b1d2
BG
6234from that time. You can use yearly, monthly, weekly, daily and hourly repeat
6235cookies by using the @code{y/w/m/d/h} letters. If you need both a repeater
6236and a special warning period in a deadline entry, the repeater should come
6237first and the warning period last: @code{DEADLINE: <2005-10-01 Sat +1m -3d>}.
4009494e 6238
86fbb8ca
CD
6239@vindex org-todo-repeat-to-state
6240Deadlines and scheduled items produce entries in the agenda when they are
6241over-due, so it is important to be able to mark such an entry as completed
6242once you have done so. When you mark a DEADLINE or a SCHEDULE with the TODO
6243keyword DONE, it will no longer produce entries in the agenda. The problem
6244with this is, however, that then also the @emph{next} instance of the
e66ba1df 6245repeated entry will not be active. Org mode deals with this in the following
86fbb8ca
CD
6246way: When you try to mark such an entry DONE (using @kbd{C-c C-t}), it will
6247shift the base date of the repeating timestamp by the repeater interval, and
6248immediately set the entry state back to TODO@footnote{In fact, the target
6249state is taken from, in this sequence, the @code{REPEAT_TO_STATE} property or
6250the variable @code{org-todo-repeat-to-state}. If neither of these is
6251specified, the target state defaults to the first state of the TODO state
6252sequence.}. In the example above, setting the state to DONE would actually
6253switch the date like this:
4009494e
GM
6254
6255@example
6256** TODO Pay the rent
6257 DEADLINE: <2005-11-01 Tue +1m>
6258@end example
6259
c8d0cf5c 6260@vindex org-log-repeat
a7808fba
CD
6261A timestamp@footnote{You can change this using the option
6262@code{org-log-repeat}, or the @code{#+STARTUP} options @code{logrepeat},
6263@code{lognoterepeat}, and @code{nologrepeat}. With @code{lognoterepeat}, you
a50253cc 6264will also be prompted for a note.} will be added under the deadline, to keep
a7808fba 6265a record that you actually acted on the previous instance of this deadline.
4009494e
GM
6266
6267As a consequence of shifting the base date, this entry will no longer be
6268visible in the agenda when checking past dates, but all future instances
6269will be visible.
6270
28a16a1b 6271With the @samp{+1m} cookie, the date shift will always be exactly one
c8d0cf5c 6272month. So if you have not paid the rent for three months, marking this
28a16a1b
CD
6273entry DONE will still keep it as an overdue deadline. Depending on the
6274task, this may not be the best way to handle it. For example, if you
acedf35c 6275forgot to call your father for 3 weeks, it does not make sense to call
a7808fba 6276him 3 times in a single day to make up for it. Finally, there are tasks
28a16a1b 6277like changing batteries which should always repeat a certain time
e66ba1df 6278@i{after} the last time you did it. For these tasks, Org mode has
acedf35c 6279special repeaters @samp{++} and @samp{.+}. For example:
28a16a1b
CD
6280
6281@example
6282** TODO Call Father
6283 DEADLINE: <2008-02-10 Sun ++1w>
6284 Marking this DONE will shift the date by at least one week,
6285 but also by as many weeks as it takes to get this date into
6286 the future. However, it stays on a Sunday, even if you called
6287 and marked it done on Saturday.
6288** TODO Check the batteries in the smoke detectors
6289 DEADLINE: <2005-11-01 Tue .+1m>
6290 Marking this DONE will shift the date to one month after
6291 today.
6292@end example
6293
271672fa
BG
6294@vindex org-agenda-skip-scheduled-if-deadline-is-shown
6295You may have both scheduling and deadline information for a specific task.
6296If the repeater is set for the scheduling information only, you probably want
6297the repeater to be ignored after the deadline. If so, set the variable
6298@code{org-agenda-skip-scheduled-if-deadline-is-shown} to
6299@code{repeated-after-deadline}. If you want both scheduling and deadline
6300information to repeat after the same interval, set the same repeater for both
6301timestamps.
c8d0cf5c
CD
6302
6303An alternative to using a repeater is to create a number of copies of a task
6304subtree, with dates shifted in each copy. The command @kbd{C-c C-x c} was
6305created for this purpose, it is described in @ref{Structure editing}.
6306
4009494e 6307
acedf35c 6308@node Clocking work time, Effort estimates, Deadlines and scheduling, Dates and Times
dbc28aaa 6309@section Clocking work time
acedf35c
CD
6310@cindex clocking time
6311@cindex time clocking
4009494e 6312
e66ba1df 6313Org mode allows you to clock the time you spend on specific tasks in a
8223b1d2
BG
6314project. When you start working on an item, you can start the clock. When
6315you stop working on that task, or when you mark the task done, the clock is
6316stopped and the corresponding time interval is recorded. It also computes
6317the total time spent on each subtree@footnote{Clocking only works if all
6318headings are indented with less than 30 stars. This is a hardcoded
6319limitation of `lmax' in `org-clock-sum'.} of a project. And it remembers a
6320history or tasks recently clocked, to that you can jump quickly between a
6321number of tasks absorbing your time.
c8d0cf5c 6322
a351880d 6323To save the clock history across Emacs sessions, use
c8d0cf5c 6324@lisp
a351880d 6325(setq org-clock-persist 'history)
c8d0cf5c
CD
6326(org-clock-persistence-insinuate)
6327@end lisp
a351880d
CD
6328When you clock into a new task after resuming Emacs, the incomplete
6329clock@footnote{To resume the clock under the assumption that you have worked
6330on this task while outside Emacs, use @code{(setq org-clock-persist t)}.}
6331will be found (@pxref{Resolving idle time}) and you will be prompted about
6332what to do with it.
c8d0cf5c 6333
acedf35c
CD
6334@menu
6335* Clocking commands:: Starting and stopping a clock
6336* The clock table:: Detailed reports
6337* Resolving idle time:: Resolving time when you've been idle
6338@end menu
6339
6340@node Clocking commands, The clock table, Clocking work time, Clocking work time
6341@subsection Clocking commands
6342
4009494e 6343@table @kbd
acedf35c 6344@orgcmd{C-c C-x C-i,org-clock-in}
c8d0cf5c 6345@vindex org-clock-into-drawer
8223b1d2 6346@vindex org-clock-continuously
ce57c2fe 6347@cindex property, LOG_INTO_DRAWER
4009494e 6348Start the clock on the current item (clock-in). This inserts the CLOCK
dbc28aaa
CD
6349keyword together with a timestamp. If this is not the first clocking of
6350this item, the multiple CLOCK lines will be wrapped into a
c8d0cf5c 6351@code{:LOGBOOK:} drawer (see also the variable
ce57c2fe
BG
6352@code{org-clock-into-drawer}). You can also overrule
6353the setting of this variable for a subtree by setting a
6354@code{CLOCK_INTO_DRAWER} or @code{LOG_INTO_DRAWER} property.
6355When called with a @kbd{C-u} prefix argument,
a7808fba 6356select the task from a list of recently clocked tasks. With two @kbd{C-u
8223b1d2
BG
6357C-u} prefixes, clock into the task at point and mark it as the default task;
6358the default task will then always be available with letter @kbd{d} when
6359selecting a clocking task. With three @kbd{C-u C-u C-u} prefixes, force
6360continuous clocking by starting the clock when the last clock stopped.@*
c8d0cf5c
CD
6361@cindex property: CLOCK_MODELINE_TOTAL
6362@cindex property: LAST_REPEAT
6363@vindex org-clock-modeline-total
6364While the clock is running, the current clocking time is shown in the mode
6365line, along with the title of the task. The clock time shown will be all
6366time ever clocked for this task and its children. If the task has an effort
6367estimate (@pxref{Effort estimates}), the mode line displays the current
6368clocking time against it@footnote{To add an effort estimate ``on the fly'',
6369hook a function doing this to @code{org-clock-in-prepare-hook}.} If the task
6370is a repeating one (@pxref{Repeated tasks}), only the time since the last
6371reset of the task @footnote{as recorded by the @code{LAST_REPEAT} property}
6372will be shown. More control over what time is shown can be exercised with
6373the @code{CLOCK_MODELINE_TOTAL} property. It may have the values
6374@code{current} to show only the current clocking instance, @code{today} to
6375show all time clocked on this tasks today (see also the variable
6376@code{org-extend-today-until}), @code{all} to include all time, or
6377@code{auto} which is the default@footnote{See also the variable
6378@code{org-clock-modeline-total}.}.@* Clicking with @kbd{mouse-1} onto the
6379mode line entry will pop up a menu with clocking options.
acedf35c
CD
6380@c
6381@orgcmd{C-c C-x C-o,org-clock-out}
c8d0cf5c 6382@vindex org-log-note-clock-out
a20d3598 6383Stop the clock (clock-out). This inserts another timestamp at the same
4009494e
GM
6384location where the clock was last started. It also directly computes
6385the resulting time in inserts it after the time range as @samp{=>
28a16a1b
CD
6386HH:MM}. See the variable @code{org-log-note-clock-out} for the
6387possibility to record an additional note together with the clock-out
c8d0cf5c 6388timestamp@footnote{The corresponding in-buffer setting is:
28a16a1b 6389@code{#+STARTUP: lognoteclock-out}}.
8223b1d2
BG
6390@orgcmd{C-c C-x C-x,org-clock-in-last}
6391@vindex org-clock-continuously
6392Reclock the last clocked task. With one @kbd{C-u} prefix argument,
6393select the task from the clock history. With two @kbd{C-u} prefixes,
6394force continuous clocking by starting the clock when the last clock
6395stopped.
acedf35c 6396@orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
c8d0cf5c 6397Update the effort estimate for the current clock task.
4009494e 6398@kindex C-c C-y
c8d0cf5c 6399@kindex C-c C-c
acedf35c 6400@orgcmdkkc{C-c C-c,C-c C-y,org-evaluate-time-range}
c8d0cf5c
CD
6401Recompute the time interval after changing one of the timestamps. This
6402is only necessary if you edit the timestamps directly. If you change
4009494e 6403them with @kbd{S-@key{cursor}} keys, the update is automatic.
ce57c2fe 6404@orgcmd{C-S-@key{up/down},org-clock-timestamps-up/down}
8223b1d2 6405On @code{CLOCK} log lines, increase/decrease both timestamps so that the
735135f9 6406clock duration keeps the same.
8223b1d2
BG
6407@orgcmd{S-M-@key{up/down},org-timestamp-up/down}
6408On @code{CLOCK} log lines, increase/decrease the timestamp at point and
6409the one of the previous (or the next clock) timestamp by the same duration.
6410For example, if you hit @kbd{S-M-@key{up}} to increase a clocked-out timestamp
6411by five minutes, then the clocked-in timestamp of the next clock will be
6412increased by five minutes.
acedf35c 6413@orgcmd{C-c C-t,org-todo}
4009494e
GM
6414Changing the TODO state of an item to DONE automatically stops the clock
6415if it is running in this same item.
8223b1d2 6416@orgcmd{C-c C-x C-q,org-clock-cancel}
4009494e
GM
6417Cancel the current clock. This is useful if a clock was started by
6418mistake, or if you ended up working on something else.
acedf35c 6419@orgcmd{C-c C-x C-j,org-clock-goto}
afe98dfa
CD
6420Jump to the headline of the currently clocked in task. With a @kbd{C-u}
6421prefix arg, select the target task from a list of recently clocked tasks.
acedf35c 6422@orgcmd{C-c C-x C-d,org-clock-display}
c8d0cf5c 6423@vindex org-remove-highlights-with-change
ce57c2fe
BG
6424Display time summaries for each subtree in the current buffer. This puts
6425overlays at the end of each headline, showing the total time recorded under
6426that heading, including the time of any subheadings. You can use visibility
6427cycling to study the tree, but the overlays disappear when you change the
6428buffer (see variable @code{org-remove-highlights-with-change}) or press
6429@kbd{C-c C-c}.
acedf35c
CD
6430@end table
6431
6432The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
6433the agenda (@pxref{Weekly/daily agenda}) to show which tasks have been
6434worked on or closed during a day.
6435
8223b1d2
BG
6436@strong{Important:} note that both @code{org-clock-out} and
6437@code{org-clock-in-last} can have a global keybinding and will not
6438modify the window disposition.
6439
acedf35c
CD
6440@node The clock table, Resolving idle time, Clocking commands, Clocking work time
6441@subsection The clock table
6442@cindex clocktable, dynamic block
6443@cindex report, of clocked time
6444
6445Org mode can produce quite complex reports based on the time clocking
6446information. Such a report is called a @emph{clock table}, because it is
6447formatted as one or several Org tables.
6448
6449@table @kbd
6450@orgcmd{C-c C-x C-r,org-clock-report}
4009494e 6451Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
e66ba1df 6452report as an Org mode table into the current file. When the cursor is
dbc28aaa
CD
6453at an existing clock table, just update it. When called with a prefix
6454argument, jump to the first clock report in the current document and
e66ba1df
BG
6455update it. The clock table always includes also trees with
6456@code{:ARCHIVE:} tag.
acedf35c
CD
6457@orgcmdkkc{C-c C-c,C-c C-x C-u,org-dblock-update}
6458Update dynamic block at point. The cursor needs to be in the
6459@code{#+BEGIN} line of the dynamic block.
6460@orgkey{C-u C-c C-x C-u}
6461Update all dynamic blocks (@pxref{Dynamic blocks}). This is useful if
6462you have several clock table blocks in a buffer.
6463@orgcmdkxkc{S-@key{left},S-@key{right},org-clocktable-try-shift}
6464Shift the current @code{:block} interval and update the table. The cursor
6465needs to be in the @code{#+BEGIN: clocktable} line for this command. If
6466@code{:block} is @code{today}, it will be shifted to @code{today-1} etc.
6467@end table
6468
6469
6470Here is an example of the frame for a clock table as it is inserted into the
6471buffer with the @kbd{C-c C-x C-r} command:
6472
c8d0cf5c 6473@cindex #+BEGIN, clocktable
4009494e 6474@example
dbc28aaa 6475#+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
4009494e
GM
6476#+END: clocktable
6477@end example
6478@noindent
acedf35c
CD
6479@vindex org-clocktable-defaults
6480The @samp{BEGIN} line and specify a number of options to define the scope,
6481structure, and formatting of the report. Defaults for all these options can
6482be configured in the variable @code{org-clocktable-defaults}.
6483
6484@noindent First there are options that determine which clock entries are to
6485be selected:
4009494e 6486@example
dbc28aaa 6487:maxlevel @r{Maximum level depth to which times are listed in the table.}
acedf35c 6488 @r{Clocks at deeper levels will be summed into the upper level.}
dbc28aaa
CD
6489:scope @r{The scope to consider. This can be any of the following:}
6490 nil @r{the current buffer or narrowed region}
6491 file @r{the full current buffer}
6492 subtree @r{the subtree where the clocktable is located}
c8d0cf5c 6493 tree@var{N} @r{the surrounding level @var{N} tree, for example @code{tree3}}
dbc28aaa
CD
6494 tree @r{the surrounding level 1 tree}
6495 agenda @r{all agenda files}
6496 ("file"..) @r{scan these files}
a7808fba
CD
6497 file-with-archives @r{current file and its archives}
6498 agenda-with-archives @r{all agenda files, including archives}
6499:block @r{The time block to consider. This block is specified either}
6500 @r{absolute, or relative to the current time and may be any of}
6501 @r{these formats:}
6502 2007-12-31 @r{New year eve 2007}
6503 2007-12 @r{December 2007}
6504 2007-W50 @r{ISO-week 50 in 2007}
acedf35c 6505 2007-Q2 @r{2nd quarter in 2007}
a7808fba 6506 2007 @r{the year 2007}
c8d0cf5c
CD
6507 today, yesterday, today-@var{N} @r{a relative day}
6508 thisweek, lastweek, thisweek-@var{N} @r{a relative week}
6509 thismonth, lastmonth, thismonth-@var{N} @r{a relative month}
6510 thisyear, lastyear, thisyear-@var{N} @r{a relative year}
a7808fba 6511 @r{Use @kbd{S-@key{left}/@key{right}} keys to shift the time interval.}
c8d0cf5c 6512:tstart @r{A time string specifying when to start considering times.}
271672fa
BG
6513 @r{Relative times like @code{"<-2w>"} can also be used. See}
6514 @r{@ref{Matching tags and properties} for relative time syntax.}
c8d0cf5c 6515:tend @r{A time string specifying when to stop considering times.}
271672fa
BG
6516 @r{Relative times like @code{"<now>"} can also be used. See}
6517 @r{@ref{Matching tags and properties} for relative time syntax.}
6518:wstart @r{The starting day of the week. The default is 1 for monday.}
6519:mstart @r{The starting day of the month. The default 1 is for the first}
6520 @r{day of the month.}
a7808fba
CD
6521:step @r{@code{week} or @code{day}, to split the table into chunks.}
6522 @r{To use this, @code{:block} or @code{:tstart}, @code{:tend} are needed.}
acedf35c
CD
6523:stepskip0 @r{Do not show steps that have zero time.}
6524:fileskip0 @r{Do not show table sections from files which did not contribute.}
ce57c2fe
BG
6525:tags @r{A tags match to select entries that should contribute. See}
6526 @r{@ref{Matching tags and properties} for the match syntax.}
acedf35c
CD
6527@end example
6528
6529Then there are options which determine the formatting of the table. There
6530options are interpreted by the function @code{org-clocktable-write-default},
6531but you can specify your own function using the @code{:formatter} parameter.
6532@example
6533:emphasize @r{When @code{t}, emphasize level one and level two items.}
ce57c2fe 6534: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 6535:link @r{Link the item headlines in the table to their origins.}
acedf35c
CD
6536:narrow @r{An integer to limit the width of the headline column in}
6537 @r{the org table. If you write it like @samp{50!}, then the}
6538 @r{headline will also be shortened in export.}
6539:indent @r{Indent each headline field according to its level.}
6540:tcolumns @r{Number of columns to be used for times. If this is smaller}
6541 @r{than @code{:maxlevel}, lower levels will be lumped into one column.}
6542:level @r{Should a level number column be included?}
6543:compact @r{Abbreviation for @code{:level nil :indent t :narrow 40! :tcolumns 1}}
6544 @r{All are overwritten except if there is an explicit @code{:narrow}}
6545:timestamp @r{A timestamp for the entry, when available. Look for SCHEDULED,}
6546 @r{DEADLINE, TIMESTAMP and TIMESTAMP_IA, in this order.}
ce57c2fe
BG
6547:properties @r{List of properties that should be shown in the table. Each}
6548 @r{property will get its own column.}
6549:inherit-props @r{When this flag is @code{t}, the values for @code{:properties} will be inherited.}
e45e3595 6550:formula @r{Content of a @code{#+TBLFM} line to be added and evaluated.}
c8d0cf5c 6551 @r{As a special case, @samp{:formula %} adds a column with % time.}
acedf35c 6552 @r{If you do not specify a formula here, any existing formula}
e45e3595 6553 @r{below the clock table will survive updates and be evaluated.}
acedf35c 6554:formatter @r{A function to format clock data and insert it into the buffer.}
4009494e 6555@end example
c8d0cf5c 6556To get a clock summary of the current level 1 tree, for the current
dbc28aaa 6557day, you could write
4009494e 6558@example
a7808fba 6559#+BEGIN: clocktable :maxlevel 2 :block today :scope tree1 :link t
4009494e
GM
6560#+END: clocktable
6561@end example
c8d0cf5c 6562@noindent
4009494e 6563and to use a specific time range you could write@footnote{Note that all
c8d0cf5c
CD
6564parameters must be specified in a single line---the line is broken here
6565only to fit it into the manual.}
4009494e 6566@example
28a16a1b 6567#+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>"
4009494e 6568 :tend "<2006-08-10 Thu 12:00>"
4009494e
GM
6569#+END: clocktable
6570@end example
271672fa
BG
6571A range starting a week ago and ending right now could be written as
6572@example
6573#+BEGIN: clocktable :tstart "<-1w>" :tend "<now>"
6574#+END: clocktable
6575@end example
e45e3595
CD
6576A summary of the current subtree with % times would be
6577@example
6578#+BEGIN: clocktable :scope subtree :link t :formula %
6579#+END: clocktable
6580@end example
acedf35c
CD
6581A horizontally compact representation of everything clocked during last week
6582would be
6583@example
6584#+BEGIN: clocktable :scope agenda :block lastweek :compact t
6585#+END: clocktable
6586@end example
4009494e 6587
acedf35c 6588@node Resolving idle time, , The clock table, Clocking work time
8223b1d2
BG
6589@subsection Resolving idle time and continuous clocking
6590
6591@subsubheading Resolving idle time
a351880d 6592@cindex resolve idle time
271672fa 6593@vindex org-clock-x11idle-program-name
a351880d
CD
6594
6595@cindex idle, resolve, dangling
6596If you clock in on a work item, and then walk away from your
6597computer---perhaps to take a phone call---you often need to ``resolve'' the
6598time you were away by either subtracting it from the current clock, or
6599applying it to another one.
6600
6601@vindex org-clock-idle-time
6602By customizing the variable @code{org-clock-idle-time} to some integer, such
6603as 10 or 15, Emacs can alert you when you get back to your computer after
6604being idle for that many minutes@footnote{On computers using Mac OS X,
153ae947 6605idleness is based on actual user idleness, not just Emacs' idle time. For
a351880d 6606X11, you can install a utility program @file{x11idle.c}, available in the
271672fa
BG
6607@code{contrib/scripts} directory of the Org git distribution, or install the
6608@file{xprintidle} package and set it to the variable
6609@code{org-clock-x11idle-program-name} if you are running Debian, to get the
6610same general treatment of idleness. On other systems, idle time refers to
6611Emacs idle time only.}, and ask what you want to do with the idle time.
6612There will be a question waiting for you when you get back, indicating how
6613much idle time has passed (constantly updated with the current amount), as
6614well as a set of choices to correct the discrepancy:
a351880d
CD
6615
6616@table @kbd
6617@item k
6618To keep some or all of the minutes and stay clocked in, press @kbd{k}. Org
6619will ask how many of the minutes to keep. Press @key{RET} to keep them all,
6620effectively changing nothing, or enter a number to keep that many minutes.
6621@item K
6622If you use the shift key and press @kbd{K}, it will keep however many minutes
6623you request and then immediately clock out of that task. If you keep all of
6624the minutes, this is the same as just clocking out of the current task.
6625@item s
6626To keep none of the minutes, use @kbd{s} to subtract all the away time from
6627the clock, and then check back in from the moment you returned.
6628@item S
6629To keep none of the minutes and just clock out at the start of the away time,
6630use the shift key and press @kbd{S}. Remember that using shift will always
6631leave you clocked out, no matter which option you choose.
6632@item C
6633To cancel the clock altogether, use @kbd{C}. Note that if instead of
86fbb8ca
CD
6634canceling you subtract the away time, and the resulting clock amount is less
6635than a minute, the clock will still be canceled rather than clutter up the
a351880d
CD
6636log with an empty entry.
6637@end table
6638
6639What if you subtracted those away minutes from the current clock, and now
6640want to apply them to a new clock? Simply clock in to any task immediately
6641after the subtraction. Org will notice that you have subtracted time ``on
6642the books'', so to speak, and will ask if you want to apply those minutes to
6643the next task you clock in on.
6644
6645There is one other instance when this clock resolution magic occurs. Say you
6646were clocked in and hacking away, and suddenly your cat chased a mouse who
6647scared a hamster that crashed into your UPS's power button! You suddenly
6648lose all your buffers, but thanks to auto-save you still have your recent Org
6649mode changes, including your last clock in.
6650
6651If you restart Emacs and clock into any task, Org will notice that you have a
6652dangling clock which was never clocked out from your last session. Using
6653that clock's starting time as the beginning of the unaccounted-for period,
6654Org will ask how you want to resolve that time. The logic and behavior is
ce57c2fe 6655identical to dealing with away time due to idleness; it is just happening due
a351880d
CD
6656to a recovery event rather than a set amount of idle time.
6657
6658You can also check all the files visited by your Org agenda for dangling
8223b1d2
BG
6659clocks at any time using @kbd{M-x org-resolve-clocks RET} (or @kbd{C-c C-x C-z}).
6660
6661@subsubheading Continuous clocking
6662@cindex continuous clocking
6663@vindex org-clock-continuously
6664
6665You may want to start clocking from the time when you clocked out the
6666previous task. To enable this systematically, set @code{org-clock-continuously}
6667to @code{t}. Each time you clock in, Org retrieves the clock-out time of the
6668last clocked entry for this session, and start the new clock from there.
6669
6670If you only want this from time to time, use three universal prefix arguments
6671with @code{org-clock-in} and two @kbd{C-u C-u} with @code{org-clock-in-last}.
a351880d 6672
acedf35c 6673@node Effort estimates, Relative timer, Clocking work time, Dates and Times
a7808fba 6674@section Effort estimates
96c8522a 6675@cindex effort estimates
a7808fba 6676
c8d0cf5c
CD
6677@cindex property, Effort
6678@vindex org-effort-property
a7808fba
CD
6679If you want to plan your work in a very detailed way, or if you need to
6680produce offers with quotations of the estimated work effort, you may want to
6681assign effort estimates to entries. If you are also clocking your work, you
6682may later want to compare the planned effort with the actual working time, a
6683great way to improve planning estimates. Effort estimates are stored in a
6684special property @samp{Effort}@footnote{You may change the property being
6eb02347
CD
6685used with the variable @code{org-effort-property}.}. You can set the effort
6686for an entry with the following commands:
6687
6688@table @kbd
acedf35c 6689@orgcmd{C-c C-x e,org-set-effort}
6eb02347 6690Set the effort estimate for the current entry. With a numeric prefix
acedf35c 6691argument, set it to the Nth allowed value (see below). This command is also
6eb02347 6692accessible from the agenda with the @kbd{e} key.
acedf35c 6693@orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
6eb02347
CD
6694Modify the effort estimate of the item currently being clocked.
6695@end table
6696
6697Clearly the best way to work with effort estimates is through column view
6698(@pxref{Column view}). You should start by setting up discrete values for
6699effort estimates, and a @code{COLUMNS} format that displays these values
6700together with clock sums (if you want to clock your time). For a specific
6701buffer you can use
a7808fba
CD
6702
6703@example
ce57c2fe 6704#+PROPERTY: Effort_ALL 0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00
a7808fba
CD
6705#+COLUMNS: %40ITEM(Task) %17Effort(Estimated Effort)@{:@} %CLOCKSUM
6706@end example
6707
6708@noindent
c8d0cf5c
CD
6709@vindex org-global-properties
6710@vindex org-columns-default-format
71d35b24
CD
6711or, even better, you can set up these values globally by customizing the
6712variables @code{org-global-properties} and @code{org-columns-default-format}.
6713In particular if you want to use this setup also in the agenda, a global
6714setup may be advised.
a7808fba
CD
6715
6716The way to assign estimates to individual items is then to switch to column
6717mode, and to use @kbd{S-@key{right}} and @kbd{S-@key{left}} to change the
6718value. The values you enter will immediately be summed up in the hierarchy.
6719In the column next to it, any clocked time will be displayed.
6720
c8d0cf5c 6721@vindex org-agenda-columns-add-appointments-to-effort-sum
a7808fba
CD
6722If you switch to column view in the daily/weekly agenda, the effort column
6723will summarize the estimated work effort for each day@footnote{Please note
6724the pitfalls of summing hierarchical data in a flat list (@pxref{Agenda
b349f79f 6725column view}).}, and you can use this to find space in your schedule. To get
a7808fba
CD
6726an overview of the entire part of the day that is committed, you can set the
6727option @code{org-agenda-columns-add-appointments-to-effort-sum}. The
6728appointments on a day that take place over a specified time interval will
6729then also be added to the load estimate of the day.
6730
71d35b24
CD
6731Effort estimates can be used in secondary agenda filtering that is triggered
6732with the @kbd{/} key in the agenda (@pxref{Agenda commands}). If you have
6733these estimates defined consistently, two or three key presses will narrow
6734down the list to stuff that fits into an available time slot.
864c9740 6735
afe98dfa 6736@node Relative timer, Countdown timer, Effort estimates, Dates and Times
96c8522a
CD
6737@section Taking notes with a relative timer
6738@cindex relative timer
6739
6740When taking notes during, for example, a meeting or a video viewing, it can
6741be useful to have access to times relative to a starting time. Org provides
6742such a relative timer and make it easy to create timed notes.
6743
6744@table @kbd
acedf35c 6745@orgcmd{C-c C-x .,org-timer}
96c8522a
CD
6746Insert a relative time into the buffer. The first time you use this, the
6747timer will be started. When called with a prefix argument, the timer is
6748restarted.
acedf35c 6749@orgcmd{C-c C-x -,org-timer-item}
96c8522a
CD
6750Insert a description list item with the current relative time. With a prefix
6751argument, first reset the timer to 0.
acedf35c 6752@orgcmd{M-@key{RET},org-insert-heading}
377952e0 6753Once the timer list is started, you can also use @kbd{M-@key{RET}} to insert
96c8522a 6754new timer items.
acedf35c 6755@c for key sequences with a comma, command name macros fail :(
55e0839d
CD
6756@kindex C-c C-x ,
6757@item C-c C-x ,
acedf35c
CD
6758Pause the timer, or continue it if it is already paused
6759(@command{org-timer-pause-or-continue}).
c8d0cf5c 6760@c removed the sentence because it is redundant to the following item
55e0839d
CD
6761@kindex C-u C-c C-x ,
6762@item C-u C-c C-x ,
6763Stop the timer. After this, you can only start a new timer, not continue the
6764old one. This command also removes the timer from the mode line.
acedf35c 6765@orgcmd{C-c C-x 0,org-timer-start}
96c8522a
CD
6766Reset the timer without inserting anything into the buffer. By default, the
6767timer is reset to 0. When called with a @kbd{C-u} prefix, reset the timer to
6768specific starting offset. The user is prompted for the offset, with a
6769default taken from a timer string at point, if any, So this can be used to
6770restart taking notes after a break in the process. When called with a double
86fbb8ca 6771prefix argument @kbd{C-u C-u}, change all timer strings in the active region
96c8522a
CD
6772by a certain amount. This can be used to fix timer strings if the timer was
6773not started at exactly the right moment.
6774@end table
6775
afe98dfa
CD
6776@node Countdown timer, , Relative timer, Dates and Times
6777@section Countdown timer
6778@cindex Countdown timer
6779@kindex C-c C-x ;
6780@kindex ;
6781
e66ba1df 6782Calling @code{org-timer-set-timer} from an Org mode buffer runs a countdown
27e428e7 6783timer. Use @kbd{;} from agenda buffers, @key{C-c C-x ;} everywhere else.
afe98dfa
CD
6784
6785@code{org-timer-set-timer} prompts the user for a duration and displays a
6786countdown timer in the modeline. @code{org-timer-default-timer} sets the
6787default countdown value. Giving a prefix numeric argument overrides this
6788default value.
6789
a351880d
CD
6790@node Capture - Refile - Archive, Agenda Views, Dates and Times, Top
6791@chapter Capture - Refile - Archive
864c9740
CD
6792@cindex capture
6793
6794An important part of any organization system is the ability to quickly
6795capture new ideas and tasks, and to associate reference material with them.
86fbb8ca 6796Org does this using a process called @i{capture}. It also can store files
a351880d
CD
6797related to a task (@i{attachments}) in a special directory. Once in the
6798system, tasks and projects need to be moved around. Moving completed project
6799trees to an archive file keeps the system compact and fast.
864c9740
CD
6800
6801@menu
c0468714
GM
6802* Capture:: Capturing new stuff
6803* Attachments:: Add files to tasks
6804* RSS Feeds:: Getting input from RSS feeds
1df7defd 6805* Protocols:: External (e.g., Browser) access to Emacs and Org
271672fa 6806* Refile and copy:: Moving/copying a tree from one place to another
c0468714 6807* Archiving:: What to do with finished projects
864c9740
CD
6808@end menu
6809
86fbb8ca
CD
6810@node Capture, Attachments, Capture - Refile - Archive, Capture - Refile - Archive
6811@section Capture
6812@cindex capture
dbc28aaa 6813
271672fa
BG
6814Capture lets you quickly store notes with little interruption of your work
6815flow. Org's method for capturing new items is heavily inspired by John
6816Wiegley excellent @file{remember.el} package. Up to version 6.36, Org
6817used a special setup for @file{remember.el}, then replaced it with
6818@file{org-remember.el}. As of version 8.0, @file{org-remember.el} has
6819been completely replaced by @file{org-capture.el}.
86fbb8ca 6820
271672fa
BG
6821If your configuration depends on @file{org-remember.el}, you need to update
6822it and use the setup described below. To convert your
6823@code{org-remember-templates}, run the command
86fbb8ca 6824@example
271672fa 6825@kbd{M-x org-capture-import-remember-templates RET}
86fbb8ca
CD
6826@end example
6827@noindent and then customize the new variable with @kbd{M-x
6828customize-variable org-capture-templates}, check the result, and save the
271672fa 6829customization.
dbc28aaa
CD
6830
6831@menu
c0468714
GM
6832* Setting up capture:: Where notes will be stored
6833* Using capture:: Commands to invoke and terminate capture
6834* Capture templates:: Define the outline of different note types
dbc28aaa
CD
6835@end menu
6836
86fbb8ca
CD
6837@node Setting up capture, Using capture, Capture, Capture
6838@subsection Setting up capture
dbc28aaa 6839
86fbb8ca
CD
6840The following customization sets a default target file for notes, and defines
6841a global key@footnote{Please select your own key, @kbd{C-c c} is only a
6842suggestion.} for capturing new material.
dbc28aaa 6843
afe98dfa 6844@vindex org-default-notes-file
271672fa
BG
6845@smalllisp
6846@group
dbc28aaa 6847(setq org-default-notes-file (concat org-directory "/notes.org"))
86fbb8ca 6848(define-key global-map "\C-cc" 'org-capture)
271672fa
BG
6849@end group
6850@end smalllisp
dbc28aaa 6851
86fbb8ca
CD
6852@node Using capture, Capture templates, Setting up capture, Capture
6853@subsection Using capture
28a16a1b 6854
86fbb8ca 6855@table @kbd
acedf35c
CD
6856@orgcmd{C-c c,org-capture}
6857Call the command @code{org-capture}. Note that this keybinding is global and
c7cf0ebc 6858not active by default: you need to install it. If you have templates
ce57c2fe 6859@cindex date tree
acedf35c
CD
6860defined @pxref{Capture templates}, it will offer these templates for
6861selection or use a new Org outline node as the default template. It will
6862insert the template into the target file and switch to an indirect buffer
6863narrowed to this new node. You may then insert the information you want.
6864
6865@orgcmd{C-c C-c,org-capture-finalize}
6866Once you have finished entering information into the capture buffer, @kbd{C-c
6867C-c} will return you to the window configuration before the capture process,
6868so that you can resume your work without further distraction. When called
6869with a prefix arg, finalize and then jump to the captured item.
6870
6871@orgcmd{C-c C-w,org-capture-refile}
271672fa 6872Finalize the capture process by refiling (@pxref{Refile and copy}) the note to
afe98dfa 6873a different place. Please realize that this is a normal refiling command
acedf35c 6874that will be executed---so the cursor position at the moment you run this
afe98dfa 6875command is important. If you have inserted a tree with a parent and
acedf35c
CD
6876children, first move the cursor back to the parent. Any prefix argument
6877given to this command will be passed on to the @code{org-refile} command.
86fbb8ca 6878
acedf35c 6879@orgcmd{C-c C-k,org-capture-kill}
86fbb8ca 6880Abort the capture process and return to the previous state.
acedf35c 6881
86fbb8ca
CD
6882@end table
6883
6884You can also call @code{org-capture} in a special way from the agenda, using
6885the @kbd{k c} key combination. With this access, any timestamps inserted by
6886the selected capture template will default to the cursor date in the agenda,
6887rather than to the current date.
6888
acedf35c
CD
6889To find the locations of the last stored capture, use @code{org-capture} with
6890prefix commands:
6891
6892@table @kbd
6893@orgkey{C-u C-c c}
ce57c2fe 6894Visit the target location of a capture template. You get to select the
acedf35c
CD
6895template in the usual way.
6896@orgkey{C-u C-u C-c c}
6897Visit the last stored capture item in its buffer.
6898@end table
6899
8223b1d2
BG
6900@vindex org-capture-bookmark
6901@cindex org-capture-last-stored
6902You can also jump to the bookmark @code{org-capture-last-stored}, which will
6903automatically be created unless you set @code{org-capture-bookmark} to
6904@code{nil}.
6905
6906To insert the capture at point in an Org buffer, call @code{org-capture} with
6907a @code{C-0} prefix argument.
6908
86fbb8ca
CD
6909@node Capture templates, , Using capture, Capture
6910@subsection Capture templates
6911@cindex templates, for Capture
6912
6913You can use templates for different types of capture items, and
6914for different target locations. The easiest way to create such templates is
6915through the customize interface.
6916
6917@table @kbd
acedf35c 6918@orgkey{C-c c C}
86fbb8ca
CD
6919Customize the variable @code{org-capture-templates}.
6920@end table
6921
6922Before we give the formal description of template definitions, let's look at
6923an example. Say you would like to use one template to create general TODO
6924entries, and you want to put these entries under the heading @samp{Tasks} in
6925your file @file{~/org/gtd.org}. Also, a date tree in the file
6926@file{journal.org} should capture journal entries. A possible configuration
6927would look like:
28a16a1b 6928
271672fa
BG
6929@smalllisp
6930@group
86fbb8ca
CD
6931(setq org-capture-templates
6932 '(("t" "Todo" entry (file+headline "~/org/gtd.org" "Tasks")
6933 "* TODO %?\n %i\n %a")
6934 ("j" "Journal" entry (file+datetree "~/org/journal.org")
6935 "* %?\nEntered on %U\n %i\n %a")))
271672fa
BG
6936@end group
6937@end smalllisp
86fbb8ca
CD
6938
6939@noindent If you then press @kbd{C-c c t}, Org will prepare the template
6940for you like this:
dbc28aaa
CD
6941@example
6942* TODO
86fbb8ca 6943 [[file:@var{link to where you initiated capture}]]
dbc28aaa
CD
6944@end example
6945
6946@noindent
86fbb8ca
CD
6947During expansion of the template, @code{%a} has been replaced by a link to
6948the location from where you called the capture command. This can be
6949extremely useful for deriving tasks from emails, for example. You fill in
271672fa 6950the task definition, press @kbd{C-c C-c} and Org returns you to the same
86fbb8ca
CD
6951place where you started the capture process.
6952
ce57c2fe
BG
6953To define special keys to capture to a particular template without going
6954through the interactive template selection, you can create your key binding
6955like this:
6956
6957@lisp
6958(define-key global-map "\C-cx"
6959 (lambda () (interactive) (org-capture nil "x")))
6960@end lisp
86fbb8ca
CD
6961
6962@menu
c0468714
GM
6963* Template elements:: What is needed for a complete template entry
6964* Template expansion:: Filling in information about time and context
8223b1d2 6965* Templates in contexts:: Only show a template in a specific context
86fbb8ca
CD
6966@end menu
6967
6968@node Template elements, Template expansion, Capture templates, Capture templates
6969@subsubsection Template elements
6970
e66ba1df 6971Now lets look at the elements of a template definition. Each entry in
ce57c2fe 6972@code{org-capture-templates} is a list with the following items:
86fbb8ca
CD
6973
6974@table @var
6975@item keys
6976The keys that will select the template, as a string, characters
6977only, for example @code{"a"} for a template to be selected with a
6978single key, or @code{"bt"} for selection with two keys. When using
ce57c2fe 6979several keys, keys using the same prefix key must be sequential
86fbb8ca
CD
6980in the list and preceded by a 2-element entry explaining the
6981prefix key, for example
271672fa 6982@smalllisp
86fbb8ca 6983 ("b" "Templates for marking stuff to buy")
271672fa 6984@end smalllisp
86fbb8ca
CD
6985@noindent If you do not define a template for the @kbd{C} key, this key will
6986be used to open the customize buffer for this complex variable.
6987
6988@item description
6989A short string describing the template, which will be shown during
6990selection.
6991
6992@item type
6993The type of entry, a symbol. Valid values are:
271672fa 6994
86fbb8ca
CD
6995@table @code
6996@item entry
e66ba1df
BG
6997An Org mode node, with a headline. Will be filed as the child of the target
6998entry or as a top-level entry. The target file should be an Org mode file.
86fbb8ca
CD
6999@item item
7000A plain list item, placed in the first plain list at the target
7001location. Again the target file should be an Org file.
7002@item checkitem
7003A checkbox item. This only differs from the plain list item by the
7004default template.
7005@item table-line
7006a new line in the first table at the target location. Where exactly the
7007line will be inserted depends on the properties @code{:prepend} and
7008@code{:table-line-pos} (see below).
7009@item plain
7010Text to be inserted as it is.
7011@end table
7012
7013@item target
afe98dfa 7014@vindex org-default-notes-file
e66ba1df 7015Specification of where the captured item should be placed. In Org mode
afe98dfa 7016files, targets usually define a node. Entries will become children of this
acedf35c 7017node. Other types will be added to the table or list in the body of this
afe98dfa 7018node. Most target specifications contain a file name. If that file name is
ce57c2fe
BG
7019the empty string, it defaults to @code{org-default-notes-file}. A file can
7020also be given as a variable, function, or Emacs Lisp form.
86fbb8ca
CD
7021
7022Valid values are:
271672fa 7023
86fbb8ca
CD
7024@table @code
7025@item (file "path/to/file")
7026Text will be placed at the beginning or end of that file.
7027
7028@item (id "id of existing org entry")
7029Filing as child of this entry, or in the body of the entry.
7030
7031@item (file+headline "path/to/file" "node headline")
7032Fast configuration if the target heading is unique in the file.
7033
7034@item (file+olp "path/to/file" "Level 1 heading" "Level 2" ...)
7035For non-unique headings, the full path is safer.
7036
7037@item (file+regexp "path/to/file" "regexp to find location")
7038Use a regular expression to position the cursor.
7039
7040@item (file+datetree "path/to/file")
271672fa
BG
7041Will create a heading in a date tree for today's date@footnote{Datetree
7042headlines for years accept tags, so if you use both @code{* 2013 :noexport:}
7043and @code{* 2013} in your file, the capture will refile the note to the first
7044one matched.}.
acedf35c
CD
7045
7046@item (file+datetree+prompt "path/to/file")
7047Will create a heading in a date tree, but will prompt for the date.
86fbb8ca
CD
7048
7049@item (file+function "path/to/file" function-finding-location)
7050A function to find the right location in the file.
7051
7052@item (clock)
7053File to the entry that is currently being clocked.
7054
7055@item (function function-finding-location)
7056Most general way, write your own function to find both
7057file and location.
7058@end table
7059
7060@item template
7061The template for creating the capture item. If you leave this empty, an
7062appropriate default template will be used. Otherwise this is a string with
7063escape codes, which will be replaced depending on time and context of the
7064capture call. The string with escapes may be loaded from a template file,
7065using the special syntax @code{(file "path/to/template")}. See below for
7066more details.
7067
7068@item properties
7069The rest of the entry is a property list of additional options.
7070Recognized properties are:
271672fa 7071
86fbb8ca
CD
7072@table @code
7073@item :prepend
7074Normally new captured information will be appended at
7075the target location (last child, last table line, last list item...).
7076Setting this property will change that.
7077
7078@item :immediate-finish
7079When set, do not offer to edit the information, just
7080file it away immediately. This makes sense if the template only needs
7081information that can be added automatically.
7082
7083@item :empty-lines
7084Set this to the number of lines to insert
7085before and after the new item. Default 0, only common other value is 1.
7086
7087@item :clock-in
7088Start the clock in this item.
7089
ce57c2fe
BG
7090@item :clock-keep
7091Keep the clock running when filing the captured entry.
7092
86fbb8ca
CD
7093@item :clock-resume
7094If starting the capture interrupted a clock, restart that clock when finished
ce57c2fe
BG
7095with the capture. Note that @code{:clock-keep} has precedence over
7096@code{:clock-resume}. When setting both to @code{t}, the current clock will
7097run and the previous one will not be resumed.
86fbb8ca
CD
7098
7099@item :unnarrowed
7100Do not narrow the target buffer, simply show the full buffer. Default is to
7101narrow it so that you only see the new material.
afe98dfa 7102
ce57c2fe
BG
7103@item :table-line-pos
7104Specification of the location in the table where the new line should be
7105inserted. It should be a string like @code{"II-3"} meaning that the new
7106line should become the third line before the second horizontal separator
7107line.
7108
afe98dfa
CD
7109@item :kill-buffer
7110If the target file was not yet visited when capture was invoked, kill the
7111buffer again after capture is completed.
86fbb8ca
CD
7112@end table
7113@end table
7114
8223b1d2 7115@node Template expansion, Templates in contexts, Template elements, Capture templates
86fbb8ca
CD
7116@subsubsection Template expansion
7117
7118In the template itself, special @kbd{%}-escapes@footnote{If you need one of
8223b1d2 7119these sequences literally, escape the @kbd{%} with a backslash.} allow
e66ba1df 7120dynamic insertion of content. The templates are expanded in the order given here:
86fbb8ca 7121
86fbb8ca 7122@smallexample
8223b1d2
BG
7123%[@var{file}] @r{Insert the contents of the file given by @var{file}.}
7124%(@var{sexp}) @r{Evaluate Elisp @var{sexp} and replace with the result.}
271672fa
BG
7125 @r{For convenience, %:keyword (see below) placeholders}
7126 @r{within the expression will be expanded prior to this.}
7127 @r{The sexp must return a string.}
8223b1d2
BG
7128%<...> @r{The result of format-time-string on the ... format specification.}
7129%t @r{Timestamp, date only.}
7130%T @r{Timestamp, with date and time.}
7131%u, %U @r{Like the above, but inactive timestamps.}
7132%i @r{Initial content, the region when capture is called while the}
86fbb8ca 7133 @r{region is active.}
b349f79f 7134 @r{The entire text will be indented like @code{%i} itself.}
8223b1d2
BG
7135%a @r{Annotation, normally the link created with @code{org-store-link}.}
7136%A @r{Like @code{%a}, but prompt for the description part.}
7137%l @r{Like %a, but only insert the literal link.}
a7808fba
CD
7138%c @r{Current kill ring head.}
7139%x @r{Content of the X clipboard.}
8223b1d2
BG
7140%k @r{Title of the currently clocked task.}
7141%K @r{Link to the currently clocked task.}
7142%n @r{User name (taken from @code{user-full-name}).}
7143%f @r{File visited by current buffer when org-capture was called.}
7144%F @r{Full path of the file or directory visited by current buffer.}
7145%:keyword @r{Specific information for certain link types, see below.}
7146%^g @r{Prompt for tags, with completion on tags in target file.}
7147%^G @r{Prompt for tags, with completion all tags in all agenda files.}
7148%^t @r{Like @code{%t}, but prompt for date. Similarly @code{%^T}, @code{%^u}, @code{%^U}.}
ce57c2fe
BG
7149 @r{You may define a prompt like @code{%^@{Birthday@}t}.}
7150%^C @r{Interactive selection of which kill or clip to use.}
7151%^L @r{Like @code{%^C}, but insert as link.}
7152%^@{@var{prop}@}p @r{Prompt the user for a value for property @var{prop}.}
7153%^@{@var{prompt}@} @r{prompt the user for a string and replace this sequence with it.}
7154 @r{You may specify a default value and a completion table with}
7155 @r{%^@{prompt|default|completion2|completion3...@}.}
7156 @r{The arrow keys access a prompt-specific history.}
8223b1d2
BG
7157%\n @r{Insert the text entered at the nth %^@{@var{prompt}@}, where @code{n} is}
7158 @r{a number, starting from 1.}
7159%? @r{After completing the template, position cursor here.}
86fbb8ca 7160@end smallexample
dbc28aaa
CD
7161
7162@noindent
7163For specific link types, the following keywords will be
7164defined@footnote{If you define your own link types (@pxref{Adding
7165hyperlink types}), any property you store with
86fbb8ca 7166@code{org-store-link-props} can be accessed in capture templates in a
dbc28aaa
CD
7167similar way.}:
7168
c8d0cf5c 7169@vindex org-from-is-user-regexp
86fbb8ca 7170@smallexample
8223b1d2
BG
7171Link type | Available keywords
7172---------------------------------+----------------------------------------------
7173bbdb | %:name %:company
7174irc | %:server %:port %:nick
7175vm, vm-imap, wl, mh, mew, rmail | %:type %:subject %:message-id
7176 | %:from %:fromname %:fromaddress
7177 | %:to %:toname %:toaddress
7178 | %:date @r{(message date header field)}
7179 | %:date-timestamp @r{(date as active timestamp)}
7180 | %:date-timestamp-inactive @r{(date as inactive timestamp)}
7181 | %: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}.}}
7182gnus | %:group, @r{for messages also all email fields}
7183w3, w3m | %:url
7184info | %:file %:node
7185calendar | %:date
86fbb8ca 7186@end smallexample
dbc28aaa
CD
7187
7188@noindent
7189To place the cursor after template expansion use:
7190
86fbb8ca 7191@smallexample
dbc28aaa 7192%? @r{After completing the template, position cursor here.}
86fbb8ca 7193@end smallexample
dbc28aaa 7194
8223b1d2
BG
7195@node Templates in contexts, , Template expansion, Capture templates
7196@subsubsection Templates in contexts
7197
7198@vindex org-capture-templates-contexts
7199To control whether a capture template should be accessible from a specific
271672fa 7200context, you can customize @code{org-capture-templates-contexts}. Let's say
8223b1d2
BG
7201for example that you have a capture template @code{"p"} for storing Gnus
7202emails containing patches. Then you would configure this option like this:
7203
271672fa 7204@smalllisp
8223b1d2
BG
7205(setq org-capture-templates-contexts
7206 '(("p" (in-mode . "message-mode"))))
271672fa 7207@end smalllisp
8223b1d2
BG
7208
7209You can also tell that the command key @code{"p"} should refer to another
7210template. In that case, add this command key like this:
7211
271672fa 7212@smalllisp
8223b1d2
BG
7213(setq org-capture-templates-contexts
7214 '(("p" "q" (in-mode . "message-mode"))))
271672fa 7215@end smalllisp
8223b1d2
BG
7216
7217See the docstring of the variable for more information.
c8d0cf5c 7218
86fbb8ca 7219@node Attachments, RSS Feeds, Capture, Capture - Refile - Archive
864c9740
CD
7220@section Attachments
7221@cindex attachments
7222
c8d0cf5c 7223@vindex org-attach-directory
864c9740
CD
7224It is often useful to associate reference material with an outline node/task.
7225Small chunks of plain text can simply be stored in the subtree of a project.
86fbb8ca 7226Hyperlinks (@pxref{Hyperlinks}) can establish associations with
864c9740
CD
7227files that live elsewhere on your computer or in the cloud, like emails or
7228source code files belonging to a project. Another method is @i{attachments},
7229which are files located in a directory belonging to an outline node. Org
7230uses directories named by the unique ID of each entry. These directories are
7231located in the @file{data} directory which lives in the same directory where
c8d0cf5c
CD
7232your Org file lives@footnote{If you move entries or Org files from one
7233directory to another, you may want to configure @code{org-attach-directory}
864c9740 7234to contain an absolute path.}. If you initialize this directory with
c8d0cf5c 7235@code{git init}, Org will automatically commit changes when it sees them.
864c9740
CD
7236The attachment system has been contributed to Org by John Wiegley.
7237
c8d0cf5c 7238In cases where it seems better to do so, you can also attach a directory of your
55e0839d
CD
7239choice to an entry. You can also make children inherit the attachment
7240directory from a parent, so that an entire subtree uses the same attached
7241directory.
7242
86fbb8ca 7243@noindent The following commands deal with attachments:
864c9740
CD
7244
7245@table @kbd
acedf35c 7246@orgcmd{C-c C-a,org-attach}
864c9740 7247The dispatcher for commands related to the attachment system. After these
86fbb8ca 7248keys, a list of commands is displayed and you must press an additional key
864c9740
CD
7249to select a command:
7250
7251@table @kbd
acedf35c 7252@orgcmdtkc{a,C-c C-a a,org-attach-attach}
c8d0cf5c 7253@vindex org-attach-method
864c9740
CD
7254Select a file and move it into the task's attachment directory. The file
7255will be copied, moved, or linked, depending on @code{org-attach-method}.
7256Note that hard links are not supported on all systems.
7257
7258@kindex C-c C-a c
96c8522a
CD
7259@kindex C-c C-a m
7260@kindex C-c C-a l
864c9740
CD
7261@item c/m/l
7262Attach a file using the copy/move/link method.
7263Note that hard links are not supported on all systems.
7264
acedf35c 7265@orgcmdtkc{n,C-c C-a n,org-attach-new}
864c9740
CD
7266Create a new attachment as an Emacs buffer.
7267
acedf35c 7268@orgcmdtkc{z,C-c C-a z,org-attach-sync}
864c9740
CD
7269Synchronize the current task with its attachment directory, in case you added
7270attachments yourself.
7271
ce57c2fe 7272@orgcmdtkc{o,C-c C-a o,org-attach-open}
c8d0cf5c 7273@vindex org-file-apps
86fbb8ca 7274Open current task's attachment. If there is more than one, prompt for a
864c9740 7275file name first. Opening will follow the rules set by @code{org-file-apps}.
a50253cc 7276For more details, see the information on following hyperlinks
864c9740
CD
7277(@pxref{Handling links}).
7278
acedf35c 7279@orgcmdtkc{O,C-c C-a O,org-attach-open-in-emacs}
864c9740
CD
7280Also open the attachment, but force opening the file in Emacs.
7281
acedf35c 7282@orgcmdtkc{f,C-c C-a f,org-attach-reveal}
864c9740
CD
7283Open the current task's attachment directory.
7284
acedf35c 7285@orgcmdtkc{F,C-c C-a F,org-attach-reveal-in-emacs}
c8d0cf5c 7286Also open the directory, but force using @command{dired} in Emacs.
864c9740 7287
acedf35c 7288@orgcmdtkc{d,C-c C-a d,org-attach-delete-one}
864c9740
CD
7289Select and delete a single attachment.
7290
acedf35c 7291@orgcmdtkc{D,C-c C-a D,org-attach-delete-all}
864c9740 7292Delete all of a task's attachments. A safer way is to open the directory in
c8d0cf5c 7293@command{dired} and delete from there.
55e0839d 7294
acedf35c 7295@orgcmdtkc{s,C-c C-a s,org-attach-set-directory}
c8d0cf5c 7296@cindex property, ATTACH_DIR
55e0839d
CD
7297Set a specific directory as the entry's attachment directory. This works by
7298putting the directory path into the @code{ATTACH_DIR} property.
7299
acedf35c 7300@orgcmdtkc{i,C-c C-a i,org-attach-set-inherit}
c8d0cf5c 7301@cindex property, ATTACH_DIR_INHERIT
55e0839d 7302Set the @code{ATTACH_DIR_INHERIT} property, so that children will use the
c8d0cf5c 7303same directory for attachments as the parent does.
864c9740
CD
7304@end table
7305@end table
7306
a351880d 7307@node RSS Feeds, Protocols, Attachments, Capture - Refile - Archive
c8d0cf5c
CD
7308@section RSS feeds
7309@cindex RSS feeds
86fbb8ca 7310@cindex Atom feeds
c8d0cf5c 7311
86fbb8ca
CD
7312Org can add and change entries based on information found in RSS feeds and
7313Atom feeds. You could use this to make a task out of each new podcast in a
c8d0cf5c 7314podcast feed. Or you could use a phone-based note-creating service on the
86fbb8ca
CD
7315web to import tasks into Org. To access feeds, configure the variable
7316@code{org-feed-alist}. The docstring of this variable has detailed
c8d0cf5c
CD
7317information. Here is just an example:
7318
271672fa
BG
7319@smalllisp
7320@group
c8d0cf5c 7321(setq org-feed-alist
86fbb8ca 7322 '(("Slashdot"
c0468714
GM
7323 "http://rss.slashdot.org/Slashdot/slashdot"
7324 "~/txt/org/feeds.org" "Slashdot Entries")))
271672fa
BG
7325@end group
7326@end smalllisp
86fbb8ca 7327
c8d0cf5c 7328@noindent
86fbb8ca
CD
7329will configure that new items from the feed provided by
7330@code{rss.slashdot.org} will result in new entries in the file
7331@file{~/org/feeds.org} under the heading @samp{Slashdot Entries}, whenever
7332the following command is used:
c8d0cf5c
CD
7333
7334@table @kbd
acedf35c 7335@orgcmd{C-c C-x g,org-feed-update-all}
c8d0cf5c
CD
7336@item C-c C-x g
7337Collect items from the feeds configured in @code{org-feed-alist} and act upon
7338them.
acedf35c 7339@orgcmd{C-c C-x G,org-feed-goto-inbox}
c8d0cf5c
CD
7340Prompt for a feed name and go to the inbox configured for this feed.
7341@end table
7342
7343Under the same headline, Org will create a drawer @samp{FEEDSTATUS} in which
7344it will store information about the status of items in the feed, to avoid
7345adding the same item several times. You should add @samp{FEEDSTATUS} to the
7346list of drawers in that file:
7347
7348@example
7349#+DRAWERS: LOGBOOK PROPERTIES FEEDSTATUS
7350@end example
7351
86fbb8ca
CD
7352For more information, including how to read atom feeds, see
7353@file{org-feed.el} and the docstring of @code{org-feed-alist}.
c8d0cf5c 7354
271672fa 7355@node Protocols, Refile and copy, RSS Feeds, Capture - Refile - Archive
c8d0cf5c
CD
7356@section Protocols for external access
7357@cindex protocols, for external access
7358@cindex emacsserver
7359
7360You can set up Org for handling protocol calls from outside applications that
7361are passed to Emacs through the @file{emacsserver}. For example, you can
7362configure bookmarks in your web browser to send a link to the current page to
86fbb8ca 7363Org and create a note from it using capture (@pxref{Capture}). Or you
c8d0cf5c
CD
7364could create a bookmark that will tell Emacs to open the local source file of
7365a remote website you are looking at with the browser. See
7366@uref{http://orgmode.org/worg/org-contrib/org-protocol.php} for detailed
7367documentation and setup instructions.
7368
271672fa
BG
7369@node Refile and copy, Archiving, Protocols, Capture - Refile - Archive
7370@section Refile and copy
a351880d 7371@cindex refiling notes
271672fa 7372@cindex copying notes
c8d0cf5c 7373
271672fa
BG
7374When reviewing the captured data, you may want to refile or to copy some of
7375the entries into a different list, for example into a project. Cutting,
7376finding the right location, and then pasting the note is cumbersome. To
7377simplify this process, you can use the following special command:
4009494e 7378
a351880d 7379@table @kbd
271672fa
BG
7380@orgcmd{C-c M-w,org-copy}
7381@findex org-copy
7382Copying works like refiling, except that the original note is not deleted.
acedf35c 7383@orgcmd{C-c C-w,org-refile}
271672fa 7384@findex org-refile
a351880d
CD
7385@vindex org-reverse-note-order
7386@vindex org-refile-targets
7387@vindex org-refile-use-outline-path
7388@vindex org-outline-path-complete-in-steps
7389@vindex org-refile-allow-creating-parent-nodes
ed21c5c8 7390@vindex org-log-refile
86fbb8ca 7391@vindex org-refile-use-cache
271672fa 7392@vindex org-refile-keep
a351880d
CD
7393Refile the entry or region at point. This command offers possible locations
7394for refiling the entry and lets you select one with completion. The item (or
7395all items in the region) is filed below the target heading as a subitem.
7396Depending on @code{org-reverse-note-order}, it will be either the first or
7397last subitem.@*
7398By default, all level 1 headlines in the current buffer are considered to be
7399targets, but you can have more complex definitions across a number of files.
7400See the variable @code{org-refile-targets} for details. If you would like to
7401select a location via a file-path-like completion along the outline path, see
7402the variables @code{org-refile-use-outline-path} and
7403@code{org-outline-path-complete-in-steps}. If you would like to be able to
045b9da7 7404create new nodes as new parents for refiling on the fly, check the
a351880d 7405variable @code{org-refile-allow-creating-parent-nodes}.
ed21c5c8
CD
7406When the variable @code{org-log-refile}@footnote{with corresponding
7407@code{#+STARTUP} keywords @code{logrefile}, @code{lognoterefile},
ce57c2fe 7408and @code{nologrefile}} is set, a timestamp or a note will be
ed21c5c8 7409recorded when an entry has been refiled.
acedf35c 7410@orgkey{C-u C-c C-w}
a351880d 7411Use the refile interface to jump to a heading.
acedf35c 7412@orgcmd{C-u C-u C-c C-w,org-refile-goto-last-stored}
a351880d
CD
7413Jump to the location where @code{org-refile} last moved a tree to.
7414@item C-2 C-c C-w
7415Refile as the child of the item currently being clocked.
271672fa
BG
7416@item C-3 C-c C-w
7417Refile and keep the entry in place. Also see @code{org-refile-keep} to make
7418this the default behavior, and beware that this may result in duplicated
7419@code{ID} properties.
acedf35c 7420@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}
86fbb8ca 7421Clear the target cache. Caching of refile targets can be turned on by
acedf35c 7422setting @code{org-refile-use-cache}. To make the command see new possible
86fbb8ca 7423targets, you have to clear the cache with this command.
a351880d 7424@end table
4009494e 7425
271672fa 7426@node Archiving, , Refile and copy, Capture - Refile - Archive
a351880d
CD
7427@section Archiving
7428@cindex archiving
4009494e 7429
a351880d
CD
7430When a project represented by a (sub)tree is finished, you may want
7431to move the tree out of the way and to stop it from contributing to the
7432agenda. Archiving is important to keep your working files compact and global
7433searches like the construction of agenda views fast.
7434
7435@table @kbd
acedf35c 7436@orgcmd{C-c C-x C-a,org-archive-subtree-default}
a351880d
CD
7437@vindex org-archive-default-command
7438Archive the current entry using the command specified in the variable
7439@code{org-archive-default-command}.
7440@end table
7441
7442@menu
c0468714
GM
7443* Moving subtrees:: Moving a tree to an archive file
7444* Internal archiving:: Switch off a tree but keep it in the file
a351880d
CD
7445@end menu
7446
7447@node Moving subtrees, Internal archiving, Archiving, Archiving
7448@subsection Moving a tree to the archive file
7449@cindex external archiving
7450
7451The most common archiving action is to move a project tree to another file,
7452the archive file.
7453
7454@table @kbd
acedf35c 7455@orgcmdkskc{C-c C-x C-s,C-c $,org-archive-subtree}
a351880d
CD
7456@vindex org-archive-location
7457Archive the subtree starting at the cursor position to the location
7458given by @code{org-archive-location}.
acedf35c 7459@orgkey{C-u C-c C-x C-s}
a351880d
CD
7460Check if any direct children of the current headline could be moved to
7461the archive. To do this, each subtree is checked for open TODO entries.
7462If none are found, the command offers to move it to the archive
7463location. If the cursor is @emph{not} on a headline when this command
7464is invoked, the level 1 trees will be checked.
7465@end table
7466
7467@cindex archive locations
7468The default archive location is a file in the same directory as the
7469current file, with the name derived by appending @file{_archive} to the
8223b1d2
BG
7470current file name. You can also choose what heading to file archived
7471items under, with the possibility to add them to a datetree in a file.
7472For information and examples on how to specify the file and the heading,
a351880d 7473see the documentation string of the variable
8223b1d2
BG
7474@code{org-archive-location}.
7475
7476There is also an in-buffer option for setting this variable, for
7477example@footnote{For backward compatibility, the following also works:
7478If there are several such lines in a file, each specifies the archive
7479location for the text below it. The first such line also applies to any
7480text before its definition. However, using this method is
7481@emph{strongly} deprecated as it is incompatible with the outline
7482structure of the document. The correct method for setting multiple
7483archive locations in a buffer is using properties.}:
a351880d
CD
7484
7485@cindex #+ARCHIVE
7486@example
7487#+ARCHIVE: %s_done::
7488@end example
7489
7490@cindex property, ARCHIVE
7491@noindent
7492If you would like to have a special ARCHIVE location for a single entry
7493or a (sub)tree, give the entry an @code{:ARCHIVE:} property with the
7494location as the value (@pxref{Properties and Columns}).
7495
7496@vindex org-archive-save-context-info
7497When a subtree is moved, it receives a number of special properties that
7498record context information like the file from where the entry came, its
7499outline path the archiving time etc. Configure the variable
7500@code{org-archive-save-context-info} to adjust the amount of information
7501added.
7502
7503
7504@node Internal archiving, , Moving subtrees, Archiving
7505@subsection Internal archiving
7506
7507If you want to just switch off (for agenda views) certain subtrees without
7508moving them to a different file, you can use the @code{ARCHIVE tag}.
7509
7510A headline that is marked with the ARCHIVE tag (@pxref{Tags}) stays at
7511its location in the outline tree, but behaves in the following way:
7512@itemize @minus
7513@item
7514@vindex org-cycle-open-archived-trees
7515It does not open when you attempt to do so with a visibility cycling
7516command (@pxref{Visibility cycling}). You can force cycling archived
7517subtrees with @kbd{C-@key{TAB}}, or by setting the option
7518@code{org-cycle-open-archived-trees}. Also normal outline commands like
7519@code{show-all} will open archived subtrees.
7520@item
7521@vindex org-sparse-tree-open-archived-trees
7522During sparse tree construction (@pxref{Sparse trees}), matches in
7523archived subtrees are not exposed, unless you configure the option
7524@code{org-sparse-tree-open-archived-trees}.
7525@item
7526@vindex org-agenda-skip-archived-trees
7527During agenda view construction (@pxref{Agenda Views}), the content of
7528archived trees is ignored unless you configure the option
7529@code{org-agenda-skip-archived-trees}, in which case these trees will always
7530be included. In the agenda you can press @kbd{v a} to get archives
7531temporarily included.
7532@item
7533@vindex org-export-with-archived-trees
7534Archived trees are not exported (@pxref{Exporting}), only the headline
7535is. Configure the details using the variable
7536@code{org-export-with-archived-trees}.
7537@item
86fbb8ca 7538@vindex org-columns-skip-archived-trees
a351880d 7539Archived trees are excluded from column view unless the variable
86fbb8ca 7540@code{org-columns-skip-archived-trees} is configured to @code{nil}.
a351880d
CD
7541@end itemize
7542
86fbb8ca 7543The following commands help manage the ARCHIVE tag:
a351880d
CD
7544
7545@table @kbd
acedf35c 7546@orgcmd{C-c C-x a,org-toggle-archive-tag}
a351880d
CD
7547Toggle the ARCHIVE tag for the current headline. When the tag is set,
7548the headline changes to a shadowed face, and the subtree below it is
7549hidden.
acedf35c 7550@orgkey{C-u C-c C-x a}
a351880d
CD
7551Check if any direct children of the current headline should be archived.
7552To do this, each subtree is checked for open TODO entries. If none are
7553found, the command offers to set the ARCHIVE tag for the child. If the
7554cursor is @emph{not} on a headline when this command is invoked, the
7555level 1 trees will be checked.
acedf35c 7556@orgcmd{C-@kbd{TAB},org-force-cycle-archived}
a351880d 7557Cycle a tree even if it is tagged with ARCHIVE.
acedf35c 7558@orgcmd{C-c C-x A,org-archive-to-archive-sibling}
a351880d
CD
7559Move the current entry to the @emph{Archive Sibling}. This is a sibling of
7560the entry with the heading @samp{Archive} and the tag @samp{ARCHIVE}. The
7561entry becomes a child of that sibling and in this way retains a lot of its
7562original context, including inherited tags and approximate position in the
7563outline.
7564@end table
7565
7566
7567@node Agenda Views, Markup, Capture - Refile - Archive, Top
86fbb8ca 7568@chapter Agenda views
a351880d
CD
7569@cindex agenda views
7570
7571Due to the way Org works, TODO items, time-stamped items, and
7572tagged headlines can be scattered throughout a file or even a number of
7573files. To get an overview of open action items, or of events that are
7574important for a particular date, this information must be collected,
7575sorted and displayed in an organized way.
7576
7577Org can select items based on various criteria and display them
7578in a separate buffer. Seven different view types are provided:
7579
7580@itemize @bullet
7581@item
7582an @emph{agenda} that is like a calendar and shows information
7583for specific dates,
7584@item
7585a @emph{TODO list} that covers all unfinished
7586action items,
7587@item
7588a @emph{match view}, showings headlines based on the tags, properties, and
7589TODO state associated with them,
7590@item
7591a @emph{timeline view} that shows all events in a single Org file,
7592in time-sorted view,
7593@item
7594a @emph{text search view} that shows all entries from multiple files
7595that contain specified keywords,
7596@item
7597a @emph{stuck projects view} showing projects that currently don't move
7598along, and
7599@item
7600@emph{custom views} that are special searches and combinations of different
7601views.
4009494e
GM
7602@end itemize
7603
7604@noindent
7605The extracted information is displayed in a special @emph{agenda
7606buffer}. This buffer is read-only, but provides commands to visit the
a7808fba 7607corresponding locations in the original Org files, and even to
28a16a1b 7608edit these files remotely.
4009494e 7609
c8d0cf5c
CD
7610@vindex org-agenda-window-setup
7611@vindex org-agenda-restore-windows-after-quit
4009494e
GM
7612Two variables control how the agenda buffer is displayed and whether the
7613window configuration is restored when the agenda exits:
7614@code{org-agenda-window-setup} and
7615@code{org-agenda-restore-windows-after-quit}.
7616
7617@menu
c0468714
GM
7618* Agenda files:: Files being searched for agenda information
7619* Agenda dispatcher:: Keyboard access to agenda views
7620* Built-in agenda views:: What is available out of the box?
7621* Presentation and sorting:: How agenda items are prepared for display
7622* Agenda commands:: Remote editing of Org trees
7623* Custom agenda views:: Defining special searches and views
7624* Exporting Agenda Views:: Writing a view to a file
7625* Agenda column view:: Using column view for collected entries
4009494e
GM
7626@end menu
7627
a7808fba 7628@node Agenda files, Agenda dispatcher, Agenda Views, Agenda Views
4009494e
GM
7629@section Agenda files
7630@cindex agenda files
7631@cindex files for agenda
7632
c8d0cf5c 7633@vindex org-agenda-files
dbc28aaa
CD
7634The information to be shown is normally collected from all @emph{agenda
7635files}, the files listed in the variable
7636@code{org-agenda-files}@footnote{If the value of that variable is not a
7637list, but a single file name, then the list of agenda files will be
ce57c2fe 7638maintained in that external file.}. If a directory is part of this list,
dbc28aaa
CD
7639all files with the extension @file{.org} in this directory will be part
7640of the list.
7641
c8d0cf5c
CD
7642Thus, even if you only work with a single Org file, that file should
7643be put into the list@footnote{When using the dispatcher, pressing
dbc28aaa
CD
7644@kbd{<} before selecting a command will actually limit the command to
7645the current file, and ignore @code{org-agenda-files} until the next
4009494e
GM
7646dispatcher command.}. You can customize @code{org-agenda-files}, but
7647the easiest way to maintain it is through the following commands
7648
7649@cindex files, adding to agenda list
7650@table @kbd
ce57c2fe 7651@orgcmd{C-c [,org-agenda-file-to-front}
4009494e
GM
7652Add current file to the list of agenda files. The file is added to
7653the front of the list. If it was already in the list, it is moved to
a7808fba 7654the front. With a prefix argument, file is added/moved to the end.
acedf35c 7655@orgcmd{C-c ],org-remove-file}
4009494e
GM
7656Remove current file from the list of agenda files.
7657@kindex C-,
e66ba1df 7658@cindex cycling, of agenda files
acedf35c
CD
7659@orgcmd{C-',org-cycle-agenda-files}
7660@itemx C-,
4009494e 7661Cycle through agenda file list, visiting one file after the other.
a7808fba 7662@kindex M-x org-iswitchb
271672fa 7663@item M-x org-iswitchb RET
a7808fba
CD
7664Command to use an @code{iswitchb}-like interface to switch to and between Org
7665buffers.
4009494e
GM
7666@end table
7667
7668@noindent
7669The Org menu contains the current list of files and can be used
7670to visit any of them.
7671
c8d0cf5c
CD
7672If you would like to focus the agenda temporarily on a file not in
7673this list, or on just one file in the list, or even on only a subtree in a
7674file, then this can be done in different ways. For a single agenda command,
dbc28aaa
CD
7675you may press @kbd{<} once or several times in the dispatcher
7676(@pxref{Agenda dispatcher}). To restrict the agenda scope for an
7677extended period, use the following commands:
7678
7679@table @kbd
acedf35c 7680@orgcmd{C-c C-x <,org-agenda-set-restriction-lock}
dbc28aaa
CD
7681Permanently restrict the agenda to the current subtree. When with a
7682prefix argument, or with the cursor before the first headline in a file,
7683the agenda scope is set to the entire file. This restriction remains in
7684effect until removed with @kbd{C-c C-x >}, or by typing either @kbd{<}
7685or @kbd{>} in the agenda dispatcher. If there is a window displaying an
7686agenda view, the new restriction takes effect immediately.
acedf35c 7687@orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
dbc28aaa
CD
7688Remove the permanent restriction created by @kbd{C-c C-x <}.
7689@end table
7690
7691@noindent
c8d0cf5c 7692When working with @file{speedbar.el}, you can use the following commands in
a7808fba 7693the Speedbar frame:
271672fa 7694
dbc28aaa 7695@table @kbd
acedf35c 7696@orgcmdtkc{< @r{in the speedbar frame},<,org-speedbar-set-agenda-restriction}
c8d0cf5c
CD
7697Permanently restrict the agenda to the item---either an Org file or a subtree
7698in such a file---at the cursor in the Speedbar frame.
dbc28aaa
CD
7699If there is a window displaying an agenda view, the new restriction takes
7700effect immediately.
acedf35c 7701@orgcmdtkc{> @r{in the speedbar frame},>,org-agenda-remove-restriction-lock}
c8d0cf5c 7702Lift the restriction.
dbc28aaa
CD
7703@end table
7704
a7808fba 7705@node Agenda dispatcher, Built-in agenda views, Agenda files, Agenda Views
4009494e
GM
7706@section The agenda dispatcher
7707@cindex agenda dispatcher
7708@cindex dispatching agenda commands
c8d0cf5c 7709The views are created through a dispatcher, which should be bound to a
ce57c2fe 7710global key---for example @kbd{C-c a} (@pxref{Activation}). In the
4009494e
GM
7711following we will assume that @kbd{C-c a} is indeed how the dispatcher
7712is accessed and list keyboard access to commands accordingly. After
7713pressing @kbd{C-c a}, an additional letter is required to execute a
7714command. The dispatcher offers the following default commands:
271672fa 7715
4009494e
GM
7716@table @kbd
7717@item a
a7808fba 7718Create the calendar-like agenda (@pxref{Weekly/daily agenda}).
4009494e
GM
7719@item t @r{/} T
7720Create a list of all TODO items (@pxref{Global TODO list}).
7721@item m @r{/} M
7722Create a list of headlines matching a TAGS expression (@pxref{Matching
7723tags and properties}).
7724@item L
7725Create the timeline view for the current buffer (@pxref{Timeline}).
28a16a1b
CD
7726@item s
7727Create a list of entries selected by a boolean expression of keywords
7728and/or regular expressions that must or must not occur in the entry.
dbc28aaa 7729@item /
c8d0cf5c 7730@vindex org-agenda-text-search-extra-files
dbc28aaa 7731Search for a regular expression in all agenda files and additionally in
c8d0cf5c 7732the files listed in @code{org-agenda-text-search-extra-files}. This
dbc28aaa
CD
7733uses the Emacs command @code{multi-occur}. A prefix argument can be
7734used to specify the number of context lines for each match, default is
77351.
28a16a1b
CD
7736@item # @r{/} !
7737Create a list of stuck projects (@pxref{Stuck projects}).
dbc28aaa
CD
7738@item <
7739Restrict an agenda command to the current buffer@footnote{For backward
7740compatibility, you can also press @kbd{1} to restrict to the current
7741buffer.}. After pressing @kbd{<}, you still need to press the character
7742selecting the command.
7743@item < <
4009494e 7744If there is an active region, restrict the following agenda command to
dbc28aaa
CD
7745the region. Otherwise, restrict it to the current subtree@footnote{For
7746backward compatibility, you can also press @kbd{0} to restrict to the
c8d0cf5c 7747current region/subtree.}. After pressing @kbd{< <}, you still need to press the
dbc28aaa 7748character selecting the command.
8223b1d2
BG
7749
7750@item *
7751@vindex org-agenda-sticky
7752Toggle sticky agenda views. By default, Org maintains only a single agenda
7753buffer and rebuilds it each time you change the view, to make sure everything
7754is always up to date. If you switch between views often and the build time
7755bothers you, you can turn on sticky agenda buffers (make this the default by
7756customizing the variable @code{org-agenda-sticky}). With sticky agendas, the
7757dispatcher only switches to the selected view, you need to update it by hand
7758with @kbd{r} or @kbd{g}. You can toggle sticky agenda view any time with
7759@code{org-toggle-sticky-agenda}.
4009494e
GM
7760@end table
7761
7762You can also define custom commands that will be accessible through the
7763dispatcher, just like the default commands. This includes the
7764possibility to create extended agenda buffers that contain several
7765blocks together, for example the weekly agenda, the global TODO list and
7766a number of special tags matches. @xref{Custom agenda views}.
7767
a7808fba 7768@node Built-in agenda views, Presentation and sorting, Agenda dispatcher, Agenda Views
4009494e
GM
7769@section The built-in agenda views
7770
7771In this section we describe the built-in views.
7772
7773@menu
c0468714
GM
7774* Weekly/daily agenda:: The calendar page with current tasks
7775* Global TODO list:: All unfinished action items
4009494e 7776* Matching tags and properties:: Structured information with fine-tuned search
c0468714
GM
7777* Timeline:: Time-sorted view for single file
7778* Search view:: Find entries by searching for text
7779* Stuck projects:: Find projects you need to review
4009494e
GM
7780@end menu
7781
a7808fba 7782@node Weekly/daily agenda, Global TODO list, Built-in agenda views, Built-in agenda views
4009494e
GM
7783@subsection The weekly/daily agenda
7784@cindex agenda
7785@cindex weekly agenda
7786@cindex daily agenda
7787
7788The purpose of the weekly/daily @emph{agenda} is to act like a page of a
7789paper agenda, showing all the tasks for the current week or day.
7790
7791@table @kbd
7792@cindex org-agenda, command
acedf35c 7793@orgcmd{C-c a a,org-agenda-list}
c8d0cf5c 7794Compile an agenda for the current week from a list of Org files. The agenda
864c9740
CD
7795shows the entries for each day. With a numeric prefix@footnote{For backward
7796compatibility, the universal prefix @kbd{C-u} causes all TODO entries to be
7797listed before the agenda. This feature is deprecated, use the dedicated TODO
7798list, or a block agenda instead (@pxref{Block agenda}).} (like @kbd{C-u 2 1
acedf35c 7799C-c a a}) you may set the number of days to be displayed.
4009494e
GM
7800@end table
7801
acedf35c
CD
7802@vindex org-agenda-span
7803@vindex org-agenda-ndays
271672fa
BG
7804@vindex org-agenda-start-day
7805@vindex org-agenda-start-on-weekday
acedf35c
CD
7806The default number of days displayed in the agenda is set by the variable
7807@code{org-agenda-span} (or the obsolete @code{org-agenda-ndays}). This
7808variable can be set to any number of days you want to see by default in the
271672fa
BG
7809agenda, or to a span name, such as @code{day}, @code{week}, @code{month} or
7810@code{year}. For weekly agendas, the default is to start on the previous
7811monday (see @code{org-agenda-start-on-weekday}). You can also set the start
7812date using a date shift: @code{(setq org-agenda-start-day "+10d")} will
7813start the agenda ten days from today in the future.
acedf35c 7814
4009494e
GM
7815Remote editing from the agenda buffer means, for example, that you can
7816change the dates of deadlines and appointments from the agenda buffer.
7817The commands available in the Agenda buffer are listed in @ref{Agenda
7818commands}.
7819
7820@subsubheading Calendar/Diary integration
7821@cindex calendar integration
7822@cindex diary integration
7823
7824Emacs contains the calendar and diary by Edward M. Reingold. The
7825calendar displays a three-month calendar with holidays from different
7826countries and cultures. The diary allows you to keep track of
7827anniversaries, lunar phases, sunrise/set, recurrent appointments
7828(weekly, monthly) and more. In this way, it is quite complementary to
a7808fba 7829Org. It can be very useful to combine output from Org with
4009494e
GM
7830the diary.
7831
e66ba1df 7832In order to include entries from the Emacs diary into Org mode's
4009494e
GM
7833agenda, you only need to customize the variable
7834
7835@lisp
7836(setq org-agenda-include-diary t)
7837@end lisp
7838
7839@noindent After that, everything will happen automatically. All diary
c8d0cf5c 7840entries including holidays, anniversaries, etc., will be included in the
e66ba1df 7841agenda buffer created by Org mode. @key{SPC}, @key{TAB}, and
4009494e
GM
7842@key{RET} can be used from the agenda buffer to jump to the diary
7843file in order to edit existing diary entries. The @kbd{i} command to
7844insert new entries for the current date works in the agenda buffer, as
7845well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
7846Sunrise/Sunset times, show lunar phases and to convert to other
7847calendars, respectively. @kbd{c} can be used to switch back and forth
7848between calendar and agenda.
7849
7850If you are using the diary only for sexp entries and holidays, it is
7851faster to not use the above setting, but instead to copy or even move
e66ba1df 7852the entries into an Org file. Org mode evaluates diary-style sexp
4009494e
GM
7853entries, and does it faster because there is no overhead for first
7854creating the diary display. Note that the sexp entries must start at
c8d0cf5c 7855the left margin, no whitespace is allowed before them. For example,
a7808fba 7856the following segment of an Org file will be processed and entries
4009494e
GM
7857will be made in the agenda:
7858
7859@example
7860* Birthdays and similar stuff
7861#+CATEGORY: Holiday
7862%%(org-calendar-holiday) ; special function for holiday names
7863#+CATEGORY: Ann
e4920bc9 7864%%(org-anniversary 1956 5 14)@footnote{@code{org-anniversary} is just like @code{diary-anniversary}, but the argument order is always according to ISO and therefore independent of the value of @code{calendar-date-style}.} Arthur Dent is %d years old
ce57c2fe 7865%%(org-anniversary 1869 10 2) Mahatma Gandhi would be %d years old
4009494e
GM
7866@end example
7867
c8d0cf5c
CD
7868@subsubheading Anniversaries from BBDB
7869@cindex BBDB, anniversaries
7870@cindex anniversaries, from BBDB
7871
7872If you are using the Big Brothers Database to store your contacts, you will
7873very likely prefer to store anniversaries in BBDB rather than in a
7874separate Org or diary file. Org supports this and will show BBDB
7875anniversaries as part of the agenda. All you need to do is to add the
5a5fa834 7876following to one of your agenda files:
c8d0cf5c
CD
7877
7878@example
7879* Anniversaries
7880 :PROPERTIES:
7881 :CATEGORY: Anniv
86fbb8ca 7882 :END:
c8d0cf5c
CD
7883%%(org-bbdb-anniversaries)
7884@end example
7885
7886You can then go ahead and define anniversaries for a BBDB record. Basically,
7887you need to press @kbd{C-o anniversary @key{RET}} with the cursor in a BBDB
ce57c2fe
BG
7888record and then add the date in the format @code{YYYY-MM-DD} or @code{MM-DD},
7889followed by a space and the class of the anniversary (@samp{birthday} or
7890@samp{wedding}, or a format string). If you omit the class, it will default to
7891@samp{birthday}. Here are a few examples, the header for the file
7892@file{org-bbdb.el} contains more detailed information.
c8d0cf5c
CD
7893
7894@example
78951973-06-22
ce57c2fe 789606-22
c8d0cf5c 78971955-08-02 wedding
e66ba1df 78982008-04-14 %s released version 6.01 of org mode, %d years ago
c8d0cf5c
CD
7899@end example
7900
7901After a change to BBDB, or for the first agenda display during an Emacs
7902session, the agenda display will suffer a short delay as Org updates its
7903hash with anniversaries. However, from then on things will be very fast---much
7904faster in fact than a long list of @samp{%%(diary-anniversary)} entries
7905in an Org or Diary file.
7906
dbc28aaa
CD
7907@subsubheading Appointment reminders
7908@cindex @file{appt.el}
7909@cindex appointment reminders
e66ba1df
BG
7910@cindex appointment
7911@cindex reminders
dbc28aaa 7912
8223b1d2
BG
7913Org can interact with Emacs appointments notification facility. To add the
7914appointments of your agenda files, use the command @code{org-agenda-to-appt}.
7915This command lets you filter through the list of your appointments and add
7916only those belonging to a specific category or matching a regular expression.
7917It also reads a @code{APPT_WARNTIME} property which will then override the
7918value of @code{appt-message-warning-time} for this appointment. See the
7919docstring for details.
dbc28aaa 7920
a7808fba 7921@node Global TODO list, Matching tags and properties, Weekly/daily agenda, Built-in agenda views
4009494e
GM
7922@subsection The global TODO list
7923@cindex global TODO list
7924@cindex TODO list, global
7925
c8d0cf5c 7926The global TODO list contains all unfinished TODO items formatted and
4009494e
GM
7927collected into a single place.
7928
7929@table @kbd
acedf35c 7930@orgcmd{C-c a t,org-todo-list}
86fbb8ca
CD
7931Show the global TODO list. This collects the TODO items from all agenda
7932files (@pxref{Agenda Views}) into a single buffer. By default, this lists
7933items with a state the is not a DONE state. The buffer is in
7934@code{agenda-mode}, so there are commands to examine and manipulate the TODO
7935entries directly from that buffer (@pxref{Agenda commands}).
acedf35c 7936@orgcmd{C-c a T,org-todo-list}
4009494e 7937@cindex TODO keyword matching
c8d0cf5c 7938@vindex org-todo-keywords
86fbb8ca
CD
7939Like the above, but allows selection of a specific TODO keyword. You can
7940also do this by specifying a prefix argument to @kbd{C-c a t}. You are
7941prompted for a keyword, and you may also specify several keywords by
7942separating them with @samp{|} as the boolean OR operator. With a numeric
acedf35c 7943prefix, the Nth keyword in @code{org-todo-keywords} is selected.
4009494e
GM
7944@kindex r
7945The @kbd{r} key in the agenda buffer regenerates it, and you can give
7946a prefix argument to this command to change the selected TODO keyword,
7947for example @kbd{3 r}. If you often need a search for a specific
7948keyword, define a custom command for it (@pxref{Agenda dispatcher}).@*
7949Matching specific TODO keywords can also be done as part of a tags
7950search (@pxref{Tag searches}).
7951@end table
7952
7953Remote editing of TODO items means that you can change the state of a
7954TODO entry with a single key press. The commands available in the
7955TODO list are described in @ref{Agenda commands}.
7956
a7808fba
CD
7957@cindex sublevels, inclusion into TODO list
7958Normally the global TODO list simply shows all headlines with TODO
4009494e
GM
7959keywords. This list can become very long. There are two ways to keep
7960it more compact:
7961@itemize @minus
7962@item
c8d0cf5c
CD
7963@vindex org-agenda-todo-ignore-scheduled
7964@vindex org-agenda-todo-ignore-deadlines
acedf35c 7965@vindex org-agenda-todo-ignore-timestamp
c8d0cf5c
CD
7966@vindex org-agenda-todo-ignore-with-date
7967Some people view a TODO item that has been @emph{scheduled} for execution or
7968have a @emph{deadline} (@pxref{Timestamps}) as no longer @emph{open}.
7969Configure the variables @code{org-agenda-todo-ignore-scheduled},
acedf35c
CD
7970@code{org-agenda-todo-ignore-deadlines},
7971@code{org-agenda-todo-ignore-timestamp} and/or
7972@code{org-agenda-todo-ignore-with-date} to exclude such items from the global
7973TODO list.
c8d0cf5c
CD
7974@item
7975@vindex org-agenda-todo-list-sublevels
4009494e
GM
7976TODO items may have sublevels to break up the task into subtasks. In
7977such cases it may be enough to list only the highest level TODO headline
7978and omit the sublevels from the global list. Configure the variable
7979@code{org-agenda-todo-list-sublevels} to get this behavior.
7980@end itemize
7981
7982@node Matching tags and properties, Timeline, Global TODO list, Built-in agenda views
a7808fba 7983@subsection Matching tags and properties
4009494e
GM
7984@cindex matching, of tags
7985@cindex matching, of properties
7986@cindex tags view
864c9740 7987@cindex match view
4009494e 7988
c8d0cf5c
CD
7989If headlines in the agenda files are marked with @emph{tags} (@pxref{Tags}),
7990or have properties (@pxref{Properties and Columns}), you can select headlines
7991based on this metadata and collect them into an agenda buffer. The match
7992syntax described here also applies when creating sparse trees with @kbd{C-c /
7993m}.
4009494e
GM
7994
7995@table @kbd
acedf35c 7996@orgcmd{C-c a m,org-tags-view}
4009494e
GM
7997Produce a list of all headlines that match a given set of tags. The
7998command prompts for a selection criterion, which is a boolean logic
dbc28aaa
CD
7999expression with tags, like @samp{+work+urgent-withboss} or
8000@samp{work|home} (@pxref{Tags}). If you often need a specific search,
4009494e 8001define a custom command for it (@pxref{Agenda dispatcher}).
acedf35c 8002@orgcmd{C-c a M,org-tags-view}
c8d0cf5c
CD
8003@vindex org-tags-match-list-sublevels
8004@vindex org-agenda-tags-todo-honor-ignore-options
86fbb8ca
CD
8005Like @kbd{C-c a m}, but only select headlines that are also TODO items in a
8006not-DONE state and force checking subitems (see variable
8007@code{org-tags-match-list-sublevels}). To exclude scheduled/deadline items,
8008see the variable @code{org-agenda-tags-todo-honor-ignore-options}. Matching
8009specific TODO keywords together with a tags match is also possible, see
8010@ref{Tag searches}.
4009494e
GM
8011@end table
8012
8013The commands available in the tags list are described in @ref{Agenda
8014commands}.
8015
c8d0cf5c 8016@subsubheading Match syntax
4009494e 8017
c8d0cf5c 8018@cindex Boolean logic, for tag/property searches
271672fa
BG
8019A search string can use Boolean operators @samp{&} for @code{AND} and
8020@samp{|} for @code{OR}@. @samp{&} binds more strongly than @samp{|}.
8021Parentheses are not implemented. Each element in the search is either a
8022tag, a regular expression matching tags, or an expression like
8023@code{PROPERTY OPERATOR VALUE} with a comparison operator, accessing a
8024property value. Each element may be preceded by @samp{-}, to select
8025against it, and @samp{+} is syntactic sugar for positive selection. The
8026@code{AND} operator @samp{&} is optional when @samp{+} or @samp{-} is
8027present. Here are some examples, using only tags.
4009494e 8028
c8d0cf5c 8029@table @samp
271672fa
BG
8030@item work
8031Select headlines tagged @samp{:work:}.
8032@item work&boss
8033Select headlines tagged @samp{:work:} and @samp{:boss:}.
c8d0cf5c
CD
8034@item +work-boss
8035Select headlines tagged @samp{:work:}, but discard those also tagged
8036@samp{:boss:}.
8037@item work|laptop
8038Selects lines tagged @samp{:work:} or @samp{:laptop:}.
8039@item work|laptop+night
8040Like before, but require the @samp{:laptop:} lines to be tagged also
8041@samp{:night:}.
4009494e
GM
8042@end table
8043
c8d0cf5c
CD
8044@cindex regular expressions, with tags search
8045Instead of a tag, you may also specify a regular expression enclosed in curly
8046braces. For example,
8047@samp{work+@{^boss.*@}} matches headlines that contain the tag
8048@samp{:work:} and any tag @i{starting} with @samp{boss}.
8049
271672fa
BG
8050@cindex group tags, as regular expressions
8051Group tags (@pxref{Tag groups}) are expanded as regular expressions. E.g.,
8052if @samp{:work:} is a group tag for the group @samp{:work:lab:conf:}, then
8053searching for @samp{work} will search for @samp{@{\(?:work\|lab\|conf\)@}}
8054and searching for @samp{-work} will search for all headlines but those with
8055one of the tag in the group (i.e., @samp{-@{\(?:work\|lab\|conf\)@}}).
8056
c8d0cf5c
CD
8057@cindex TODO keyword matching, with tags search
8058@cindex level, require for tags/property match
8059@cindex category, require for tags/property match
8060@vindex org-odd-levels-only
8061You may also test for properties (@pxref{Properties and Columns}) at the same
8062time as matching tags. The properties may be real properties, or special
8063properties that represent other metadata (@pxref{Special properties}). For
8064example, the ``property'' @code{TODO} represents the TODO keyword of the
d1389828 8065entry and the ``property'' @code{PRIORITY} represents the PRIORITY keyword of
271672fa 8066the entry. The ITEM special property cannot currently be used in tags/property
8223b1d2
BG
8067searches@footnote{But @pxref{x-agenda-skip-entry-regexp,
8068,skipping entries based on regexp}.}.
c8d0cf5c 8069
271672fa
BG
8070Except the @pxref{Special properties}, one other ``property'' can also be
8071used. @code{LEVEL} represents the level of an entry. So a search
8072@samp{+LEVEL=3+boss-TODO="DONE"} lists all level three headlines that have
8073the tag @samp{boss} and are @emph{not} marked with the TODO keyword DONE@.
8074In buffers with @code{org-odd-levels-only} set, @samp{LEVEL} does not count
8075the number of stars, but @samp{LEVEL=2} will correspond to 3 stars etc.
8076
c8d0cf5c 8077Here are more examples:
271672fa 8078
c8d0cf5c
CD
8079@table @samp
8080@item work+TODO="WAITING"
8081Select @samp{:work:}-tagged TODO lines with the specific TODO
8082keyword @samp{WAITING}.
8083@item work+TODO="WAITING"|home+TODO="WAITING"
8084Waiting tasks both at work and at home.
8085@end table
8086
8087When matching properties, a number of different operators can be used to test
8088the value of a property. Here is a complex example:
8089
8090@example
8091+work-boss+PRIORITY="A"+Coffee="unlimited"+Effort<2 \
8092 +With=@{Sarah\|Denny@}+SCHEDULED>="<2008-10-11>"
8093@end example
8094
8095@noindent
8096The type of comparison will depend on how the comparison value is written:
8097@itemize @minus
8098@item
8099If the comparison value is a plain number, a numerical comparison is done,
8100and the allowed operators are @samp{<}, @samp{=}, @samp{>}, @samp{<=},
8101@samp{>=}, and @samp{<>}.
8102@item
8103If the comparison value is enclosed in double-quotes,
8104a string comparison is done, and the same operators are allowed.
8105@item
8106If the comparison value is enclosed in double-quotes @emph{and} angular
8107brackets (like @samp{DEADLINE<="<2008-12-24 18:30>"}), both values are
8108assumed to be date/time specifications in the standard Org way, and the
8109comparison will be done accordingly. Special values that will be recognized
8110are @code{"<now>"} for now (including time), and @code{"<today>"}, and
1df7defd 8111@code{"<tomorrow>"} for these days at 0:00 hours, i.e., without a time
c8d0cf5c
CD
8112specification. Also strings like @code{"<+5d>"} or @code{"<-2m>"} with units
8113@code{d}, @code{w}, @code{m}, and @code{y} for day, week, month, and year,
8114respectively, can be used.
8115@item
8116If the comparison value is enclosed
8117in curly braces, a regexp match is performed, with @samp{=} meaning that the
8118regexp matches the property value, and @samp{<>} meaning that it does not
8119match.
8120@end itemize
8121
8122So the search string in the example finds entries tagged @samp{:work:} but
8123not @samp{:boss:}, which also have a priority value @samp{A}, a
8124@samp{:Coffee:} property with the value @samp{unlimited}, an @samp{Effort}
8125property that is numerically smaller than 2, a @samp{:With:} property that is
8126matched by the regular expression @samp{Sarah\|Denny}, and that are scheduled
8127on or after October 11, 2008.
8128
8129Accessing TODO, LEVEL, and CATEGORY during a search is fast. Accessing any
8130other properties will slow down the search. However, once you have paid the
8131price by accessing one property, testing additional properties is cheap
8132again.
8133
e66ba1df 8134You can configure Org mode to use property inheritance during a search, but
c8d0cf5c
CD
8135beware that this can slow down searches considerably. See @ref{Property
8136inheritance}, for details.
8137
8138For backward compatibility, and also for typing speed, there is also a
8139different way to test TODO states in a search. For this, terminate the
8140tags/property part of the search string (which may include several terms
8141connected with @samp{|}) with a @samp{/} and then specify a Boolean
8142expression just for TODO keywords. The syntax is then similar to that for
86fbb8ca 8143tags, but should be applied with care: for example, a positive selection on
1df7defd 8144several TODO keywords cannot meaningfully be combined with boolean AND@.
86fbb8ca
CD
8145However, @emph{negative selection} combined with AND can be meaningful. To
8146make sure that only lines are checked that actually have any TODO keyword
8147(resulting in a speed-up), use @kbd{C-c a M}, or equivalently start the TODO
8148part after the slash with @samp{!}. Using @kbd{C-c a M} or @samp{/!} will
8149not match TODO keywords in a DONE state. Examples:
c8d0cf5c
CD
8150
8151@table @samp
8152@item work/WAITING
8153Same as @samp{work+TODO="WAITING"}
8154@item work/!-WAITING-NEXT
8155Select @samp{:work:}-tagged TODO lines that are neither @samp{WAITING}
8156nor @samp{NEXT}
8157@item work/!+WAITING|+NEXT
8158Select @samp{:work:}-tagged TODO lines that are either @samp{WAITING} or
8159@samp{NEXT}.
8160@end table
8161
a351880d 8162@node Timeline, Search view, Matching tags and properties, Built-in agenda views
c8d0cf5c
CD
8163@subsection Timeline for a single file
8164@cindex timeline, single file
8165@cindex time-sorted view
8166
e66ba1df 8167The timeline summarizes all time-stamped items from a single Org mode
c8d0cf5c
CD
8168file in a @emph{time-sorted view}. The main purpose of this command is
8169to give an overview over events in a project.
8170
8171@table @kbd
acedf35c 8172@orgcmd{C-c a L,org-timeline}
c8d0cf5c
CD
8173Show a time-sorted view of the Org file, with all time-stamped items.
8174When called with a @kbd{C-u} prefix, all unfinished TODO entries
8175(scheduled or not) are also listed under the current date.
8176@end table
8177
8178@noindent
8179The commands available in the timeline buffer are listed in
8180@ref{Agenda commands}.
8181
a351880d
CD
8182@node Search view, Stuck projects, Timeline, Built-in agenda views
8183@subsection Search view
8184@cindex search view
8185@cindex text search
8186@cindex searching, for text
c8d0cf5c 8187
e66ba1df 8188This agenda view is a general text search facility for Org mode entries.
c8d0cf5c 8189It is particularly useful to find notes.
28a16a1b
CD
8190
8191@table @kbd
acedf35c 8192@orgcmd{C-c a s,org-search-view}
a351880d
CD
8193This is a special search that lets you select entries by matching a substring
8194or specific words using a boolean logic.
8195@end table
8196For example, the search string @samp{computer equipment} will find entries
8197that contain @samp{computer equipment} as a substring. If the two words are
8198separated by more space or a line break, the search will still match.
8199Search view can also search for specific keywords in the entry, using Boolean
8200logic. The search string @samp{+computer +wifi -ethernet -@{8\.11[bg]@}}
28a16a1b
CD
8201will search for note entries that contain the keywords @code{computer}
8202and @code{wifi}, but not the keyword @code{ethernet}, and which are also
8203not matched by the regular expression @code{8\.11[bg]}, meaning to
ed21c5c8
CD
8204exclude both 8.11b and 8.11g. The first @samp{+} is necessary to turn on
8205word search, other @samp{+} characters are optional. For more details, see
8206the docstring of the command @code{org-search-view}.
28a16a1b 8207
c8d0cf5c 8208@vindex org-agenda-text-search-extra-files
28a16a1b
CD
8209Note that in addition to the agenda files, this command will also search
8210the files listed in @code{org-agenda-text-search-extra-files}.
28a16a1b 8211
a351880d 8212@node Stuck projects, , Search view, Built-in agenda views
4009494e 8213@subsection Stuck projects
ce57c2fe 8214@pindex GTD, Getting Things Done
4009494e
GM
8215
8216If you are following a system like David Allen's GTD to organize your
8217work, one of the ``duties'' you have is a regular review to make sure
8218that all projects move along. A @emph{stuck} project is a project that
8219has no defined next actions, so it will never show up in the TODO lists
e66ba1df 8220Org mode produces. During the review, you need to identify such
4009494e
GM
8221projects and define next actions for them.
8222
8223@table @kbd
acedf35c 8224@orgcmd{C-c a #,org-agenda-list-stuck-projects}
4009494e
GM
8225List projects that are stuck.
8226@kindex C-c a !
8227@item C-c a !
c8d0cf5c 8228@vindex org-stuck-projects
4009494e
GM
8229Customize the variable @code{org-stuck-projects} to define what a stuck
8230project is and how to find it.
8231@end table
8232
8233You almost certainly will have to configure this view before it will
8234work for you. The built-in default assumes that all your projects are
8235level-2 headlines, and that a project is not stuck if it has at least
a7808fba 8236one entry marked with a TODO keyword TODO or NEXT or NEXTACTION.
4009494e 8237
e66ba1df 8238Let's assume that you, in your own way of using Org mode, identify
a7808fba 8239projects with a tag PROJECT, and that you use a TODO keyword MAYBE to
864c9740 8240indicate a project that should not be considered yet. Let's further
a7808fba 8241assume that the TODO keyword DONE marks finished projects, and that NEXT
4009494e
GM
8242and TODO indicate next actions. The tag @@SHOP indicates shopping and
8243is a next action even without the NEXT tag. Finally, if the project
8244contains the special word IGNORE anywhere, it should not be listed
8245either. In this case you would start by identifying eligible projects
c8d0cf5c
CD
8246with a tags/todo match@footnote{@xref{Tag searches}.}
8247@samp{+PROJECT/-MAYBE-DONE}, and then check for TODO, NEXT, @@SHOP, and
8248IGNORE in the subtree to identify projects that are not stuck. The
8249correct customization for this is
4009494e
GM
8250
8251@lisp
8252(setq org-stuck-projects
8253 '("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP")
8254 "\\<IGNORE\\>"))
8255@end lisp
8256
c8d0cf5c
CD
8257Note that if a project is identified as non-stuck, the subtree of this entry
8258will still be searched for stuck projects.
4009494e 8259
a7808fba 8260@node Presentation and sorting, Agenda commands, Built-in agenda views, Agenda Views
4009494e
GM
8261@section Presentation and sorting
8262@cindex presentation, of agenda items
8263
c8d0cf5c 8264@vindex org-agenda-prefix-format
ce57c2fe 8265@vindex org-agenda-tags-column
e66ba1df 8266Before displaying items in an agenda view, Org mode visually prepares the
ce57c2fe
BG
8267items and sorts them. Each item occupies a single line. The line starts
8268with a @emph{prefix} that contains the @emph{category} (@pxref{Categories})
8269of the item and other important information. You can customize in which
8270column tags will be displayed through @code{org-agenda-tags-column}. You can
8271also customize the prefix using the option @code{org-agenda-prefix-format}.
8272This prefix is followed by a cleaned-up version of the outline headline
4009494e
GM
8273associated with the item.
8274
8275@menu
c0468714
GM
8276* Categories:: Not all tasks are equal
8277* Time-of-day specifications:: How the agenda knows the time
271672fa
BG
8278* Sorting agenda items:: The order of things
8279* Filtering/limiting agenda items:: Dynamically narrow the agenda
4009494e
GM
8280@end menu
8281
8282@node Categories, Time-of-day specifications, Presentation and sorting, Presentation and sorting
8283@subsection Categories
8284
8285@cindex category
afe98dfa 8286@cindex #+CATEGORY
4009494e
GM
8287The category is a broad label assigned to each agenda item. By default,
8288the category is simply derived from the file name, but you can also
dbc28aaa 8289specify it with a special line in the buffer, like this@footnote{For
c8d0cf5c 8290backward compatibility, the following also works: if there are several
dbc28aaa
CD
8291such lines in a file, each specifies the category for the text below it.
8292The first category also applies to any text before the first CATEGORY
8293line. However, using this method is @emph{strongly} deprecated as it is
8294incompatible with the outline structure of the document. The correct
8295method for setting multiple categories in a buffer is using a
8296property.}:
4009494e
GM
8297
8298@example
8299#+CATEGORY: Thesis
8300@end example
8301
dbc28aaa 8302@noindent
c8d0cf5c 8303@cindex property, CATEGORY
dbc28aaa 8304If you would like to have a special CATEGORY for a single entry or a
55e0839d
CD
8305(sub)tree, give the entry a @code{:CATEGORY:} property with the
8306special category you want to apply as the value.
dbc28aaa
CD
8307
8308@noindent
8309The display in the agenda buffer looks best if the category is not
8310longer than 10 characters.
4009494e 8311
acedf35c
CD
8312@noindent
8313You can set up icons for category by customizing the
8314@code{org-agenda-category-icon-alist} variable.
8315
271672fa 8316@node Time-of-day specifications, Sorting agenda items, Categories, Presentation and sorting
a7808fba 8317@subsection Time-of-day specifications
4009494e
GM
8318@cindex time-of-day specification
8319
e66ba1df 8320Org mode checks each agenda item for a time-of-day specification. The
c8d0cf5c 8321time can be part of the timestamp that triggered inclusion into the
4009494e 8322agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}. Time
c8d0cf5c 8323ranges can be specified with two timestamps, like
4009494e
GM
8324@c
8325@w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
8326
8327In the headline of the entry itself, a time(range) may also appear as
44ce9197 8328plain text (like @samp{12:45} or a @samp{8:30-1pm}). If the agenda
a7808fba 8329integrates the Emacs diary (@pxref{Weekly/daily agenda}), time
4009494e
GM
8330specifications in diary entries are recognized as well.
8331
e66ba1df 8332For agenda display, Org mode extracts the time and displays it in a
4009494e
GM
8333standard 24 hour format as part of the prefix. The example times in
8334the previous paragraphs would end up in the agenda like this:
8335
8336@example
8337 8:30-13:00 Arthur Dent lies in front of the bulldozer
8338 12:45...... Ford Prefect arrives and takes Arthur to the pub
8339 19:00...... The Vogon reads his poem
a50253cc 8340 20:30-22:15 Marvin escorts the Hitchhikers to the bridge
4009494e
GM
8341@end example
8342
8343@cindex time grid
8344If the agenda is in single-day mode, or for the display of today, the
8345timed entries are embedded in a time grid, like
8346
8347@example
8348 8:00...... ------------------
8349 8:30-13:00 Arthur Dent lies in front of the bulldozer
8350 10:00...... ------------------
8351 12:00...... ------------------
8352 12:45...... Ford Prefect arrives and takes Arthur to the pub
8353 14:00...... ------------------
8354 16:00...... ------------------
8355 18:00...... ------------------
8356 19:00...... The Vogon reads his poem
8357 20:00...... ------------------
2096a1b6 8358 20:30-22:15 Marvin escorts the Hitchhikers to the bridge
4009494e
GM
8359@end example
8360
c8d0cf5c
CD
8361@vindex org-agenda-use-time-grid
8362@vindex org-agenda-time-grid
4009494e
GM
8363The time grid can be turned on and off with the variable
8364@code{org-agenda-use-time-grid}, and can be configured with
8365@code{org-agenda-time-grid}.
8366
271672fa
BG
8367@node Sorting agenda items, Filtering/limiting agenda items, Time-of-day specifications, Presentation and sorting
8368@subsection Sorting agenda items
4009494e
GM
8369@cindex sorting, of agenda items
8370@cindex priorities, of agenda items
8371Before being inserted into a view, the items are sorted. How this is
8372done depends on the type of view.
8373@itemize @bullet
8374@item
c8d0cf5c 8375@vindex org-agenda-files
4009494e
GM
8376For the daily/weekly agenda, the items for each day are sorted. The
8377default order is to first collect all items containing an explicit
8378time-of-day specification. These entries will be shown at the beginning
8379of the list, as a @emph{schedule} for the day. After that, items remain
8380grouped in categories, in the sequence given by @code{org-agenda-files}.
8381Within each category, items are sorted by priority (@pxref{Priorities}),
8382which is composed of the base priority (2000 for priority @samp{A}, 1000
8383for @samp{B}, and 0 for @samp{C}), plus additional increments for
8384overdue scheduled or deadline items.
28a16a1b 8385@item
4009494e
GM
8386For the TODO list, items remain in the order of categories, but within
8387each category, sorting takes place according to priority
c8d0cf5c
CD
8388(@pxref{Priorities}). The priority used for sorting derives from the
8389priority cookie, with additions depending on how close an item is to its due
8390or scheduled date.
4009494e
GM
8391@item
8392For tags matches, items are not sorted at all, but just appear in the
8393sequence in which they are found in the agenda files.
8394@end itemize
8395
c8d0cf5c 8396@vindex org-agenda-sorting-strategy
4009494e 8397Sorting can be customized using the variable
a7808fba 8398@code{org-agenda-sorting-strategy}, and may also include criteria based on
71d35b24 8399the estimated effort of an entry (@pxref{Effort estimates}).
4009494e 8400
271672fa
BG
8401@node Filtering/limiting agenda items, , Sorting agenda items, Presentation and sorting
8402@subsection Filtering/limiting agenda items
4009494e 8403
271672fa
BG
8404Agenda built-in or customized commands are statically defined. Agenda
8405filters and limits provide two ways of dynamically narrowing down the list of
8406agenda entries: @emph{fitlers} and @emph{limits}. Filters only act on the
8407display of the items, while limits take effect before the list of agenda
8408entries is built. Filter are more often used interactively, while limits are
8409mostly useful when defined as local variables within custom agenda commands.
4009494e 8410
271672fa
BG
8411@subsubheading Filtering in the agenda
8412@cindex filtering, by tag, category, top headline and effort, in agenda
8413@cindex tag filtering, in agenda
8414@cindex category filtering, in agenda
8415@cindex top headline filtering, in agenda
8416@cindex effort filtering, in agenda
8417@cindex query editing, in agenda
4009494e
GM
8418
8419@table @kbd
271672fa
BG
8420@orgcmd{/,org-agenda-filter-by-tag}
8421@vindex org-agenda-tag-filter-preset
8422Filter the agenda view with respect to a tag and/or effort estimates. The
8423difference between this and a custom agenda command is that filtering is very
8424fast, so that you can switch quickly between different filters without having
8425to recreate the agenda.@footnote{Custom commands can preset a filter by
8426binding the variable @code{org-agenda-tag-filter-preset} as an option. This
8427filter will then be applied to the view and persist as a basic filter through
8428refreshes and more secondary filtering. The filter is a global property of
8429the entire agenda view---in a block agenda, you should only set this in the
8430global options section, not in the section of an individual block.}
6eb02347 8431
271672fa
BG
8432You will be prompted for a tag selection letter; @key{SPC} will mean any tag at
8433all. Pressing @key{TAB} at that prompt will offer use completion to select a
8434tag (including any tags that do not have a selection character). The command
8435then hides all entries that do not contain or inherit this tag. When called
8436with prefix arg, remove the entries that @emph{do} have the tag. A second
8437@kbd{/} at the prompt will turn off the filter and unhide any hidden entries.
8438If the first key you press is either @kbd{+} or @kbd{-}, the previous filter
8439will be narrowed by requiring or forbidding the selected additional tag.
8440Instead of pressing @kbd{+} or @kbd{-} after @kbd{/}, you can also
8441immediately use the @kbd{\} command.
4009494e 8442
271672fa
BG
8443@vindex org-sort-agenda-noeffort-is-high
8444In order to filter for effort estimates, you should set up allowed
8445efforts globally, for example
8446@lisp
8447(setq org-global-properties
8448 '(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))
8449@end lisp
8450You can then filter for an effort by first typing an operator, one of
8451@kbd{<}, @kbd{>}, and @kbd{=}, and then the one-digit index of an effort
8452estimate in your array of allowed values, where @kbd{0} means the 10th value.
8453The filter will then restrict to entries with effort smaller-or-equal, equal,
8454or larger-or-equal than the selected value. If the digits 0--9 are not used
8455as fast access keys to tags, you can also simply press the index digit
8456directly without an operator. In this case, @kbd{<} will be assumed. For
8457application of the operator, entries without a defined effort will be treated
8458according to the value of @code{org-sort-agenda-noeffort-is-high}. To filter
8459for tasks without effort definition, press @kbd{?} as the operator.
8460
8461Org also supports automatic, context-aware tag filtering. If the variable
8462@code{org-agenda-auto-exclude-function} is set to a user-defined function,
8463that function can decide which tags should be excluded from the agenda
8464automatically. Once this is set, the @kbd{/} command then accepts @kbd{RET}
8465as a sub-option key and runs the auto exclusion logic. For example, let's
8466say you use a @code{Net} tag to identify tasks which need network access, an
8467@code{Errand} tag for errands in town, and a @code{Call} tag for making phone
8468calls. You could auto-exclude these tags based on the availability of the
8469Internet, and outside of business hours, with something like this:
8470
8471@smalllisp
8472@group
8473(defun org-my-auto-exclude-function (tag)
8474 (and (cond
8475 ((string= tag "Net")
8476 (/= 0 (call-process "/sbin/ping" nil nil nil
8477 "-c1" "-q" "-t1" "mail.gnu.org")))
8478 ((or (string= tag "Errand") (string= tag "Call"))
8479 (let ((hour (nth 2 (decode-time))))
8480 (or (< hour 8) (> hour 21)))))
8481 (concat "-" tag)))
8482
8483(setq org-agenda-auto-exclude-function 'org-my-auto-exclude-function)
8484@end group
8485@end smalllisp
8486
8487@orgcmd{\\,org-agenda-filter-by-tag-refine}
8488Narrow the current agenda filter by an additional condition. When called with
8489prefix arg, remove the entries that @emph{do} have the tag, or that do match
8490the effort criterion. You can achieve the same effect by pressing @kbd{+} or
8491@kbd{-} as the first key after the @kbd{/} command.
8492
8493@c
8494@kindex [
8495@kindex ]
8496@kindex @{
8497@kindex @}
8498@item [ ] @{ @}
8499@table @i
8500@item @r{in} search view
8501add new search words (@kbd{[} and @kbd{]}) or new regular expressions
8502(@kbd{@{} and @kbd{@}}) to the query string. The opening bracket/brace will
8503add a positive search term prefixed by @samp{+}, indicating that this search
8504term @i{must} occur/match in the entry. The closing bracket/brace will add a
8505negative search term which @i{must not} occur/match in the entry for it to be
8506selected.
8507@end table
8508
8509@orgcmd{<,org-agenda-filter-by-category}
8510@vindex org-agenda-category-filter-preset
8511
8512Filter the current agenda view with respect to the category of the item at
8513point. Pressing @code{<} another time will remove this filter. You can add
8514a filter preset through the option @code{org-agenda-category-filter-preset}
8515(see below.)
8516
8517@orgcmd{^,org-agenda-filter-by-top-headline}
8518Filter the current agenda view and only display the siblings and the parent
8519headline of the one at point.
8520
8521@orgcmd{=,org-agenda-filter-by-regexp}
8522@vindex org-agenda-regexp-filter-preset
8523
8524Filter the agenda view by a regular expression: only show agenda entries
8525matching the regular expression the user entered. When called with a prefix
8526argument, it will filter @emph{out} entries matching the regexp. With two
8527universal prefix arguments, it will remove all the regexp filters, which can
8528be accumulated. You can add a filter preset through the option
8529@code{org-agenda-category-filter-preset} (see below.)
8530
8531@orgcmd{|,org-agenda-filter-remove-all}
8532Remove all filters in the current agenda view.
8533@end table
8534
8535@subsubheading Setting limits for the agenda
8536@cindex limits, in agenda
8537@vindex org-agenda-max-entries
8538@vindex org-agenda-max-effort
8539@vindex org-agenda-max-todos
8540@vindex org-agenda-max-tags
8541
8542Here is a list of options that you can set, either globally, or locally in
8543your custom agenda views@pxref{Custom agenda views}.
8544
8545@table @var
8546@item org-agenda-max-entries
8547Limit the number of entries.
8548@item org-agenda-max-effort
8549Limit the duration of accumulated efforts (as minutes).
8550@item org-agenda-max-todos
8551Limit the number of entries with TODO keywords.
8552@item org-agenda-max-tags
8553Limit the number of tagged entries.
8554@end table
8555
8556When set to a positive integer, each option will exclude entries from other
d1389828 8557categories: for example, @code{(setq org-agenda-max-effort 100)} will limit
271672fa
BG
8558the agenda to 100 minutes of effort and exclude any entry that as no effort
8559property. If you want to include entries with no effort property, use a
8560negative value for @code{org-agenda-max-effort}.
8561
8562One useful setup is to use @code{org-agenda-max-entries} locally in a custom
8563command. For example, this custom command will display the next five entries
8564with a @code{NEXT} TODO keyword.
8565
8566@smalllisp
8567(setq org-agenda-custom-commands
8568 '(("n" todo "NEXT"
8569 ((org-agenda-max-entries 5)))))
8570@end smalllisp
8571
8572Once you mark one of these five entry as @code{DONE}, rebuilding the agenda
8573will again the next five entries again, including the first entry that was
8574excluded so far.
8575
8576You can also dynamically set temporary limits@footnote{Those temporary limits
8577are lost when rebuilding the agenda.}:
8578
8579@table @kbd
8580@orgcmd{~,org-agenda-limit-interactively}
8581This prompts for the type of limit to apply and its value.
8582@end table
8583
8584@node Agenda commands, Custom agenda views, Presentation and sorting, Agenda Views
8585@section Commands in the agenda buffer
8586@cindex commands, in agenda buffer
8587
8588Entries in the agenda buffer are linked back to the Org file or diary
8589file where they originate. You are not allowed to edit the agenda
8590buffer itself, but commands are provided to show and jump to the
8591original entry location, and to edit the Org files ``remotely'' from
8592the agenda buffer. In this way, all information is stored only once,
8593removing the risk that your agenda and note files may diverge.
8594
8595Some commands can be executed with mouse clicks on agenda lines. For
8596the other commands, the cursor needs to be in the desired line.
8597
8598@table @kbd
8599@tsubheading{Motion}
8600@cindex motion commands in agenda
8601@orgcmd{n,org-agenda-next-line}
8602Next line (same as @key{down} and @kbd{C-n}).
8603@orgcmd{p,org-agenda-previous-line}
8604Previous line (same as @key{up} and @kbd{C-p}).
8605@tsubheading{View/Go to Org file}
8606@orgcmdkkc{@key{SPC},mouse-3,org-agenda-show-and-scroll-up}
8607Display the original location of the item in another window.
8608With prefix arg, make sure that the entire entry is made visible in the
8609outline, not only the heading.
8610@c
8611@orgcmd{L,org-agenda-recenter}
8612Display original location and recenter that window.
8613@c
8614@orgcmdkkc{@key{TAB},mouse-2,org-agenda-goto}
8615Go to the original location of the item in another window.
8616@c
8617@orgcmd{@key{RET},org-agenda-switch-to}
8618Go to the original location of the item and delete other windows.
8619@c
8620@orgcmd{F,org-agenda-follow-mode}
8621@vindex org-agenda-start-with-follow-mode
8622Toggle Follow mode. In Follow mode, as you move the cursor through
8623the agenda buffer, the other window always shows the corresponding
8624location in the Org file. The initial setting for this mode in new
8625agenda buffers can be set with the variable
8626@code{org-agenda-start-with-follow-mode}.
8627@c
8628@orgcmd{C-c C-x b,org-agenda-tree-to-indirect-buffer}
8629Display the entire subtree of the current item in an indirect buffer. With a
8630numeric prefix argument N, go up to level N and then take that tree. If N is
8631negative, go up that many levels. With a @kbd{C-u} prefix, do not remove the
8632previously used indirect buffer.
8633
8634@orgcmd{C-c C-o,org-agenda-open-link}
8635Follow a link in the entry. This will offer a selection of any links in the
8636text belonging to the referenced Org node. If there is only one link, it
8637will be followed without a selection prompt.
8638
8639@tsubheading{Change display}
8640@cindex display changing, in agenda
8641@kindex A
8642@item A
8643Interactively select another agenda view and append it to the current view.
ce57c2fe 8644@c
4009494e
GM
8645@kindex o
8646@item o
8647Delete other windows.
8648@c
e4920bc9 8649@orgcmdkskc{v d,d,org-agenda-day-view}
8c8b834f 8650@xorgcmdkskc{v w,w,org-agenda-week-view}
271672fa 8651@xorgcmd{v t,org-agenda-fortnight-view}
acedf35c 8652@xorgcmd{v m,org-agenda-month-view}
8c8b834f 8653@xorgcmd{v y,org-agenda-year-view}
ce57c2fe
BG
8654@xorgcmd{v SPC,org-agenda-reset-view}
8655@vindex org-agenda-span
8656Switch to day/week/month/year view. When switching to day or week view, this
8657setting becomes the default for subsequent agenda refreshes. Since month and
8658year views are slow to create, they do not become the default. A numeric
8659prefix argument may be used to jump directly to a specific day of the year,
8660ISO week, month, or year, respectively. For example, @kbd{32 d} jumps to
8661February 1st, @kbd{9 w} to ISO week number 9. When setting day, week, or
8662month view, a year may be encoded in the prefix argument as well. For
8663example, @kbd{200712 w} will jump to week 12 in 2007. If such a year
8664specification has only one or two digits, it will be mapped to the interval
f99f1641 86651938--2037. @kbd{v @key{SPC}} will reset to what is set in
ce57c2fe 8666@code{org-agenda-span}.
4009494e 8667@c
acedf35c
CD
8668@orgcmd{f,org-agenda-later}
8669Go forward in time to display the following @code{org-agenda-current-span} days.
6eb02347 8670For example, if the display covers a week, switch to the following week.
acedf35c 8671With prefix arg, go forward that many times @code{org-agenda-current-span} days.
6eb02347 8672@c
acedf35c 8673@orgcmd{b,org-agenda-earlier}
6eb02347
CD
8674Go backward in time to display earlier dates.
8675@c
acedf35c 8676@orgcmd{.,org-agenda-goto-today}
6eb02347
CD
8677Go to today.
8678@c
acedf35c 8679@orgcmd{j,org-agenda-goto-date}
6eb02347
CD
8680Prompt for a date and go there.
8681@c
acedf35c
CD
8682@orgcmd{J,org-agenda-clock-goto}
8683Go to the currently clocked-in task @i{in the agenda buffer}.
afe98dfa 8684@c
acedf35c 8685@orgcmd{D,org-agenda-toggle-diary}
a7808fba 8686Toggle the inclusion of diary entries. See @ref{Weekly/daily agenda}.
4009494e 8687@c
acedf35c 8688@orgcmdkskc{v l,l,org-agenda-log-mode}
ed21c5c8 8689@kindex v L
6eb02347
CD
8690@vindex org-log-done
8691@vindex org-agenda-log-mode-items
8692Toggle Logbook mode. In Logbook mode, entries that were marked DONE while
8693logging was on (variable @code{org-log-done}) are shown in the agenda, as are
8694entries that have been clocked on that day. You can configure the entry
8695types that should be included in log mode using the variable
8696@code{org-agenda-log-mode-items}. When called with a @kbd{C-u} prefix, show
8697all possible logbook entries, including state changes. When called with two
271672fa 8698prefix arguments @kbd{C-u C-u}, show only logging information, nothing else.
ed21c5c8 8699@kbd{v L} is equivalent to @kbd{C-u v l}.
6eb02347 8700@c
acedf35c 8701@orgcmdkskc{v [,[,org-agenda-manipulate-query-add}
6eb02347
CD
8702Include inactive timestamps into the current view. Only for weekly/daily
8703agenda and timeline views.
8704@c
acedf35c
CD
8705@orgcmd{v a,org-agenda-archives-mode}
8706@xorgcmd{v A,org-agenda-archives-mode 'files}
6eb02347
CD
8707Toggle Archives mode. In Archives mode, trees that are marked
8708@code{ARCHIVED} are also scanned when producing the agenda. When you use the
8709capital @kbd{A}, even all archive files are included. To exit archives mode,
8710press @kbd{v a} again.
8711@c
acedf35c 8712@orgcmdkskc{v R,R,org-agenda-clockreport-mode}
6eb02347 8713@vindex org-agenda-start-with-clockreport-mode
e66ba1df 8714@vindex org-clock-report-include-clocking-task
6eb02347 8715Toggle Clockreport mode. In Clockreport mode, the daily/weekly agenda will
271672fa 8716always show a table with the clocked times for the time span and file scope
6eb02347
CD
8717covered by the current agenda view. The initial setting for this mode in new
8718agenda buffers can be set with the variable
acedf35c 8719@code{org-agenda-start-with-clockreport-mode}. By using a prefix argument
1df7defd 8720when toggling this mode (i.e., @kbd{C-u R}), the clock table will not show
acedf35c 8721contributions from entries that are hidden by agenda filtering@footnote{Only
e66ba1df
BG
8722tags filtering will be respected here, effort filtering is ignored.}. See
8723also the variable @code{org-clock-report-include-clocking-task}.
6eb02347 8724@c
ce57c2fe
BG
8725@orgkey{v c}
8726@vindex org-agenda-clock-consistency-checks
8727Show overlapping clock entries, clocking gaps, and other clocking problems in
8728the current agenda range. You can then visit clocking lines and fix them
8729manually. See the variable @code{org-agenda-clock-consistency-checks} for
8730information on how to customize the definition of what constituted a clocking
8731problem. To return to normal agenda display, press @kbd{l} to exit Logbook
8732mode.
8733@c
acedf35c 8734@orgcmdkskc{v E,E,org-agenda-entry-text-mode}
6eb02347
CD
8735@vindex org-agenda-start-with-entry-text-mode
8736@vindex org-agenda-entry-text-maxlines
8737Toggle entry text mode. In entry text mode, a number of lines from the Org
8738outline node referenced by an agenda line will be displayed below the line.
8739The maximum number of lines is given by the variable
8740@code{org-agenda-entry-text-maxlines}. Calling this command with a numeric
8741prefix argument will temporarily modify that number to the prefix value.
8742@c
acedf35c 8743@orgcmd{G,org-agenda-toggle-time-grid}
c8d0cf5c
CD
8744@vindex org-agenda-use-time-grid
8745@vindex org-agenda-time-grid
4009494e
GM
8746Toggle the time grid on and off. See also the variables
8747@code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
8748@c
ce57c2fe 8749@orgcmd{r,org-agenda-redo}
560bb6ea 8750Recreate the agenda buffer, for example to reflect the changes after
3bcfba17 8751modification of the timestamps of items with @kbd{S-@key{left}} and
560bb6ea 8752@kbd{S-@key{right}}. When the buffer is the global TODO list, a prefix
4009494e
GM
8753argument is interpreted to create a selective list for a specific TODO
8754keyword.
ce57c2fe 8755@orgcmd{g,org-agenda-redo}
28a16a1b 8756Same as @kbd{r}.
4009494e 8757@c
acedf35c 8758@orgcmdkskc{C-x C-s,s,org-save-all-org-buffers}
c8d0cf5c
CD
8759Save all Org buffers in the current Emacs session, and also the locations of
8760IDs.
4009494e 8761@c
acedf35c 8762@orgcmd{C-c C-x C-c,org-agenda-columns}
c8d0cf5c 8763@vindex org-columns-default-format
a7808fba
CD
8764Invoke column view (@pxref{Column view}) in the agenda buffer. The column
8765view format is taken from the entry at point, or (if there is no entry at
8766point), from the first entry in the agenda view. So whatever the format for
8767that entry would be in the original buffer (taken from a property, from a
8768@code{#+COLUMNS} line, or from the default variable
8769@code{org-columns-default-format}), will be used in the agenda.
4009494e 8770
acedf35c 8771@orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
c8d0cf5c
CD
8772Remove the restriction lock on the agenda, if it is currently restricted to a
8773file or subtree (@pxref{Agenda files}).
8774
864c9740 8775@tsubheading{Secondary filtering and query editing}
28a16a1b 8776
271672fa
BG
8777For a detailed description of these commands, see @pxref{Filtering/limiting
8778agenda items}.
e66ba1df 8779
acedf35c 8780@orgcmd{/,org-agenda-filter-by-tag}
e66ba1df 8781@vindex org-agenda-tag-filter-preset
271672fa 8782Filter the agenda view with respect to a tag and/or effort estimates.
71d35b24 8783
271672fa
BG
8784@orgcmd{\\,org-agenda-filter-by-tag-refine}
8785Narrow the current agenda filter by an additional condition.
71d35b24 8786
271672fa
BG
8787@orgcmd{<,org-agenda-filter-by-category}
8788@vindex org-agenda-category-filter-preset
71d35b24 8789
271672fa
BG
8790Filter the current agenda view with respect to the category of the item at
8791point. Pressing @code{<} another time will remove this filter.
a351880d 8792
271672fa
BG
8793@orgcmd{^,org-agenda-filter-by-top-headline}
8794Filter the current agenda view and only display the siblings and the parent
8795headline of the one at point.
a351880d 8796
271672fa
BG
8797@orgcmd{=,org-agenda-filter-by-regexp}
8798@vindex org-agenda-regexp-filter-preset
a351880d 8799
271672fa
BG
8800Filter the agenda view by a regular expression: only show agenda entries
8801matching the regular expression the user entered. When called with a prefix
8802argument, it will filter @emph{out} entries matching the regexp. With two
8803universal prefix arguments, it will remove all the regexp filters, which can
8804be accumulated. You can add a filter preset through the option
8805@code{org-agenda-category-filter-preset} (see below.)
864c9740 8806
271672fa
BG
8807@orgcmd{|,org-agenda-filter-remove-all}
8808Remove all filters in the current agenda view.
28a16a1b 8809
4009494e
GM
8810@tsubheading{Remote editing}
8811@cindex remote editing, from agenda
8812
f99f1641 8813@item 0--9
4009494e
GM
8814Digit argument.
8815@c
8816@cindex undoing remote-editing events
8817@cindex remote editing, undo
acedf35c 8818@orgcmd{C-_,org-agenda-undo}
4009494e
GM
8819Undo a change due to a remote editing command. The change is undone
8820both in the agenda buffer and in the remote buffer.
8821@c
acedf35c 8822@orgcmd{t,org-agenda-todo}
4009494e
GM
8823Change the TODO state of the item, both in the agenda and in the
8824original org file.
8825@c
acedf35c
CD
8826@orgcmd{C-S-@key{right},org-agenda-todo-nextset}
8827@orgcmd{C-S-@key{left},org-agenda-todo-previousset}
a351880d
CD
8828Switch to the next/previous set of TODO keywords.
8829@c
acedf35c 8830@orgcmd{C-k,org-agenda-kill}
c8d0cf5c 8831@vindex org-agenda-confirm-kill
4009494e 8832Delete the current agenda item along with the entire subtree belonging
a7808fba 8833to it in the original Org file. If the text to be deleted remotely
4009494e
GM
8834is longer than one line, the kill needs to be confirmed by the user. See
8835variable @code{org-agenda-confirm-kill}.
8836@c
acedf35c 8837@orgcmd{C-c C-w,org-agenda-refile}
c8d0cf5c
CD
8838Refile the entry at point.
8839@c
acedf35c 8840@orgcmdkskc{C-c C-x C-a,a,org-agenda-archive-default-with-confirmation}
a351880d
CD
8841@vindex org-archive-default-command
8842Archive the subtree corresponding to the entry at point using the default
8843archiving command set in @code{org-archive-default-command}. When using the
8844@code{a} key, confirmation will be required.
8845@c
acedf35c 8846@orgcmd{C-c C-x a,org-agenda-toggle-archive-tag}
a7808fba
CD
8847Toggle the ARCHIVE tag for the current headline.
8848@c
acedf35c 8849@orgcmd{C-c C-x A,org-agenda-archive-to-archive-sibling}
c8d0cf5c
CD
8850Move the subtree corresponding to the current entry to its @emph{archive
8851sibling}.
a7808fba 8852@c
acedf35c 8853@orgcmdkskc{C-c C-x C-s,$,org-agenda-archive}
a7808fba 8854Archive the subtree corresponding to the current headline. This means the
b349f79f 8855entry will be moved to the configured archive location, most likely a
a7808fba 8856different file.
4009494e 8857@c
acedf35c 8858@orgcmd{T,org-agenda-show-tags}
c8d0cf5c 8859@vindex org-agenda-show-inherited-tags
96c8522a
CD
8860Show all tags associated with the current item. This is useful if you have
8861turned off @code{org-agenda-show-inherited-tags}, but still want to see all
8862tags of a headline occasionally.
4009494e 8863@c
acedf35c 8864@orgcmd{:,org-agenda-set-tags}
dbc28aaa
CD
8865Set tags for the current headline. If there is an active region in the
8866agenda, change a tag for all headings in the region.
4009494e 8867@c
4009494e
GM
8868@kindex ,
8869@item ,
acedf35c 8870Set the priority for the current item (@command{org-agenda-priority}).
e66ba1df 8871Org mode prompts for the priority character. If you reply with @key{SPC},
ce57c2fe 8872the priority cookie is removed from the entry.
4009494e 8873@c
acedf35c 8874@orgcmd{P,org-agenda-show-priority}
4009494e
GM
8875Display weighted priority of current item.
8876@c
acedf35c 8877@orgcmdkkc{+,S-@key{up},org-agenda-priority-up}
4009494e
GM
8878Increase the priority of the current item. The priority is changed in
8879the original buffer, but the agenda is not resorted. Use the @kbd{r}
8880key for this.
8881@c
acedf35c 8882@orgcmdkkc{-,S-@key{down},org-agenda-priority-down}
4009494e
GM
8883Decrease the priority of the current item.
8884@c
acedf35c 8885@orgcmdkkc{z,C-c C-z,org-agenda-add-note}
c8d0cf5c 8886@vindex org-log-into-drawer
acedf35c 8887Add a note to the entry. This note will be recorded, and then filed to the
c8d0cf5c 8888same location where state change notes are put. Depending on
acedf35c 8889@code{org-log-into-drawer}, this may be inside a drawer.
c8d0cf5c 8890@c
acedf35c 8891@orgcmd{C-c C-a,org-attach}
864c9740
CD
8892Dispatcher for all command related to attachments.
8893@c
acedf35c
CD
8894@orgcmd{C-c C-s,org-agenda-schedule}
8895Schedule this item. With prefix arg remove the scheduling timestamp
4009494e 8896@c
acedf35c
CD
8897@orgcmd{C-c C-d,org-agenda-deadline}
8898Set a deadline for this item. With prefix arg remove the deadline.
4009494e 8899@c
acedf35c 8900@orgcmd{S-@key{right},org-agenda-do-date-later}
c8d0cf5c 8901Change the timestamp associated with the current line by one day into the
e66ba1df
BG
8902future. If the date is in the past, the first call to this command will move
8903it to today.@*
8904With a numeric prefix argument, change it by that many days. For example,
8905@kbd{3 6 5 S-@key{right}} will change it by a year. With a @kbd{C-u} prefix,
8906change the time by one hour. If you immediately repeat the command, it will
8907continue to change hours even without the prefix arg. With a double @kbd{C-u
8908C-u} prefix, do the same for changing minutes.@*
8909The stamp is changed in the original Org file, but the change is not directly
8910reflected in the agenda buffer. Use @kbd{r} or @kbd{g} to update the buffer.
4009494e 8911@c
acedf35c 8912@orgcmd{S-@key{left},org-agenda-do-date-earlier}
c8d0cf5c 8913Change the timestamp associated with the current line by one day
4009494e
GM
8914into the past.
8915@c
acedf35c 8916@orgcmd{>,org-agenda-date-prompt}
ed21c5c8
CD
8917Change the timestamp associated with the current line. The key @kbd{>} has
8918been chosen, because it is the same as @kbd{S-.} on my keyboard.
4009494e 8919@c
acedf35c 8920@orgcmd{I,org-agenda-clock-in}
4009494e
GM
8921Start the clock on the current item. If a clock is running already, it
8922is stopped first.
8923@c
acedf35c 8924@orgcmd{O,org-agenda-clock-out}
4009494e
GM
8925Stop the previously started clock.
8926@c
acedf35c 8927@orgcmd{X,org-agenda-clock-cancel}
4009494e 8928Cancel the currently running clock.
acedf35c
CD
8929@c
8930@orgcmd{J,org-agenda-clock-goto}
dbc28aaa 8931Jump to the running clock in another window.
8223b1d2
BG
8932@c
8933@orgcmd{k,org-agenda-capture}
8934Like @code{org-capture}, but use the date at point as the default date for
271672fa 8935the capture template. See @code{org-capture-use-agenda-date} to make this
8223b1d2
BG
8936the default behavior of @code{org-capture}.
8937@cindex capturing, from agenda
8938@vindex org-capture-use-agenda-date
dbc28aaa 8939
271672fa
BG
8940@tsubheading{Dragging agenda lines forward/backward}
8941@cindex dragging, agenda lines
8942
8943@orgcmd{M-<up>,org-agenda-drag-line-backward}
8944Drag the line at point backward one line@footnote{Moving agenda lines does
8945not persist after an agenda refresh and does not modify the contributing
8946@file{.org} files}. With a numeric prefix argument, drag backward by that
8947many lines.
8948
8949@orgcmd{M-<down>,org-agenda-drag-line-forward}
8950Drag the line at point forward one line. With a numeric prefix argument,
8951drag forward by that many lines.
8952
c8d0cf5c
CD
8953@tsubheading{Bulk remote editing selected entries}
8954@cindex remote editing, bulk, from agenda
8223b1d2 8955@vindex org-agenda-bulk-custom-functions
c8d0cf5c 8956
acedf35c 8957@orgcmd{m,org-agenda-bulk-mark}
271672fa
BG
8958Mark the entry at point for bulk action. With numeric prefix argument, mark
8959that many successive entries.
acedf35c 8960@c
271672fa
BG
8961@orgcmd{*,org-agenda-bulk-mark-all}
8962Mark all visible agenda entries for bulk action.
ce57c2fe 8963@c
acedf35c 8964@orgcmd{u,org-agenda-bulk-unmark}
271672fa 8965Unmark entry at point for bulk action.
acedf35c
CD
8966@c
8967@orgcmd{U,org-agenda-bulk-remove-all-marks}
c8d0cf5c 8968Unmark all marked entries for bulk action.
acedf35c 8969@c
271672fa
BG
8970@orgcmd{M-m,org-agenda-bulk-toggle}
8971Toggle mark of the entry at point for bulk action.
8972@c
8973@orgcmd{M-*,org-agenda-bulk-toggle-all}
8974Toggle marks of all visible entries for bulk action.
8975@c
8976@orgcmd{%,org-agenda-bulk-mark-regexp}
8977Mark entries matching a regular expression for bulk action.
8978@c
acedf35c 8979@orgcmd{B,org-agenda-bulk-action}
c8d0cf5c 8980Bulk action: act on all marked entries in the agenda. This will prompt for
ed21c5c8
CD
8981another key to select the action to be applied. The prefix arg to @kbd{B}
8982will be passed through to the @kbd{s} and @kbd{d} commands, to bulk-remove
8223b1d2
BG
8983these special timestamps. By default, marks are removed after the bulk. If
8984you want them to persist, set @code{org-agenda-bulk-persistent-marks} to
8985@code{t} or hit @kbd{p} at the prompt.
8986
271672fa
BG
8987@table @kbd
8988@item *
8989Toggle persistent marks.
8990@item $
8991Archive all selected entries.
8992@item A
8993Archive entries by moving them to their respective archive siblings.
8994@item t
8995Change TODO state. This prompts for a single TODO keyword and changes the
8996state of all selected entries, bypassing blocking and suppressing logging
8997notes (but not timestamps).
8998@item +
8999Add a tag to all selected entries.
9000@item -
9001Remove a tag from all selected entries.
9002@item s
9003Schedule all items to a new date. To shift existing schedule dates by a
9004fixed number of days, use something starting with double plus at the prompt,
9005for example @samp{++8d} or @samp{++2w}.
9006@item d
9007Set deadline to a specific date.
9008@item r
9009Prompt for a single refile target and move all entries. The entries will no
9010longer be in the agenda; refresh (@kbd{g}) to bring them back.
9011@item S
9012Reschedule randomly into the coming N days. N will be prompted for. With
9013prefix arg (@kbd{C-u B S}), scatter only across weekdays.
9014@item f
9015Apply a function@footnote{You can also create persistent custom functions
9016through @code{org-agenda-bulk-custom-functions}.} to marked entries. For
9017example, the function below sets the CATEGORY property of the entries to web.
c8d0cf5c 9018
271672fa
BG
9019@lisp
9020@group
9021(defun set-category ()
9022 (interactive "P")
9023 (let* ((marker (or (org-get-at-bol 'org-hd-marker)
9024 (org-agenda-error)))
9025 (buffer (marker-buffer marker)))
9026 (with-current-buffer buffer
9027 (save-excursion
9028 (save-restriction
9029 (widen)
9030 (goto-char marker)
9031 (org-back-to-heading t)
9032 (org-set-property "CATEGORY" "web"))))))
9033@end group
9034@end lisp
9035@end table
c8d0cf5c 9036
4009494e
GM
9037@tsubheading{Calendar commands}
9038@cindex calendar commands, from agenda
acedf35c
CD
9039
9040@orgcmd{c,org-agenda-goto-calendar}
4009494e
GM
9041Open the Emacs calendar and move to the date at the agenda cursor.
9042@c
acedf35c 9043@orgcmd{c,org-calendar-goto-agenda}
e66ba1df 9044When in the calendar, compute and show the Org mode agenda for the
4009494e
GM
9045date at the cursor.
9046@c
9047@cindex diary entries, creating from agenda
acedf35c 9048@orgcmd{i,org-agenda-diary-entry}
a351880d
CD
9049@vindex org-agenda-diary-file
9050Insert a new entry into the diary, using the date at the cursor and (for
9051block entries) the date at the mark. This will add to the Emacs diary
9052file@footnote{This file is parsed for the agenda when
9053@code{org-agenda-include-diary} is set.}, in a way similar to the @kbd{i}
9054command in the calendar. The diary file will pop up in another window, where
9055you can add the entry.
9056
e66ba1df
BG
9057If you configure @code{org-agenda-diary-file} to point to an Org mode file,
9058Org will create entries (in Org mode syntax) in that file instead. Most
a351880d
CD
9059entries will be stored in a date-based outline tree that will later make it
9060easy to archive appointments from previous months/years. The tree will be
86fbb8ca 9061built under an entry with a @code{DATE_TREE} property, or else with years as
acedf35c 9062top-level entries. Emacs will prompt you for the entry text---if you specify
a351880d
CD
9063it, the entry will be created in @code{org-agenda-diary-file} without further
9064interaction. If you directly press @key{RET} at the prompt without typing
9065text, the target file will be shown in another window for you to finish the
9066entry there. See also the @kbd{k r} command.
4009494e 9067@c
acedf35c 9068@orgcmd{M,org-agenda-phases-of-moon}
4009494e
GM
9069Show the phases of the moon for the three months around current date.
9070@c
acedf35c 9071@orgcmd{S,org-agenda-sunrise-sunset}
4009494e 9072Show sunrise and sunset times. The geographical location must be set
c8d0cf5c 9073with calendar variables, see the documentation for the Emacs calendar.
4009494e 9074@c
acedf35c 9075@orgcmd{C,org-agenda-convert-date}
4009494e
GM
9076Convert the date at cursor into many other cultural and historic
9077calendars.
9078@c
acedf35c 9079@orgcmd{H,org-agenda-holidays}
c8d0cf5c 9080Show holidays for three months around the cursor date.
a7808fba 9081
271672fa 9082@item M-x org-icalendar-combine-agenda-files RET
4009494e 9083Export a single iCalendar file containing entries from all agenda files.
a7808fba 9084This is a globally available command, and also available in the agenda menu.
4009494e
GM
9085
9086@tsubheading{Exporting to a file}
8223b1d2 9087@orgcmd{C-x C-w,org-agenda-write}
4009494e
GM
9088@cindex exporting agenda views
9089@cindex agenda views, exporting
c8d0cf5c
CD
9090@vindex org-agenda-exporter-settings
9091Write the agenda view to a file. Depending on the extension of the selected
271672fa
BG
9092file name, the view will be exported as HTML (@file{.html} or @file{.htm}),
9093Postscript (@file{.ps}), PDF (@file{.pdf}), Org (@file{.org}) and plain text
9094(any other extension). When exporting to Org, only the body of original
9095headlines are exported, not subtrees or inherited tags. When called with a
9096@kbd{C-u} prefix argument, immediately open the newly created file. Use the
9097variable @code{org-agenda-exporter-settings} to set options for
9098@file{ps-print} and for @file{htmlize} to be used during export.
4009494e
GM
9099
9100@tsubheading{Quit and Exit}
acedf35c 9101@orgcmd{q,org-agenda-quit}
4009494e
GM
9102Quit agenda, remove the agenda buffer.
9103@c
4009494e 9104@cindex agenda files, removing buffers
acedf35c 9105@orgcmd{x,org-agenda-exit}
4009494e
GM
9106Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
9107for the compilation of the agenda. Buffers created by the user to
c8d0cf5c 9108visit Org files will not be removed.
4009494e
GM
9109@end table
9110
9111
c8d0cf5c 9112@node Custom agenda views, Exporting Agenda Views, Agenda commands, Agenda Views
4009494e
GM
9113@section Custom agenda views
9114@cindex custom agenda views
9115@cindex agenda views, custom
9116
9117Custom agenda commands serve two purposes: to store and quickly access
9118frequently used TODO and tags searches, and to create special composite
9119agenda buffers. Custom agenda commands will be accessible through the
9120dispatcher (@pxref{Agenda dispatcher}), just like the default commands.
9121
9122@menu
c0468714
GM
9123* Storing searches:: Type once, use often
9124* Block agenda:: All the stuff you need in a single buffer
9125* Setting Options:: Changing the rules
4009494e
GM
9126@end menu
9127
9128@node Storing searches, Block agenda, Custom agenda views, Custom agenda views
9129@subsection Storing searches
9130
9131The first application of custom searches is the definition of keyboard
9132shortcuts for frequently used searches, either creating an agenda
9133buffer, or a sparse tree (the latter covering of course only the current
9134buffer).
9135@kindex C-c a C
c8d0cf5c 9136@vindex org-agenda-custom-commands
c7cf0ebc 9137@cindex agenda views, main example
271672fa
BG
9138@cindex agenda, as an agenda views
9139@cindex agenda*, as an agenda views
c7cf0ebc
BG
9140@cindex tags, as an agenda view
9141@cindex todo, as an agenda view
9142@cindex tags-todo
9143@cindex todo-tree
9144@cindex occur-tree
9145@cindex tags-tree
8223b1d2 9146
4009494e
GM
9147Custom commands are configured in the variable
9148@code{org-agenda-custom-commands}. You can customize this variable, for
8223b1d2 9149example by pressing @kbd{C-c a C}. You can also directly set it with Emacs
271672fa
BG
9150Lisp in @file{.emacs}. The following example contains all valid agenda
9151views:
4009494e
GM
9152
9153@lisp
9154@group
9155(setq org-agenda-custom-commands
271672fa
BG
9156 '(("x" agenda)
9157 ("y" agenda*)
9158 ("w" todo "WAITING")
4009494e 9159 ("W" todo-tree "WAITING")
dbc28aaa
CD
9160 ("u" tags "+boss-urgent")
9161 ("v" tags-todo "+boss-urgent")
9162 ("U" tags-tree "+boss-urgent")
9163 ("f" occur-tree "\\<FIXME\\>")
9164 ("h" . "HOME+Name tags searches") ; description for "h" prefix
9165 ("hl" tags "+home+Lisa")
9166 ("hp" tags "+home+Peter")
9167 ("hk" tags "+home+Kim")))
4009494e
GM
9168@end group
9169@end lisp
9170
9171@noindent
dbc28aaa
CD
9172The initial string in each entry defines the keys you have to press
9173after the dispatcher command @kbd{C-c a} in order to access the command.
9174Usually this will be just a single character, but if you have many
9175similar commands, you can also define two-letter combinations where the
9176first character is the same in several combinations and serves as a
9177prefix key@footnote{You can provide a description for a prefix key by
9178inserting a cons cell with the prefix and the description.}. The second
9179parameter is the search type, followed by the string or regular
9180expression to be used for the matching. The example above will
9181therefore define:
4009494e
GM
9182
9183@table @kbd
271672fa
BG
9184@item C-c a x
9185as a global search for agenda entries planned@footnote{@emph{Planned} means
9186here that these entries have some planning information attached to them, like
9187a time-stamp, a scheduled or a deadline string. See
9188@code{org-agenda-entry-types} on how to set what planning information will be
9189taken into account.} this week/day.
9190@item C-c a y
9191as a global search for agenda entries planned this week/day, but only those
9192with an hour specification like @code{[h]h:mm}---think of them as appointments.
4009494e
GM
9193@item C-c a w
9194as a global search for TODO entries with @samp{WAITING} as the TODO
9195keyword
9196@item C-c a W
9197as the same search, but only in the current buffer and displaying the
9198results as a sparse tree
9199@item C-c a u
dbc28aaa
CD
9200as a global tags search for headlines marked @samp{:boss:} but not
9201@samp{:urgent:}
4009494e
GM
9202@item C-c a v
9203as the same search as @kbd{C-c a u}, but limiting the search to
9204headlines that are also TODO items
9205@item C-c a U
9206as the same search as @kbd{C-c a u}, but only in the current buffer and
9207displaying the result as a sparse tree
9208@item C-c a f
9209to create a sparse tree (again: current buffer only) with all entries
dbc28aaa
CD
9210containing the word @samp{FIXME}
9211@item C-c a h
9212as a prefix command for a HOME tags search where you have to press an
9213additional key (@kbd{l}, @kbd{p} or @kbd{k}) to select a name (Lisa,
9214Peter, or Kim) as additional tag to match.
4009494e
GM
9215@end table
9216
c7cf0ebc
BG
9217Note that the @code{*-tree} agenda views need to be called from an
9218Org buffer as they operate on the current buffer only.
9219
4009494e
GM
9220@node Block agenda, Setting Options, Storing searches, Custom agenda views
9221@subsection Block agenda
9222@cindex block agenda
9223@cindex agenda, with block views
9224
9225Another possibility is the construction of agenda views that comprise
9226the results of @emph{several} commands, each of which creates a block in
9227the agenda buffer. The available commands include @code{agenda} for the
9228daily or weekly agenda (as created with @kbd{C-c a a}), @code{alltodo}
a7808fba 9229for the global TODO list (as constructed with @kbd{C-c a t}), and the
4009494e
GM
9230matching commands discussed above: @code{todo}, @code{tags}, and
9231@code{tags-todo}. Here are two examples:
9232
9233@lisp
9234@group
9235(setq org-agenda-custom-commands
9236 '(("h" "Agenda and Home-related tasks"
28a16a1b 9237 ((agenda "")
dbc28aaa
CD
9238 (tags-todo "home")
9239 (tags "garden")))
4009494e 9240 ("o" "Agenda and Office-related tasks"
28a16a1b 9241 ((agenda "")
dbc28aaa
CD
9242 (tags-todo "work")
9243 (tags "office")))))
4009494e
GM
9244@end group
9245@end lisp
9246
9247@noindent
9248This will define @kbd{C-c a h} to create a multi-block view for stuff
9249you need to attend to at home. The resulting agenda buffer will contain
9250your agenda for the current week, all TODO items that carry the tag
dbc28aaa 9251@samp{home}, and also all lines tagged with @samp{garden}. Finally the
4009494e
GM
9252command @kbd{C-c a o} provides a similar view for office tasks.
9253
c8d0cf5c 9254@node Setting Options, , Block agenda, Custom agenda views
a7808fba 9255@subsection Setting options for custom commands
4009494e
GM
9256@cindex options, for custom agenda views
9257
c8d0cf5c 9258@vindex org-agenda-custom-commands
e66ba1df 9259Org mode contains a number of variables regulating agenda construction
4009494e
GM
9260and display. The global variables define the behavior for all agenda
9261commands, including the custom commands. However, if you want to change
9262some settings just for a single custom view, you can do so. Setting
9263options requires inserting a list of variable names and values at the
9264right spot in @code{org-agenda-custom-commands}. For example:
9265
9266@lisp
9267@group
9268(setq org-agenda-custom-commands
9269 '(("w" todo "WAITING"
9270 ((org-agenda-sorting-strategy '(priority-down))
9271 (org-agenda-prefix-format " Mixed: ")))
dbc28aaa 9272 ("U" tags-tree "+boss-urgent"
4009494e 9273 ((org-show-following-heading nil)
28a16a1b
CD
9274 (org-show-hierarchy-above nil)))
9275 ("N" search ""
9276 ((org-agenda-files '("~org/notes.org"))
9277 (org-agenda-text-search-extra-files nil)))))
4009494e
GM
9278@end group
9279@end lisp
9280
9281@noindent
9282Now the @kbd{C-c a w} command will sort the collected entries only by
dbc28aaa 9283priority, and the prefix format is modified to just say @samp{ Mixed: }
4009494e
GM
9284instead of giving the category of the entry. The sparse tags tree of
9285@kbd{C-c a U} will now turn out ultra-compact, because neither the
9286headline hierarchy above the match, nor the headline following the match
28a16a1b
CD
9287will be shown. The command @kbd{C-c a N} will do a text search limited
9288to only a single file.
4009494e 9289
c8d0cf5c 9290@vindex org-agenda-custom-commands
4009494e
GM
9291For command sets creating a block agenda,
9292@code{org-agenda-custom-commands} has two separate spots for setting
9293options. You can add options that should be valid for just a single
9294command in the set, and options that should be valid for all commands in
acedf35c 9295the set. The former are just added to the command entry; the latter
4009494e
GM
9296must come after the list of command entries. Going back to the block
9297agenda example (@pxref{Block agenda}), let's change the sorting strategy
9298for the @kbd{C-c a h} commands to @code{priority-down}, but let's sort
9299the results for GARDEN tags query in the opposite order,
9300@code{priority-up}. This would look like this:
9301
9302@lisp
9303@group
9304(setq org-agenda-custom-commands
9305 '(("h" "Agenda and Home-related tasks"
9306 ((agenda)
dbc28aaa
CD
9307 (tags-todo "home")
9308 (tags "garden"
4009494e
GM
9309 ((org-agenda-sorting-strategy '(priority-up)))))
9310 ((org-agenda-sorting-strategy '(priority-down))))
9311 ("o" "Agenda and Office-related tasks"
9312 ((agenda)
dbc28aaa
CD
9313 (tags-todo "work")
9314 (tags "office")))))
4009494e
GM
9315@end group
9316@end lisp
9317
c8d0cf5c
CD
9318As you see, the values and parentheses setting is a little complex.
9319When in doubt, use the customize interface to set this variable---it
9320fully supports its structure. Just one caveat: when setting options in
9321this interface, the @emph{values} are just Lisp expressions. So if the
9322value is a string, you need to add the double-quotes around the value
4009494e
GM
9323yourself.
9324
8223b1d2
BG
9325@vindex org-agenda-custom-commands-contexts
9326To control whether an agenda command should be accessible from a specific
271672fa 9327context, you can customize @code{org-agenda-custom-commands-contexts}. Let's
8223b1d2
BG
9328say for example that you have an agenda commands @code{"o"} displaying a view
9329that you only need when reading emails. Then you would configure this option
9330like this:
9331
271672fa 9332@lisp
8223b1d2
BG
9333(setq org-agenda-custom-commands-contexts
9334 '(("o" (in-mode . "message-mode"))))
271672fa 9335@end lisp
8223b1d2
BG
9336
9337You can also tell that the command key @code{"o"} should refer to another
9338command key @code{"r"}. In that case, add this command key like this:
9339
271672fa 9340@lisp
8223b1d2
BG
9341(setq org-agenda-custom-commands-contexts
9342 '(("o" "r" (in-mode . "message-mode"))))
271672fa 9343@end lisp
8223b1d2
BG
9344
9345See the docstring of the variable for more information.
4009494e 9346
c8d0cf5c
CD
9347@node Exporting Agenda Views, Agenda column view, Custom agenda views, Agenda Views
9348@section Exporting Agenda Views
4009494e
GM
9349@cindex agenda views, exporting
9350
3da3282e 9351If you are away from your computer, it can be very useful to have a printed
e66ba1df 9352version of some agenda views to carry around. Org mode can export custom
3da3282e 9353agenda views as plain text, HTML@footnote{You need to install Hrvoje Niksic's
e66ba1df 9354@file{htmlize.el}.}, Postscript, PDF@footnote{To create PDF output, the
c8d0cf5c 9355ghostscript @file{ps2pdf} utility must be installed on the system. Selecting
e66ba1df 9356a PDF file will also create the postscript file.}, and iCalendar files. If
c8d0cf5c 9357you want to do this only occasionally, use the command
4009494e
GM
9358
9359@table @kbd
8223b1d2 9360@orgcmd{C-x C-w,org-agenda-write}
4009494e
GM
9361@cindex exporting agenda views
9362@cindex agenda views, exporting
c8d0cf5c 9363@vindex org-agenda-exporter-settings
7006d207
CD
9364Write the agenda view to a file. Depending on the extension of the selected
9365file name, the view will be exported as HTML (extension @file{.html} or
e66ba1df 9366@file{.htm}), Postscript (extension @file{.ps}), iCalendar (extension
a351880d
CD
9367@file{.ics}), or plain text (any other extension). Use the variable
9368@code{org-agenda-exporter-settings} to set options for @file{ps-print} and
9369for @file{htmlize} to be used during export, for example
28a16a1b 9370
c8d0cf5c
CD
9371@vindex org-agenda-add-entry-text-maxlines
9372@vindex htmlize-output-type
9373@vindex ps-number-of-columns
9374@vindex ps-landscape-mode
4009494e
GM
9375@lisp
9376(setq org-agenda-exporter-settings
9377 '((ps-number-of-columns 2)
9378 (ps-landscape-mode t)
c8d0cf5c 9379 (org-agenda-add-entry-text-maxlines 5)
4009494e
GM
9380 (htmlize-output-type 'css)))
9381@end lisp
9382@end table
9383
9384If you need to export certain agenda views frequently, you can associate
9385any custom agenda command with a list of output file names
9386@footnote{If you want to store standard views like the weekly agenda
9387or the global TODO list as well, you need to define custom commands for
28a16a1b 9388them in order to be able to specify file names.}. Here is an example
c8d0cf5c
CD
9389that first defines custom commands for the agenda and the global
9390TODO list, together with a number of files to which to export them.
28a16a1b 9391Then we define two block agenda commands and specify file names for them
4009494e
GM
9392as well. File names can be relative to the current working directory,
9393or absolute.
9394
9395@lisp
9396@group
9397(setq org-agenda-custom-commands
9398 '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
9399 ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
9400 ("h" "Agenda and Home-related tasks"
28a16a1b 9401 ((agenda "")
dbc28aaa
CD
9402 (tags-todo "home")
9403 (tags "garden"))
4009494e
GM
9404 nil
9405 ("~/views/home.html"))
9406 ("o" "Agenda and Office-related tasks"
9407 ((agenda)
dbc28aaa
CD
9408 (tags-todo "work")
9409 (tags "office"))
4009494e 9410 nil
28a16a1b 9411 ("~/views/office.ps" "~/calendars/office.ics"))))
4009494e
GM
9412@end group
9413@end lisp
9414
9415The extension of the file name determines the type of export. If it is
e66ba1df 9416@file{.html}, Org mode will use the @file{htmlize.el} package to convert
4009494e
GM
9417the buffer to HTML and save it to this file name. If the extension is
9418@file{.ps}, @code{ps-print-buffer-with-faces} is used to produce
e66ba1df 9419Postscript output. If the extension is @file{.ics}, iCalendar export is
28a16a1b 9420run export over all files that were used to construct the agenda, and
c8d0cf5c 9421limit the export to entries listed in the agenda. Any other
28a16a1b 9422extension produces a plain ASCII file.
4009494e
GM
9423
9424The export files are @emph{not} created when you use one of those
28a16a1b
CD
9425commands interactively because this might use too much overhead.
9426Instead, there is a special command to produce @emph{all} specified
9427files in one step:
4009494e
GM
9428
9429@table @kbd
acedf35c 9430@orgcmd{C-c a e,org-store-agenda-views}
28a16a1b 9431Export all agenda views that have export file names associated with
4009494e
GM
9432them.
9433@end table
9434
9435You can use the options section of the custom agenda commands to also
9436set options for the export commands. For example:
9437
9438@lisp
9439(setq org-agenda-custom-commands
9440 '(("X" agenda ""
9441 ((ps-number-of-columns 2)
9442 (ps-landscape-mode t)
9443 (org-agenda-prefix-format " [ ] ")
9444 (org-agenda-with-colors nil)
9445 (org-agenda-remove-tags t))
9446 ("theagenda.ps"))))
9447@end lisp
9448
9449@noindent
e66ba1df 9450This command sets two options for the Postscript exporter, to make it
c8d0cf5c 9451print in two columns in landscape format---the resulting page can be cut
4009494e
GM
9452in two and then used in a paper agenda. The remaining settings modify
9453the agenda prefix to omit category and scheduling information, and
9454instead include a checkbox to check off items. We also remove the tags
9455to make the lines compact, and we don't want to use colors for the
9456black-and-white printer. Settings specified in
9457@code{org-agenda-exporter-settings} will also apply, but the settings
9458in @code{org-agenda-custom-commands} take precedence.
9459
9460@noindent
9461From the command line you may also use
9462@example
e66ba1df 9463emacs -eval (org-batch-store-agenda-views) -kill
4009494e
GM
9464@end example
9465@noindent
c8d0cf5c
CD
9466or, if you need to modify some parameters@footnote{Quoting depends on the
9467system you use, please check the FAQ for examples.}
4009494e
GM
9468@example
9469emacs -eval '(org-batch-store-agenda-views \
e66ba1df 9470 org-agenda-span (quote month) \
dbc28aaa 9471 org-agenda-start-day "2007-11-01" \
4009494e
GM
9472 org-agenda-include-diary nil \
9473 org-agenda-files (quote ("~/org/project.org")))' \
9474 -kill
9475@end example
9476@noindent
9477which will create the agenda views restricted to the file
c8d0cf5c 9478@file{~/org/project.org}, without diary entries and with a 30-day
28a16a1b 9479extent.
4009494e 9480
c8d0cf5c
CD
9481You can also extract agenda information in a way that allows further
9482processing by other programs. See @ref{Extracting agenda information}, for
9483more information.
4009494e 9484
4009494e 9485
c8d0cf5c 9486@node Agenda column view, , Exporting Agenda Views, Agenda Views
a7808fba
CD
9487@section Using column view in the agenda
9488@cindex column view, in agenda
9489@cindex agenda, column view
9490
9491Column view (@pxref{Column view}) is normally used to view and edit
9492properties embedded in the hierarchical structure of an Org file. It can be
9493quite useful to use column view also from the agenda, where entries are
9494collected by certain criteria.
9495
9496@table @kbd
acedf35c 9497@orgcmd{C-c C-x C-c,org-agenda-columns}
a7808fba
CD
9498Turn on column view in the agenda.
9499@end table
9500
9501To understand how to use this properly, it is important to realize that the
9502entries in the agenda are no longer in their proper outline environment.
9503This causes the following issues:
9504
9505@enumerate
9506@item
c8d0cf5c
CD
9507@vindex org-columns-default-format
9508@vindex org-overriding-columns-format
a7808fba
CD
9509Org needs to make a decision which @code{COLUMNS} format to use. Since the
9510entries in the agenda are collected from different files, and different files
9511may have different @code{COLUMNS} formats, this is a non-trivial problem.
ce57c2fe 9512Org first checks if the variable @code{org-agenda-overriding-columns-format} is
c8d0cf5c 9513currently set, and if so, takes the format from there. Otherwise it takes
a7808fba 9514the format associated with the first item in the agenda, or, if that item
c8d0cf5c 9515does not have a specific format (defined in a property, or in its file), it
a7808fba
CD
9516uses @code{org-columns-default-format}.
9517@item
c8d0cf5c 9518@cindex property, special, CLOCKSUM
a7808fba
CD
9519If any of the columns has a summary type defined (@pxref{Column attributes}),
9520turning on column view in the agenda will visit all relevant agenda files and
9521make sure that the computations of this property are up to date. This is
9522also true for the special @code{CLOCKSUM} property. Org will then sum the
9523values displayed in the agenda. In the daily/weekly agenda, the sums will
acedf35c 9524cover a single day; in all other views they cover the entire block. It is
a7808fba
CD
9525vital to realize that the agenda may show the same entry @emph{twice} (for
9526example as scheduled and as a deadline), and it may show two entries from the
c8d0cf5c 9527same hierarchy (for example a @emph{parent} and its @emph{child}). In these
a7808fba
CD
9528cases, the summation in the agenda will lead to incorrect results because
9529some values will count double.
9530@item
9531When the column view in the agenda shows the @code{CLOCKSUM}, that is always
9532the entire clocked time for this item. So even in the daily/weekly agenda,
9533the clocksum listed in column view may originate from times outside the
9534current view. This has the advantage that you can compare these values with
c8d0cf5c 9535a column listing the planned total effort for a task---one of the major
a7808fba
CD
9536applications for column view in the agenda. If you want information about
9537clocked time in the displayed period use clock table mode (press @kbd{R} in
9538the agenda).
8223b1d2
BG
9539
9540@item
9541@cindex property, special, CLOCKSUM_T
9542When the column view in the agenda shows the @code{CLOCKSUM_T}, that is
9543always today's clocked time for this item. So even in the weekly agenda,
9544the clocksum listed in column view only originates from today. This lets
9545you compare the time you spent on a task for today, with the time already
9546spent (via @code{CLOCKSUM}) and with the planned total effort for it.
a7808fba
CD
9547@end enumerate
9548
9549
a351880d
CD
9550@node Markup, Exporting, Agenda Views, Top
9551@chapter Markup for rich export
4009494e 9552
e66ba1df 9553When exporting Org mode documents, the exporter tries to reflect the
271672fa
BG
9554structure of the document as accurately as possible in the back-end. Since
9555export targets like HTML, @LaTeX{} allow much richer formatting, Org mode has
9556rules on how to prepare text for rich export. This section summarizes the
9557markup rules used in an Org mode buffer.
4009494e 9558
a351880d 9559@menu
c0468714 9560* Structural markup elements:: The basic structure as seen by the exporter
271672fa 9561* Images and tables:: Images, tables and caption mechanism
c0468714
GM
9562* Literal examples:: Source code examples with special formatting
9563* Include files:: Include additional files into a document
9564* Index entries:: Making an index
271672fa 9565* Macro replacement:: Use macros to create templates
e66ba1df 9566* Embedded @LaTeX{}:: LaTeX can be freely used inside Org documents
271672fa 9567* Special blocks:: Containers targeted at export back-ends
a351880d
CD
9568@end menu
9569
9570@node Structural markup elements, Images and tables, Markup, Markup
9571@section Structural markup elements
4009494e
GM
9572
9573@menu
c0468714
GM
9574* Document title:: Where the title is taken from
9575* Headings and sections:: The document structure as seen by the exporter
9576* Table of contents:: The if and where of the table of contents
c0468714
GM
9577* Lists:: Lists
9578* Paragraphs:: Paragraphs
9579* Footnote markup:: Footnotes
9580* Emphasis and monospace:: Bold, italic, etc.
9581* Horizontal rules:: Make a line
9582* Comment lines:: What will *not* be exported
4009494e
GM
9583@end menu
9584
a351880d
CD
9585@node Document title, Headings and sections, Structural markup elements, Structural markup elements
9586@subheading Document title
9587@cindex document title, markup rules
4009494e 9588
a351880d
CD
9589@noindent
9590The title of the exported document is taken from the special line
4009494e 9591
a351880d 9592@cindex #+TITLE
4009494e 9593@example
a351880d 9594#+TITLE: This is the title of the document
4009494e 9595@end example
a351880d 9596
c8d0cf5c 9597@noindent
271672fa
BG
9598If this line does not exist, the title will be the name of the file
9599associated to buffer, without extension, or the buffer name.
4009494e 9600
a351880d 9601@cindex property, EXPORT_TITLE
271672fa
BG
9602If you are exporting only a subtree, its heading will become the title of the
9603document. If the subtree has a property @code{EXPORT_TITLE}, that will take
9604precedence.
4009494e 9605
a351880d
CD
9606@node Headings and sections, Table of contents, Document title, Structural markup elements
9607@subheading Headings and sections
9608@cindex headings and sections, markup rules
9609
9610@vindex org-export-headline-levels
9611The outline structure of the document as described in @ref{Document
9612Structure}, forms the basis for defining sections of the exported document.
9613However, since the outline structure is also used for (for example) lists of
9614tasks, only the first three outline levels will be used as headings. Deeper
9615levels will become itemized lists. You can change the location of this
9616switch globally by setting the variable @code{org-export-headline-levels}, or on a
9617per-file basis with a line
4009494e 9618
a351880d 9619@cindex #+OPTIONS
4009494e 9620@example
a351880d 9621#+OPTIONS: H:4
4009494e
GM
9622@end example
9623
271672fa 9624@node Table of contents, Lists, Headings and sections, Structural markup elements
a351880d
CD
9625@subheading Table of contents
9626@cindex table of contents, markup rules
4009494e 9627
271672fa 9628@cindex #+TOC
a351880d
CD
9629@vindex org-export-with-toc
9630The table of contents is normally inserted directly before the first headline
271672fa
BG
9631of the file. The depth of the table is by default the same as the number of
9632headline levels, but you can choose a smaller number, or turn off the table
9633of contents entirely, by configuring the variable @code{org-export-with-toc},
9634or on a per-file basis with a line like
b349f79f
CD
9635
9636@example
9637#+OPTIONS: toc:2 (only to two levels in TOC)
271672fa 9638#+OPTIONS: toc:nil (no default TOC at all)
b349f79f
CD
9639@end example
9640
271672fa 9641If you would like to move the table of contents to a different location, you
d1389828 9642should turn off the default table using @code{org-export-with-toc} or
271672fa
BG
9643@code{#+OPTIONS} and insert @code{#+TOC: headlines N} at the desired
9644location(s).
b349f79f 9645
271672fa
BG
9646@example
9647#+OPTIONS: toc:nil (no default TOC)
9648...
9649#+TOC: headlines 2 (insert TOC here, with two headline levels)
9650@end example
b349f79f 9651
271672fa
BG
9652Multiple @code{#+TOC: headline} lines are allowed. The same @code{TOC}
9653keyword can also generate a list of all tables (resp.@: all listings) with a
9654caption in the buffer.
b349f79f
CD
9655
9656@example
271672fa
BG
9657#+TOC: listings (build a list of listings)
9658#+TOC: tables (build a list of tables)
b349f79f
CD
9659@end example
9660
271672fa
BG
9661@cindex property, ALT_TITLE
9662The headline's title usually determines its corresponding entry in a table of
9663contents. However, it is possible to specify an alternative title by
9664setting @code{ALT_TITLE} property accordingly. It will then be used when
9665building the table.
9666
9667@node Lists, Paragraphs, Table of contents, Structural markup elements
b349f79f
CD
9668@subheading Lists
9669@cindex lists, markup rules
9670
271672fa
BG
9671Plain lists as described in @ref{Plain lists}, are translated to the back-end's
9672syntax for such lists. Most back-ends support unordered, ordered, and
b349f79f
CD
9673description lists.
9674
a351880d 9675@node Paragraphs, Footnote markup, Lists, Structural markup elements
b349f79f
CD
9676@subheading Paragraphs, line breaks, and quoting
9677@cindex paragraphs, markup rules
9678
9679Paragraphs are separated by at least one empty line. If you need to enforce
9680a line break within a paragraph, use @samp{\\} at the end of a line.
9681
9682To keep the line breaks in a region, but otherwise use normal formatting, you
9683can use this construct, which can also be used to format poetry.
9684
c8d0cf5c 9685@cindex #+BEGIN_VERSE
b349f79f
CD
9686@example
9687#+BEGIN_VERSE
864c9740
CD
9688 Great clouds overhead
9689 Tiny black birds rise and fall
9690 Snow covers Emacs
96c8522a 9691
864c9740 9692 -- AlexSchroeder
b349f79f
CD
9693#+END_VERSE
9694@end example
9695
9696When quoting a passage from another document, it is customary to format this
9697as a paragraph that is indented on both the left and the right margin. You
e66ba1df 9698can include quotations in Org mode documents like this:
b349f79f 9699
c8d0cf5c 9700@cindex #+BEGIN_QUOTE
b349f79f
CD
9701@example
9702#+BEGIN_QUOTE
9703Everything should be made as simple as possible,
9704but not any simpler -- Albert Einstein
9705#+END_QUOTE
9706@end example
9707
c8d0cf5c
CD
9708If you would like to center some text, do it like this:
9709@cindex #+BEGIN_CENTER
9710@example
9711#+BEGIN_CENTER
9712Everything should be made as simple as possible, \\
9713but not any simpler
9714#+END_CENTER
9715@end example
b349f79f 9716
a351880d
CD
9717
9718@node Footnote markup, Emphasis and monospace, Paragraphs, Structural markup elements
9719@subheading Footnote markup
9720@cindex footnotes, markup rules
9721@cindex @file{footnote.el}
9722
ce57c2fe 9723Footnotes defined in the way described in @ref{Footnotes}, will be exported
271672fa 9724by all back-ends. Org allows multiple references to the same note, and
ce57c2fe 9725multiple footnotes side by side.
a351880d
CD
9726
9727@node Emphasis and monospace, Horizontal rules, Footnote markup, Structural markup elements
9728@subheading Emphasis and monospace
9729
9730@cindex underlined text, markup rules
9731@cindex bold text, markup rules
9732@cindex italic text, markup rules
9733@cindex verbatim text, markup rules
9734@cindex code text, markup rules
9735@cindex strike-through text, markup rules
271672fa
BG
9736@vindex org-fontify-emphasized-text
9737@vindex org-emphasis-regexp-components
9738@vindex org-emphasis-alist
30cb51f1
BG
9739You can make words @b{*bold*}, @i{/italic/}, _underlined_, @code{=verbatim=}
9740and @code{~code~}, and, if you must, @samp{+strike-through+}. Text
e66ba1df 9741in the code and verbatim string is not processed for Org mode specific
271672fa
BG
9742syntax, it is exported verbatim.
9743
9744To turn off fontification for marked up text, you can set
9745@code{org-fontify-emphasized-text} to @code{nil}. To narrow down the list of
9746available markup syntax, you can customize @code{org-emphasis-alist}. To fine
9747tune what characters are allowed before and after the markup characters, you
9748can tweak @code{org-emphasis-regexp-components}. Beware that changing one of
9749the above variables will no take effect until you reload Org, for which you
9750may need to restart Emacs.
a351880d
CD
9751
9752@node Horizontal rules, Comment lines, Emphasis and monospace, Structural markup elements
9753@subheading Horizontal rules
9754@cindex horizontal rules, markup rules
ce57c2fe 9755A line consisting of only dashes, and at least 5 of them, will be exported as
271672fa 9756a horizontal line.
a351880d
CD
9757
9758@node Comment lines, , Horizontal rules, Structural markup elements
9759@subheading Comment lines
9760@cindex comment lines
9761@cindex exporting, not
9762@cindex #+BEGIN_COMMENT
9763
63aa0982
BG
9764Lines starting with zero or more whitespace characters followed by one
9765@samp{#} and a whitespace are treated as comments and will never be exported.
9766Also entire subtrees starting with the word @samp{COMMENT} will never be
9767exported. Finally, regions surrounded by @samp{#+BEGIN_COMMENT}
9768... @samp{#+END_COMMENT} will not be exported.
a351880d
CD
9769
9770@table @kbd
9771@kindex C-c ;
9772@item C-c ;
9773Toggle the COMMENT keyword at the beginning of an entry.
9774@end table
9775
9776
9777@node Images and tables, Literal examples, Structural markup elements, Markup
9778@section Images and Tables
9779
9780@cindex tables, markup rules
9781@cindex #+CAPTION
271672fa 9782@cindex #+NAME
e66ba1df
BG
9783Both the native Org mode tables (@pxref{Tables}) and tables formatted with
9784the @file{table.el} package will be exported properly. For Org mode tables,
a351880d
CD
9785the lines before the first horizontal separator line will become table header
9786lines. You can use the following lines somewhere before the table to assign
ed21c5c8 9787a caption and a label for cross references, and in the text you can refer to
271672fa 9788the object with @code{[[tab:basic-data]]} (@pxref{Internal links}):
a351880d
CD
9789
9790@example
9791#+CAPTION: This is the caption for the next table (or link)
271672fa 9792#+NAME: tab:basic-data
a351880d
CD
9793 | ... | ...|
9794 |-----|----|
9795@end example
9796
ce57c2fe
BG
9797Optionally, the caption can take the form:
9798@example
271672fa 9799#+CAPTION[Caption for list of tables]: Caption for table.
ce57c2fe
BG
9800@end example
9801
a351880d 9802@cindex inlined images, markup rules
271672fa
BG
9803Some back-ends allow you to directly include images into the exported
9804document. Org does this, if a link to an image files does not have
9805a description part, for example @code{[[./img/a.jpg]]}. If you wish to
9806define a caption for the image and maybe a label for internal cross
9807references, make sure that the link is on a line by itself and precede it
9808with @code{#+CAPTION} and @code{#+NAME} as follows:
a351880d
CD
9809
9810@example
9811#+CAPTION: This is the caption for the next figure link (or table)
271672fa 9812#+NAME: fig:SED-HR4049
a351880d
CD
9813[[./img/a.jpg]]
9814@end example
9815
271672fa
BG
9816@noindent
9817Such images can be displayed within the buffer. @xref{Handling links,the
9818discussion of image links}.
a351880d 9819
271672fa
BG
9820Even though images and tables are prominent examples of captioned structures,
9821the same caption mechanism can apply to many others (e.g., @LaTeX{}
9822equations, source code blocks). Depending on the export back-end, those may
9823or may not be handled.
a351880d
CD
9824
9825@node Literal examples, Include files, Images and tables, Markup
9826@section Literal examples
b349f79f 9827@cindex literal examples, markup rules
c8d0cf5c 9828@cindex code line references, markup rules
b349f79f
CD
9829
9830You can include literal examples that should not be subjected to
9831markup. Such examples will be typeset in monospace, so this is well suited
9832for source code and similar examples.
9833@cindex #+BEGIN_EXAMPLE
9834
9835@example
9836#+BEGIN_EXAMPLE
9837Some example from a text file.
9838#+END_EXAMPLE
9839@end example
9840
c8d0cf5c
CD
9841Note that such blocks may be @i{indented} in order to align nicely with
9842indented text and in particular with plain list structure (@pxref{Plain
9843lists}). For simplicity when using small examples, you can also start the
9844example lines with a colon followed by a space. There may also be additional
55e0839d 9845whitespace before the colon:
b349f79f
CD
9846
9847@example
55e0839d
CD
9848Here is an example
9849 : Some example from a text file.
b349f79f
CD
9850@end example
9851
9852@cindex formatting source code, markup rules
9853If the example is source code from a programming language, or any other text
9854that can be marked up by font-lock in Emacs, you can ask for the example to
afe98dfa 9855look like the fontified Emacs buffer@footnote{This works automatically for
271672fa 9856the HTML back-end (it requires version 1.34 of the @file{htmlize.el} package,
e66ba1df 9857which is distributed with Org). Fontified code chunks in @LaTeX{} can be
afe98dfa 9858achieved using either the listings or the
8223b1d2 9859@url{http://code.google.com/p/minted, minted,} package. Refer to
271672fa 9860@code{org-latex-listings} documentation for details.}. This is done
8223b1d2
BG
9861with the @samp{src} block, where you also need to specify the name of the
9862major mode that should be used to fontify the example@footnote{Code in
9863@samp{src} blocks may also be evaluated either interactively or on export.
9864See @pxref{Working With Source Code} for more information on evaluating code
9865blocks.}, see @ref{Easy Templates} for shortcuts to easily insert code
9866blocks.
b349f79f
CD
9867@cindex #+BEGIN_SRC
9868
9869@example
9870#+BEGIN_SRC emacs-lisp
86fbb8ca
CD
9871 (defun org-xor (a b)
9872 "Exclusive or."
9873 (if a (not b) b))
b349f79f
CD
9874#+END_SRC
9875@end example
9876
55e0839d
CD
9877Both in @code{example} and in @code{src} snippets, you can add a @code{-n}
9878switch to the end of the @code{BEGIN} line, to get the lines of the example
9879numbered. If you use a @code{+n} switch, the numbering from the previous
9880numbered snippet will be continued in the current one. In literal examples,
9881Org will interpret strings like @samp{(ref:name)} as labels, and use them as
1df7defd 9882targets for special hyperlinks like @code{[[(name)]]} (i.e., the reference name
c8d0cf5c
CD
9883enclosed in single parenthesis). In HTML, hovering the mouse over such a
9884link will remote-highlight the corresponding code line, which is kind of
9885cool.
9886
9887You can also add a @code{-r} switch which @i{removes} the labels from the
9888source code@footnote{Adding @code{-k} to @code{-n -r} will @i{keep} the
9889labels in the source code while using line numbers for the links, which might
e66ba1df 9890be useful to explain those in an Org mode example code.}. With the @code{-n}
c8d0cf5c
CD
9891switch, links to these references will be labeled by the line numbers from
9892the code listing, otherwise links will use the labels with no parentheses.
9893Here is an example:
55e0839d
CD
9894
9895@example
9896#+BEGIN_SRC emacs-lisp -n -r
9897(save-excursion (ref:sc)
30cb51f1 9898 (goto-char (point-min))) (ref:jump)
c8d0cf5c
CD
9899#+END_SRC
9900In line [[(sc)]] we remember the current position. [[(jump)][Line (jump)]]
55e0839d
CD
9901jumps to point-min.
9902@end example
9903
c8d0cf5c 9904@vindex org-coderef-label-format
55e0839d
CD
9905If the syntax for the label format conflicts with the language syntax, use a
9906@code{-l} switch to change the format, for example @samp{#+BEGIN_SRC pascal
9907-n -r -l "((%s))"}. See also the variable @code{org-coderef-label-format}.
9908
ce57c2fe
BG
9909HTML export also allows examples to be published as text areas (@pxref{Text
9910areas in HTML export}).
9911
9912Because the @code{#+BEGIN_...} and @code{#+END_...} patterns need to be added
9913so often, shortcuts are provided using the Easy Templates facility
9914(@pxref{Easy Templates}).
55e0839d 9915
b349f79f
CD
9916@table @kbd
9917@kindex C-c '
9918@item C-c '
9919Edit the source code example at point in its native mode. This works by
c8d0cf5c 9920switching to a temporary buffer with the source code. You need to exit by
bdebdb64
BG
9921pressing @kbd{C-c '} again@footnote{Upon exit, lines starting with @samp{*},
9922@samp{,*}, @samp{#+} and @samp{,#+} will get a comma prepended, to keep them
9923from being interpreted by Org as outline nodes or special syntax. These
9924commas will be stripped for editing with @kbd{C-c '}, and also for export.}.
9925The edited version will then replace the old version in the Org buffer.
9926Fixed-width regions (where each line starts with a colon followed by a space)
9927will be edited using @code{artist-mode}@footnote{You may select
9928a different-mode with the variable @code{org-edit-fixed-width-region-mode}.}
9929to allow creating ASCII drawings easily. Using this command in an empty line
9930will create a new fixed-width region.
55e0839d
CD
9931@kindex C-c l
9932@item C-c l
9933Calling @code{org-store-link} while editing a source code example in a
acedf35c 9934temporary buffer created with @kbd{C-c '} will prompt for a label. Make sure
55e0839d
CD
9935that it is unique in the current buffer, and insert it with the proper
9936formatting like @samp{(ref:label)} at the end of the current line. Then the
9937label is stored as a link @samp{(label)}, for retrieval with @kbd{C-c C-l}.
b349f79f
CD
9938@end table
9939
9940
ed21c5c8 9941@node Include files, Index entries, Literal examples, Markup
a351880d 9942@section Include files
b349f79f
CD
9943@cindex include files, markup rules
9944
9945During export, you can include the content of another file. For example, to
c8d0cf5c 9946include your @file{.emacs} file, you could use:
b349f79f
CD
9947@cindex #+INCLUDE
9948
9949@example
9950#+INCLUDE: "~/.emacs" src emacs-lisp
9951@end example
271672fa 9952
c8d0cf5c 9953@noindent
1df7defd 9954The optional second and third parameter are the markup (e.g., @samp{quote},
b349f79f 9955@samp{example}, or @samp{src}), and, if the markup is @samp{src}, the
acedf35c 9956language for formatting the contents. The markup is optional; if it is not
e66ba1df 9957given, the text will be assumed to be in Org mode format and will be
271672fa
BG
9958processed normally.
9959
9960Contents of the included file will belong to the same structure (headline,
9961item) containing the @code{INCLUDE} keyword. In particular, headlines within
da5ecfa9 9962the file will become children of the current section. That behavior can be
271672fa
BG
9963changed by providing an additional keyword parameter, @code{:minlevel}. In
9964that case, all headlines in the included file will be shifted so the one with
9965the lowest level reaches that specified level. For example, to make a file
9966become a sibling of the current top-level headline, use
44ce9197
CD
9967
9968@example
271672fa 9969#+INCLUDE: "~/my-book/chapter2.org" :minlevel 1
44ce9197 9970@end example
b349f79f 9971
ce57c2fe
BG
9972You can also include a portion of a file by specifying a lines range using
9973the @code{:lines} parameter. The line at the upper end of the range will not
9974be included. The start and/or the end of the range may be omitted to use the
9975obvious defaults.
9976
9977@example
9978#+INCLUDE: "~/.emacs" :lines "5-10" @r{Include lines 5 to 10, 10 excluded}
9979#+INCLUDE: "~/.emacs" :lines "-10" @r{Include lines 1 to 10, 10 excluded}
9980#+INCLUDE: "~/.emacs" :lines "10-" @r{Include lines from 10 to EOF}
9981@end example
9982
b349f79f
CD
9983@table @kbd
9984@kindex C-c '
9985@item C-c '
9986Visit the include file at point.
9987@end table
9988
ed21c5c8 9989@node Index entries, Macro replacement, Include files, Markup
86fbb8ca 9990@section Index entries
ed21c5c8
CD
9991@cindex index entries, for publishing
9992
9993You can specify entries that will be used for generating an index during
9994publishing. This is done by lines starting with @code{#+INDEX}. An entry
9995the contains an exclamation mark will create a sub item. See @ref{Generating
9996an index} for more information.
9997
9998@example
86fbb8ca 9999* Curriculum Vitae
ed21c5c8
CD
10000#+INDEX: CV
10001#+INDEX: Application!CV
10002@end example
10003
10004
b349f79f 10005
ed21c5c8 10006
e66ba1df 10007@node Macro replacement, Embedded @LaTeX{}, Index entries, Markup
a351880d
CD
10008@section Macro replacement
10009@cindex macro replacement, during export
10010@cindex #+MACRO
10011
10012You can define text snippets with
10013
10014@example
10015#+MACRO: name replacement text $1, $2 are arguments
10016@end example
10017
271672fa
BG
10018@noindent which can be referenced in
10019paragraphs, verse blocks, table cells and some keywords with
10020@code{@{@{@{name(arg1,arg2)@}@}@}}@footnote{Since commas separate arguments,
10021commas within arguments have to be escaped with a backslash character.
10022Conversely, backslash characters before a comma, and only them, need to be
10023escaped with another backslash character.}. In addition to defined macros,
10024@code{@{@{@{title@}@}@}}, @code{@{@{@{author@}@}@}}, etc., will reference
10025information set by the @code{#+TITLE:}, @code{#+AUTHOR:}, and similar lines.
10026Also, @code{@{@{@{time(@var{FORMAT})@}@}@}} and
a351880d
CD
10027@code{@{@{@{modification-time(@var{FORMAT})@}@}@}} refer to current date time
10028and to the modification time of the file being exported, respectively.
10029@var{FORMAT} should be a format string understood by
10030@code{format-time-string}.
10031
271672fa 10032Macro expansion takes place during export.
a351880d
CD
10033
10034
271672fa 10035@node Embedded @LaTeX{}, Special blocks, Macro replacement, Markup
acedf35c 10036@section Embedded @LaTeX{}
a351880d 10037@cindex @TeX{} interpretation
acedf35c
CD
10038@cindex @LaTeX{} interpretation
10039
10040Plain ASCII is normally sufficient for almost all note taking. Exceptions
10041include scientific notes, which often require mathematical symbols and the
10042occasional formula. @LaTeX{}@footnote{@LaTeX{} is a macro system based on
10043Donald E. Knuth's @TeX{} system. Many of the features described here as
10044``@LaTeX{}'' are really from @TeX{}, but for simplicity I am blurring this
e66ba1df 10045distinction.} is widely used to typeset scientific documents. Org mode
acedf35c
CD
10046supports embedding @LaTeX{} code into its files, because many academics are
10047used to writing and reading @LaTeX{} source code, and because it can be
271672fa 10048readily processed to produce pretty output for a number of export back-ends.
a351880d
CD
10049
10050@menu
c0468714
GM
10051* Special symbols:: Greek letters and other symbols
10052* Subscripts and superscripts:: Simple syntax for raising/lowering text
8223b1d2 10053* @LaTeX{} fragments:: Complex formulas made easy
e66ba1df 10054* Previewing @LaTeX{} fragments:: What will this snippet look like?
c0468714 10055* CDLaTeX mode:: Speed up entering of formulas
a351880d
CD
10056@end menu
10057
e66ba1df 10058@node Special symbols, Subscripts and superscripts, Embedded @LaTeX{}, Embedded @LaTeX{}
a351880d
CD
10059@subsection Special symbols
10060@cindex math symbols
10061@cindex special symbols
10062@cindex @TeX{} macros
acedf35c 10063@cindex @LaTeX{} fragments, markup rules
a351880d 10064@cindex HTML entities
acedf35c 10065@cindex @LaTeX{} entities
a351880d 10066
271672fa
BG
10067You can use @LaTeX{}-like syntax to insert special symbols like @samp{\alpha}
10068to indicate the Greek letter, or @samp{\to} to indicate an arrow. Completion
10069for these symbols is available, just type @samp{\} and maybe a few letters,
acedf35c 10070and press @kbd{M-@key{TAB}} to see possible completions. Unlike @LaTeX{}
271672fa 10071code, Org mode allows these symbols to be present without surrounding math
a351880d
CD
10072delimiters, for example:
10073
10074@example
10075Angles are written as Greek letters \alpha, \beta and \gamma.
10076@end example
10077
86fbb8ca 10078@vindex org-entities
a351880d 10079During export, these symbols will be transformed into the native format of
271672fa 10080the exporter back-end. Strings like @code{\alpha} will be exported as
acedf35c 10081@code{&alpha;} in the HTML output, and as @code{$\alpha$} in the @LaTeX{}
a351880d 10082output. Similarly, @code{\nbsp} will become @code{&nbsp;} in HTML and
acedf35c 10083@code{~} in @LaTeX{}. If you need such a symbol inside a word, terminate it
a351880d
CD
10084like this: @samp{\Aacute@{@}stor}.
10085
10086A large number of entities is provided, with names taken from both HTML and
acedf35c 10087@LaTeX{}; see the variable @code{org-entities} for the complete list.
a351880d
CD
10088@samp{\-} is treated as a shy hyphen, and @samp{--}, @samp{---}, and
10089@samp{...} are all converted into special commands creating hyphens of
10090different lengths or a compact set of dots.
10091
271672fa 10092If you would like to see entities displayed as UTF-8 characters, use the
86fbb8ca
CD
10093following command@footnote{You can turn this on by default by setting the
10094variable @code{org-pretty-entities}, or on a per-file base with the
10095@code{#+STARTUP} option @code{entitiespretty}.}:
10096
10097@table @kbd
271672fa 10098@cindex @code{entitiespretty}, STARTUP keyword
86fbb8ca
CD
10099@kindex C-c C-x \
10100@item C-c C-x \
acedf35c
CD
10101Toggle display of entities as UTF-8 characters. This does not change the
10102buffer content which remains plain ASCII, but it overlays the UTF-8 character
86fbb8ca
CD
10103for display purposes only.
10104@end table
10105
e66ba1df 10106@node Subscripts and superscripts, @LaTeX{} fragments, Special symbols, Embedded @LaTeX{}
a351880d
CD
10107@subsection Subscripts and superscripts
10108@cindex subscript
10109@cindex superscript
10110
271672fa
BG
10111Just like in @LaTeX{}, @samp{^} and @samp{_} are used to indicate super- and
10112subscripts. Again, these can be used without embedding them in math-mode
10113delimiters. To increase the readability of ASCII text, it is not necessary
10114(but OK) to surround multi-character sub- and superscripts with curly braces.
10115For example
67df9cfb
CD
10116
10117@example
acedf35c 10118The mass of the sun is M_sun = 1.989 x 10^30 kg. The radius of
a351880d 10119the sun is R_@{sun@} = 6.96 x 10^8 m.
67df9cfb
CD
10120@end example
10121
271672fa
BG
10122@vindex org-use-sub-superscripts
10123If you write a text where the underscore is often used in a different
10124context, Org's convention to always interpret these as subscripts can get in
10125your way. Configure the variable @code{org-use-sub-superscripts} to change
10126this convention. For example, when setting this variable to @code{@{@}},
10127@samp{a_b} will not be interpreted as a subscript, but @samp{a_@{b@}} will.
afe98dfa 10128
86fbb8ca
CD
10129@table @kbd
10130@kindex C-c C-x \
10131@item C-c C-x \
acedf35c 10132In addition to showing entities as UTF-8 characters, this command will also
86fbb8ca
CD
10133format sub- and superscripts in a WYSIWYM way.
10134@end table
67df9cfb 10135
e66ba1df 10136@node @LaTeX{} fragments, Previewing @LaTeX{} fragments, Subscripts and superscripts, Embedded @LaTeX{}
acedf35c
CD
10137@subsection @LaTeX{} fragments
10138@cindex @LaTeX{} fragments
b349f79f 10139
a351880d 10140@vindex org-format-latex-header
afe98dfa 10141Going beyond symbols and sub- and superscripts, a full formula language is
e66ba1df 10142needed. Org mode can contain @LaTeX{} math fragments, and it supports ways
271672fa 10143to process these for several export back-ends. When exporting to @LaTeX{},
afe98dfa
CD
10144the code is obviously left as it is. When exporting to HTML, Org invokes the
10145@uref{http://www.mathjax.org, MathJax library} (@pxref{Math formatting in
10146HTML export}) to process and display the math@footnote{If you plan to use
10147this regularly or on pages with significant page views, you should install
271672fa
BG
10148@file{MathJax} on your own server in order to limit the load of our server.}.
10149Finally, it can also process the mathematical expressions into
10150images@footnote{For this to work you need to be on a system with a working
10151@LaTeX{} installation. You also need the @file{dvipng} program or the
10152@file{convert}, respectively available at
10153@url{http://sourceforge.net/projects/dvipng/} and from the @file{imagemagick}
10154suite. The @LaTeX{} header that will be used when processing a fragment can
10155be configured with the variable @code{org-format-latex-header}.} that can be
10156displayed in a browser.
b349f79f 10157
acedf35c
CD
10158@LaTeX{} fragments don't need any special marking at all. The following
10159snippets will be identified as @LaTeX{} source code:
a351880d
CD
10160@itemize @bullet
10161@item
afe98dfa 10162Environments of any kind@footnote{When @file{MathJax} is used, only the
271672fa
BG
10163environments recognized by @file{MathJax} will be processed. When
10164@file{dvipng} program or @file{imagemagick} suite is used to create images,
10165any @LaTeX{} environment will be handled.}. The only requirement is that the
10166@code{\begin} and @code{\end} statements appear on a new line, at the
10167beginning of the line or after whitespaces only.
a351880d 10168@item
acedf35c 10169Text within the usual @LaTeX{} math delimiters. To avoid conflicts with
a351880d
CD
10170currency specifications, single @samp{$} characters are only recognized as
10171math delimiters if the enclosed text contains at most two line breaks, is
10172directly attached to the @samp{$} characters with no whitespace in between,
10173and if the closing @samp{$} is followed by whitespace, punctuation or a dash.
10174For the other delimiters, there is no such restriction, so when in doubt, use
10175@samp{\(...\)} as inline math delimiters.
10176@end itemize
b349f79f 10177
a351880d 10178@noindent For example:
b349f79f 10179
a351880d 10180@example
271672fa
BG
10181\begin@{equation@}
10182x=\sqrt@{b@}
10183\end@{equation@}
b349f79f 10184
a351880d
CD
10185If $a^2=b$ and \( b=2 \), then the solution must be
10186either $$ a=+\sqrt@{2@} $$ or \[ a=-\sqrt@{2@} \].
10187@end example
b349f79f 10188
271672fa
BG
10189@c FIXME
10190@c @noindent
10191@c @vindex org-format-latex-options
10192@c If you need any of the delimiter ASCII sequences for other purposes, you
10193@c can configure the option @code{org-format-latex-options} to deselect the
10194@c ones you do not wish to have interpreted by the @LaTeX{} converter.
b349f79f 10195
271672fa 10196@vindex org-export-with-latex
e66ba1df 10197@LaTeX{} processing can be configured with the variable
271672fa
BG
10198@code{org-export-with-latex}. The default setting is @code{t} which means
10199@file{MathJax} for HTML, and no processing for ASCII and @LaTeX{} back-ends.
10200You can also set this variable on a per-file basis using one of these
10201lines:
afe98dfa
CD
10202
10203@example
271672fa
BG
10204#+OPTIONS: tex:t @r{Do the right thing automatically (MathJax)}
10205#+OPTIONS: tex:nil @r{Do not process @LaTeX{} fragments at all}
10206#+OPTIONS: tex:verbatim @r{Verbatim export, for jsMath or so}
afe98dfa
CD
10207@end example
10208
e66ba1df
BG
10209@node Previewing @LaTeX{} fragments, CDLaTeX mode, @LaTeX{} fragments, Embedded @LaTeX{}
10210@subsection Previewing @LaTeX{} fragments
10211@cindex @LaTeX{} fragments, preview
b349f79f 10212
271672fa
BG
10213@vindex org-latex-create-formula-image-program
10214If you have @file{dvipng} or @file{imagemagick} installed@footnote{Choose the
10215converter by setting the variable
10216@code{org-latex-create-formula-image-program} accordingly.}, @LaTeX{}
10217fragments can be processed to produce preview images of the typeset
10218expressions:
b349f79f
CD
10219
10220@table @kbd
a351880d
CD
10221@kindex C-c C-x C-l
10222@item C-c C-x C-l
acedf35c 10223Produce a preview image of the @LaTeX{} fragment at point and overlay it
a351880d
CD
10224over the source code. If there is no fragment at point, process all
10225fragments in the current entry (between two headlines). When called
10226with a prefix argument, process the entire subtree. When called with
10227two prefix arguments, or when the cursor is before the first headline,
10228process the entire buffer.
10229@kindex C-c C-c
10230@item C-c C-c
10231Remove the overlay preview images.
b349f79f
CD
10232@end table
10233
a351880d
CD
10234@vindex org-format-latex-options
10235You can customize the variable @code{org-format-latex-options} to influence
ce57c2fe 10236some aspects of the preview. In particular, the @code{:scale} (and for HTML
a351880d
CD
10237export, @code{:html-scale}) property can be used to adjust the size of the
10238preview images.
c8d0cf5c 10239
271672fa
BG
10240@vindex org-startup-with-latex-preview
10241You can turn on the previewing of all @LaTeX{} fragments in a file with
10242
10243@example
10244#+STARTUP: latexpreview
10245@end example
10246
10247To disable it, simply use
10248
10249@example
10250#+STARTUP: nolatexpreview
10251@end example
10252
e66ba1df
BG
10253@node CDLaTeX mode, , Previewing @LaTeX{} fragments, Embedded @LaTeX{}
10254@subsection Using CD@LaTeX{} to enter math
10255@cindex CD@LaTeX{}
a351880d 10256
e66ba1df 10257CD@LaTeX{} mode is a minor mode that is normally used in combination with a
acedf35c 10258major @LaTeX{} mode like AUC@TeX{} in order to speed-up insertion of
e66ba1df
BG
10259environments and math templates. Inside Org mode, you can make use of
10260some of the features of CD@LaTeX{} mode. You need to install
a351880d
CD
10261@file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
10262AUC@TeX{}) from @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
e66ba1df
BG
10263Don't use CD@LaTeX{} mode itself under Org mode, but use the light
10264version @code{org-cdlatex-mode} that comes as part of Org mode. Turn it
271672fa 10265on for the current buffer with @kbd{M-x org-cdlatex-mode RET}, or for all
a351880d
CD
10266Org files with
10267
10268@lisp
10269(add-hook 'org-mode-hook 'turn-on-org-cdlatex)
10270@end lisp
10271
10272When this mode is enabled, the following features are present (for more
e66ba1df 10273details see the documentation of CD@LaTeX{} mode):
a351880d
CD
10274@itemize @bullet
10275@kindex C-c @{
10276@item
10277Environment templates can be inserted with @kbd{C-c @{}.
10278@item
10279@kindex @key{TAB}
10280The @key{TAB} key will do template expansion if the cursor is inside a
e66ba1df 10281@LaTeX{} fragment@footnote{Org mode has a method to test if the cursor is
a351880d
CD
10282inside such a fragment, see the documentation of the function
10283@code{org-inside-LaTeX-fragment-p}.}. For example, @key{TAB} will
10284expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
10285correctly inside the first brace. Another @key{TAB} will get you into
10286the second brace. Even outside fragments, @key{TAB} will expand
10287environment abbreviations at the beginning of a line. For example, if
10288you write @samp{equ} at the beginning of a line and press @key{TAB},
10289this abbreviation will be expanded to an @code{equation} environment.
271672fa 10290To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help RET}.
a351880d
CD
10291@item
10292@kindex _
10293@kindex ^
10294@vindex cdlatex-simplify-sub-super-scripts
acedf35c 10295Pressing @kbd{_} and @kbd{^} inside a @LaTeX{} fragment will insert these
a351880d
CD
10296characters together with a pair of braces. If you use @key{TAB} to move
10297out of the braces, and if the braces surround only a single character or
10298macro, they are removed again (depending on the variable
10299@code{cdlatex-simplify-sub-super-scripts}).
10300@item
10301@kindex `
10302Pressing the backquote @kbd{`} followed by a character inserts math
acedf35c 10303macros, also outside @LaTeX{} fragments. If you wait more than 1.5 seconds
a351880d
CD
10304after the backquote, a help window will pop up.
10305@item
10306@kindex '
10307Pressing the single-quote @kbd{'} followed by another character modifies
10308the symbol before point with an accent or a font. If you wait more than
acedf35c
CD
103091.5 seconds after the single-quote, a help window will pop up. Character
10310modification will work only inside @LaTeX{} fragments; outside the quote
a351880d
CD
10311is normal.
10312@end itemize
10313
271672fa
BG
10314@node Special blocks, , Embedded @LaTeX{}, Markup
10315@section Special blocks
10316@cindex Special blocks
10317
10318Org syntax includes pre-defined blocks (@pxref{Paragraphs} and @ref{Literal
10319examples}). It is also possible to create blocks containing raw code
10320targeted at a specific back-ends (e.g., @samp{#+BEGIN_LATEX}).
10321
3c8b09ca
BG
10322Any other block is a @emph{special block}.
10323
10324For example, @samp{#+BEGIN_ABSTRACT} and @samp{#+BEGIN_VIDEO} are special
10325blocks. The first one is useful when exporting to @LaTeX{}, the second one
10326when exporting to HTML5.
10327
10328Each export back-end decides if they should be exported, and how. When the
10329block is ignored, its contents are still exported, as if the opening and
10330closing block lines were not there. For example, when exporting a
10331@samp{#+BEGIN_TEST} block, HTML back-end wraps its contents within a
10332@samp{<div name="test">} tag.
10333
10334Refer to back-end specific documentation for more information.
271672fa 10335
a351880d
CD
10336@node Exporting, Publishing, Markup, Top
10337@chapter Exporting
10338@cindex exporting
10339
271672fa
BG
10340The Org mode export facilities can be used to export Org documents or parts
10341of Org documents to a variety of other formats. In addition, these
10342facilities can be used with @code{orgtbl-mode} and/or @code{orgstruct-mode}
10343in foreign buffers so you can author tables and lists in Org syntax and
10344convert them in place to the target language.
10345
10346ASCII export produces a readable and simple version of an Org file for
10347printing and sharing notes. HTML export allows you to easily publish notes
10348on the web, or to build full-fledged websites. @LaTeX{} export lets you use
10349Org mode and its structured editing functions to create arbitrarily complex
10350@LaTeX{} files for any kind of document. OpenDocument Text (ODT) export
10351allows seamless collaboration across organizational boundaries. Markdown
10352export lets you seamlessly collaborate with other developers. Finally, iCal
10353export can extract entries with deadlines or appointments to produce a file
10354in the iCalendar format.
a351880d
CD
10355
10356@menu
271672fa
BG
10357* The Export Dispatcher:: The main exporter interface
10358* Export back-ends:: Built-in export formats
10359* Export settings:: Generic export settings
c0468714 10360* ASCII/Latin-1/UTF-8 export:: Exporting to flat files with encoding
271672fa 10361* Beamer export:: Exporting as a Beamer presentation
c0468714 10362* HTML export:: Exporting to HTML
e66ba1df 10363* @LaTeX{} and PDF export:: Exporting to @LaTeX{}, and processing to PDF
271672fa 10364* Markdown export:: Exporting to Markdown
e66ba1df 10365* OpenDocument Text export:: Exporting to OpenDocument Text
3c8b09ca 10366* Org export:: Exporting to Org
271672fa 10367* iCalendar export:: Exporting to iCalendar
30cb51f1
BG
10368* Other built-in back-ends:: Exporting to @code{Texinfo} or a man page
10369* Export in foreign buffers:: Author tables and lists in Org syntax
271672fa 10370* Advanced configuration:: Fine-tuning the export output
a351880d 10371@end menu
c8d0cf5c 10372
271672fa
BG
10373@node The Export Dispatcher, Export back-ends, Exporting, Exporting
10374@section The Export Dispatcher
10375@vindex org-export-dispatch-use-expert-ui
10376@cindex Export, dispatcher
10377
10378The main entry point for export related tasks is the dispatcher, a
10379hierarchical menu from which it is possible to select an export format and
10380toggle export options@footnote{It is also possible to use a less intrusive
10381interface by setting @code{org-export-dispatch-use-expert-ui} to a
10382non-@code{nil} value. In that case, only a prompt is visible from the
10383minibuffer. From there one can still switch back to regular menu by pressing
10384@key{?}.} from which it is possible to select an export format and to toggle
10385export options.
10386
10387@c @quotation
10388@table @asis
10389@orgcmd{C-c C-e,org-export-dispatch}
864c9740 10390
271672fa
BG
10391Dispatch for export and publishing commands. When called with a @kbd{C-u}
10392prefix argument, repeat the last export command on the current buffer while
10393preserving toggled options. If the current buffer hasn't changed and subtree
10394export was activated, the command will affect that same subtree.
10395@end table
10396@c @end quotation
864c9740 10397
271672fa
BG
10398Normally the entire buffer is exported, but if there is an active region
10399only that part of the buffer will be exported.
864c9740 10400
271672fa
BG
10401Several export options (@pxref{Export settings}) can be toggled from the
10402export dispatcher with the following key combinations:
864c9740 10403
271672fa
BG
10404@table @kbd
10405@item C-a
10406@vindex org-export-async-init-file
10407Toggle asynchronous export. Asynchronous export uses an external Emacs
10408process that is configured with a specified initialization file.
ce57c2fe 10409
30cb51f1
BG
10410While exporting asynchronously, the output is not displayed, but stored in
10411a place called ``the export stack''. This stack can be displayed by calling
10412the dispatcher with a double @kbd{C-u} prefix argument, or with @kbd{&} key
10413from the dispatcher menu.
864c9740 10414
271672fa 10415@vindex org-export-in-background
da5ecfa9 10416To make this behavior the default, customize the variable
271672fa 10417@code{org-export-in-background}.
b349f79f 10418
271672fa
BG
10419@item C-b
10420Toggle body-only export. Its effect depends on the back-end used.
10421Typically, if the back-end has a header section (like @code{<head>...</head>}
10422in the HTML back-end), a body-only export will not include this header.
10423
10424@item C-s
10425@vindex org-export-initial-scope
10426Toggle subtree export. The top heading becomes the document title.
10427
10428You can change the default state of this option by setting
10429@code{org-export-initial-scope}.
10430
10431@item C-v
10432Toggle visible-only export. Only export the text that is currently
10433visible, i.e. not hidden by outline visibility in the buffer.
b349f79f 10434
b349f79f
CD
10435@end table
10436
271672fa
BG
10437@vindex org-export-copy-to-kill-ring
10438With the exception of asynchronous export, a successful export process writes
10439its output to the kill-ring. You can configure this behavior by altering the
10440option @code{org-export-copy-to-kill-ring}.
10441
10442@node Export back-ends, Export settings, The Export Dispatcher, Exporting
10443@section Export back-ends
10444@cindex Export, back-ends
10445
10446An export back-end is a library that translates Org syntax into a foreign
10447format. An export format is not available until the proper back-end has been
10448loaded.
10449
10450@vindex org-export-backends
10451By default, the following four back-ends are loaded: @code{ascii},
10452@code{html}, @code{icalendar} and @code{latex}. It is possible to add more
10453(or remove some) by customizing @code{org-export-backends}.
10454
10455Built-in back-ends include:
10456
10457@itemize
10458@item ascii (ASCII format)
10459@item beamer (@LaTeX{} Beamer format)
10460@item html (HTML format)
10461@item icalendar (iCalendar format)
10462@item latex (@LaTeX{} format)
10463@item man (Man page format)
10464@item md (Markdown format)
10465@item odt (OpenDocument Text format)
3c8b09ca 10466@item org (Org format)
271672fa
BG
10467@item texinfo (Texinfo format)
10468@end itemize
10469
10470Other back-ends might be found in the @code{contrib/} directory
10471(@pxref{Installation}).
10472
10473@node Export settings, ASCII/Latin-1/UTF-8 export, Export back-ends, Exporting
10474@section Export settings
10475@cindex Export, settings
10476
10477Export options can be set: globally with variables; for an individual file by
10478making variables buffer-local with in-buffer settings (@pxref{In-buffer
10479settings}), by setting individual keywords, or by specifying them in a
10480compact form with the @code{#+OPTIONS} keyword; or for a tree by setting
10481properties (@pxref{Properties and Columns}). Options set at a specific level
10482override options set at a more general level.
10483
10484@cindex #+SETUPFILE
10485In-buffer settings may appear anywhere in the file, either directly or
10486indirectly through a file included using @samp{#+SETUPFILE: filename} syntax.
10487Option keyword sets tailored to a particular back-end can be inserted from
10488the export dispatcher (@pxref{The Export Dispatcher}) using the @code{Insert
10489template} command by pressing @key{#}. To insert keywords individually,
10490a good way to make sure the keyword is correct is to type @code{#+} and then
10491to use @kbd{M-<TAB>} for completion.
10492
10493The export keywords available for every back-end, and their equivalent global
10494variables, include:
10495
10496@table @samp
10497@item AUTHOR
c8d0cf5c 10498@vindex user-full-name
271672fa
BG
10499The document author (@code{user-full-name}).
10500
10501@item CREATOR
10502@vindex org-export-creator-string
10503Entity responsible for output generation (@code{org-export-creator-string}).
10504
10505@item DATE
10506@vindex org-export-date-timestamp-format
10507A date or a time-stamp@footnote{The variable
10508@code{org-export-date-timestamp-format} defines how this time-stamp will be
10509exported.}.
10510
10511@item DESCRIPTION
10512The document description. Back-ends handle it as they see fit (e.g., for the
10513XHTML meta tag), if at all. You can use several such keywords for long
10514descriptions.
10515
10516@item EMAIL
c8d0cf5c 10517@vindex user-mail-address
271672fa
BG
10518The email address (@code{user-mail-address}).
10519
10520@item KEYWORDS
10521The keywords defining the contents of the document. Back-ends handle it as
10522they see fit (e.g., for the XHTML meta tag), if at all. You can use several
10523such keywords if the list is long.
10524
10525@item LANGUAGE
c8d0cf5c 10526@vindex org-export-default-language
271672fa
BG
10527The language used for translating some strings
10528(@code{org-export-default-language}). E.g., @samp{#+LANGUAGE: fr} will tell
10529Org to translate @emph{File} (english) into @emph{Fichier} (french) in the
10530clocktable.
b349f79f 10531
271672fa
BG
10532@item SELECT_TAGS
10533@vindex org-export-select-tags
10534The tags that select a tree for export (@code{org-export-select-tags}). The
10535default value is @code{:export:}. Within a subtree tagged with
10536@code{:export:}, you can still exclude entries with @code{:noexport:} (see
73d3db82
BG
10537below). When headlines are selectively exported with @code{:export:}
10538anywhere in a file, text before the first headline is ignored.
271672fa
BG
10539
10540@item EXCLUDE_TAGS
10541The tags that exclude a tree from export (@code{org-export-exclude-tags}).
10542The default value is @code{:noexport:}. Entries with the @code{:noexport:}
10543tag will be unconditionally excluded from the export, even if they have an
10544@code{:export:} tag.
10545
10546@item TITLE
10547The title to be shown (otherwise derived from buffer's name). You can use
10548several such keywords for long titles.
10549@end table
10550
10551The @code{#+OPTIONS} keyword is a compact@footnote{If you want to configure
10552many options this way, you can use several @code{#+OPTIONS} lines.} form that
10553recognizes the following arguments:
10554
10555@table @code
10556@item ':
10557@vindex org-export-with-smart-quotes
10558Toggle smart quotes (@code{org-export-with-smart-quotes}).
10559
10560@item *:
10561Toggle emphasized text (@code{org-export-with-emphasize}).
10562
10563@item -:
10564@vindex org-export-with-special-strings
10565Toggle conversion of special strings
10566(@code{org-export-with-special-strings}).
10567
10568@item ::
10569@vindex org-export-with-fixed-width
10570Toggle fixed-width sections
10571(@code{org-export-with-fixed-width}).
10572
10573@item <:
10574@vindex org-export-with-timestamps
10575Toggle inclusion of any time/date active/inactive stamps
10576(@code{org-export-with-timestamps}).
10577
10578@item :
10579@vindex org-export-preserve-breaks
10580Toggle line-break-preservation (@code{org-export-preserve-breaks}).
10581
10582@item ^:
10583@vindex org-export-with-sub-superscripts
10584Toggle @TeX{}-like syntax for sub- and superscripts. If you write "^:@{@}",
10585@samp{a_@{b@}} will be interpreted, but the simple @samp{a_b} will be left as
10586it is (@code{org-export-with-sub-superscripts}).
10587
10588@item arch:
10589@vindex org-export-with-archived-trees
10590Configure export of archived trees. Can be set to @code{headline} to only
10591process the headline, skipping its contents
10592(@code{org-export-with-archived-trees}).
10593
10594@item author:
10595@vindex org-export-with-author
10596Toggle inclusion of author name into exported file
10597(@code{org-export-with-author}).
10598
10599@item c:
10600@vindex org-export-with-clocks
10601Toggle inclusion of CLOCK keywords (@code{org-export-with-clocks}).
10602
10603@item creator:
10604@vindex org-export-with-creator
10605Configure inclusion of creator info into exported file. It may be set to
10606@code{comment} (@code{org-export-with-creator}).
10607
10608@item d:
10609@vindex org-export-with-drawers
10610Toggle inclusion of drawers, or list drawers to include
10611(@code{org-export-with-drawers}).
10612
10613@item e:
10614@vindex org-export-with-entities
10615Toggle inclusion of entities (@code{org-export-with-entities}).
10616
10617@item email:
10618@vindex org-export-with-email
10619Toggle inclusion of the author's e-mail into exported file
10620(@code{org-export-with-email}).
10621
10622@item f:
10623@vindex org-export-with-footnotes
10624Toggle the inclusion of footnotes (@code{org-export-with-footnotes}).
10625
10626@item H:
10627@vindex org-export-headline-levels
10628Set the number of headline levels for export
10629(@code{org-export-headline-levels}). Below that level, headlines are treated
10630differently. In most back-ends, they become list items.
10631
10632@item inline:
10633@vindex org-export-with-inlinetasks
10634Toggle inclusion of inlinetasks (@code{org-export-with-inlinetasks}).
10635
10636@item num:
10637@vindex org-export-with-section-numbers
10638Toggle section-numbers (@code{org-export-with-section-numbers}). It can also
10639be set to a number @samp{n}, so only headlines at that level or above will be
10640numbered.
10641
10642@item p:
10643@vindex org-export-with-planning
10644Toggle export of planning information (@code{org-export-with-planning}).
10645``Planning information'' is the line containing the @code{SCHEDULED:}, the
10646@code{DEADLINE:} or the @code{CLOSED:} cookies or a combination of them.
10647
10648@item pri:
10649@vindex org-export-with-priority
10650Toggle inclusion of priority cookies (@code{org-export-with-priority}).
10651
10652@item stat:
10653@vindex org-export-with-statistics-cookies
10654Toggle inclusion of statistics cookies
10655(@code{org-export-with-statistics-cookies}).
10656
10657@item tags:
10658@vindex org-export-with-tags
10659Toggle inclusion of tags, may also be @code{not-in-toc}
10660(@code{org-export-with-tags}).
10661
10662@item tasks:
10663@vindex org-export-with-tasks
10664Toggle inclusion of tasks (TODO items), can be @code{nil} to remove all
10665tasks, @code{todo} to remove DONE tasks, or a list of keywords to keep
10666(@code{org-export-with-tasks}).
10667
10668@item tex:
10669@vindex org-export-with-latex
10670Configure export of @LaTeX{} fragments and environments. It may be set to
10671@code{verbatim} (@code{org-export-with-latex}).
10672
10673@item timestamp:
ce57c2fe 10674@vindex org-export-time-stamp-file
271672fa
BG
10675Toggle inclusion of the creation time into exported file
10676(@code{org-export-time-stamp-file}).
4009494e 10677
271672fa
BG
10678@item toc:
10679@vindex org-export-with-toc
10680Toggle inclusion of the table of contents, or set the level limit
10681(@code{org-export-with-toc}).
10682
10683@item todo:
10684@vindex org-export-with-todo-keywords
10685Toggle inclusion of TODO keywords into exported text
10686(@code{org-export-with-todo-keywords}).
10687
10688@item |:
10689@vindex org-export-with-tables
10690Toggle inclusion of tables (@code{org-export-with-tables}).
4009494e
GM
10691@end table
10692
271672fa
BG
10693@cindex property, EXPORT_FILE_NAME
10694When exporting only a subtree, each of the previous keywords@footnote{With
ae93878a 10695the exception of @samp{SETUPFILE}.} can be overridden locally by special node
271672fa
BG
10696properties. These begin with @samp{EXPORT_}, followed by the name of the
10697keyword they supplant. For example, @samp{DATE} and @samp{OPTIONS} keywords
10698become, respectively, @samp{EXPORT_DATE} and @samp{EXPORT_OPTIONS}
10699properties. Subtree export also supports the self-explicit
10700@samp{EXPORT_FILE_NAME} property@footnote{There is no buffer-wide equivalent
10701for this property. The file name in this case is derived from the file
10702associated to the buffer, if possible, or asked to the user otherwise.}.
10703
10704@cindex #+BIND
10705@vindex org-export-allow-bind-keywords
10706If @code{org-export-allow-bind-keywords} is non-@code{nil}, Emacs variables
10707can become buffer-local during export by using the BIND keyword. Its syntax
10708is @samp{#+BIND: variable value}. This is particularly useful for in-buffer
10709settings that cannot be changed using specific keywords.
10710
10711@node ASCII/Latin-1/UTF-8 export, Beamer export, Export settings, Exporting
ed21c5c8 10712@section ASCII/Latin-1/UTF-8 export
4009494e 10713@cindex ASCII export
ed21c5c8
CD
10714@cindex Latin-1 export
10715@cindex UTF-8 export
4009494e 10716
e66ba1df 10717ASCII export produces a simple and very readable version of an Org mode
1df7defd 10718file, containing only plain ASCII@. Latin-1 and UTF-8 export augment the file
ed21c5c8 10719with special characters and symbols available in these encodings.
4009494e 10720
271672fa
BG
10721@vindex org-ascii-links-to-notes
10722Links are exported in a footnote-like style, with the descriptive part in the
10723text and the link in a note before the next heading. See the variable
10724@code{org-ascii-links-to-notes} for details and other options.
10725
10726@subheading ASCII export commands
10727
4009494e 10728@table @kbd
271672fa 10729@orgcmd{C-c C-e t a/l/u,org-ascii-export-to-ascii}
8223b1d2 10730Export as an ASCII file. For an Org file, @file{myfile.org}, the ASCII file
271672fa
BG
10731will be @file{myfile.txt}. The file will be overwritten without warning.
10732When the original file is @file{myfile.txt}, the resulting file becomes
10733@file{myfile.txt.txt} in order to prevent data loss.
10734@orgcmd{C-c C-e t A/L/U,org-ascii-export-as-ascii}
acedf35c 10735Export to a temporary buffer. Do not create a file.
4009494e
GM
10736@end table
10737
271672fa
BG
10738@subheading Header and sectioning structure
10739
10740In the exported version, the first three outline levels become headlines,
10741defining a general document structure. Additional levels are exported as
10742lists. The transition can also occur at a different level (@pxref{Export
10743settings}).
10744
10745@subheading Quoting ASCII text
10746
10747You can insert text that will only appear when using @code{ASCII} back-end
10748with the following constructs:
10749
10750@cindex #+ASCII
10751@cindex #+BEGIN_ASCII
10752@example
10753Text @@@@ascii:and additional text@@@@ within a paragraph.
10754
10755#+ASCII: Some text
10756
10757#+BEGIN_ASCII
10758All lines in this block will appear only when using this back-end.
10759#+END_ASCII
10760@end example
10761
10762@subheading ASCII specific attributes
10763@cindex #+ATTR_ASCII
10764@cindex horizontal rules, in ASCII export
10765
10766@code{ASCII} back-end only understands one attribute, @code{:width}, which
10767specifies the length, in characters, of a given horizontal rule. It must be
10768specified using an @code{ATTR_ASCII} line, directly preceding the rule.
10769
10770@example
10771#+ATTR_ASCII: :width 10
10772-----
10773@end example
10774
10775@node Beamer export, HTML export, ASCII/Latin-1/UTF-8 export, Exporting
10776@section Beamer export
10777@cindex Beamer export
10778
10779The @LaTeX{} class @emph{Beamer} allows production of high quality
10780presentations using @LaTeX{} and pdf processing. Org mode has special
10781support for turning an Org mode file or tree into a Beamer presentation.
10782
10783@subheading Beamer export commands
10784
10785@table @kbd
10786@orgcmd{C-c C-e l b,org-beamer-export-to-latex}
10787Export as a @LaTeX{} file. For an Org file @file{myfile.org}, the @LaTeX{}
10788file will be @file{myfile.tex}. The file will be overwritten without
10789warning.
10790@orgcmd{C-c C-e l B,org-beamer-export-as-latex}
10791Export to a temporary buffer. Do not create a file.
10792@orgcmd{C-c C-e l P,org-beamer-export-to-pdf}
10793Export as @LaTeX{} and then process to PDF.
10794@item C-c C-e l O
10795Export as @LaTeX{} and then process to PDF, then open the resulting PDF file.
10796@end table
10797
10798@subheading Sectioning, Frames and Blocks
10799
10800Any tree with not-too-deep level nesting should in principle be exportable as
10801a Beamer presentation. Headlines fall into three categories: sectioning
10802elements, frames and blocks.
10803
10804@itemize @minus
10805@item
10806@vindex org-beamer-frame-level
10807Headlines become frames when their level is equal to
10808@code{org-beamer-frame-level} or @code{H} value in an @code{OPTIONS} line
10809(@pxref{Export settings}).
10810
10811@cindex property, BEAMER_ENV
10812Though, if a headline in the current tree has a @code{BEAMER_ENV} property
10813set to either to @code{frame} or @code{fullframe}, its level overrides the
10814variable. A @code{fullframe} is a frame with an empty (ignored) title.
10815
10816@item
10817@vindex org-beamer-environments-default
10818@vindex org-beamer-environments-extra
10819All frame's children become @code{block} environments. Special block types
10820can be enforced by setting headline's @code{BEAMER_ENV} property@footnote{If
10821this property is set, the entry will also get a @code{:B_environment:} tag to
10822make this visible. This tag has no semantic meaning, it is only a visual
10823aid.} to an appropriate value (see @code{org-beamer-environments-default} for
10824supported values and @code{org-beamer-environments-extra} for adding more).
10825
10826@item
10827@cindex property, BEAMER_REF
10828As a special case, if the @code{BEAMER_ENV} property is set to either
10829@code{appendix}, @code{note}, @code{noteNH} or @code{againframe}, the
10830headline will become, respectively, an appendix, a note (within frame or
10831between frame, depending on its level), a note with its title ignored or an
10832@code{\againframe} command. In the latter case, a @code{BEAMER_REF} property
10833is mandatory in order to refer to the frame being resumed, and contents are
10834ignored.
10835
10836Also, a headline with an @code{ignoreheading} environment will have its
10837contents only inserted in the output. This special value is useful to have
10838data between frames, or to properly close a @code{column} environment.
10839@end itemize
10840
10841@cindex property, BEAMER_ACT
10842@cindex property, BEAMER_OPT
10843Headlines also support @code{BEAMER_ACT} and @code{BEAMER_OPT} properties.
10844The former is translated as an overlay/action specification, or a default
10845overlay specification when enclosed within square brackets. The latter
10846specifies options@footnote{The @code{fragile} option is added automatically
10847if it contains code that requires a verbatim environment, though.} for the
10848current frame or block. The export back-end will automatically wrap
10849properties within angular or square brackets when appropriate.
10850
10851@cindex property, BEAMER_COL
10852Moreover, headlines handle the @code{BEAMER_COL} property. Its value should
10853be a decimal number representing the width of the column as a fraction of the
10854total text width. If the headline has no specific environment, its title
10855will be ignored and its contents will fill the column created. Otherwise,
10856the block will fill the whole column and the title will be preserved. Two
10857contiguous headlines with a non-@code{nil} @code{BEAMER_COL} value share the same
10858@code{columns} @LaTeX{} environment. It will end before the next headline
10859without such a property. This environment is generated automatically.
10860Although, it can also be explicitly created, with a special @code{columns}
10861value for @code{BEAMER_ENV} property (if it needs to be set up with some
10862specific options, for example).
10863
10864@subheading Beamer specific syntax
10865
10866Beamer back-end is an extension of @LaTeX{} back-end. As such, all @LaTeX{}
10867specific syntax (e.g., @samp{#+LATEX:} or @samp{#+ATTR_LATEX:}) is
10868recognized. See @ref{@LaTeX{} and PDF export} for more information.
10869
10870@cindex #+BEAMER_THEME
10871@cindex #+BEAMER_COLOR_THEME
10872@cindex #+BEAMER_FONT_THEME
10873@cindex #+BEAMER_INNER_THEME
10874@cindex #+BEAMER_OUTER_THEME
10875Beamer export introduces a number of keywords to insert code in the
d1389828 10876document's header. Four control appearance of the presentation:
271672fa
BG
10877@code{#+BEAMER_THEME}, @code{#+BEAMER_COLOR_THEME},
10878@code{#+BEAMER_FONT_THEME}, @code{#+BEAMER_INNER_THEME} and
10879@code{#+BEAMER_OUTER_THEME}. All of them accept optional arguments
10880within square brackets. The last one, @code{#+BEAMER_HEADER}, is more
10881generic and allows you to append any line of code in the header.
10882
10883@example
10884#+BEAMER_THEME: Rochester [height=20pt]
10885#+BEAMER_COLOR_THEME: spruce
10886@end example
10887
10888Table of contents generated from @code{toc:t} @code{OPTION} keyword are
10889wrapped within a @code{frame} environment. Those generated from a @code{TOC}
10890keyword (@pxref{Table of contents}) are not. In that case, it is also
10891possible to specify options, enclosed within square brackets.
10892
10893@example
10894#+TOC: headlines [currentsection]
10895@end example
10896
10897Beamer specific code can be inserted with the following constructs:
10898
10899@cindex #+BEAMER
10900@cindex #+BEGIN_BEAMER
10901@example
10902#+BEAMER: \pause
10903
10904#+BEGIN_BEAMER
10905All lines in this block will appear only when using this back-end.
10906#+END_BEAMER
10907
10908Text @@@@beamer:some code@@@@ within a paragraph.
10909@end example
10910
10911In particular, this last example can be used to add overlay specifications to
10912objects whose type is among @code{bold}, @code{item}, @code{link},
10913@code{radio-target} and @code{target}, when the value is enclosed within
10914angular brackets and put at the beginning the object.
10915
10916@example
10917A *@@@@beamer:<2->@@@@useful* feature
10918@end example
10919
10920@cindex #+ATTR_BEAMER
10921Eventually, every plain list has support for @code{:environment},
10922@code{:overlay} and @code{:options} attributes through
10923@code{ATTR_BEAMER} affiliated keyword. The first one allows the use
10924of a different environment, the second sets overlay specifications and
10925the last one inserts optional arguments in current list environment.
10926
10927@example
10928#+ATTR_BEAMER: :overlay +-
10929- item 1
10930- item 2
10931@end example
10932
10933@subheading Editing support
10934
10935You can turn on a special minor mode @code{org-beamer-mode} for faster
10936editing with:
10937
10938@example
10939#+STARTUP: beamer
10940@end example
10941
10942@table @kbd
10943@orgcmd{C-c C-b,org-beamer-select-environment}
10944In @code{org-beamer-mode}, this key offers fast selection of a Beamer
10945environment or the @code{BEAMER_COL} property.
10946@end table
10947
10948Also, a template for useful in-buffer settings or properties can be inserted
10949into the buffer with @kbd{M-x org-beamer-insert-options-template}. Among
10950other things, this will install a column view format which is very handy for
10951editing special properties used by Beamer.
10952
10953@subheading An example
4009494e 10954
271672fa 10955Here is a simple example Org document that is intended for Beamer export.
4009494e 10956
271672fa
BG
10957@smallexample
10958#+TITLE: Example Presentation
10959#+AUTHOR: Carsten Dominik
10960#+OPTIONS: H:2
10961#+LATEX_CLASS: beamer
10962#+LATEX_CLASS_OPTIONS: [presentation]
10963#+BEAMER_THEME: Madrid
10964#+COLUMNS: %45ITEM %10BEAMER_ENV(Env) %10BEAMER_ACT(Act) %4BEAMER_COL(Col) %8BEAMER_OPT(Opt)
10965
10966* This is the first structural section
10967
10968** Frame 1
10969*** Thanks to Eric Fraga :B_block:BMCOL:
10970 :PROPERTIES:
10971 :BEAMER_COL: 0.48
10972 :BEAMER_ENV: block
10973 :END:
10974 for the first viable Beamer setup in Org
10975*** Thanks to everyone else :B_block:BMCOL:
10976 :PROPERTIES:
10977 :BEAMER_COL: 0.48
10978 :BEAMER_ACT: <2->
10979 :BEAMER_ENV: block
10980 :END:
10981 for contributing to the discussion
10982**** This will be formatted as a beamer note :B_note:
10983 :PROPERTIES:
10984 :BEAMER_env: note
10985 :END:
10986** Frame 2 (where we will not use columns)
10987*** Request
10988 Please test this stuff!
10989@end smallexample
10990
10991@node HTML export, @LaTeX{} and PDF export, Beamer export, Exporting
4009494e
GM
10992@section HTML export
10993@cindex HTML export
10994
d1389828 10995Org mode contains an HTML (XHTML 1.0 strict) exporter with extensive
b6cb4cd5 10996HTML formatting, in ways similar to John Gruber's @emph{markdown}
4009494e
GM
10997language, but with additional support for tables.
10998
10999@menu
c0468714 11000* HTML Export commands:: How to invoke HTML export
271672fa 11001* HTML doctypes:: Org can export to various (X)HTML flavors
ce57c2fe 11002* HTML preamble and postamble:: How to insert a preamble and a postamble
e66ba1df 11003* Quoting HTML tags:: Using direct HTML in Org mode
c0468714
GM
11004* Links in HTML export:: How links will be interpreted and formatted
11005* Tables in HTML export:: How to modify the formatting of tables
11006* Images in HTML export:: How to insert figures into HTML output
afe98dfa 11007* Math formatting in HTML export:: Beautiful math also on the web
c0468714
GM
11008* Text areas in HTML export:: An alternative way to show an example
11009* CSS support:: Changing the appearance of the output
11010* JavaScript support:: Info and Folding in a web browser
4009494e
GM
11011@end menu
11012
271672fa 11013@node HTML Export commands, HTML doctypes, HTML export, HTML export
4009494e
GM
11014@subsection HTML export commands
11015
4009494e 11016@table @kbd
271672fa 11017@orgcmd{C-c C-e h h,org-html-export-to-html}
d1389828 11018Export as an HTML file. For an Org file @file{myfile.org},
ce57c2fe 11019the HTML file will be @file{myfile.html}. The file will be overwritten
271672fa
BG
11020without warning.
11021@kbd{C-c C-e h o}
d1389828 11022Export as an HTML file and immediately open it with a browser.
271672fa 11023@orgcmd{C-c C-e h H,org-html-export-as-html}
acedf35c 11024Export to a temporary buffer. Do not create a file.
4009494e
GM
11025@end table
11026
271672fa
BG
11027@c FIXME Exporting sublevels
11028@c @cindex headline levels, for exporting
11029@c In the exported version, the first 3 outline levels will become headlines,
11030@c defining a general document structure. Additional levels will be exported as
11031@c itemized lists. If you want that transition to occur at a different level,
11032@c specify it with a numeric prefix argument. For example,
11033
11034@c @example
11035@c @kbd{C-2 C-c C-e b}
11036@c @end example
11037
11038@c @noindent
11039@c creates two levels of headings and does the rest as items.
11040
11041@node HTML doctypes, HTML preamble and postamble, HTML Export commands, HTML export
11042@subsection HTML doctypes
11043@vindex org-html-doctype
11044@vindex org-html-doctype-alist
11045
11046Org can export to various (X)HTML flavors.
11047
11048Setting the variable @code{org-html-doctype} allows you to export to different
d1389828 11049(X)HTML variants. The exported HTML will be adjusted according to the syntax
271672fa
BG
11050requirements of that variant. You can either set this variable to a doctype
11051string directly, in which case the exporter will try to adjust the syntax
11052automatically, or you can use a ready-made doctype. The ready-made options
11053are:
11054
11055@itemize
11056@item
11057``html4-strict''
11058@item
11059``html4-transitional''
11060@item
11061``html4-frameset''
11062@item
11063``xhtml-strict''
11064@item
11065``xhtml-transitional''
11066@item
11067``xhtml-frameset''
11068@item
11069``xhtml-11''
11070@item
11071``html5''
11072@item
11073``xhtml5''
11074@end itemize
11075
11076See the variable @code{org-html-doctype-alist} for details. The default is
11077``xhtml-strict''.
11078
11079@subsubheading Fancy HTML5 export
11080@vindex org-html-html5-fancy
11081@vindex org-html-html5-elements
11082
11083HTML5 introduces several new element types. By default, Org will not make
11084use of these element types, but you can set @code{org-html-html5-fancy} to
11085@code{t} (or set @code{html5-fancy} item in an @code{OPTIONS} line), to
11086enable a few new block-level elements. These are created using arbitrary
11087#+BEGIN and #+END blocks. For instance:
4009494e
GM
11088
11089@example
271672fa
BG
11090#+BEGIN_ASIDE
11091Lorem ipsum
11092#+END_ASIDE
4009494e
GM
11093@end example
11094
271672fa
BG
11095Will export to:
11096
11097@example
11098<aside>
11099 <p>Lorem ipsum</p>
11100</aside>
11101@end example
11102
11103While this:
11104
11105@example
11106#+ATTR_HTML: :controls controls :width 350
11107#+BEGIN_VIDEO
11108#+HTML: <source src="movie.mp4" type="video/mp4">
11109#+HTML: <source src="movie.ogg" type="video/ogg">
11110Your browser does not support the video tag.
11111#+END_VIDEO
11112@end example
11113
11114Becomes:
11115
11116@example
11117<video controls="controls" width="350">
11118 <source src="movie.mp4" type="video/mp4">
11119 <source src="movie.ogg" type="video/ogg">
11120 <p>Your browser does not support the video tag.</p>
11121</video>
11122@end example
11123
11124Special blocks that do not correspond to HTML5 elements (see
3c8b09ca
BG
11125@code{org-html-html5-elements}) will revert to the usual behavior, i.e.,
11126@code{#+BEGIN_LEDERHOSEN} will still export to @samp{<div class="lederhosen">}.
4009494e 11127
271672fa 11128Headlines cannot appear within special blocks. To wrap a headline and its
3c8b09ca
BG
11129contents in e.g., @samp{<section>} or @samp{<article>} tags, set the
11130@code{HTML_CONTAINER} property on the headline itself.
ce57c2fe 11131
271672fa 11132@node HTML preamble and postamble, Quoting HTML tags, HTML doctypes, HTML export
ce57c2fe 11133@subsection HTML preamble and postamble
271672fa
BG
11134@vindex org-html-preamble
11135@vindex org-html-postamble
11136@vindex org-html-preamble-format
11137@vindex org-html-postamble-format
11138@vindex org-html-validation-link
11139@vindex org-export-creator-string
ce57c2fe
BG
11140@vindex org-export-time-stamp-file
11141
11142The HTML exporter lets you define a preamble and a postamble.
11143
271672fa
BG
11144The default value for @code{org-html-preamble} is @code{t}, which means
11145that the preamble is inserted depending on the relevant format string in
11146@code{org-html-preamble-format}.
11147
11148Setting @code{org-html-preamble} to a string will override the default format
11149string. If you set it to a function, it will insert the output of the
11150function, which must be a string. Setting to @code{nil} will not insert any
11151preamble.
11152
11153The default value for @code{org-html-postamble} is @code{'auto}, which means
11154that the HTML exporter will look for information about the author, the email,
11155the creator and the date, and build the postamble from these values. Setting
11156@code{org-html-postamble} to @code{t} will insert the postamble from the
11157relevant format string found in @code{org-html-postamble-format}. Setting it
11158to @code{nil} will not insert any postamble.
ce57c2fe
BG
11159
11160@node Quoting HTML tags, Links in HTML export, HTML preamble and postamble, HTML export
4009494e
GM
11161@subsection Quoting HTML tags
11162
11163Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
271672fa
BG
11164@samp{&gt;} in HTML export. If you want to include raw HTML code, which
11165should only appear in HTML export, mark it with @samp{@@@@html:} as in
11166@samp{@@@@html:<b>@@@@bold text@@@@html:</b>@@@@}. For more extensive HTML
11167that should be copied verbatim to the exported file use either
4009494e 11168
c8d0cf5c
CD
11169@cindex #+HTML
11170@cindex #+BEGIN_HTML
4009494e
GM
11171@example
11172#+HTML: Literal HTML code for export
11173@end example
11174
11175@noindent or
b349f79f 11176@cindex #+BEGIN_HTML
4009494e
GM
11177
11178@example
11179#+BEGIN_HTML
11180All lines between these markers are exported literally
11181#+END_HTML
11182@end example
11183
11184
a351880d
CD
11185@node Links in HTML export, Tables in HTML export, Quoting HTML tags, HTML export
11186@subsection Links in HTML export
4009494e
GM
11187
11188@cindex links, in HTML export
11189@cindex internal links, in HTML export
11190@cindex external links, in HTML export
1df7defd 11191Internal links (@pxref{Internal links}) will continue to work in HTML@. This
c8d0cf5c 11192includes automatic links created by radio targets (@pxref{Radio
55e0839d
CD
11193targets}). Links to external files will still work if the target file is on
11194the same @i{relative} path as the published Org file. Links to other
11195@file{.org} files will be translated into HTML links under the assumption
d1389828 11196that an HTML version also exists of the linked file, at the same relative
55e0839d
CD
11197path. @samp{id:} links can then be used to jump to specific entries across
11198files. For information related to linking files while publishing them to a
11199publishing directory see @ref{Publishing links}.
4009494e 11200
44ce9197 11201If you want to specify attributes for links, you can do so using a special
a50253cc 11202@code{#+ATTR_HTML} line to define attributes that will be added to the
c8d0cf5c
CD
11203@code{<a>} or @code{<img>} tags. Here is an example that sets @code{title}
11204and @code{style} attributes for a link:
44ce9197 11205
c8d0cf5c 11206@cindex #+ATTR_HTML
44ce9197 11207@example
271672fa 11208#+ATTR_HTML: :title The Org mode homepage :style color:red;
c8d0cf5c
CD
11209[[http://orgmode.org]]
11210@end example
11211
a351880d 11212@node Tables in HTML export, Images in HTML export, Links in HTML export, HTML export
c8d0cf5c
CD
11213@subsection Tables
11214@cindex tables, in HTML
271672fa 11215@vindex org-html-table-default-attributes
c8d0cf5c 11216
271672fa
BG
11217Org mode tables are exported to HTML using the table attributes defined in
11218@code{org-html-table-default-attributes}. The default setting makes tables
11219without cell borders and frame. If you would like to change this for
11220individual tables, place something like the following before the table:
c8d0cf5c
CD
11221
11222@cindex #+CAPTION
a351880d 11223@cindex #+ATTR_HTML
c8d0cf5c
CD
11224@example
11225#+CAPTION: This is a table with lines around and between cells
271672fa 11226#+ATTR_HTML: :border 2 :rules all :frame border
44ce9197
CD
11227@end example
11228
271672fa
BG
11229@vindex org-html-table-row-tags
11230You can also modify the default tags used for each row by setting
11231@code{org-html-table-row-tags}. See the docstring for an example on
11232how to use this option.
11233
afe98dfa 11234@node Images in HTML export, Math formatting in HTML export, Tables in HTML export, HTML export
a351880d 11235@subsection Images in HTML export
4009494e
GM
11236
11237@cindex images, inline in HTML
11238@cindex inlining images in HTML
271672fa 11239@vindex org-html-inline-images
a7808fba 11240HTML export can inline images given as links in the Org file, and
4009494e 11241it can make an image the clickable part of a link. By
c8d0cf5c 11242default@footnote{But see the variable
271672fa 11243@code{org-html-inline-images}.}, images are inlined if a link does
4009494e
GM
11244not have a description. So @samp{[[file:myimg.jpg]]} will be inlined,
11245while @samp{[[file:myimg.jpg][the image]]} will just produce a link
11246@samp{the image} that points to the image. If the description part
11247itself is a @code{file:} link or a @code{http:} URL pointing to an
11248image, this image will be inlined and activated so that clicking on the
11249image will activate the link. For example, to include a thumbnail that
11250will link to a high resolution version of the image, you could use:
11251
11252@example
11253[[file:highres.jpg][file:thumb.jpg]]
11254@end example
11255
86fbb8ca 11256If you need to add attributes to an inlined image, use a @code{#+ATTR_HTML}.
a351880d
CD
11257In the example below we specify the @code{alt} and @code{title} attributes to
11258support text viewers and accessibility, and align it to the right.
c8d0cf5c
CD
11259
11260@cindex #+CAPTION
a351880d 11261@cindex #+ATTR_HTML
c8d0cf5c
CD
11262@example
11263#+CAPTION: A black cat stalking a spider
271672fa 11264#+ATTR_HTML: :alt cat/spider image :title Action! :align right
c8d0cf5c
CD
11265[[./img/a.jpg]]
11266@end example
11267
4009494e 11268@noindent
ce57c2fe 11269You could use @code{http} addresses just as well.
4009494e 11270
afe98dfa
CD
11271@node Math formatting in HTML export, Text areas in HTML export, Images in HTML export, HTML export
11272@subsection Math formatting in HTML export
11273@cindex MathJax
11274@cindex dvipng
271672fa 11275@cindex imagemagick
afe98dfa 11276
e66ba1df 11277@LaTeX{} math snippets (@pxref{@LaTeX{} fragments}) can be displayed in two
afe98dfa
CD
11278different ways on HTML pages. The default is to use the
11279@uref{http://www.mathjax.org, MathJax system} which should work out of the
271672fa 11280box with Org mode installation because @uref{http://orgmode.org} serves
e66ba1df 11281@file{MathJax} for Org mode users for small applications and for testing
afe98dfa 11282purposes. @b{If you plan to use this regularly or on pages with significant
acedf35c
CD
11283page views, you should install@footnote{Installation instructions can be
11284found on the MathJax website, see
11285@uref{http://www.mathjax.org/resources/docs/?installation.html}.} MathJax on
11286your own server in order to limit the load of our server.} To configure
271672fa 11287@file{MathJax}, use the variable @code{org-html-mathjax-options} or
acedf35c 11288insert something like the following into the buffer:
afe98dfa
CD
11289
11290@example
271672fa 11291#+HTML_MATHJAX: align:"left" mathml:t path:"/MathJax/MathJax.js"
afe98dfa
CD
11292@end example
11293
11294@noindent See the docstring of the variable
271672fa 11295@code{org-html-mathjax-options} for the meaning of the parameters in
afe98dfa
CD
11296this line.
11297
acedf35c
CD
11298If you prefer, you can also request that @LaTeX{} fragments are processed
11299into small images that will be inserted into the browser page. Before the
11300availability of MathJax, this was the default method for Org files. This
271672fa
BG
11301method requires that the @file{dvipng} program or @file{imagemagick} suite is
11302available on your system. You can still get this processing with
11303
11304@example
11305#+OPTIONS: tex:dvipng
11306@end example
11307
11308or:
afe98dfa
CD
11309
11310@example
271672fa 11311#+OPTIONS: tex:imagemagick
afe98dfa
CD
11312@end example
11313
11314@node Text areas in HTML export, CSS support, Math formatting in HTML export, HTML export
a351880d 11315@subsection Text areas in HTML export
55e0839d
CD
11316
11317@cindex text areas, in HTML
11318An alternative way to publish literal code examples in HTML is to use text
11319areas, where the example can even be edited before pasting it into an
271672fa
BG
11320application. It is triggered by @code{:textarea} attribute at an
11321@code{example} or @code{src} block.
11322
11323You may also use @code{:height} and @code{:width} attributes to specify the
11324height and width of the text area, which default to the number of lines in
11325the example, and 80, respectively. For example
55e0839d
CD
11326
11327@example
271672fa
BG
11328#+ATTR_HTML: :textarea t :width 40
11329#+BEGIN_EXAMPLE
86fbb8ca
CD
11330 (defun org-xor (a b)
11331 "Exclusive or."
11332 (if a (not b) b))
55e0839d
CD
11333#+END_EXAMPLE
11334@end example
11335
11336
86fbb8ca 11337@node CSS support, JavaScript support, Text areas in HTML export, HTML export
4009494e 11338@subsection CSS support
a7808fba
CD
11339@cindex CSS, for HTML export
11340@cindex HTML export, CSS
4009494e 11341
271672fa
BG
11342@vindex org-html-todo-kwd-class-prefix
11343@vindex org-html-tag-class-prefix
11344You can modify the CSS style definitions for the exported file. The HTML
11345exporter assigns the following special CSS classes@footnote{If the classes on
11346TODO keywords and tags lead to conflicts, use the variables
11347@code{org-html-todo-kwd-class-prefix} and @code{org-html-tag-class-prefix} to
11348make them unique.} to appropriate parts of the document---your style
11349specifications may change these, in addition to any of the standard classes
11350like for headlines, tables, etc.
c8d0cf5c
CD
11351@example
11352p.author @r{author information, including email}
11353p.date @r{publishing date}
e66ba1df 11354p.creator @r{creator info, about org mode version}
c8d0cf5c
CD
11355.title @r{document title}
11356.todo @r{TODO keywords, all not-done states}
ce57c2fe 11357.done @r{the DONE keywords, all states that count as done}
c8d0cf5c
CD
11358.WAITING @r{each TODO keyword also uses a class named after itself}
11359.timestamp @r{timestamp}
11360.timestamp-kwd @r{keyword associated with a timestamp, like SCHEDULED}
11361.timestamp-wrapper @r{span around keyword plus timestamp}
11362.tag @r{tag in a headline}
11363._HOME @r{each tag uses itself as a class, "@@" replaced by "_"}
11364.target @r{target for links}
11365.linenr @r{the line number in a code example}
11366.code-highlighted @r{for highlighting referenced code lines}
11367div.outline-N @r{div for outline level N (headline plus text))}
11368div.outline-text-N @r{extra div for text at outline level N}
11369.section-number-N @r{section number in headlines, different for each level}
271672fa
BG
11370.figure-number @r{label like "Figure 1:"}
11371.table-number @r{label like "Table 1:"}
11372.listing-number @r{label like "Listing 1:"}
c8d0cf5c
CD
11373div.figure @r{how to format an inlined image}
11374pre.src @r{formatted source code}
11375pre.example @r{normal example}
11376p.verse @r{verse paragraph}
11377div.footnotes @r{footnote section headline}
11378p.footnote @r{footnote definition paragraph, containing a footnote}
11379.footref @r{a footnote reference number (always a <sup>)}
11380.footnum @r{footnote number in footnote definition (always <sup>)}
11381@end example
11382
271672fa
BG
11383@vindex org-html-style-default
11384@vindex org-html-head-include-default-style
11385@vindex org-html-head
11386@vindex org-html-head-extra
11387@cindex #+HTML_INCLUDE_STYLE
c8d0cf5c 11388Each exported file contains a compact default style that defines these
e45e3595 11389classes in a basic way@footnote{This style is defined in the constant
271672fa 11390@code{org-html-style-default}, which you should not modify. To turn
e45e3595 11391inclusion of these defaults off, customize
271672fa
BG
11392@code{org-html-head-include-default-style} or set @code{html-style} to
11393@code{nil} in an @code{OPTIONS} line.}. You may overwrite these settings, or
11394add to them by using the variables @code{org-html-head} and
11395@code{org-html-head-extra}. You can override the global values of these
11396variables for each file by using these keywords:
4009494e 11397
271672fa
BG
11398@cindex #+HTML_HEAD
11399@cindex #+HTML_HEAD_EXTRA
4009494e 11400@example
271672fa
BG
11401#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="style1.css" />
11402#+HTML_HEAD_EXTRA: <link rel="alternate stylesheet" type="text/css" href="style2.css" />
4009494e
GM
11403@end example
11404
864c9740 11405@noindent
e45e3595
CD
11406For longer style definitions, you can use several such lines. You could also
11407directly write a @code{<style>} @code{</style>} section in this way, without
11408referring to an external file.
4009494e 11409
afe98dfa
CD
11410In order to add styles to a subtree, use the @code{:HTML_CONTAINER_CLASS:}
11411property to assign a class to the tree. In order to specify CSS styles for a
11412particular headline, you can use the id specified in a @code{:CUSTOM_ID:}
11413property.
11414
4009494e
GM
11415@c FIXME: More about header and footer styles
11416@c FIXME: Talk about links and targets.
11417
86fbb8ca
CD
11418@node JavaScript support, , CSS support, HTML export
11419@subsection JavaScript supported display of web pages
a7808fba 11420
c8d0cf5c
CD
11421@cindex Rose, Sebastian
11422Sebastian Rose has written a JavaScript program especially designed to
a7808fba 11423enhance the web viewing experience of HTML files created with Org. This
55e0839d
CD
11424program allows you to view large files in two different ways. The first one
11425is an @emph{Info}-like mode where each section is displayed separately and
a7808fba
CD
11426navigation can be done with the @kbd{n} and @kbd{p} keys (and some other keys
11427as well, press @kbd{?} for an overview of the available keys). The second
55e0839d
CD
11428view type is a @emph{folding} view much like Org provides inside Emacs. The
11429script is available at @url{http://orgmode.org/org-info.js} and you can find
11430the documentation for it at @url{http://orgmode.org/worg/code/org-info-js/}.
271672fa
BG
11431We host the script at our site, but if you use it a lot, you might not want
11432to be dependent on @url{http://orgmode.org} and prefer to install a local
55e0839d 11433copy on your own web server.
a7808fba 11434
271672fa
BG
11435All it then takes to use this program is adding a single line to the Org
11436file:
a7808fba 11437
c8d0cf5c 11438@cindex #+INFOJS_OPT
a7808fba 11439@example
b349f79f 11440#+INFOJS_OPT: view:info toc:nil
a7808fba
CD
11441@end example
11442
11443@noindent
11444If this line is found, the HTML header will automatically contain the code
11445needed to invoke the script. Using the line above, you can set the following
11446viewing options:
11447
11448@example
11449path: @r{The path to the script. The default is to grab the script from}
11450 @r{@url{http://orgmode.org/org-info.js}, but you might want to have}
11451 @r{a local copy and use a path like @samp{../scripts/org-info.js}.}
8223b1d2 11452view: @r{Initial view when the website is first shown. Possible values are:}
a7808fba
CD
11453 info @r{Info-like interface with one section per page.}
11454 overview @r{Folding interface, initially showing only top-level.}
11455 content @r{Folding interface, starting with all headlines visible.}
11456 showall @r{Folding interface, all headlines and text visible.}
11457sdepth: @r{Maximum headline level that will still become an independent}
11458 @r{section for info and folding modes. The default is taken from}
7006d207
CD
11459 @r{@code{org-export-headline-levels} (= the @code{H} switch in @code{#+OPTIONS}).}
11460 @r{If this is smaller than in @code{org-export-headline-levels}, each}
c8d0cf5c 11461 @r{info/folding section can still contain child headlines.}
acedf35c 11462toc: @r{Should the table of contents @emph{initially} be visible?}
c8d0cf5c 11463 @r{Even when @code{nil}, you can always get to the "toc" with @kbd{i}.}
a7808fba 11464tdepth: @r{The depth of the table of contents. The defaults are taken from}
7006d207 11465 @r{the variables @code{org-export-headline-levels} and @code{org-export-with-toc}.}
acedf35c 11466ftoc: @r{Does the CSS of the page specify a fixed position for the "toc"?}
b349f79f 11467 @r{If yes, the toc will never be displayed as a section.}
a7808fba 11468ltoc: @r{Should there be short contents (children) in each section?}
c8d0cf5c 11469 @r{Make this @code{above} if the section should be above initial text.}
a7808fba
CD
11470mouse: @r{Headings are highlighted when the mouse is over them. Should be}
11471 @r{@samp{underline} (default) or a background color like @samp{#cccccc}.}
11472buttons: @r{Should view-toggle buttons be everywhere? When @code{nil} (the}
11473 @r{default), only one such button will be present.}
11474@end example
c8d0cf5c 11475@noindent
271672fa
BG
11476@vindex org-html-infojs-options
11477@vindex org-html-use-infojs
a7808fba 11478You can choose default values for these options by customizing the variable
271672fa
BG
11479@code{org-html-infojs-options}. If you always want to apply the script to your
11480pages, configure the variable @code{org-html-use-infojs}.
a7808fba 11481
271672fa 11482@node @LaTeX{} and PDF export, Markdown export, HTML export, Exporting
acedf35c
CD
11483@section @LaTeX{} and PDF export
11484@cindex @LaTeX{} export
71d35b24 11485@cindex PDF export
271672fa
BG
11486
11487@LaTeX{} export can produce an arbitrarily complex LaTeX document of any
11488standard or custom document class. With further processing@footnote{The
11489default @LaTeX{} output is designed for processing with @code{pdftex} or
11490@LaTeX{}. It includes packages that are not compatible with @code{xetex} and
11491possibly @code{luatex}. The @LaTeX{} exporter can be configured to support
11492alternative TeX engines, see the options
11493@code{org-latex-default-packages-alist} and @code{org-latex-packages-alist}.},
11494which the @LaTeX{} exporter is able to control, this back-end is able to
11495produce PDF output. Because the @LaTeX{} exporter can be configured to use
11496the @code{hyperref} package, the default setup produces fully-linked PDF
11497output.
11498
11499As in @LaTeX{}, blank lines are meaningful for this back-end: a paragraph
11500will not be started if two contiguous syntactical elements are not separated
11501by an empty line.
11502
11503This back-end also offers enhanced support for footnotes. Thus, it handles
11504nested footnotes, footnotes in tables and footnotes in a list item's
11505description.
4009494e
GM
11506
11507@menu
271672fa 11508* @LaTeX{} export commands:: How to export to LaTeX and PDF
c0468714 11509* Header and sectioning:: Setting up the export file structure
e66ba1df 11510* Quoting @LaTeX{} code:: Incorporating literal @LaTeX{} code
271672fa 11511* @LaTeX{} specific attributes:: Controlling @LaTeX{} output
4009494e
GM
11512@end menu
11513
271672fa 11514@node @LaTeX{} export commands, Header and sectioning, @LaTeX{} and PDF export, @LaTeX{} and PDF export
acedf35c 11515@subsection @LaTeX{} export commands
4009494e
GM
11516
11517@table @kbd
271672fa
BG
11518@orgcmd{C-c C-e l l,org-latex-export-to-latex}
11519Export as a @LaTeX{} file. For an Org file @file{myfile.org}, the @LaTeX{}
11520file will be @file{myfile.tex}. The file will be overwritten without
11521warning.
11522@orgcmd{C-c C-e l L,org-latex-export-as-latex}
acedf35c 11523Export to a temporary buffer. Do not create a file.
271672fa 11524@orgcmd{C-c C-e l p,org-latex-export-to-pdf}
acedf35c 11525Export as @LaTeX{} and then process to PDF.
271672fa 11526@item C-c C-e l o
acedf35c 11527Export as @LaTeX{} and then process to PDF, then open the resulting PDF file.
4009494e
GM
11528@end table
11529
271672fa 11530@node Header and sectioning, Quoting @LaTeX{} code, @LaTeX{} export commands, @LaTeX{} and PDF export
ed21c5c8 11531@subsection Header and sectioning structure
acedf35c
CD
11532@cindex @LaTeX{} class
11533@cindex @LaTeX{} sectioning structure
11534@cindex @LaTeX{} header
e66ba1df
BG
11535@cindex header, for @LaTeX{} files
11536@cindex sectioning structure, for @LaTeX{} export
ed21c5c8 11537
271672fa
BG
11538By default, the first three outline levels become headlines, defining a
11539general document structure. Additional levels are exported as @code{itemize}
11540or @code{enumerate} lists. The transition can also occur at a different
11541level (@pxref{Export settings}).
11542
acedf35c 11543By default, the @LaTeX{} output uses the class @code{article}.
ed21c5c8 11544
271672fa
BG
11545@vindex org-latex-default-class
11546@vindex org-latex-classes
11547@vindex org-latex-default-packages-alist
11548@vindex org-latex-packages-alist
ed21c5c8 11549You can change this globally by setting a different value for
271672fa
BG
11550@code{org-latex-default-class} or locally by adding an option like
11551@code{#+LATEX_CLASS: myclass} in your file, or with
11552a @code{EXPORT_LATEX_CLASS} property that applies when exporting a region
11553containing only this (sub)tree. The class must be listed in
11554@code{org-latex-classes}. This variable defines a header template for each
11555class@footnote{Into which the values of
11556@code{org-latex-default-packages-alist} and @code{org-latex-packages-alist}
11557are spliced.}, and allows you to define the sectioning structure for each
11558class. You can also define your own classes there.
11559
11560@cindex #+LATEX_CLASS
11561@cindex #+LATEX_CLASS_OPTIONS
11562@cindex property, EXPORT_LATEX_CLASS
11563@cindex property, EXPORT_LATEX_CLASS_OPTIONS
11564The @code{LATEX_CLASS_OPTIONS} keyword or @code{EXPORT_LATEX_CLASS_OPTIONS}
11565property can specify the options for the @code{\documentclass} macro. These
11566options have to be provided, as expected by @LaTeX{}, within square brackets.
11567
11568@cindex #+LATEX_HEADER
11569@cindex #+LATEX_HEADER_EXTRA
11570You can also use the @code{LATEX_HEADER} and
11571@code{LATEX_HEADER_EXTRA}@footnote{Unlike @code{LATEX_HEADER}, contents
11572from @code{LATEX_HEADER_EXTRA} keywords will not be loaded when previewing
11573@LaTeX{} snippets (@pxref{Previewing @LaTeX{} fragments}).} keywords in order
11574to add lines to the header. See the docstring of @code{org-latex-classes} for
11575more information.
11576
11577An example is shown below.
11578
11579@example
11580#+LATEX_CLASS: article
11581#+LATEX_CLASS_OPTIONS: [a4paper]
11582#+LATEX_HEADER: \usepackage@{xyz@}
8223b1d2
BG
11583
11584* Headline 1
11585 some text
11586@end example
ed21c5c8 11587
271672fa 11588@node Quoting @LaTeX{} code, @LaTeX{} specific attributes, Header and sectioning, @LaTeX{} and PDF export
acedf35c 11589@subsection Quoting @LaTeX{} code
4009494e 11590
e66ba1df 11591Embedded @LaTeX{} as described in @ref{Embedded @LaTeX{}}, will be correctly
271672fa
BG
11592inserted into the @LaTeX{} file. Furthermore, you can add special code that
11593should only be present in @LaTeX{} export with the following constructs:
4009494e 11594
271672fa
BG
11595@cindex #+LATEX
11596@cindex #+BEGIN_LATEX
4009494e 11597@example
271672fa 11598Code within @@@@latex:some code@@@@ a paragraph.
4009494e 11599
271672fa 11600#+LATEX: Literal @LaTeX{} code for export
4009494e 11601
271672fa 11602#+BEGIN_LATEX
4009494e 11603All lines between these markers are exported literally
271672fa 11604#+END_LATEX
4009494e 11605@end example
dbc28aaa 11606
271672fa
BG
11607@node @LaTeX{} specific attributes, , Quoting @LaTeX{} code, @LaTeX{} and PDF export
11608@subsection @LaTeX{} specific attributes
11609@cindex #+ATTR_LATEX
dbc28aaa 11610
271672fa
BG
11611@LaTeX{} understands attributes specified in an @code{ATTR_LATEX} line. They
11612affect tables, images, plain lists, special blocks and source blocks.
11613
11614@subsubheading Tables in @LaTeX{} export
acedf35c 11615@cindex tables, in @LaTeX{} export
67df9cfb 11616
271672fa
BG
11617For @LaTeX{} export of a table, you can specify a label and a caption
11618(@pxref{Images and tables}). You can also use attributes to control table
11619layout and contents. Valid @LaTeX{} attributes include:
11620
11621@table @code
11622@item :mode
11623@vindex org-latex-default-table-mode
11624Nature of table's contents. It can be set to @code{table}, @code{math},
11625@code{inline-math} or @code{verbatim}. In particular, when in @code{math} or
11626@code{inline-math} mode, every cell is exported as-is, horizontal rules are
11627ignored and the table will be wrapped in a math environment. Also,
11628contiguous tables sharing the same math mode will be wrapped within the same
11629environment. Default mode is determined in
11630@code{org-latex-default-table-mode}.
11631@item :environment
11632@vindex org-latex-default-table-environment
11633Environment used for the table. It can be set to any @LaTeX{} table
11634environment, like @code{tabularx}@footnote{Requires adding the
11635@code{tabularx} package to @code{org-latex-packages-alist}.},
11636@code{longtable}, @code{array}, @code{tabu}@footnote{Requires adding the
11637@code{tabu} package to @code{org-latex-packages-alist}.},
11638@code{bmatrix}@enddots{} It defaults to
11639@code{org-latex-default-table-environment} value.
11640@item :caption
11641@code{#+CAPTION} keyword is the simplest way to set a caption for a table
11642(@pxref{Images and tables}). If you need more advanced commands for that
11643task, you can use @code{:caption} attribute instead. Its value should be raw
11644@LaTeX{} code. It has precedence over @code{#+CAPTION}.
11645@item :float
11646@itemx :placement
11647Float environment for the table. Possible values are @code{sidewaystable},
11648@code{multicolumn}, @code{t} and @code{nil}. When unspecified, a table with
11649a caption will have a @code{table} environment. Moreover, @code{:placement}
11650attribute can specify the positioning of the float.
11651@item :align
11652@itemx :font
11653@itemx :width
11654Set, respectively, the alignment string of the table, its font size and its
11655width. They only apply on regular tables.
11656@item :spread
11657Boolean specific to the @code{tabu} and @code{longtabu} environments, and
11658only takes effect when used in conjunction with the @code{:width} attribute.
11659When @code{:spread} is non-@code{nil}, the table will be spread or shrunk by the
11660value of @code{:width}.
11661@item :booktabs
11662@itemx :center
11663@itemx :rmlines
11664@vindex org-latex-tables-booktabs
11665@vindex org-latex-tables-centered
11666They toggle, respectively, @code{booktabs} usage (assuming the package is
11667properly loaded), table centering and removal of every horizontal rule but
11668the first one (in a "table.el" table only). In particular,
11669@code{org-latex-tables-booktabs} (respectively @code{org-latex-tables-centered})
11670activates the first (respectively second) attribute globally.
11671@item :math-prefix
11672@itemx :math-suffix
11673@itemx :math-arguments
11674A string that will be inserted, respectively, before the table within the
11675math environment, after the table within the math environment, and between
11676the macro name and the contents of the table. The @code{:math-arguments}
11677attribute is used for matrix macros that require more than one argument
11678(e.g., @code{qbordermatrix}).
11679@end table
11680
11681Thus, attributes can be used in a wide array of situations, like writing
11682a table that will span over multiple pages, or a matrix product:
67df9cfb
CD
11683
11684@example
271672fa 11685#+ATTR_LATEX: :environment longtable :align l|lp@{3cm@}r|l
67df9cfb
CD
11686| ..... | ..... |
11687| ..... | ..... |
271672fa
BG
11688
11689#+ATTR_LATEX: :mode math :environment bmatrix :math-suffix \times
11690| a | b |
11691| c | d |
11692#+ATTR_LATEX: :mode math :environment bmatrix
11693| 1 | 2 |
11694| 3 | 4 |
67df9cfb
CD
11695@end example
11696
271672fa
BG
11697In the example below, @LaTeX{} command
11698@code{\bicaption@{HeadingA@}@{HeadingB@}} will set the caption.
ce57c2fe 11699
ce57c2fe 11700@example
271672fa 11701#+ATTR_LATEX: :caption \bicaption@{HeadingA@}@{HeadingB@}
ce57c2fe
BG
11702| ..... | ..... |
11703| ..... | ..... |
11704@end example
67df9cfb 11705
271672fa
BG
11706
11707@subsubheading Images in @LaTeX{} export
acedf35c
CD
11708@cindex images, inline in @LaTeX{}
11709@cindex inlining images in @LaTeX{}
67df9cfb
CD
11710
11711Images that are linked to without a description part in the link, like
11712@samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]} will be inserted into the PDF
acedf35c 11713output file resulting from @LaTeX{} processing. Org will use an
271672fa
BG
11714@code{\includegraphics} macro to insert the image@footnote{In the case of
11715TikZ (@url{http://sourceforge.net/projects/pgf/}) images, it will become an
11716@code{\input} macro wrapped within a @code{tikzpicture} environment.}.
11717
11718You can specify specify image width or height with, respectively,
11719@code{:width} and @code{:height} attributes. It is also possible to add any
11720other option with the @code{:options} attribute, as shown in the following
11721example:
67df9cfb
CD
11722
11723@example
271672fa 11724#+ATTR_LATEX: :width 5cm :options angle=90
67df9cfb
CD
11725[[./img/sed-hr4049.pdf]]
11726@end example
11727
271672fa
BG
11728If you need a specific command for the caption, use @code{:caption}
11729attribute. It will override standard @code{#+CAPTION} value, if any.
ce57c2fe 11730
271672fa
BG
11731@example
11732#+ATTR_LATEX: :caption \bicaption@{HeadingA@}@{HeadingB@}
11733[[./img/sed-hr4049.pdf]]
11734@end example
ed21c5c8 11735
271672fa
BG
11736If you have specified a caption as described in @ref{Images and tables}, the
11737picture will be wrapped into a @code{figure} environment and thus become
11738a floating element. You can also ask Org to export an image as a float
11739without specifying caption by setting the @code{:float} attribute. You may
11740also set it to:
11741@itemize @minus
11742@item
11743@code{t}: if you want to use the standard @samp{figure} environment. It is
11744used by default if you provide a caption to the image.
11745@item
11746@code{multicolumn}: if you wish to include an image which spans multiple
11747columns in a page. This will export the image wrapped in a @code{figure*}
acedf35c 11748environment.
271672fa
BG
11749@item
11750@code{wrap}: if you would like to let text flow around the image. It will
11751make the figure occupy the left half of the page.
11752@item
11753@code{nil}: if you need to avoid any floating environment, even when
11754a caption is provided.
11755@end itemize
11756@noindent
11757To modify the placement option of any floating environment, set the
11758@code{placement} attribute.
ed21c5c8
CD
11759
11760@example
271672fa
BG
11761#+ATTR_LATEX: :float wrap :width 0.38\textwidth :placement @{r@}@{0.4\textwidth@}
11762[[./img/hst.png]]
ed21c5c8
CD
11763@end example
11764
271672fa
BG
11765If the @code{:comment-include} attribute is set to a non-@code{nil} value,
11766the @LaTeX{} @code{\includegraphics} macro will be commented out.
ed21c5c8 11767
271672fa
BG
11768@subsubheading Plain lists in @LaTeX{} export
11769@cindex plain lists, in @LaTeX{} export
c8d0cf5c 11770
271672fa 11771Plain lists accept two optional attributes: @code{:environment} and
30cb51f1
BG
11772@code{:options}. The first one allows the use of a non-standard environment
11773(e.g., @samp{inparaenum}). The second one specifies additional arguments for
11774that environment.
c8d0cf5c 11775
271672fa 11776@example
30cb51f1 11777#+ATTR_LATEX: :environment compactitem :options [$\circ$]
271672fa
BG
11778- you need ``paralist'' package to reproduce this example.
11779@end example
c8d0cf5c 11780
271672fa
BG
11781@subsubheading Source blocks in @LaTeX{} export
11782@cindex source blocks, in @LaTeX{} export
c8d0cf5c 11783
271672fa
BG
11784In addition to syntax defined in @ref{Literal examples}, names and captions
11785(@pxref{Images and tables}), source blocks also accept a @code{:float}
11786attribute. You may set it to:
11787@itemize @minus
11788@item
11789@code{t}: if you want to make the source block a float. It is the default
11790value when a caption is provided.
11791@item
d1389828
PE
11792@code{multicolumn}: if you wish to include a source block which spans multiple
11793columns in a page.
271672fa 11794@item
d1389828 11795@code{nil}: if you need to avoid any floating environment, even when a caption
271672fa
BG
11796is provided. It is useful for source code that may not fit in a single page.
11797@end itemize
c8d0cf5c 11798
271672fa
BG
11799@example
11800#+ATTR_LATEX: :float nil
11801#+BEGIN_SRC emacs-lisp
11802Code that may not fit in a single page.
11803#+END_SRC
11804@end example
c8d0cf5c 11805
271672fa
BG
11806@subsubheading Special blocks in @LaTeX{} export
11807@cindex special blocks, in @LaTeX{} export
3c8b09ca
BG
11808@cindex abstract, in @LaTeX{} export
11809@cindex proof, in @LaTeX{} export
c8d0cf5c 11810
271672fa
BG
11811In @LaTeX{} back-end, special blocks become environments of the same name.
11812Value of @code{:options} attribute will be appended as-is to that
11813environment's opening string. For example:
c8d0cf5c 11814
c8d0cf5c 11815@example
3c8b09ca
BG
11816#+BEGIN_ABSTRACT
11817We demonstrate how to solve the Syracuse problem.
11818#+END_ABSTRACT
11819
271672fa
BG
11820#+ATTR_LATEX: :options [Proof of important theorem]
11821#+BEGIN_PROOF
11822...
11823Therefore, any even number greater than 2 is the sum of two primes.
11824#+END_PROOF
c8d0cf5c
CD
11825@end example
11826
271672fa
BG
11827@noindent
11828becomes
c8d0cf5c
CD
11829
11830@example
3c8b09ca
BG
11831\begin@{abstract@}
11832We demonstrate how to solve the Syracuse problem.
11833\end@{abstract@}
11834
271672fa
BG
11835\begin@{proof@}[Proof of important theorem]
11836...
11837Therefore, any even number greater than 2 is the sum of two primes.
11838\end@{proof@}
c8d0cf5c
CD
11839@end example
11840
271672fa
BG
11841If you need to insert a specific caption command, use @code{:caption}
11842attribute. It will override standard @code{#+CAPTION} value, if any. For
11843example:
c8d0cf5c
CD
11844
11845@example
271672fa
BG
11846#+ATTR_LATEX: :caption \MyCaption@{HeadingA@}
11847#+BEGIN_PROOF
11848...
11849#+END_PROOF
c8d0cf5c
CD
11850@end example
11851
271672fa
BG
11852@subsubheading Horizontal rules
11853@cindex horizontal rules, in @LaTeX{} export
c8d0cf5c 11854
271672fa
BG
11855Width and thickness of a given horizontal rule can be controlled with,
11856respectively, @code{:width} and @code{:thickness} attributes:
c8d0cf5c 11857
c8d0cf5c 11858@example
271672fa
BG
11859#+ATTR_LATEX: :width .6\textwidth :thickness 0.8pt
11860-----
c8d0cf5c
CD
11861@end example
11862
271672fa
BG
11863@node Markdown export, OpenDocument Text export, @LaTeX{} and PDF export, Exporting
11864@section Markdown export
11865@cindex Markdown export
c8d0cf5c 11866
d1389828 11867@code{md} export back-end generates Markdown syntax@footnote{Vanilla flavor,
271672fa
BG
11868as defined at @url{http://daringfireball.net/projects/markdown/}.} for an Org
11869mode buffer.
c8d0cf5c 11870
271672fa
BG
11871It is built over HTML back-end: any construct not supported by Markdown
11872syntax (e.g., tables) will be controlled and translated by @code{html}
11873back-end (@pxref{HTML export}).
c8d0cf5c 11874
271672fa 11875@subheading Markdown export commands
c8d0cf5c 11876
271672fa
BG
11877@table @kbd
11878@orgcmd{C-c C-e m m,org-md-export-to-markdown}
11879Export as a text file written in Markdown syntax. For an Org file,
11880@file{myfile.org}, the resulting file will be @file{myfile.md}. The file
11881will be overwritten without warning.
11882@orgcmd{C-c C-e m M,org-md-export-as-markdown}
11883Export to a temporary buffer. Do not create a file.
11884@item C-c C-e m o
11885Export as a text file with Markdown syntax, then open it.
11886@end table
11887
11888@subheading Header and sectioning structure
11889
11890@vindex org-md-headline-style
11891Markdown export can generate both @code{atx} and @code{setext} types for
11892headlines, according to @code{org-md-headline-style}. The former introduces
11893a hard limit of two levels, whereas the latter pushes it to six. Headlines
11894below that limit are exported as lists. You can also set a soft limit before
11895that one (@pxref{Export settings}).
c8d0cf5c 11896
ce57c2fe
BG
11897@c begin opendocument
11898
3c8b09ca 11899@node OpenDocument Text export, Org export, Markdown export, Exporting
e66ba1df 11900@section OpenDocument Text export
e66ba1df
BG
11901@cindex ODT
11902@cindex OpenDocument
11903@cindex export, OpenDocument
11904@cindex LibreOffice
e66ba1df 11905
271672fa
BG
11906Org mode@footnote{Versions 7.8 or later} supports export to OpenDocument Text
11907(ODT) format. Documents created by this exporter use the
11908@cite{OpenDocument-v1.2
e66ba1df
BG
11909specification}@footnote{@url{http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html,
11910Open Document Format for Office Applications (OpenDocument) Version 1.2}} and
11911are compatible with LibreOffice 3.4.
ce57c2fe
BG
11912
11913@menu
153ae947
BG
11914* Pre-requisites for ODT export:: What packages ODT exporter relies on
11915* ODT export commands:: How to invoke ODT export
11916* Extending ODT export:: How to produce @samp{doc}, @samp{pdf} files
e66ba1df 11917* Applying custom styles:: How to apply custom styles to the output
153ae947
BG
11918* Links in ODT export:: How links will be interpreted and formatted
11919* Tables in ODT export:: How Tables are exported
11920* Images in ODT export:: How to insert images
11921* Math formatting in ODT export:: How @LaTeX{} fragments are formatted
11922* Labels and captions in ODT export:: How captions are rendered
11923* Literal examples in ODT export:: How source and example blocks are formatted
11924* Advanced topics in ODT export:: Read this if you are a power user
ce57c2fe
BG
11925@end menu
11926
153ae947
BG
11927@node Pre-requisites for ODT export, ODT export commands, OpenDocument Text export, OpenDocument Text export
11928@subsection Pre-requisites for ODT export
e66ba1df 11929@cindex zip
153ae947 11930The ODT exporter relies on the @file{zip} program to create the final
e66ba1df
BG
11931output. Check the availability of this program before proceeding further.
11932
153ae947
BG
11933@node ODT export commands, Extending ODT export, Pre-requisites for ODT export, OpenDocument Text export
11934@subsection ODT export commands
e66ba1df 11935
153ae947 11936@subsubheading Exporting to ODT
e66ba1df 11937@anchor{x-export-to-odt}
ce57c2fe
BG
11938
11939@cindex region, active
11940@cindex active region
11941@cindex transient-mark-mode
11942@table @kbd
271672fa 11943@orgcmd{C-c C-e o o,org-odt-export-to-odt}
ce57c2fe 11944@cindex property EXPORT_FILE_NAME
e66ba1df
BG
11945
11946Export as OpenDocument Text file.
153ae947 11947
271672fa
BG
11948@vindex org-odt-preferred-output-format
11949If @code{org-odt-preferred-output-format} is specified, automatically convert
11950the exported file to that format. @xref{x-export-to-other-formats, ,
153ae947 11951Automatically exporting to other formats}.
e66ba1df 11952
153ae947 11953For an Org file @file{myfile.org}, the ODT file will be
e66ba1df
BG
11954@file{myfile.odt}. The file will be overwritten without warning. If there
11955is an active region,@footnote{This requires @code{transient-mark-mode} to be
11956turned on} only the region will be exported. If the selected region is a
11957single tree,@footnote{To select the current subtree, use @kbd{C-c @@}} the
11958tree head will become the document title. If the tree head entry has, or
11959inherits, an @code{EXPORT_FILE_NAME} property, that name will be used for the
11960export.
11961
271672fa 11962@kbd{C-c C-e o O}
8223b1d2 11963Export as an OpenDocument Text file and open the resulting file.
153ae947 11964
271672fa
BG
11965@vindex org-odt-preferred-output-format
11966If @code{org-odt-preferred-output-format} is specified, open the converted
11967file instead. @xref{x-export-to-other-formats, , Automatically exporting to
11968other formats}.
ce57c2fe
BG
11969@end table
11970
153ae947
BG
11971@node Extending ODT export, Applying custom styles, ODT export commands, OpenDocument Text export
11972@subsection Extending ODT export
11973
11974The ODT exporter can interface with a variety of document
11975converters and supports popular converters out of the box. As a result, you
11976can use it to export to formats like @samp{doc} or convert a document from
11977one format (say @samp{csv}) to another format (say @samp{ods} or @samp{xls}).
11978
11979@cindex @file{unoconv}
11980@cindex LibreOffice
11981If you have a working installation of LibreOffice, a document converter is
11982pre-configured for you and you can use it right away. If you would like to
11983use @file{unoconv} as your preferred converter, customize the variable
271672fa 11984@code{org-odt-convert-process} to point to @code{unoconv}. You can
801a68c8
BG
11985also use your own favorite converter or tweak the default settings of the
11986@file{LibreOffice} and @samp{unoconv} converters. @xref{Configuring a
11987document converter}.
153ae947
BG
11988
11989@subsubsection Automatically exporting to other formats
e66ba1df 11990@anchor{x-export-to-other-formats}
153ae947 11991
271672fa 11992@vindex org-odt-preferred-output-format
153ae947
BG
11993Very often, you will find yourself exporting to ODT format, only to
11994immediately save the exported document to other formats like @samp{doc},
11995@samp{docx}, @samp{rtf}, @samp{pdf} etc. In such cases, you can specify your
e66ba1df 11996preferred output format by customizing the variable
271672fa 11997@code{org-odt-preferred-output-format}. This way, the export commands
153ae947
BG
11998(@pxref{x-export-to-odt,,Exporting to ODT}) can be extended to export to a
11999format that is of immediate interest to you.
12000
12001@subsubsection Converting between document formats
12002@anchor{x-convert-to-other-formats}
12003
12004There are many document converters in the wild which support conversion to
12005and from various file formats, including, but not limited to the
12006ODT format. LibreOffice converter, mentioned above, is one such
12007converter. Once a converter is configured, you can interact with it using
12008the following command.
e66ba1df 12009
271672fa 12010@vindex org-odt-convert
153ae947
BG
12011@table @kbd
12012
271672fa 12013@item M-x org-odt-convert RET
153ae947
BG
12014Convert an existing document from one format to another. With a prefix
12015argument, also open the newly produced file.
12016@end table
12017
12018@node Applying custom styles, Links in ODT export, Extending ODT export, OpenDocument Text export
e66ba1df 12019@subsection Applying custom styles
ce57c2fe
BG
12020@cindex styles, custom
12021@cindex template, custom
12022
153ae947 12023The ODT exporter ships with a set of OpenDocument styles
e66ba1df
BG
12024(@pxref{Working with OpenDocument style files}) that ensure a well-formatted
12025output. These factory styles, however, may not cater to your specific
12026tastes. To customize the output, you can either modify the above styles
12027files directly, or generate the required styles using an application like
12028LibreOffice. The latter method is suitable for expert and non-expert
12029users alike, and is described here.
ce57c2fe 12030
f99f1641 12031@subsubsection Applying custom styles: the easy way
ce57c2fe
BG
12032
12033@enumerate
12034@item
e66ba1df 12035Create a sample @file{example.org} file with the below settings and export it
153ae947 12036to ODT format.
e66ba1df
BG
12037
12038@example
12039#+OPTIONS: H:10 num:t
12040@end example
12041
12042@item
12043Open the above @file{example.odt} using LibreOffice. Use the @file{Stylist}
f99f1641
PE
12044to locate the target styles---these typically have the @samp{Org} prefix---and
12045modify those to your taste. Save the modified file either as an
e66ba1df
BG
12046OpenDocument Text (@file{.odt}) or OpenDocument Template (@file{.ott}) file.
12047
ce57c2fe 12048@item
e66ba1df 12049@cindex #+ODT_STYLES_FILE
271672fa
BG
12050@vindex org-odt-styles-file
12051Customize the variable @code{org-odt-styles-file} and point it to the
e66ba1df
BG
12052newly created file. For additional configuration options
12053@pxref{x-overriding-factory-styles,,Overriding factory styles}.
12054
12055If you would like to choose a style on a per-file basis, you can use the
12056@code{#+ODT_STYLES_FILE} option. A typical setting will look like
12057
12058@example
12059#+ODT_STYLES_FILE: "/path/to/example.ott"
12060@end example
12061
12062or
12063
12064@example
12065#+ODT_STYLES_FILE: ("/path/to/file.ott" ("styles.xml" "image/hdr.png"))
12066@end example
12067
ce57c2fe
BG
12068@end enumerate
12069
e66ba1df
BG
12070@subsubsection Using third-party styles and templates
12071
12072You can use third-party styles and templates for customizing your output.
12073This will produce the desired output only if the template provides all
12074style names that the @samp{ODT} exporter relies on. Unless this condition is
12075met, the output is going to be less than satisfactory. So it is highly
12076recommended that you only work with templates that are directly derived from
12077the factory settings.
12078
153ae947
BG
12079@node Links in ODT export, Tables in ODT export, Applying custom styles, OpenDocument Text export
12080@subsection Links in ODT export
271672fa 12081@cindex links, in ODT export
e66ba1df 12082
153ae947
BG
12083ODT exporter creates native cross-references for internal links. It creates
12084Internet-style links for all other links.
12085
12086A link with no description and destined to a regular (un-itemized) outline
12087heading is replaced with a cross-reference and section number of the heading.
e66ba1df 12088
153ae947 12089A @samp{\ref@{label@}}-style reference to an image, table etc. is replaced
7bd20f91 12090with a cross-reference and sequence number of the labeled entity.
153ae947
BG
12091@xref{Labels and captions in ODT export}.
12092
12093@node Tables in ODT export, Images in ODT export, Links in ODT export, OpenDocument Text export
12094@subsection Tables in ODT export
271672fa 12095@cindex tables, in ODT export
ce57c2fe 12096
e66ba1df 12097Export of native Org mode tables (@pxref{Tables}) and simple @file{table.el}
f99f1641
PE
12098tables is supported. However, export of complex @file{table.el} tables---tables
12099that have column or row spans---is not supported. Such tables are
e66ba1df 12100stripped from the exported document.
ce57c2fe 12101
153ae947
BG
12102By default, a table is exported with top and bottom frames and with rules
12103separating row and column groups (@pxref{Column groups}). Furthermore, all
12104tables are typeset to occupy the same width. If the table specifies
12105alignment and relative width for its columns (@pxref{Column width and
12106alignment}) then these are honored on export.@footnote{The column widths are
12107interpreted as weighted ratios with the default weight being 1}
e66ba1df
BG
12108
12109@cindex #+ATTR_ODT
153ae947
BG
12110You can control the width of the table by specifying @code{:rel-width}
12111property using an @code{#+ATTR_ODT} line.
12112
12113For example, consider the following table which makes use of all the rules
7bd20f91 12114mentioned above.
153ae947
BG
12115
12116@example
12117#+ATTR_ODT: :rel-width 50
12118| Area/Month | Jan | Feb | Mar | Sum |
12119|---------------+-------+-------+-------+-------|
12120| / | < | | | < |
12121| <l13> | <r5> | <r5> | <r5> | <r6> |
12122| North America | 1 | 21 | 926 | 948 |
12123| Middle East | 6 | 75 | 844 | 925 |
12124| Asia Pacific | 9 | 27 | 790 | 826 |
12125|---------------+-------+-------+-------+-------|
12126| Sum | 16 | 123 | 2560 | 2699 |
12127@end example
12128
12129On export, the table will occupy 50% of text area. The columns will be sized
12130(roughly) in the ratio of 13:5:5:5:6. The first column will be left-aligned
12131and rest of the columns will be right-aligned. There will be vertical rules
12132after separating the header and last columns from other columns. There will
12133be horizontal rules separating the header and last rows from other rows.
12134
12135If you are not satisfied with the above formatting options, you can create
12136custom table styles and associate them with a table using the
12137@code{#+ATTR_ODT} line. @xref{Customizing tables in ODT export}.
e66ba1df 12138
153ae947
BG
12139@node Images in ODT export, Math formatting in ODT export, Tables in ODT export, OpenDocument Text export
12140@subsection Images in ODT export
12141@cindex images, embedding in ODT
12142@cindex embedding images in ODT
e66ba1df
BG
12143
12144@subsubheading Embedding images
12145You can embed images within the exported document by providing a link to the
12146desired image file with no link description. For example, to embed
12147@samp{img.png} do either of the following:
12148
12149@example
12150[[file:img.png]]
12151@end example
12152
12153@example
12154[[./img.png]]
12155@end example
12156
12157@subsubheading Embedding clickable images
12158You can create clickable images by providing a link whose description is a
12159link to an image file. For example, to embed a image
12160@file{org-mode-unicorn.png} which when clicked jumps to
12161@uref{http://Orgmode.org} website, do the following
12162
12163@example
12164[[http://orgmode.org][./org-mode-unicorn.png]]
12165@end example
12166
12167@subsubheading Sizing and scaling of embedded images
12168
153ae947 12169@cindex #+ATTR_ODT
e66ba1df
BG
12170You can control the size and scale of the embedded images using the
12171@code{#+ATTR_ODT} attribute.
12172
153ae947 12173@cindex identify, ImageMagick
271672fa 12174@vindex org-odt-pixels-per-inch
153ae947
BG
12175The exporter specifies the desired size of the image in the final document in
12176units of centimeters. In order to scale the embedded images, the exporter
12177queries for pixel dimensions of the images using one of a) ImageMagick's
12178@file{identify} program or b) Emacs `create-image' and `image-size'
271672fa 12179APIs@footnote{Use of @file{ImageMagick} is only desirable. However, if you
153ae947
BG
12180routinely produce documents that have large images or you export your Org
12181files that has images using a Emacs batch script, then the use of
271672fa 12182@file{ImageMagick} is mandatory.}. The pixel dimensions are subsequently
153ae947 12183converted in to units of centimeters using
271672fa 12184@code{org-odt-pixels-per-inch}. The default value of this variable is
e66ba1df
BG
12185set to @code{display-pixels-per-inch}. You can tweak this variable to
12186achieve the best results.
12187
12188The examples below illustrate the various possibilities.
12189
12190@table @asis
e66ba1df
BG
12191@item Explicitly size the image
12192To embed @file{img.png} as a 10 cm x 10 cm image, do the following:
12193
12194@example
12195#+ATTR_ODT: :width 10 :height 10
12196[[./img.png]]
12197@end example
12198
12199@item Scale the image
12200To embed @file{img.png} at half its size, do the following:
12201
12202@example
12203#+ATTR_ODT: :scale 0.5
12204[[./img.png]]
12205@end example
12206
12207@item Scale the image to a specific width
12208To embed @file{img.png} with a width of 10 cm while retaining the original
12209height:width ratio, do the following:
12210
12211@example
12212#+ATTR_ODT: :width 10
12213[[./img.png]]
12214@end example
12215
12216@item Scale the image to a specific height
12217To embed @file{img.png} with a height of 10 cm while retaining the original
12218height:width ratio, do the following
12219
12220@example
12221#+ATTR_ODT: :height 10
12222[[./img.png]]
12223@end example
12224@end table
12225
153ae947
BG
12226@subsubheading Anchoring of images
12227
12228@cindex #+ATTR_ODT
12229You can control the manner in which an image is anchored by setting the
12230@code{:anchor} property of it's @code{#+ATTR_ODT} line. You can specify one
33848c48 12231of the following three values for the @code{:anchor} property:
153ae947
BG
12232@samp{"as-char"}, @samp{"paragraph"} and @samp{"page"}.
12233
12234To create an image that is anchored to a page, do the following:
12235@example
12236#+ATTR_ODT: :anchor "page"
12237[[./img.png]]
12238@end example
12239
12240@node Math formatting in ODT export, Labels and captions in ODT export, Images in ODT export, OpenDocument Text export
12241@subsection Math formatting in ODT export
e66ba1df 12242
153ae947 12243The ODT exporter has special support for handling math.
e66ba1df
BG
12244
12245@menu
12246* Working with @LaTeX{} math snippets:: How to embed @LaTeX{} math fragments
12247* Working with MathML or OpenDocument formula files:: How to embed equations in native format
12248@end menu
12249
153ae947 12250@node Working with @LaTeX{} math snippets, Working with MathML or OpenDocument formula files, Math formatting in ODT export, Math formatting in ODT export
e66ba1df
BG
12251@subsubsection Working with @LaTeX{} math snippets
12252
12253@LaTeX{} math snippets (@pxref{@LaTeX{} fragments}) can be embedded in the ODT
12254document in one of the following ways:
12255
12256@cindex MathML
12257@enumerate
12258@item MathML
12259
12260This option is activated on a per-file basis with
12261
12262@example
12263#+OPTIONS: LaTeX:t
12264@end example
12265
12266With this option, @LaTeX{} fragments are first converted into MathML
12267fragments using an external @LaTeX{}-to-MathML converter program. The
12268resulting MathML fragments are then embedded as an OpenDocument Formula in
12269the exported document.
12270
12271@vindex org-latex-to-mathml-convert-command
12272@vindex org-latex-to-mathml-jar-file
12273
12274You can specify the @LaTeX{}-to-MathML converter by customizing the variables
12275@code{org-latex-to-mathml-convert-command} and
12276@code{org-latex-to-mathml-jar-file}.
12277
12278If you prefer to use @file{MathToWeb}@footnote{See
12279@uref{http://www.mathtoweb.com/cgi-bin/mathtoweb_home.pl, MathToWeb}} as your
12280converter, you can configure the above variables as shown below.
12281
12282@lisp
12283(setq org-latex-to-mathml-convert-command
12284 "java -jar %j -unicode -force -df %o %I"
12285 org-latex-to-mathml-jar-file
12286 "/path/to/mathtoweb.jar")
12287@end lisp
12288
12289You can use the following commands to quickly verify the reliability of
12290the @LaTeX{}-to-MathML converter.
12291
12292@table @kbd
271672fa 12293@item M-x org-odt-export-as-odf RET
8223b1d2 12294Convert a @LaTeX{} math snippet to an OpenDocument formula (@file{.odf}) file.
e66ba1df 12295
271672fa 12296@item M-x org-odt-export-as-odf-and-open RET
8223b1d2
BG
12297Convert a @LaTeX{} math snippet to an OpenDocument formula (@file{.odf}) file
12298and open the formula file with the system-registered application.
e66ba1df
BG
12299@end table
12300
12301@cindex dvipng
271672fa 12302@cindex imagemagick
e66ba1df
BG
12303@item PNG images
12304
12305This option is activated on a per-file basis with
12306
12307@example
271672fa
BG
12308#+OPTIONS: tex:dvipng
12309@end example
12310
12311or:
12312
12313@example
12314#+OPTIONS: tex:imagemagick
e66ba1df
BG
12315@end example
12316
12317With this option, @LaTeX{} fragments are processed into PNG images and the
12318resulting images are embedded in the exported document. This method requires
271672fa
BG
12319that the @file{dvipng} program or @file{imagemagick} suite be available on
12320your system.
e66ba1df
BG
12321@end enumerate
12322
153ae947 12323@node Working with MathML or OpenDocument formula files, , Working with @LaTeX{} math snippets, Math formatting in ODT export
e66ba1df
BG
12324@subsubsection Working with MathML or OpenDocument formula files
12325
12326For various reasons, you may find embedding @LaTeX{} math snippets in an
153ae947 12327ODT document less than reliable. In that case, you can embed a
801a68c8 12328math equation by linking to its MathML (@file{.mml}) source or its
e66ba1df
BG
12329OpenDocument formula (@file{.odf}) file as shown below:
12330
12331@example
12332[[./equation.mml]]
12333@end example
12334
12335or
12336
12337@example
12338[[./equation.odf]]
12339@end example
12340
153ae947
BG
12341@node Labels and captions in ODT export, Literal examples in ODT export, Math formatting in ODT export, OpenDocument Text export
12342@subsection Labels and captions in ODT export
e66ba1df 12343
f99f1641
PE
12344You can label and caption various category of objects---an inline image, a
12345table, a @LaTeX{} fragment or a Math formula---using @code{#+LABEL} and
153ae947 12346@code{#+CAPTION} lines. @xref{Images and tables}. ODT exporter enumerates
7bd20f91 12347each labeled or captioned object of a given category separately. As a
153ae947
BG
12348result, each such object is assigned a sequence number based on order of it's
12349appearance in the Org file.
e66ba1df 12350
153ae947
BG
12351In the exported document, a user-provided caption is augmented with the
12352category and sequence number. Consider the following inline image in an Org
12353file.
12354
12355@example
12356#+CAPTION: Bell curve
12357#+LABEL: fig:SED-HR4049
12358[[./img/a.png]]
12359@end example
e66ba1df 12360
153ae947 12361It could be rendered as shown below in the exported document.
e66ba1df 12362
153ae947
BG
12363@example
12364Figure 2: Bell curve
12365@end example
12366
271672fa 12367@vindex org-odt-category-map-alist
153ae947 12368You can modify the category component of the caption by customizing the
271672fa
BG
12369option @code{org-odt-category-map-alist}. For example, to tag all embedded
12370images with the string @samp{Illustration} (instead of the default
12371@samp{Figure}) use the following setting:
153ae947
BG
12372
12373@lisp
271672fa
BG
12374(setq org-odt-category-map-alist
12375 (("__Figure__" "Illustration" "value" "Figure" org-odt--enumerable-image-p)))
153ae947 12376@end lisp
e66ba1df 12377
153ae947
BG
12378With this, previous image will be captioned as below in the exported
12379document.
e66ba1df 12380
153ae947
BG
12381@example
12382Illustration 2: Bell curve
12383@end example
12384
12385@node Literal examples in ODT export, Advanced topics in ODT export, Labels and captions in ODT export, OpenDocument Text export
12386@subsection Literal examples in ODT export
e66ba1df 12387
153ae947
BG
12388Export of literal examples (@pxref{Literal examples}) with full fontification
12389is supported. Internally, the exporter relies on @file{htmlfontify.el} to
12390generate all style definitions needed for a fancy listing.@footnote{Your
801a68c8 12391@file{htmlfontify.el} library must at least be at Emacs 24.1 levels for
153ae947
BG
12392fontification to be turned on.} The auto-generated styles have @samp{OrgSrc}
12393as prefix and inherit their color from the faces used by Emacs
12394@code{font-lock} library for the source language.
e66ba1df 12395
271672fa
BG
12396@vindex org-odt-fontify-srcblocks
12397If you prefer to use your own custom styles for fontification, you can do
12398so by customizing the option
12399@code{org-odt-create-custom-styles-for-srcblocks}.
153ae947 12400
271672fa 12401@vindex org-odt-create-custom-styles-for-srcblocks
153ae947 12402You can turn off fontification of literal examples by customizing the
271672fa 12403option @code{org-odt-fontify-srcblocks}.
153ae947
BG
12404
12405@node Advanced topics in ODT export, , Literal examples in ODT export, OpenDocument Text export
12406@subsection Advanced topics in ODT export
12407
12408If you rely heavily on ODT export, you may want to exploit the full
e66ba1df
BG
12409set of features that the exporter offers. This section describes features
12410that would be of interest to power users.
12411
12412@menu
153ae947 12413* Configuring a document converter:: How to register a document converter
e66ba1df
BG
12414* Working with OpenDocument style files:: Explore the internals
12415* Creating one-off styles:: How to produce custom highlighting etc
153ae947 12416* Customizing tables in ODT export:: How to define and use Table templates
e66ba1df
BG
12417* Validating OpenDocument XML:: How to debug corrupt OpenDocument files
12418@end menu
12419
153ae947
BG
12420@node Configuring a document converter, Working with OpenDocument style files, Advanced topics in ODT export, Advanced topics in ODT export
12421@subsubsection Configuring a document converter
ce57c2fe 12422@cindex convert
153ae947 12423@cindex doc, docx, rtf
e66ba1df 12424@cindex converter
ce57c2fe 12425
153ae947
BG
12426The ODT exporter can work with popular converters with little or no
12427extra configuration from your side. @xref{Extending ODT export}.
12428If you are using a converter that is not supported by default or if you would
12429like to tweak the default converter settings, proceed as below.
e66ba1df
BG
12430
12431@enumerate
12432@item Register the converter
12433
271672fa
BG
12434@vindex org-odt-convert-processes
12435Name your converter and add it to the list of known converters by
12436customizing the option @code{org-odt-convert-processes}. Also specify how
12437the converter can be invoked via command-line to effect the conversion.
e66ba1df
BG
12438
12439@item Configure its capabilities
ce57c2fe 12440
271672fa
BG
12441@vindex org-odt-convert-capabilities
12442@anchor{x-odt-converter-capabilities} Specify the set of formats the
12443converter can handle by customizing the variable
12444@code{org-odt-convert-capabilities}. Use the default value for this
12445variable as a guide for configuring your converter. As suggested by the
12446default setting, you can specify the full set of formats supported by the
e66ba1df
BG
12447converter and not limit yourself to specifying formats that are related to
12448just the OpenDocument Text format.
12449
12450@item Choose the converter
12451
271672fa 12452@vindex org-odt-convert-process
e66ba1df 12453Select the newly added converter as the preferred one by customizing the
271672fa 12454option @code{org-odt-convert-process}.
e66ba1df
BG
12455@end enumerate
12456
153ae947 12457@node Working with OpenDocument style files, Creating one-off styles, Configuring a document converter, Advanced topics in ODT export
e66ba1df
BG
12458@subsubsection Working with OpenDocument style files
12459@cindex styles, custom
12460@cindex template, custom
ce57c2fe 12461
153ae947 12462This section explores the internals of the ODT exporter and the
e66ba1df
BG
12463means by which it produces styled documents. Read this section if you are
12464interested in exploring the automatic and custom OpenDocument styles used by
12465the exporter.
12466
12467@anchor{x-factory-styles}
12468@subsubheading Factory styles
12469
153ae947 12470The ODT exporter relies on two files for generating its output.
e66ba1df
BG
12471These files are bundled with the distribution under the directory pointed to
12472by the variable @code{org-odt-styles-dir}. The two files are:
12473
12474@itemize
12475@anchor{x-orgodtstyles-xml}
12476@item
12477@file{OrgOdtStyles.xml}
12478
12479This file contributes to the @file{styles.xml} file of the final @samp{ODT}
12480document. This file gets modified for the following purposes:
12481@enumerate
12482
12483@item
12484To control outline numbering based on user settings.
12485
12486@item
12487To add styles generated by @file{htmlfontify.el} for fontification of code
12488blocks.
12489@end enumerate
12490
12491@anchor{x-orgodtcontenttemplate-xml}
12492@item
12493@file{OrgOdtContentTemplate.xml}
12494
12495This file contributes to the @file{content.xml} file of the final @samp{ODT}
12496document. The contents of the Org outline are inserted between the
12497@samp{<office:text>}@dots{}@samp{</office:text>} elements of this file.
12498
12499Apart from serving as a template file for the final @file{content.xml}, the
12500file serves the following purposes:
12501@enumerate
12502
12503@item
12504It contains automatic styles for formatting of tables which are referenced by
12505the exporter.
12506
12507@item
12508It contains @samp{<text:sequence-decl>}@dots{}@samp{</text:sequence-decl>}
f99f1641
PE
12509elements that control how various entities---tables, images, equations,
12510etc.---are numbered.
e66ba1df
BG
12511@end enumerate
12512@end itemize
12513
12514@anchor{x-overriding-factory-styles}
12515@subsubheading Overriding factory styles
153ae947 12516The following two variables control the location from which the ODT
e66ba1df
BG
12517exporter picks up the custom styles and content template files. You can
12518customize these variables to override the factory styles used by the
12519exporter.
12520
12521@itemize
271672fa 12522@anchor{x-org-odt-styles-file}
e66ba1df 12523@item
271672fa 12524@code{org-odt-styles-file}
e66ba1df
BG
12525
12526Use this variable to specify the @file{styles.xml} that will be used in the
12527final output. You can specify one of the following values:
12528
12529@enumerate
12530@item A @file{styles.xml} file
12531
12532Use this file instead of the default @file{styles.xml}
12533
12534@item A @file{.odt} or @file{.ott} file
12535
12536Use the @file{styles.xml} contained in the specified OpenDocument Text or
12537Template file
12538
12539@item A @file{.odt} or @file{.ott} file and a subset of files contained within them
12540
12541Use the @file{styles.xml} contained in the specified OpenDocument Text or
12542Template file. Additionally extract the specified member files and embed
12543those within the final @samp{ODT} document.
12544
12545Use this option if the @file{styles.xml} file references additional files
12546like header and footer images.
12547
12548@item @code{nil}
12549
12550Use the default @file{styles.xml}
12551@end enumerate
12552
271672fa 12553@anchor{x-org-odt-content-template-file}
e66ba1df 12554@item
271672fa 12555@code{org-odt-content-template-file}
e66ba1df
BG
12556
12557Use this variable to specify the blank @file{content.xml} that will be used
12558in the final output.
12559@end itemize
12560
153ae947 12561@node Creating one-off styles, Customizing tables in ODT export, Working with OpenDocument style files, Advanced topics in ODT export
e66ba1df
BG
12562@subsubsection Creating one-off styles
12563
12564There are times when you would want one-off formatting in the exported
12565document. You can achieve this by embedding raw OpenDocument XML in the Org
12566file. The use of this feature is better illustrated with couple of examples.
12567
12568@enumerate
12569@item Embedding ODT tags as part of regular text
12570
73d3db82
BG
12571You can inline OpenDocument syntax by enclosing it within
12572@samp{@@@@odt:...@@@@} markup. For example, to highlight a region of text do
12573the following:
e66ba1df
BG
12574
12575@example
73d3db82
BG
12576@@@@odt:<text:span text:style-name="Highlight">This is a highlighted
12577text</text:span>@@@@. But this is a regular text.
e66ba1df
BG
12578@end example
12579
12580@strong{Hint:} To see the above example in action, edit your
801a68c8 12581@file{styles.xml} (@pxref{x-orgodtstyles-xml,,Factory styles}) and add a
e66ba1df
BG
12582custom @samp{Highlight} style as shown below.
12583
12584@example
12585<style:style style:name="Highlight" style:family="text">
12586 <style:text-properties fo:background-color="#ff0000"/>
12587</style:style>
12588@end example
12589
12590@item Embedding a one-line OpenDocument XML
12591
12592You can add a simple OpenDocument one-liner using the @code{#+ODT:}
12593directive. For example, to force a page break do the following:
12594
12595@example
12596#+ODT: <text:p text:style-name="PageBreak"/>
12597@end example
12598
12599@strong{Hint:} To see the above example in action, edit your
801a68c8 12600@file{styles.xml} (@pxref{x-orgodtstyles-xml,,Factory styles}) and add a
e66ba1df
BG
12601custom @samp{PageBreak} style as shown below.
12602
12603@example
12604<style:style style:name="PageBreak" style:family="paragraph"
271672fa 12605 style:parent-style-name="Text_20_body">
e66ba1df
BG
12606 <style:paragraph-properties fo:break-before="page"/>
12607</style:style>
12608@end example
12609
12610@item Embedding a block of OpenDocument XML
12611
12612You can add a large block of OpenDocument XML using the
12613@code{#+BEGIN_ODT}@dots{}@code{#+END_ODT} construct.
12614
12615For example, to create a one-off paragraph that uses bold text, do the
12616following:
12617
12618@example
12619#+BEGIN_ODT
12620<text:p text:style-name="Text_20_body_20_bold">
12621This paragraph is specially formatted and uses bold text.
12622</text:p>
12623#+END_ODT
12624@end example
12625
12626@end enumerate
12627
153ae947
BG
12628@node Customizing tables in ODT export, Validating OpenDocument XML, Creating one-off styles, Advanced topics in ODT export
12629@subsubsection Customizing tables in ODT export
e66ba1df
BG
12630@cindex tables, in ODT export
12631
12632@cindex #+ATTR_ODT
12633You can override the default formatting of the table by specifying a custom
12634table style with the @code{#+ATTR_ODT} line. For a discussion on default
153ae947 12635formatting of tables @pxref{Tables in ODT export}.
e66ba1df
BG
12636
12637This feature closely mimics the way table templates are defined in the
12638OpenDocument-v1.2
12639specification.@footnote{@url{http://docs.oasis-open.org/office/v1.2/OpenDocument-v1.2.html,
12640OpenDocument-v1.2 Specification}}
12641
f99f1641 12642@subsubheading Custom table styles: an illustration
e66ba1df 12643
271672fa
BG
12644@vindex org-odt-table-styles
12645To have a quick preview of this feature, install the below setting and
12646export the table that follows:
e66ba1df
BG
12647
12648@lisp
271672fa
BG
12649(setq org-odt-table-styles
12650 (append org-odt-table-styles
12651 '(("TableWithHeaderRowAndColumn" "Custom"
12652 ((use-first-row-styles . t)
12653 (use-first-column-styles . t)))
12654 ("TableWithFirstRowandLastRow" "Custom"
12655 ((use-first-row-styles . t)
12656 (use-last-row-styles . t))))))
e66ba1df
BG
12657@end lisp
12658
12659@example
153ae947 12660#+ATTR_ODT: :style "TableWithHeaderRowAndColumn"
e66ba1df
BG
12661| Name | Phone | Age |
12662| Peter | 1234 | 17 |
12663| Anna | 4321 | 25 |
12664@end example
12665
12666In the above example, you used a template named @samp{Custom} and installed
12667two table styles with the names @samp{TableWithHeaderRowAndColumn} and
12668@samp{TableWithFirstRowandLastRow}. (@strong{Important:} The OpenDocument
271672fa
BG
12669styles needed for producing the above template have been pre-defined for
12670you. These styles are available under the section marked @samp{Custom
12671Table Template} in @file{OrgOdtContentTemplate.xml}
e66ba1df
BG
12672(@pxref{x-orgodtcontenttemplate-xml,,Factory styles}). If you need
12673additional templates you have to define these styles yourselves.
12674
f99f1641 12675@subsubheading Custom table styles: the nitty-gritty
e66ba1df
BG
12676To use this feature proceed as follows:
12677
12678@enumerate
12679@item
12680Create a table template@footnote{See the @code{<table:table-template>}
12681element of the OpenDocument-v1.2 specification}
12682
12683A table template is nothing but a set of @samp{table-cell} and
12684@samp{paragraph} styles for each of the following table cell categories:
12685
12686@itemize @minus
12687@item Body
12688@item First column
12689@item Last column
12690@item First row
12691@item Last row
12692@item Even row
12693@item Odd row
12694@item Even column
12695@item Odd Column
12696@end itemize
12697
12698The names for the above styles must be chosen based on the name of the table
12699template using a well-defined convention.
12700
12701The naming convention is better illustrated with an example. For a table
12702template with the name @samp{Custom}, the needed style names are listed in
12703the following table.
12704
12705@multitable {Table cell type} {CustomEvenColumnTableCell} {CustomEvenColumnTableParagraph}
12706@headitem Table cell type
12707@tab @code{table-cell} style
12708@tab @code{paragraph} style
12709@item
12710@tab
12711@tab
12712@item Body
12713@tab @samp{CustomTableCell}
12714@tab @samp{CustomTableParagraph}
12715@item First column
12716@tab @samp{CustomFirstColumnTableCell}
12717@tab @samp{CustomFirstColumnTableParagraph}
12718@item Last column
12719@tab @samp{CustomLastColumnTableCell}
12720@tab @samp{CustomLastColumnTableParagraph}
12721@item First row
12722@tab @samp{CustomFirstRowTableCell}
12723@tab @samp{CustomFirstRowTableParagraph}
12724@item Last row
12725@tab @samp{CustomLastRowTableCell}
12726@tab @samp{CustomLastRowTableParagraph}
12727@item Even row
12728@tab @samp{CustomEvenRowTableCell}
12729@tab @samp{CustomEvenRowTableParagraph}
12730@item Odd row
12731@tab @samp{CustomOddRowTableCell}
12732@tab @samp{CustomOddRowTableParagraph}
12733@item Even column
12734@tab @samp{CustomEvenColumnTableCell}
12735@tab @samp{CustomEvenColumnTableParagraph}
12736@item Odd column
12737@tab @samp{CustomOddColumnTableCell}
12738@tab @samp{CustomOddColumnTableParagraph}
12739@end multitable
12740
12741To create a table template with the name @samp{Custom}, define the above
12742styles in the
12743@code{<office:automatic-styles>}...@code{</office:automatic-styles>} element
12744of the content template file (@pxref{x-orgodtcontenttemplate-xml,,Factory
12745styles}).
12746
12747@item
12748Define a table style@footnote{See the attributes @code{table:template-name},
12749@code{table:use-first-row-styles}, @code{table:use-last-row-styles},
12750@code{table:use-first-column-styles}, @code{table:use-last-column-styles},
12751@code{table:use-banding-rows-styles}, and
12752@code{table:use-banding-column-styles} of the @code{<table:table>} element in
12753the OpenDocument-v1.2 specification}
12754
271672fa 12755@vindex org-odt-table-styles
e66ba1df 12756To define a table style, create an entry for the style in the variable
271672fa 12757@code{org-odt-table-styles} and specify the following:
e66ba1df
BG
12758
12759@itemize @minus
12760@item the name of the table template created in step (1)
12761@item the set of cell styles in that template that are to be activated
12762@end itemize
12763
12764For example, the entry below defines two different table styles
153ae947
BG
12765@samp{TableWithHeaderRowAndColumn} and @samp{TableWithFirstRowandLastRow}
12766based on the same template @samp{Custom}. The styles achieve their intended
12767effect by selectively activating the individual cell styles in that template.
e66ba1df
BG
12768
12769@lisp
271672fa
BG
12770(setq org-odt-table-styles
12771 (append org-odt-table-styles
12772 '(("TableWithHeaderRowAndColumn" "Custom"
12773 ((use-first-row-styles . t)
12774 (use-first-column-styles . t)))
12775 ("TableWithFirstRowandLastRow" "Custom"
12776 ((use-first-row-styles . t)
12777 (use-last-row-styles . t))))))
e66ba1df
BG
12778@end lisp
12779
271672fa
BG
12780@item
12781Associate a table with the table style
86fbb8ca 12782
271672fa
BG
12783To do this, specify the table style created in step (2) as part of
12784the @code{ATTR_ODT} line as shown below.
86fbb8ca 12785
271672fa
BG
12786@example
12787#+ATTR_ODT: :style "TableWithHeaderRowAndColumn"
12788| Name | Phone | Age |
12789| Peter | 1234 | 17 |
12790| Anna | 4321 | 25 |
12791@end example
12792@end enumerate
a351880d 12793
271672fa
BG
12794@node Validating OpenDocument XML, , Customizing tables in ODT export, Advanced topics in ODT export
12795@subsubsection Validating OpenDocument XML
a351880d 12796
271672fa
BG
12797Occasionally, you will discover that the document created by the
12798ODT exporter cannot be opened by your favorite application. One of
12799the common reasons for this is that the @file{.odt} file is corrupt. In such
12800cases, you may want to validate the document against the OpenDocument RELAX
12801NG Compact Syntax (RNC) schema.
a351880d 12802
271672fa
BG
12803For de-compressing the @file{.odt} file@footnote{@file{.odt} files are
12804nothing but @samp{zip} archives}: @inforef{File Archives,,emacs}. For
12805general help with validation (and schema-sensitive editing) of XML files:
12806@inforef{Introduction,,nxml-mode}.
4009494e 12807
271672fa
BG
12808@vindex org-odt-schema-dir
12809If you have ready access to OpenDocument @file{.rnc} files and the needed
12810schema-locating rules in a single folder, you can customize the variable
12811@code{org-odt-schema-dir} to point to that directory. The ODT exporter
12812will take care of updating the @code{rng-schema-locating-files} for you.
4009494e 12813
271672fa 12814@c end opendocument
4009494e 12815
3c8b09ca
BG
12816@node Org export
12817@section Org export
12818@cindex Org export
12819
12820@code{org} export back-end creates a normalized version of the Org document
12821in current buffer. In particular, it evaluates Babel code (@pxref{Evaluating
12822code blocks}) and removes other back-ends specific contents.
12823
12824@subheading Org export commands
12825
12826@table @kbd
12827@orgcmd{C-c C-e O o,org-org-export-to-org}
12828Export as an Org document. For an Org file, @file{myfile.org}, the resulting
12829file will be @file{myfile.org.org}. The file will be overwritten without
12830warning.
12831@orgcmd{C-c C-e O O,org-org-export-as-org}
12832Export to a temporary buffer. Do not create a file.
12833@item C-c C-e O v
12834Export to an Org file, then open it.
12835@end table
12836
12837@node iCalendar export, Other built-in back-ends, Org export, Exporting
4009494e
GM
12838@section iCalendar export
12839@cindex iCalendar export
12840
c8d0cf5c
CD
12841@vindex org-icalendar-include-todo
12842@vindex org-icalendar-use-deadline
12843@vindex org-icalendar-use-scheduled
12844@vindex org-icalendar-categories
afe98dfa 12845@vindex org-icalendar-alarm-time
e66ba1df 12846Some people use Org mode for keeping track of projects, but still prefer a
c8d0cf5c
CD
12847standard calendar application for anniversaries and appointments. In this
12848case it can be useful to show deadlines and other time-stamped items in Org
e66ba1df 12849files in the calendar application. Org mode can export calendar information
c8d0cf5c
CD
12850in the standard iCalendar format. If you also want to have TODO entries
12851included in the export, configure the variable
12852@code{org-icalendar-include-todo}. Plain timestamps are exported as VEVENT,
1df7defd 12853and TODO items as VTODO@. It will also create events from deadlines that are
c8d0cf5c
CD
12854in non-TODO items. Deadlines and scheduling dates in TODO items will be used
12855to set the start and due dates for the TODO entry@footnote{See the variables
12856@code{org-icalendar-use-deadline} and @code{org-icalendar-use-scheduled}.}.
12857As categories, it will use the tags locally defined in the heading, and the
12858file/tree category@footnote{To add inherited tags or the TODO state,
afe98dfa
CD
12859configure the variable @code{org-icalendar-categories}.}. See the variable
12860@code{org-icalendar-alarm-time} for a way to assign alarms to entries with a
12861time.
c8d0cf5c
CD
12862
12863@vindex org-icalendar-store-UID
12864@cindex property, ID
b349f79f
CD
12865The iCalendar standard requires each entry to have a globally unique
12866identifier (UID). Org creates these identifiers during export. If you set
12867the variable @code{org-icalendar-store-UID}, the UID will be stored in the
12868@code{:ID:} property of the entry and re-used next time you report this
12869entry. Since a single entry can give rise to multiple iCalendar entries (as
12870a timestamp, a deadline, a scheduled item, and as a TODO item), Org adds
12871prefixes to the UID, depending on what triggered the inclusion of the entry.
12872In this way the UID remains unique, but a synchronization program can still
12873figure out from which entry all the different instances originate.
12874
4009494e 12875@table @kbd
271672fa
BG
12876@orgcmd{C-c C-e c f,org-icalendar-export-to-ics}
12877Create iCalendar entries for the current buffer and store them in the same
4009494e 12878directory, using a file extension @file{.ics}.
271672fa 12879@orgcmd{C-c C-e c a, org-icalendar-export-agenda-files}
c8d0cf5c 12880@vindex org-agenda-files
271672fa 12881Like @kbd{C-c C-e c f}, but do this for all files in
4009494e
GM
12882@code{org-agenda-files}. For each of these files, a separate iCalendar
12883file will be written.
271672fa
BG
12884@orgcmd{C-c C-e c c,org-icalendar-combine-agenda-files}
12885@vindex org-icalendar-combined-agenda-file
4009494e
GM
12886Create a single large iCalendar file from all files in
12887@code{org-agenda-files} and write it to the file given by
271672fa 12888@code{org-icalendar-combined-agenda-file}.
4009494e
GM
12889@end table
12890
c8d0cf5c
CD
12891@vindex org-use-property-inheritance
12892@vindex org-icalendar-include-body
12893@cindex property, SUMMARY
12894@cindex property, DESCRIPTION
12895@cindex property, LOCATION
96c8522a
CD
12896The export will honor SUMMARY, DESCRIPTION and LOCATION@footnote{The LOCATION
12897property can be inherited from higher in the hierarchy if you configure
12898@code{org-use-property-inheritance} accordingly.} properties if the selected
12899entries have them. If not, the summary will be derived from the headline,
12900and the description from the body (limited to
28a16a1b 12901@code{org-icalendar-include-body} characters).
dbc28aaa 12902
c8d0cf5c 12903How this calendar is best read and updated, depends on the application
4009494e
GM
12904you are using. The FAQ covers this issue.
12905
271672fa
BG
12906@node Other built-in back-ends, Export in foreign buffers, iCalendar export, Exporting
12907@section Other built-in back-ends
12908@cindex export back-ends, built-in
12909@vindex org-export-backends
12910
d1389828 12911On top of the aforementioned back-ends, Org comes with other built-in ones:
271672fa
BG
12912
12913@itemize
12914@item @file{ox-man.el}: export to a man page.
12915@item @file{ox-texinfo.el}: export to @code{Texinfo} format.
271672fa
BG
12916@end itemize
12917
12918To activate these export back-end, customize @code{org-export-backends} or
12919load them directly with e.g., @code{(require 'ox-texinfo)}. This will add
12920new keys in the export dispatcher (@pxref{The Export Dispatcher}).
12921
12922See the comment section of these files for more information on how to use
12923them.
12924
12925@node Export in foreign buffers, Advanced configuration, Other built-in back-ends, Exporting
12926@section Export in foreign buffers
12927
12928Most built-in back-ends come with a command to convert the selected region
12929into a selected format and replace this region by the exported output. Here
12930is a list of such conversion commands:
12931
12932@table @code
12933@item org-html-convert-region-to-html
12934Convert the selected region into HTML.
12935@item org-latex-convert-region-to-latex
12936Convert the selected region into @LaTeX{}.
12937@item org-texinfo-convert-region-to-texinfo
12938Convert the selected region into @code{Texinfo}.
12939@item org-md-convert-region-to-md
12940Convert the selected region into @code{MarkDown}.
12941@end table
12942
d1389828
PE
12943This is particularly useful for converting tables and lists in foreign
12944buffers. E.g., in an HTML buffer, you can turn on @code{orgstruct-mode}, then
271672fa
BG
12945use Org commands for editing a list, and finally select and convert the list
12946with @code{M-x org-html-convert-region-to-html RET}.
12947
12948@node Advanced configuration, , Export in foreign buffers, Exporting
12949@section Advanced configuration
12950
12951@subheading Hooks
12952
12953@vindex org-export-before-processing-hook
12954@vindex org-export-before-parsing-hook
12955Two hooks are run during the first steps of the export process. The first
12956one, @code{org-export-before-processing-hook} is called before expanding
12957macros, Babel code and include keywords in the buffer. The second one,
12958@code{org-export-before-parsing-hook}, as its name suggests, happens just
12959before parsing the buffer. Their main use is for heavy duties, that is
12960duties involving structural modifications of the document. For example, one
12961may want to remove every headline in the buffer during export. The following
12962code can achieve this:
12963
12964@lisp
12965@group
12966(defun my-headline-removal (backend)
12967 "Remove all headlines in the current buffer.
12968BACKEND is the export back-end being used, as a symbol."
12969 (org-map-entries
12970 (lambda () (delete-region (point) (progn (forward-line) (point))))))
12971
12972(add-hook 'org-export-before-parsing-hook 'my-headline-removal)
12973@end group
12974@end lisp
12975
12976Note that functions used in these hooks require a mandatory argument,
12977a symbol representing the back-end used.
12978
12979@subheading Filters
12980
12981@cindex Filters, exporting
12982Filters are lists of functions applied on a specific part of the output from
12983a given back-end. More explicitly, each time a back-end transforms an Org
12984object or element into another language, all functions within a given filter
12985type are called in turn on the string produced. The string returned by the
12986last function will be the one used in the final output.
12987
12988There are filters sets for each type of element or object, for plain text,
12989for the parse tree, for the export options and for the final output. They
12990are all named after the same scheme: @code{org-export-filter-TYPE-functions},
12991where @code{TYPE} is the type targeted by the filter. Valid types are:
12992
12993@multitable @columnfractions .33 .33 .33
12994@item bold
12995@tab babel-call
12996@tab center-block
12997@item clock
12998@tab code
12999@tab comment
13000@item comment-block
13001@tab diary-sexp
13002@tab drawer
13003@item dynamic-block
13004@tab entity
13005@tab example-block
13006@item export-block
13007@tab export-snippet
13008@tab final-output
13009@item fixed-width
13010@tab footnote-definition
13011@tab footnote-reference
13012@item headline
13013@tab horizontal-rule
13014@tab inline-babel-call
13015@item inline-src-block
13016@tab inlinetask
13017@tab italic
13018@item item
13019@tab keyword
13020@tab latex-environment
13021@item latex-fragment
13022@tab line-break
13023@tab link
13024@item node-property
13025@tab options
13026@tab paragraph
13027@item parse-tree
13028@tab plain-list
13029@tab plain-text
13030@item planning
13031@tab property-drawer
13032@tab quote-block
13033@item quote-section
13034@tab radio-target
13035@tab section
13036@item special-block
13037@tab src-block
13038@tab statistics-cookie
13039@item strike-through
13040@tab subscript
13041@tab superscript
13042@item table
13043@tab table-cell
13044@tab table-row
13045@item target
13046@tab timestamp
13047@tab underline
13048@item verbatim
13049@tab verse-block
13050@tab
13051@end multitable
13052
13053For example, the following snippet allows me to use non-breaking spaces in
13054the Org buffer and get them translated into @LaTeX{} without using the
13055@code{\nbsp} macro (where @code{_} stands for the non-breaking space):
13056
13057@lisp
13058@group
13059(defun my-latex-filter-nobreaks (text backend info)
13060 "Ensure \" \" are properly handled in LaTeX export."
13061 (when (org-export-derived-backend-p backend 'latex)
13062 (replace-regexp-in-string " " "~" text)))
13063
13064(add-to-list 'org-export-filter-plain-text-functions
13065 'my-latex-filter-nobreaks)
13066@end group
13067@end lisp
13068
13069Three arguments must be provided to a filter: the code being changed, the
13070back-end used, and some information about the export process. You can safely
13071ignore the third argument for most purposes. Note the use of
13072@code{org-export-derived-backend-p}, which ensures that the filter will only
13073be applied when using @code{latex} back-end or any other back-end derived
13074from it (e.g., @code{beamer}).
13075
13076@subheading Extending an existing back-end
13077
13078This is obviously the most powerful customization, since the changes happen
13079at the parser level. Indeed, some export back-ends are built as extensions
13080of other ones (e.g. Markdown back-end an extension of HTML back-end).
13081
13082Extending a back-end means that if an element type is not transcoded by the
13083new back-end, it will be handled by the original one. Hence you can extend
13084specific parts of a back-end without too much work.
13085
13086As an example, imagine we want the @code{ascii} back-end to display the
13087language used in a source block, when it is available, but only when some
13088attribute is non-@code{nil}, like the following:
13089
13090@example
13091#+ATTR_ASCII: :language t
13092@end example
13093
13094Because that back-end is lacking in that area, we are going to create a new
13095back-end, @code{my-ascii} that will do the job.
13096
13097@lisp
13098@group
13099(defun my-ascii-src-block (src-block contents info)
13100 "Transcode a SRC-BLOCK element from Org to ASCII.
13101CONTENTS is nil. INFO is a plist used as a communication
13102channel."
13103 (if (not (org-export-read-attribute :attr_ascii src-block :language))
13104 (org-export-with-backend 'ascii src-block contents info)
13105 (concat
13106 (format ",--[ %s ]--\n%s`----"
13107 (org-element-property :language src-block)
13108 (replace-regexp-in-string
13109 "^" "| "
13110 (org-element-normalize-string
13111 (org-export-format-code-default src-block info)))))))
13112
13113(org-export-define-derived-backend 'my-ascii 'ascii
13114 :translate-alist '((src-block . my-ascii-src-block)))
13115@end group
13116@end lisp
13117
13118The @code{my-ascii-src-block} function looks at the attribute above the
b483c570 13119element. If it isn't true, it gives hand to the @code{ascii} back-end.
271672fa 13120Otherwise, it creates a box around the code, leaving room for the language.
da5ecfa9 13121A new back-end is then created. It only changes its behavior when
271672fa
BG
13122translating @code{src-block} type element. Now, all it takes to use the new
13123back-end is calling the following from an Org buffer:
13124
13125@smalllisp
13126(org-export-to-buffer 'my-ascii "*Org MY-ASCII Export*")
13127@end smalllisp
13128
13129It is obviously possible to write an interactive function for this, install
13130it in the export dispatcher menu, and so on.
13131
86fbb8ca 13132@node Publishing, Working With Source Code, Exporting, Top
4009494e
GM
13133@chapter Publishing
13134@cindex publishing
13135
c8d0cf5c
CD
13136Org includes a publishing management system that allows you to configure
13137automatic HTML conversion of @emph{projects} composed of interlinked org
13138files. You can also configure Org to automatically upload your exported HTML
13139pages and related attachments, such as images and source code files, to a web
13140server.
4009494e 13141
c8d0cf5c
CD
13142You can also use Org to convert files into PDF, or even combine HTML and PDF
13143conversion so that files are available in both formats on the server.
4009494e 13144
c8d0cf5c 13145Publishing has been contributed to Org by David O'Toole.
4009494e
GM
13146
13147@menu
c0468714
GM
13148* Configuration:: Defining projects
13149* Uploading files:: How to get files up on the server
13150* Sample configuration:: Example projects
13151* Triggering publication:: Publication commands
4009494e
GM
13152@end menu
13153
c8d0cf5c 13154@node Configuration, Uploading files, Publishing, Publishing
4009494e
GM
13155@section Configuration
13156
13157Publishing needs significant configuration to specify files, destination
13158and many other properties of a project.
13159
13160@menu
c0468714
GM
13161* Project alist:: The central configuration variable
13162* Sources and destinations:: From here to there
13163* Selecting files:: What files are part of the project?
13164* Publishing action:: Setting the function doing the publishing
ce57c2fe 13165* Publishing options:: Tweaking HTML/@LaTeX{} export
c0468714
GM
13166* Publishing links:: Which links keep working after publishing?
13167* Sitemap:: Generating a list of all pages
13168* Generating an index:: An index that reaches across pages
4009494e
GM
13169@end menu
13170
13171@node Project alist, Sources and destinations, Configuration, Configuration
13172@subsection The variable @code{org-publish-project-alist}
13173@cindex org-publish-project-alist
13174@cindex projects, for publishing
13175
c8d0cf5c
CD
13176@vindex org-publish-project-alist
13177Publishing is configured almost entirely through setting the value of one
13178variable, called @code{org-publish-project-alist}. Each element of the list
13179configures one project, and may be in one of the two following forms:
4009494e
GM
13180
13181@lisp
ce57c2fe 13182 ("project-name" :property value :property value ...)
1df7defd 13183 @r{i.e., a well-formed property list with alternating keys and values}
28a16a1b 13184@r{or}
c8d0cf5c 13185 ("project-name" :components ("project-name" "project-name" ...))
4009494e
GM
13186
13187@end lisp
13188
c8d0cf5c
CD
13189In both cases, projects are configured by specifying property values. A
13190project defines the set of files that will be published, as well as the
13191publishing configuration to use when publishing those files. When a project
13192takes the second form listed above, the individual members of the
13193@code{:components} property are taken to be sub-projects, which group
13194together files requiring different publishing options. When you publish such
13195a ``meta-project'', all the components will also be published, in the
13196sequence given.
4009494e
GM
13197
13198@node Sources and destinations, Selecting files, Project alist, Configuration
13199@subsection Sources and destinations for files
13200@cindex directories, for publishing
13201
c8d0cf5c
CD
13202Most properties are optional, but some should always be set. In
13203particular, Org needs to know where to look for source files,
4009494e
GM
13204and where to put published files.
13205
13206@multitable @columnfractions 0.3 0.7
13207@item @code{:base-directory}
13208@tab Directory containing publishing source files
13209@item @code{:publishing-directory}
c8d0cf5c 13210@tab Directory where output files will be published. You can directly
271672fa 13211publish to a web server using a file name syntax appropriate for
c8d0cf5c
CD
13212the Emacs @file{tramp} package. Or you can publish to a local directory and
13213use external tools to upload your website (@pxref{Uploading files}).
4009494e 13214@item @code{:preparation-function}
ed21c5c8
CD
13215@tab Function or list of functions to be called before starting the
13216publishing process, for example, to run @code{make} for updating files to be
13217published. The project property list is scoped into this call as the
13218variable @code{project-plist}.
b349f79f 13219@item @code{:completion-function}
ed21c5c8
CD
13220@tab Function or list of functions called after finishing the publishing
13221process, for example, to change permissions of the resulting files. The
13222project property list is scoped into this call as the variable
13223@code{project-plist}.
4009494e
GM
13224@end multitable
13225@noindent
13226
13227@node Selecting files, Publishing action, Sources and destinations, Configuration
13228@subsection Selecting files
13229@cindex files, selecting for publishing
13230
13231By default, all files with extension @file{.org} in the base directory
13232are considered part of the project. This can be modified by setting the
28a16a1b 13233properties
4009494e
GM
13234@multitable @columnfractions 0.25 0.75
13235@item @code{:base-extension}
13236@tab Extension (without the dot!) of source files. This actually is a
c8d0cf5c
CD
13237regular expression. Set this to the symbol @code{any} if you want to get all
13238files in @code{:base-directory}, even without extension.
4009494e 13239
28a16a1b 13240@item @code{:exclude}
4009494e
GM
13241@tab Regular expression to match file names that should not be
13242published, even though they have been selected on the basis of their
13243extension.
13244
13245@item @code{:include}
13246@tab List of files to be included regardless of @code{:base-extension}
13247and @code{:exclude}.
acedf35c
CD
13248
13249@item @code{:recursive}
271672fa 13250@tab non-@code{nil} means, check base-directory recursively for files to publish.
4009494e
GM
13251@end multitable
13252
13253@node Publishing action, Publishing options, Selecting files, Configuration
a7808fba 13254@subsection Publishing action
4009494e
GM
13255@cindex action, for publishing
13256
13257Publishing means that a file is copied to the destination directory and
71d35b24
CD
13258possibly transformed in the process. The default transformation is to export
13259Org files as HTML files, and this is done by the function
271672fa 13260@code{org-html-publish-to-html}, which calls the HTML exporter (@pxref{HTML
c8d0cf5c 13261export}). But you also can publish your content as PDF files using
271672fa
BG
13262@code{org-latex-publish-to-pdf} or as @code{ascii}, @code{Texinfo}, etc.,
13263using the corresponding functions.
13264
13265If you want to publish the Org file as an @code{.org} file but with the
13266@i{archived}, @i{commented} and @i{tag-excluded} trees removed, use the
13267function @code{org-org-publish-to-org}. This will produce @file{file.org}
13268and put it in the publishing directory. If you want a htmlized version of
13269this file, set the parameter @code{:htmlized-source} to @code{t}, it will
13270produce @file{file.org.html} in the publishing directory@footnote{If the
13271publishing directory is the same than the source directory, @file{file.org}
13272will be exported as @file{file.org.org}, so probably don't want to do this.}.
13273
13274Other files like images only need to be copied to the publishing destination.
13275For this you can use @code{org-publish-attachment}. For non-org files, you
13276always need to specify the publishing function:
4009494e
GM
13277
13278@multitable @columnfractions 0.3 0.7
13279@item @code{:publishing-function}
13280@tab Function executing the publication of a file. This may also be a
13281list of functions, which will all be called in turn.
c8d0cf5c 13282@item @code{:htmlized-source}
271672fa 13283@tab non-@code{nil} means, publish htmlized source.
4009494e
GM
13284@end multitable
13285
ed21c5c8 13286The function must accept three arguments: a property list containing at least
271672fa
BG
13287a @code{:publishing-directory} property, the name of the file to be published
13288and the path to the publishing directory of the output file. It should take
13289the specified file, make the necessary transformation (if any) and place the
13290result into the destination folder.
4009494e
GM
13291
13292@node Publishing options, Publishing links, Publishing action, Configuration
271672fa 13293@subsection Options for the exporters
4009494e
GM
13294@cindex options, for publishing
13295
271672fa
BG
13296The property list can be used to set many export options for the exporters.
13297In most cases, these properties correspond to user variables in Org. The
13298first table below lists these properties along with the variable they belong
13299to. The second table list HTML specific properties. See the documentation
13300string of these options for details.
4009494e 13301
c8d0cf5c 13302@vindex org-display-custom-times
271672fa
BG
13303@vindex org-export-default-language
13304@vindex org-export-exclude-tags
c8d0cf5c 13305@vindex org-export-headline-levels
c8d0cf5c 13306@vindex org-export-preserve-breaks
271672fa
BG
13307@vindex org-export-publishing-directory
13308@vindex org-export-select-tags
c8d0cf5c 13309@vindex org-export-with-archived-trees
271672fa
BG
13310@vindex org-export-with-author
13311@vindex org-export-with-creator
13312@vindex org-export-with-drawers
13313@vindex org-export-with-email
c8d0cf5c 13314@vindex org-export-with-emphasize
271672fa 13315@vindex org-export-with-fixed-width
c8d0cf5c 13316@vindex org-export-with-footnotes
271672fa
BG
13317@vindex org-export-with-latex
13318@vindex org-export-with-planning
13319@vindex org-export-with-priority
13320@vindex org-export-with-section-numbers
13321@vindex org-export-with-special-strings
13322@vindex org-export-with-sub-superscripts
13323@vindex org-export-with-tables
c8d0cf5c 13324@vindex org-export-with-tags
ce57c2fe 13325@vindex org-export-with-tasks
c8d0cf5c 13326@vindex org-export-with-timestamps
271672fa
BG
13327@vindex org-export-with-toc
13328@vindex org-export-with-todo-keywords
c8d0cf5c 13329@vindex user-mail-address
c8d0cf5c 13330
96c8522a 13331@multitable @columnfractions 0.32 0.68
271672fa
BG
13332@item @code{:archived-trees} @tab @code{org-export-with-archived-trees}
13333@item @code{:exclude-tags} @tab @code{org-export-exclude-tags}
4009494e 13334@item @code{:headline-levels} @tab @code{org-export-headline-levels}
271672fa 13335@item @code{:language} @tab @code{org-export-default-language}
96c8522a 13336@item @code{:preserve-breaks} @tab @code{org-export-preserve-breaks}
4009494e 13337@item @code{:publishing-directory} @tab @code{org-export-publishing-directory}
271672fa 13338@item @code{:section-numbers} @tab @code{org-export-with-section-numbers}
864c9740 13339@item @code{:select-tags} @tab @code{org-export-select-tags}
271672fa
BG
13340@item @code{:with-author} @tab @code{org-export-with-author}
13341@item @code{:with-creator} @tab @code{org-export-with-creator}
13342@item @code{:with-drawers} @tab @code{org-export-with-drawers}
13343@item @code{:with-email} @tab @code{org-export-with-email}
13344@item @code{:with-emphasize} @tab @code{org-export-with-emphasize}
13345@item @code{:with-fixed-width} @tab @code{org-export-with-fixed-width}
13346@item @code{:with-footnotes} @tab @code{org-export-with-footnotes}
13347@item @code{:with-latex} @tab @code{org-export-with-latex}
13348@item @code{:with-planning} @tab @code{org-export-with-planning}
13349@item @code{:with-priority} @tab @code{org-export-with-priority}
13350@item @code{:with-special-strings} @tab @code{org-export-with-special-strings}
13351@item @code{:with-sub-superscript} @tab @code{org-export-with-sub-superscripts}
13352@item @code{:with-tables} @tab @code{org-export-with-tables}
13353@item @code{:with-tags} @tab @code{org-export-with-tags}
13354@item @code{:with-tasks} @tab @code{org-export-with-tasks}
13355@item @code{:with-timestamps} @tab @code{org-export-with-timestamps}
13356@item @code{:with-toc} @tab @code{org-export-with-toc}
13357@item @code{:with-todo-keywords} @tab @code{org-export-with-todo-keywords}
4009494e
GM
13358@end multitable
13359
271672fa 13360@vindex org-html-doctype
3c8b09ca
BG
13361@vindex org-html-container-element
13362@vindex org-html-html5-fancy
271672fa
BG
13363@vindex org-html-xml-declaration
13364@vindex org-html-link-up
13365@vindex org-html-link-home
13366@vindex org-html-link-org-files-as-html
3c8b09ca 13367@vindex org-html-link-use-abs-url
271672fa
BG
13368@vindex org-html-head
13369@vindex org-html-head-extra
13370@vindex org-html-inline-images
13371@vindex org-html-extension
13372@vindex org-html-preamble
13373@vindex org-html-postamble
13374@vindex org-html-table-default-attributes
3c8b09ca 13375@vindex org-html-table-row-tags
271672fa
BG
13376@vindex org-html-head-include-default-style
13377@vindex org-html-head-include-scripts
13378@multitable @columnfractions 0.32 0.68
13379@item @code{:html-doctype} @tab @code{org-html-doctype}
3c8b09ca
BG
13380@item @code{:html-container} @tab @code{org-html-container-element}
13381@item @code{:html-html5-fancy} @tab @code{org-html-html5-fancy}
271672fa
BG
13382@item @code{:html-xml-declaration} @tab @code{org-html-xml-declaration}
13383@item @code{:html-link-up} @tab @code{org-html-link-up}
13384@item @code{:html-link-home} @tab @code{org-html-link-home}
13385@item @code{:html-link-org-as-html} @tab @code{org-html-link-org-files-as-html}
3c8b09ca 13386@item @code{:html-link-use-abs-url} @tab @code{org-html-link-use-abs-url}
271672fa
BG
13387@item @code{:html-head} @tab @code{org-html-head}
13388@item @code{:html-head-extra} @tab @code{org-html-head-extra}
13389@item @code{:html-inline-images} @tab @code{org-html-inline-images}
13390@item @code{:html-extension} @tab @code{org-html-extension}
13391@item @code{:html-preamble} @tab @code{org-html-preamble}
13392@item @code{:html-postamble} @tab @code{org-html-postamble}
3c8b09ca
BG
13393@item @code{:html-table-attributes} @tab @code{org-html-table-default-attributes}
13394@item @code{:html-table-row-tags} @tab @code{org-html-table-row-tags}
271672fa
BG
13395@item @code{:html-head-include-default-style} @tab @code{org-html-head-include-default-style}
13396@item @code{:html-head-include-scripts} @tab @code{org-html-head-include-scripts}
13397@end multitable
ce57c2fe 13398
271672fa
BG
13399Most of the @code{org-export-with-*} variables have the same effect in each
13400exporter.
4009494e 13401
c8d0cf5c 13402@vindex org-publish-project-alist
271672fa
BG
13403When a property is given a value in @code{org-publish-project-alist}, its
13404setting overrides the value of the corresponding user variable (if any)
13405during publishing. Options set within a file (@pxref{Export settings}),
13406however, override everything.
4009494e 13407
ed21c5c8 13408@node Publishing links, Sitemap, Publishing options, Configuration
4009494e
GM
13409@subsection Links between published files
13410@cindex links, publishing
13411
271672fa
BG
13412To create a link from one Org file to another, you would use something like
13413@samp{[[file:foo.org][The foo]]} or simply @samp{file:foo.org.}
13414(@pxref{Hyperlinks}). When published, this link becomes a link to
13415@file{foo.html}. You can thus interlink the pages of your "org web" project
13416and the links will work as expected when you publish them to HTML@. If you
13417also publish the Org source file and want to link to it, use an @code{http:}
13418link instead of a @code{file:} link, because @code{file:} links are converted
13419to link to the corresponding @file{html} file.
4009494e 13420
ce57c2fe 13421You may also link to related files, such as images. Provided you are careful
c8d0cf5c 13422with relative file names, and provided you have also configured Org to upload
ce57c2fe 13423the related files, these links will work too. See @ref{Complex example}, for
c8d0cf5c 13424an example of this usage.
4009494e 13425
ed21c5c8
CD
13426@node Sitemap, Generating an index, Publishing links, Configuration
13427@subsection Generating a sitemap
13428@cindex sitemap, of published pages
4009494e 13429
86fbb8ca 13430The following properties may be used to control publishing of
ed21c5c8 13431a map of files for a given project.
4009494e 13432
86fbb8ca 13433@multitable @columnfractions 0.35 0.65
ed21c5c8 13434@item @code{:auto-sitemap}
271672fa 13435@tab When non-@code{nil}, publish a sitemap during @code{org-publish-current-project}
c8d0cf5c 13436or @code{org-publish-all}.
4009494e 13437
ed21c5c8 13438@item @code{:sitemap-filename}
ce57c2fe 13439@tab Filename for output of sitemap. Defaults to @file{sitemap.org} (which
c8d0cf5c 13440becomes @file{sitemap.html}).
4009494e 13441
ed21c5c8 13442@item @code{:sitemap-title}
ce57c2fe 13443@tab Title of sitemap page. Defaults to name of file.
4009494e 13444
ed21c5c8
CD
13445@item @code{:sitemap-function}
13446@tab Plug-in function to use for generation of the sitemap.
13447Defaults to @code{org-publish-org-sitemap}, which generates a plain list
4009494e 13448of links to all files in the project.
86fbb8ca
CD
13449
13450@item @code{:sitemap-sort-folders}
13451@tab Where folders should appear in the sitemap. Set this to @code{first}
13452(default) or @code{last} to display folders first or last,
13453respectively. Any other value will mix files and folders.
13454
ce57c2fe
BG
13455@item @code{:sitemap-sort-files}
13456@tab How the files are sorted in the site map. Set this to
13457@code{alphabetically} (default), @code{chronologically} or
13458@code{anti-chronologically}. @code{chronologically} sorts the files with
13459older date first while @code{anti-chronologically} sorts the files with newer
13460date first. @code{alphabetically} sorts the files alphabetically. The date of
13461a file is retrieved with @code{org-publish-find-date}.
86fbb8ca
CD
13462
13463@item @code{:sitemap-ignore-case}
13464@tab Should sorting be case-sensitive? Default @code{nil}.
13465
ce57c2fe 13466@item @code{:sitemap-file-entry-format}
c80e3b4a 13467@tab With this option one can tell how a sitemap's entry is formatted in the
ce57c2fe
BG
13468sitemap. This is a format string with some escape sequences: @code{%t} stands
13469for the title of the file, @code{%a} stands for the author of the file and
13470@code{%d} stands for the date of the file. The date is retrieved with the
c80e3b4a 13471@code{org-publish-find-date} function and formatted with
ce57c2fe
BG
13472@code{org-publish-sitemap-date-format}. Default @code{%t}.
13473
13474@item @code{:sitemap-date-format}
13475@tab Format string for the @code{format-time-string} function that tells how
c80e3b4a 13476a sitemap entry's date is to be formatted. This property bypasses
ce57c2fe
BG
13477@code{org-publish-sitemap-date-format} which defaults to @code{%Y-%m-%d}.
13478
13479@item @code{:sitemap-sans-extension}
271672fa 13480@tab When non-@code{nil}, remove filenames' extensions from the generated sitemap.
ce57c2fe
BG
13481Useful to have cool URIs (see @uref{http://www.w3.org/Provider/Style/URI}).
13482Defaults to @code{nil}.
13483
4009494e
GM
13484@end multitable
13485
ed21c5c8
CD
13486@node Generating an index, , Sitemap, Configuration
13487@subsection Generating an index
13488@cindex index, in a publishing project
13489
e66ba1df 13490Org mode can generate an index across the files of a publishing project.
ed21c5c8
CD
13491
13492@multitable @columnfractions 0.25 0.75
13493@item @code{:makeindex}
271672fa 13494@tab When non-@code{nil}, generate in index in the file @file{theindex.org} and
ed21c5c8
CD
13495publish it as @file{theindex.html}.
13496@end multitable
13497
ce57c2fe 13498The file will be created when first publishing a project with the
8223b1d2 13499@code{:makeindex} set. The file only contains a statement @code{#+INCLUDE:
ce57c2fe
BG
13500"theindex.inc"}. You can then build around this include statement by adding
13501a title, style information, etc.
ed21c5c8 13502
c8d0cf5c
CD
13503@node Uploading files, Sample configuration, Configuration, Publishing
13504@section Uploading files
13505@cindex rsync
13506@cindex unison
13507
13508For those people already utilizing third party sync tools such as
13509@command{rsync} or @command{unison}, it might be preferable not to use the built in
e66ba1df 13510@i{remote} publishing facilities of Org mode which rely heavily on
c8d0cf5c
CD
13511Tramp. Tramp, while very useful and powerful, tends not to be
13512so efficient for multiple file transfer and has been known to cause problems
13513under heavy usage.
13514
13515Specialized synchronization utilities offer several advantages. In addition
13516to timestamp comparison, they also do content and permissions/attribute
13517checks. For this reason you might prefer to publish your web to a local
13518directory (possibly even @i{in place} with your Org files) and then use
13519@file{unison} or @file{rsync} to do the synchronization with the remote host.
13520
13521Since Unison (for example) can be configured as to which files to transfer to
13522a certain remote destination, it can greatly simplify the project publishing
13523definition. Simply keep all files in the correct location, process your Org
13524files with @code{org-publish} and let the synchronization tool do the rest.
13525You do not need, in this scenario, to include attachments such as @file{jpg},
13526@file{css} or @file{gif} files in the project definition since the 3rd party
13527tool syncs them.
13528
13529Publishing to a local directory is also much faster than to a remote one, so
13530that you can afford more easily to republish entire projects. If you set
13531@code{org-publish-use-timestamps-flag} to @code{nil}, you gain the main
13532benefit of re-including any changed external files such as source example
8223b1d2 13533files you might include with @code{#+INCLUDE:}. The timestamp mechanism in
c8d0cf5c
CD
13534Org is not smart enough to detect if included files have been modified.
13535
13536@node Sample configuration, Triggering publication, Uploading files, Publishing
4009494e
GM
13537@section Sample configuration
13538
13539Below we provide two example configurations. The first one is a simple
a7808fba 13540project publishing only a set of Org files. The second example is
4009494e
GM
13541more complex, with a multi-component project.
13542
13543@menu
c0468714
GM
13544* Simple example:: One-component publishing
13545* Complex example:: A multi-component publishing example
4009494e
GM
13546@end menu
13547
13548@node Simple example, Complex example, Sample configuration, Sample configuration
13549@subsection Example: simple publishing configuration
13550
a7808fba 13551This example publishes a set of Org files to the @file{public_html}
4009494e
GM
13552directory on the local machine.
13553
13554@lisp
13555(setq org-publish-project-alist
28a16a1b 13556 '(("org"
4009494e
GM
13557 :base-directory "~/org/"
13558 :publishing-directory "~/public_html"
13559 :section-numbers nil
271672fa
BG
13560 :with-toc nil
13561 :html-head "<link rel=\"stylesheet\"
13562 href=\"../other/mystyle.css\"
13563 type=\"text/css\"/>")))
4009494e
GM
13564@end lisp
13565
13566@node Complex example, , Simple example, Sample configuration
13567@subsection Example: complex publishing configuration
13568
13569This more complicated example publishes an entire website, including
c8d0cf5c 13570Org files converted to HTML, image files, Emacs Lisp source code, and
ce57c2fe 13571style sheets. The publishing directory is remote and private files are
4009494e
GM
13572excluded.
13573
13574To ensure that links are preserved, care should be taken to replicate
13575your directory structure on the web server, and to use relative file
ce57c2fe 13576paths. For example, if your Org files are kept in @file{~/org} and your
86fbb8ca 13577publishable images in @file{~/images}, you would link to an image with
4009494e
GM
13578@c
13579@example
13580file:../images/myimage.png
13581@end example
13582@c
13583On the web server, the relative path to the image should be the
ce57c2fe 13584same. You can accomplish this by setting up an "images" folder in the
a7808fba 13585right place on the web server, and publishing images to it.
4009494e
GM
13586
13587@lisp
13588(setq org-publish-project-alist
13589 '(("orgfiles"
13590 :base-directory "~/org/"
13591 :base-extension "org"
13592 :publishing-directory "/ssh:user@@host:~/html/notebook/"
271672fa 13593 :publishing-function org-html-publish-to-html
4009494e
GM
13594 :exclude "PrivatePage.org" ;; regexp
13595 :headline-levels 3
13596 :section-numbers nil
271672fa
BG
13597 :with-toc nil
13598 :html-head "<link rel=\"stylesheet\"
c8d0cf5c 13599 href=\"../other/mystyle.css\" type=\"text/css\"/>"
ce57c2fe 13600 :html-preamble t)
28a16a1b 13601
4009494e
GM
13602 ("images"
13603 :base-directory "~/images/"
13604 :base-extension "jpg\\|gif\\|png"
13605 :publishing-directory "/ssh:user@@host:~/html/images/"
13606 :publishing-function org-publish-attachment)
28a16a1b 13607
4009494e
GM
13608 ("other"
13609 :base-directory "~/other/"
13610 :base-extension "css\\|el"
13611 :publishing-directory "/ssh:user@@host:~/html/other/"
13612 :publishing-function org-publish-attachment)
13613 ("website" :components ("orgfiles" "images" "other"))))
13614@end lisp
13615
13616@node Triggering publication, , Sample configuration, Publishing
13617@section Triggering publication
13618
c8d0cf5c 13619Once properly configured, Org can publish with the following commands:
4009494e
GM
13620
13621@table @kbd
271672fa 13622@orgcmd{C-c C-e P x,org-publish}
4009494e 13623Prompt for a specific project and publish all files that belong to it.
271672fa 13624@orgcmd{C-c C-e P p,org-publish-current-project}
4009494e 13625Publish the project containing the current file.
271672fa 13626@orgcmd{C-c C-e P f,org-publish-current-file}
4009494e 13627Publish only the current file.
271672fa 13628@orgcmd{C-c C-e P a,org-publish-all}
c8d0cf5c 13629Publish every project.
4009494e
GM
13630@end table
13631
c8d0cf5c 13632@vindex org-publish-use-timestamps-flag
ce57c2fe
BG
13633Org uses timestamps to track when a file has changed. The above functions
13634normally only publish changed files. You can override this and force
c8d0cf5c
CD
13635publishing of all files by giving a prefix argument to any of the commands
13636above, or by customizing the variable @code{org-publish-use-timestamps-flag}.
13637This may be necessary in particular if files include other files via
13638@code{#+SETUPFILE:} or @code{#+INCLUDE:}.
4009494e 13639
86fbb8ca
CD
13640@comment node-name, next, previous, up
13641@comment Working With Source Code, Miscellaneous, Publishing, Top
13642
13643@node Working With Source Code, Miscellaneous, Publishing, Top
13644@chapter Working with source code
13645@cindex Schulte, Eric
13646@cindex Davison, Dan
13647@cindex source code, working with
13648
e66ba1df 13649Source code can be included in Org mode documents using a @samp{src} block,
1df7defd 13650e.g.:
86fbb8ca
CD
13651
13652@example
13653#+BEGIN_SRC emacs-lisp
13654 (defun org-xor (a b)
13655 "Exclusive or."
13656 (if a (not b) b))
13657#+END_SRC
13658@end example
13659
e66ba1df 13660Org mode provides a number of features for working with live source code,
86fbb8ca 13661including editing of code blocks in their native major-mode, evaluation of
ce57c2fe
BG
13662code blocks, converting code blocks into source files (known as @dfn{tangling}
13663in literate programming), and exporting code blocks and their
afe98dfa
CD
13664results in several formats. This functionality was contributed by Eric
13665Schulte and Dan Davison, and was originally named Org-babel.
86fbb8ca 13666
e66ba1df 13667The following sections describe Org mode's code block handling facilities.
4009494e
GM
13668
13669@menu
c0468714
GM
13670* Structure of code blocks:: Code block syntax described
13671* Editing source code:: Language major-mode editing
13672* Exporting code blocks:: Export contents and/or results
13673* Extracting source code:: Create pure source code files
e66ba1df 13674* Evaluating code blocks:: Place results of evaluation in the Org mode buffer
c0468714
GM
13675* Library of Babel:: Use and contribute to a library of useful code blocks
13676* Languages:: List of supported code block languages
13677* Header arguments:: Configure code block functionality
13678* Results of evaluation:: How evaluation results are handled
e66ba1df 13679* Noweb reference syntax:: Literate programming in Org mode
86fbb8ca 13680* Key bindings and useful functions:: Work quickly with code blocks
c0468714 13681* Batch execution:: Call functions from the command line
4009494e
GM
13682@end menu
13683
86fbb8ca
CD
13684@comment node-name, next, previous, up
13685@comment Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
c8d0cf5c 13686
86fbb8ca
CD
13687@node Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
13688@section Structure of code blocks
13689@cindex code block, structure
13690@cindex source code, block structure
e66ba1df
BG
13691@cindex #+NAME
13692@cindex #+BEGIN_SRC
4009494e 13693
e66ba1df
BG
13694Live code blocks can be specified with a @samp{src} block or
13695inline.@footnote{Note that @samp{src} blocks may be inserted using Org mode's
13696@ref{Easy Templates} system} The structure of a @samp{src} block is
6eb02347 13697
86fbb8ca 13698@example
e66ba1df
BG
13699#+NAME: <name>
13700#+BEGIN_SRC <language> <switches> <header arguments>
86fbb8ca 13701 <body>
e66ba1df 13702#+END_SRC
86fbb8ca 13703@end example
4009494e 13704
e66ba1df
BG
13705The @code{#+NAME:} line is optional, and can be used to name the code
13706block. Live code blocks require that a language be specified on the
13707@code{#+BEGIN_SRC} line. Switches and header arguments are optional.
13708@cindex source code, inline
13709
13710Live code blocks can also be specified inline using
afe98dfa
CD
13711
13712@example
13713src_<language>@{<body>@}
13714@end example
13715
13716or
13717
13718@example
13719src_<language>[<header arguments>]@{<body>@}
13720@end example
13721
86fbb8ca 13722@table @code
e66ba1df
BG
13723@item <#+NAME: name>
13724This line associates a name with the code block. This is similar to the
271672fa 13725@code{#+NAME: Name} lines that can be used to name tables in Org mode
e66ba1df
BG
13726files. Referencing the name of a code block makes it possible to evaluate
13727the block from other places in the file, from other files, or from Org mode
13728table formulas (see @ref{The spreadsheet}). Names are assumed to be unique
13729and the behavior of Org mode when two or more blocks share the same name is
ce57c2fe 13730undefined.
e66ba1df 13731@cindex #+NAME
86fbb8ca 13732@item <language>
e66ba1df
BG
13733The language of the code in the block (see @ref{Languages}).
13734@cindex source code, language
86fbb8ca 13735@item <switches>
e66ba1df 13736Optional switches control code block export (see the discussion of switches in
86fbb8ca 13737@ref{Literal examples})
e66ba1df 13738@cindex source code, switches
86fbb8ca
CD
13739@item <header arguments>
13740Optional header arguments control many aspects of evaluation, export and
e66ba1df 13741tangling of code blocks (see @ref{Header arguments}).
ce57c2fe 13742Header arguments can also be set on a per-buffer or per-subtree
86fbb8ca 13743basis using properties.
e66ba1df 13744@item source code, header arguments
86fbb8ca 13745@item <body>
e66ba1df 13746Source code in the specified language.
4009494e
GM
13747@end table
13748
86fbb8ca
CD
13749@comment node-name, next, previous, up
13750@comment Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
17673adf 13751
86fbb8ca
CD
13752@node Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
13753@section Editing source code
13754@cindex code block, editing
13755@cindex source code, editing
17673adf 13756
271672fa
BG
13757@vindex org-edit-src-auto-save-idle-delay
13758@vindex org-edit-src-turn-on-auto-save
86fbb8ca 13759@kindex C-c '
271672fa
BG
13760Use @kbd{C-c '} to edit the current code block. This brings up a language
13761major-mode edit buffer containing the body of the code block. Manually
13762saving this buffer with @key{C-x C-s} will write the contents back to the Org
13763buffer. You can also set @code{org-edit-src-auto-save-idle-delay} to save the
13764base buffer after some idle delay, or @code{org-edit-src-turn-on-auto-save}
13765to auto-save this buffer into a separate file using @code{auto-save-mode}.
13766Use @kbd{C-c '} again to exit.
4009494e 13767
ce57c2fe 13768The @code{org-src-mode} minor mode will be active in the edit buffer. The
86fbb8ca 13769following variables can be used to configure the behavior of the edit
ce57c2fe 13770buffer. See also the customization group @code{org-edit-structure} for
86fbb8ca
CD
13771further configuration options.
13772
13773@table @code
13774@item org-src-lang-modes
13775If an Emacs major-mode named @code{<lang>-mode} exists, where
13776@code{<lang>} is the language named in the header line of the code block,
ce57c2fe 13777then the edit buffer will be placed in that major-mode. This variable
86fbb8ca
CD
13778can be used to map arbitrary language names to existing major modes.
13779@item org-src-window-setup
13780Controls the way Emacs windows are rearranged when the edit buffer is created.
13781@item org-src-preserve-indentation
30cb51f1
BG
13782By default, the value is @code{nil}, which means that when code blocks are
13783evaluated during export or tangled, they are re-inserted into the code block,
13784which may replace sequences of spaces with tab characters. When non-nil,
13785whitespace in code blocks will be preserved during export or tangling,
13786exactly as it appears. This variable is especially useful for tangling
13787languages such as Python, in which whitespace indentation in the output is
13788critical.
86fbb8ca 13789@item org-src-ask-before-returning-to-edit-buffer
ce57c2fe 13790By default, Org will ask before returning to an open edit buffer. Set this
271672fa 13791variable to @code{nil} to switch without asking.
86fbb8ca
CD
13792@end table
13793
ce57c2fe
BG
13794To turn on native code fontification in the @emph{Org} buffer, configure the
13795variable @code{org-src-fontify-natively}.
13796
86fbb8ca
CD
13797@comment node-name, next, previous, up
13798@comment Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
13799
13800@node Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
13801@section Exporting code blocks
13802@cindex code block, exporting
13803@cindex source code, exporting
13804
e66ba1df
BG
13805It is possible to export the @emph{code} of code blocks, the @emph{results}
13806of code block evaluation, @emph{both} the code and the results of code block
13807evaluation, or @emph{none}. For most languages, the default exports code.
1df7defd 13808However, for some languages (e.g., @code{ditaa}) the default exports the
e66ba1df
BG
13809results of code block evaluation. For information on exporting code block
13810bodies, see @ref{Literal examples}.
86fbb8ca
CD
13811
13812The @code{:exports} header argument can be used to specify export
13813behavior:
13814
13815@subsubheading Header arguments:
271672fa 13816
86fbb8ca
CD
13817@table @code
13818@item :exports code
ce57c2fe 13819The default in most languages. The body of the code block is exported, as
86fbb8ca
CD
13820described in @ref{Literal examples}.
13821@item :exports results
13822The code block will be evaluated and the results will be placed in the
e66ba1df 13823Org mode buffer for export, either updating previous results of the code
86fbb8ca
CD
13824block located anywhere in the buffer or, if no previous results exist,
13825placing the results immediately after the code block. The body of the code
13826block will not be exported.
13827@item :exports both
13828Both the code block and its results will be exported.
13829@item :exports none
13830Neither the code block nor its results will be exported.
13831@end table
13832
13833It is possible to inhibit the evaluation of code blocks during export.
acedf35c 13834Setting the @code{org-export-babel-evaluate} variable to @code{nil} will
86fbb8ca 13835ensure that no code blocks are evaluated as part of the export process. This
e66ba1df
BG
13836can be useful in situations where potentially untrusted Org mode files are
13837exported in an automated fashion, for example when Org mode is used as the
271672fa 13838markup language for a wiki. It is also possible to set this variable to
b483c570 13839@code{'inline-only}. In that case, only inline code blocks will be
271672fa
BG
13840evaluated, in order to insert their results. Non-inline code blocks are
13841assumed to have their results already inserted in the buffer by manual
13842evaluation. This setting is useful to avoid expensive recalculations during
13843export, not to provide security.
86fbb8ca
CD
13844
13845@comment node-name, next, previous, up
13846@comment Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
13847@node Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
13848@section Extracting source code
ce57c2fe 13849@cindex tangling
86fbb8ca
CD
13850@cindex source code, extracting
13851@cindex code block, extracting source code
13852
13853Creating pure source code files by extracting code from source blocks is
13854referred to as ``tangling''---a term adopted from the literate programming
13855community. During ``tangling'' of code blocks their bodies are expanded
13856using @code{org-babel-expand-src-block} which can expand both variable and
13857``noweb'' style references (see @ref{Noweb reference syntax}).
13858
13859@subsubheading Header arguments
271672fa 13860
86fbb8ca
CD
13861@table @code
13862@item :tangle no
13863The default. The code block is not included in the tangled output.
13864@item :tangle yes
ce57c2fe 13865Include the code block in the tangled output. The output file name is the
86fbb8ca
CD
13866name of the org file with the extension @samp{.org} replaced by the extension
13867for the block language.
13868@item :tangle filename
13869Include the code block in the tangled output to file @samp{filename}.
13870@end table
13871
13872@kindex C-c C-v t
13873@subsubheading Functions
271672fa 13874
86fbb8ca 13875@table @code
ce57c2fe 13876@item org-babel-tangle
afe98dfa 13877Tangle the current file. Bound to @kbd{C-c C-v t}.
271672fa
BG
13878
13879With prefix argument only tangle the current code block.
86fbb8ca 13880@item org-babel-tangle-file
ce57c2fe 13881Choose a file to tangle. Bound to @kbd{C-c C-v f}.
86fbb8ca
CD
13882@end table
13883
13884@subsubheading Hooks
271672fa 13885
86fbb8ca
CD
13886@table @code
13887@item org-babel-post-tangle-hook
13888This hook is run from within code files tangled by @code{org-babel-tangle}.
13889Example applications could include post-processing, compilation or evaluation
13890of tangled code files.
13891@end table
13892
271672fa
BG
13893@subsubheading Jumping between code and Org
13894
13895When tangling code from an Org-mode buffer to a source code file, you'll
13896frequently find yourself viewing the file of tangled source code (e.g., many
13897debuggers point to lines of the source code file). It is useful to be able
13898to navigate from the tangled source to the Org-mode buffer from which the
13899code originated.
13900
13901The @code{org-babel-tangle-jump-to-org} function provides this jumping from
13902code to Org-mode functionality. Two header arguments are required for
13903jumping to work, first the @code{padline} (@ref{padline}) option must be set
13904to true (the default setting), second the @code{comments} (@ref{comments})
13905header argument must be set to @code{links}, which will insert comments into
13906the source code buffer which point back to the original Org-mode file.
13907
86fbb8ca
CD
13908@node Evaluating code blocks, Library of Babel, Extracting source code, Working With Source Code
13909@section Evaluating code blocks
13910@cindex code block, evaluating
13911@cindex source code, evaluating
153ae947 13912@cindex #+RESULTS
86fbb8ca
CD
13913
13914Code blocks can be evaluated@footnote{Whenever code is evaluated there is a
e66ba1df
BG
13915potential for that code to do harm. Org mode provides safeguards to ensure
13916that code is only evaluated after explicit confirmation from the user. For
13917information on these safeguards (and on how to disable them) see @ref{Code
13918evaluation security}.} and the results of evaluation optionally placed in the
153ae947
BG
13919Org mode buffer. The results of evaluation are placed following a line that
13920begins by default with @code{#+RESULTS} and optionally a cache identifier
13921and/or the name of the evaluated code block. The default value of
13922@code{#+RESULTS} can be changed with the customizable variable
13923@code{org-babel-results-keyword}.
13924
13925By default, the evaluation facility is only enabled for Lisp code blocks
8223b1d2 13926specified as @code{emacs-lisp}. However, source code blocks in many languages
153ae947
BG
13927can be evaluated within Org mode (see @ref{Languages} for a list of supported
13928languages and @ref{Structure of code blocks} for information on the syntax
13929used to define a code block).
86fbb8ca
CD
13930
13931@kindex C-c C-c
13932There are a number of ways to evaluate code blocks. The simplest is to press
13933@kbd{C-c C-c} or @kbd{C-c C-v e} with the point on a code block@footnote{The
271672fa 13934option @code{org-babel-no-eval-on-ctrl-c-ctrl-c} can be used to remove code
86fbb8ca
CD
13935evaluation from the @kbd{C-c C-c} key binding.}. This will call the
13936@code{org-babel-execute-src-block} function to evaluate the block and insert
e66ba1df
BG
13937its results into the Org mode buffer.
13938@cindex #+CALL
86fbb8ca 13939
8223b1d2
BG
13940It is also possible to evaluate named code blocks from anywhere in an Org
13941mode buffer or an Org mode table. Live code blocks located in the current
e66ba1df
BG
13942Org mode buffer or in the ``Library of Babel'' (see @ref{Library of Babel})
13943can be executed. Named code blocks can be executed with a separate
13944@code{#+CALL:} line or inline within a block of text.
13945
13946The syntax of the @code{#+CALL:} line is
86fbb8ca
CD
13947
13948@example
e66ba1df
BG
13949#+CALL: <name>(<arguments>)
13950#+CALL: <name>[<inside header arguments>](<arguments>) <end header arguments>
ce57c2fe
BG
13951@end example
13952
e66ba1df 13953The syntax for inline evaluation of named code blocks is
ce57c2fe
BG
13954
13955@example
e66ba1df
BG
13956... call_<name>(<arguments>) ...
13957... call_<name>[<inside header arguments>](<arguments>)[<end header arguments>] ...
86fbb8ca
CD
13958@end example
13959
13960@table @code
13961@item <name>
e66ba1df 13962The name of the code block to be evaluated (see @ref{Structure of code blocks}).
86fbb8ca 13963@item <arguments>
ce57c2fe 13964Arguments specified in this section will be passed to the code block. These
e66ba1df
BG
13965arguments use standard function call syntax, rather than
13966header argument syntax. For example, a @code{#+CALL:} line that passes the
13967number four to a code block named @code{double}, which declares the header
13968argument @code{:var n=2}, would be written as @code{#+CALL: double(n=4)}.
13969@item <inside header arguments>
13970Inside header arguments are passed through and applied to the named code
13971block. These arguments use header argument syntax rather than standard
13972function call syntax. Inside header arguments affect how the code block is
13973evaluated. For example, @code{[:results output]} will collect the results of
13974everything printed to @code{STDOUT} during execution of the code block.
13975@item <end header arguments>
13976End header arguments are applied to the calling instance and do not affect
13977evaluation of the named code block. They affect how the results are
13978incorporated into the Org mode buffer and how the call line is exported. For
13979example, @code{:results html} will insert the results of the call line
13980evaluation in the Org buffer, wrapped in a @code{BEGIN_HTML:} block.
13981
13982For more examples of passing header arguments to @code{#+CALL:} lines see
ce57c2fe
BG
13983@ref{Header arguments in function calls}.
13984@end table
86fbb8ca
CD
13985
13986@node Library of Babel, Languages, Evaluating code blocks, Working With Source Code
13987@section Library of Babel
13988@cindex babel, library of
13989@cindex source code, library
13990@cindex code block, library
13991
e66ba1df
BG
13992The ``Library of Babel'' consists of code blocks that can be called from any
13993Org mode file. Code blocks defined in the ``Library of Babel'' can be called
13994remotely as if they were in the current Org mode buffer (see @ref{Evaluating
13995code blocks} for information on the syntax of remote code block evaluation).
13996
13997
13998The central repository of code blocks in the ``Library of Babel'' is housed
13999in an Org mode file located in the @samp{contrib} directory of Org mode.
14000
14001Users can add code blocks they believe to be generally useful to their
14002``Library of Babel.'' The code blocks can be stored in any Org mode file and
14003then loaded into the library with @code{org-babel-lob-ingest}.
86fbb8ca 14004
86fbb8ca 14005
afe98dfa 14006@kindex C-c C-v i
e66ba1df 14007Code blocks located in any Org mode file can be loaded into the ``Library of
86fbb8ca 14008Babel'' with the @code{org-babel-lob-ingest} function, bound to @kbd{C-c C-v
afe98dfa 14009i}.
86fbb8ca
CD
14010
14011@node Languages, Header arguments, Library of Babel, Working With Source Code
14012@section Languages
14013@cindex babel, languages
14014@cindex source code, languages
14015@cindex code block, languages
14016
14017Code blocks in the following languages are supported.
14018
14019@multitable @columnfractions 0.28 0.3 0.22 0.2
14020@item @b{Language} @tab @b{Identifier} @tab @b{Language} @tab @b{Identifier}
ce57c2fe
BG
14021@item Asymptote @tab asymptote @tab Awk @tab awk
14022@item Emacs Calc @tab calc @tab C @tab C
86fbb8ca 14023@item C++ @tab C++ @tab Clojure @tab clojure
acedf35c 14024@item CSS @tab css @tab ditaa @tab ditaa
86fbb8ca
CD
14025@item Graphviz @tab dot @tab Emacs Lisp @tab emacs-lisp
14026@item gnuplot @tab gnuplot @tab Haskell @tab haskell
ce57c2fe
BG
14027@item Java @tab java @tab @tab
14028@item Javascript @tab js @tab LaTeX @tab latex
14029@item Ledger @tab ledger @tab Lisp @tab lisp
14030@item Lilypond @tab lilypond @tab MATLAB @tab matlab
86fbb8ca 14031@item Mscgen @tab mscgen @tab Objective Caml @tab ocaml
e66ba1df 14032@item Octave @tab octave @tab Org mode @tab org
ce57c2fe
BG
14033@item Oz @tab oz @tab Perl @tab perl
14034@item Plantuml @tab plantuml @tab Python @tab python
86fbb8ca 14035@item R @tab R @tab Ruby @tab ruby
ce57c2fe
BG
14036@item Sass @tab sass @tab Scheme @tab scheme
14037@item GNU Screen @tab screen @tab shell @tab sh
14038@item SQL @tab sql @tab SQLite @tab sqlite
86fbb8ca
CD
14039@end multitable
14040
14041Language-specific documentation is available for some languages. If
14042available, it can be found at
8223b1d2 14043@uref{http://orgmode.org/worg/org-contrib/babel/languages.html}.
86fbb8ca 14044
271672fa
BG
14045The option @code{org-babel-load-languages} controls which languages are
14046enabled for evaluation (by default only @code{emacs-lisp} is enabled). This
14047variable can be set using the customization interface or by adding code like
14048the following to your emacs configuration.
86fbb8ca
CD
14049
14050@quotation
14051The following disables @code{emacs-lisp} evaluation and enables evaluation of
14052@code{R} code blocks.
14053@end quotation
14054
14055@lisp
14056(org-babel-do-load-languages
14057 'org-babel-load-languages
14058 '((emacs-lisp . nil)
14059 (R . t)))
14060@end lisp
14061
14062It is also possible to enable support for a language by loading the related
14063elisp file with @code{require}.
14064
14065@quotation
14066The following adds support for evaluating @code{clojure} code blocks.
14067@end quotation
14068
14069@lisp
14070(require 'ob-clojure)
14071@end lisp
14072
14073@node Header arguments, Results of evaluation, Languages, Working With Source Code
14074@section Header arguments
14075@cindex code block, header arguments
14076@cindex source code, block header arguments
14077
14078Code block functionality can be configured with header arguments. This
14079section provides an overview of the use of header arguments, and then
14080describes each header argument in detail.
14081
14082@menu
c0468714
GM
14083* Using header arguments:: Different ways to set header arguments
14084* Specific header arguments:: List of header arguments
86fbb8ca
CD
14085@end menu
14086
14087@node Using header arguments, Specific header arguments, Header arguments, Header arguments
14088@subsection Using header arguments
14089
271672fa
BG
14090The values of header arguments can be set in several way. When the header
14091arguments in each layer have been determined, they are combined in order from
14092the first, least specific (having the lowest priority) up to the last, most
14093specific (having the highest priority). A header argument with a higher
14094priority replaces the same header argument specified at lower priority.
86fbb8ca
CD
14095@menu
14096* System-wide header arguments:: Set global default values
c0468714 14097* Language-specific header arguments:: Set default values by language
e66ba1df 14098* Header arguments in Org mode properties:: Set default values for a buffer or heading
271672fa 14099* Language-specific header arguments in Org mode properties:: Set language-specific default values for a buffer or heading
86fbb8ca 14100* Code block specific header arguments:: The most common way to set values
afe98dfa 14101* Header arguments in function calls:: The most specific level
86fbb8ca
CD
14102@end menu
14103
14104
14105@node System-wide header arguments, Language-specific header arguments, Using header arguments, Using header arguments
14106@subsubheading System-wide header arguments
14107@vindex org-babel-default-header-args
271672fa 14108System-wide values of header arguments can be specified by adapting the
86fbb8ca
CD
14109@code{org-babel-default-header-args} variable:
14110
14111@example
14112:session => "none"
14113:results => "replace"
14114:exports => "code"
14115:cache => "no"
14116:noweb => "no"
14117@end example
14118
86fbb8ca
CD
14119For example, the following example could be used to set the default value of
14120@code{:noweb} header arguments to @code{yes}. This would have the effect of
14121expanding @code{:noweb} references by default when evaluating source code
14122blocks.
14123
14124@lisp
14125(setq org-babel-default-header-args
63aa0982 14126 (cons '(:noweb . "yes")
271672fa 14127 (assq-delete-all :noweb org-babel-default-header-args)))
86fbb8ca
CD
14128@end lisp
14129
271672fa 14130@node Language-specific header arguments, Header arguments in Org mode properties, System-wide header arguments, Using header arguments
86fbb8ca 14131@subsubheading Language-specific header arguments
271672fa
BG
14132Each language can define its own set of default header arguments in variable
14133@code{org-babel-default-header-args:<lang>}, where @code{<lang>} is the name
14134of the language. See the language-specific documentation available online at
86fbb8ca
CD
14135@uref{http://orgmode.org/worg/org-contrib/babel}.
14136
271672fa
BG
14137@node Header arguments in Org mode properties, Language-specific header arguments in Org mode properties, Language-specific header arguments, Using header arguments
14138@subsubheading Header arguments in Org mode properties
14139
e66ba1df
BG
14140Buffer-wide header arguments may be specified as properties through the use
14141of @code{#+PROPERTY:} lines placed anywhere in an Org mode file (see
14142@ref{Property syntax}).
86fbb8ca 14143
271672fa
BG
14144For example the following would set @code{session} to @code{*R*} (only for R
14145code blocks), and @code{results} to @code{silent} for every code block in the
14146buffer, ensuring that all execution took place in the same session, and no
14147results would be inserted into the buffer.
86fbb8ca
CD
14148
14149@example
271672fa
BG
14150#+PROPERTY: header-args:R :session *R*
14151#+PROPERTY: header-args :results silent
86fbb8ca
CD
14152@end example
14153
271672fa
BG
14154Header arguments read from Org mode properties can also be set on a
14155per-subtree basis using property drawers (see @ref{Property syntax}).
e66ba1df 14156@vindex org-use-property-inheritance
271672fa
BG
14157When properties are used to set default header arguments, they are always
14158looked up with inheritance, regardless of the value of
14159@code{org-use-property-inheritance}. Properties are evaluated as seen by the
14160outermost call or source block.@footnote{The deprecated syntax for default
14161header argument properties, using the name of the header argument as a
14162property name directly, evaluates the property as seen by the corresponding
da5ecfa9 14163source block definition. This behavior has been kept for backwards
271672fa
BG
14164compatibility.}
14165
14166In the following example the value of
e66ba1df
BG
14167the @code{:cache} header argument will default to @code{yes} in all code
14168blocks in the subtree rooted at the following heading:
86fbb8ca
CD
14169
14170@example
14171* outline header
63aa0982 14172 :PROPERTIES:
271672fa 14173 :header-args: :cache yes
63aa0982 14174 :END:
86fbb8ca
CD
14175@end example
14176
14177@kindex C-c C-x p
14178@vindex org-babel-default-header-args
14179Properties defined in this way override the properties set in
271672fa
BG
14180@code{org-babel-default-header-args} and are applied for all activated
14181languages. It is convenient to use the @code{org-set-property} function
14182bound to @kbd{C-c C-x p} to set properties in Org mode documents.
14183
14184@node Language-specific header arguments in Org mode properties, Code block specific header arguments, Header arguments in Org mode properties, Using header arguments
14185@subsubheading Language-specific header arguments in Org mode properties
14186
14187Language-specific header arguments are also read from properties
14188@code{header-args:<lang>} where @code{<lang>} is the name of the language
14189targeted. As an example
14190
14191@example
14192* Heading
14193 :PROPERTIES:
14194 :header-args:clojure: :session *clojure-1*
14195 :header-args:R: :session *R*
14196 :END:
14197** Subheading
14198 :PROPERTIES:
14199 :header-args:clojure: :session *clojure-2*
14200 :END:
14201@end example
14202
14203would independently set a default session header argument for R and clojure
14204for calls and source blocks under subtree ``Heading'' and change to a
14205different clojure setting for evaluations under subtree ``Subheading'', while
14206the R session is inherited from ``Heading'' and therefore unchanged.
86fbb8ca 14207
271672fa 14208@node Code block specific header arguments, Header arguments in function calls, Language-specific header arguments in Org mode properties, Using header arguments
86fbb8ca
CD
14209@subsubheading Code block specific header arguments
14210
14211The most common way to assign values to header arguments is at the
14212code block level. This can be done by listing a sequence of header
e66ba1df 14213arguments and their values as part of the @code{#+BEGIN_SRC} line.
86fbb8ca
CD
14214Properties set in this way override both the values of
14215@code{org-babel-default-header-args} and header arguments specified as
14216properties. In the following example, the @code{:results} header argument
14217is set to @code{silent}, meaning the results of execution will not be
14218inserted in the buffer, and the @code{:exports} header argument is set to
14219@code{code}, meaning only the body of the code block will be
e66ba1df 14220preserved on export to HTML or @LaTeX{}.
86fbb8ca
CD
14221
14222@example
e66ba1df
BG
14223#+NAME: factorial
14224#+BEGIN_SRC haskell :results silent :exports code :var n=0
86fbb8ca
CD
14225fac 0 = 1
14226fac n = n * fac (n-1)
e66ba1df 14227#+END_SRC
86fbb8ca 14228@end example
e66ba1df 14229Similarly, it is possible to set header arguments for inline code blocks
86fbb8ca
CD
14230
14231@example
14232src_haskell[:exports both]@{fac 5@}
14233@end example
14234
e66ba1df
BG
14235Code block header arguments can span multiple lines using @code{#+HEADER:} or
14236@code{#+HEADERS:} lines preceding a code block or nested between the
14237@code{#+NAME:} line and the @code{#+BEGIN_SRC} line of a named code block.
14238@cindex #+HEADER:
14239@cindex #+HEADERS:
ce57c2fe
BG
14240
14241Multi-line header arguments on an un-named code block:
63aa0982 14242
ce57c2fe 14243@example
e66ba1df
BG
14244 #+HEADERS: :var data1=1
14245 #+BEGIN_SRC emacs-lisp :var data2=2
ce57c2fe 14246 (message "data1:%S, data2:%S" data1 data2)
e66ba1df 14247 #+END_SRC
ce57c2fe 14248
8223b1d2 14249 #+RESULTS:
ce57c2fe
BG
14250 : data1:1, data2:2
14251@end example
14252
14253Multi-line header arguments on a named code block:
63aa0982 14254
ce57c2fe 14255@example
e66ba1df
BG
14256 #+NAME: named-block
14257 #+HEADER: :var data=2
14258 #+BEGIN_SRC emacs-lisp
ce57c2fe 14259 (message "data:%S" data)
e66ba1df 14260 #+END_SRC
ce57c2fe 14261
8223b1d2 14262 #+RESULTS: named-block
ce57c2fe
BG
14263 : data:2
14264@end example
14265
afe98dfa
CD
14266@node Header arguments in function calls, , Code block specific header arguments, Using header arguments
14267@comment node-name, next, previous, up
14268@subsubheading Header arguments in function calls
14269
14270At the most specific level, header arguments for ``Library of Babel'' or
e66ba1df
BG
14271@code{#+CALL:} lines can be set as shown in the two examples below. For more
14272information on the structure of @code{#+CALL:} lines see @ref{Evaluating code
ce57c2fe 14273blocks}.
86fbb8ca 14274
ce57c2fe 14275The following will apply the @code{:exports results} header argument to the
e66ba1df 14276evaluation of the @code{#+CALL:} line.
63aa0982 14277
86fbb8ca 14278@example
e66ba1df 14279#+CALL: factorial(n=5) :exports results
86fbb8ca
CD
14280@end example
14281
ce57c2fe
BG
14282The following will apply the @code{:session special} header argument to the
14283evaluation of the @code{factorial} code block.
63aa0982 14284
ce57c2fe 14285@example
e66ba1df 14286#+CALL: factorial[:session special](n=5)
ce57c2fe
BG
14287@end example
14288
86fbb8ca
CD
14289@node Specific header arguments, , Using header arguments, Header arguments
14290@subsection Specific header arguments
e66ba1df
BG
14291Header arguments consist of an initial colon followed by the name of the
14292argument in lowercase letters. The following header arguments are defined:
86fbb8ca
CD
14293
14294@menu
c0468714
GM
14295* var:: Pass arguments to code blocks
14296* results:: Specify the type of results and how they will
86fbb8ca 14297 be collected and handled
c0468714 14298* file:: Specify a path for file output
8223b1d2 14299* file-desc:: Specify a description for file results
c0468714 14300* dir:: Specify the default (possibly remote)
86fbb8ca 14301 directory for code block execution
c0468714
GM
14302* exports:: Export code and/or results
14303* tangle:: Toggle tangling and specify file name
ce57c2fe
BG
14304* mkdirp:: Toggle creation of parent directories of target
14305 files during tangling
86fbb8ca
CD
14306* comments:: Toggle insertion of comments in tangled
14307 code files
ce57c2fe
BG
14308* padline:: Control insertion of padding lines in tangled
14309 code files
afe98dfa
CD
14310* no-expand:: Turn off variable assignment and noweb
14311 expansion during tangling
c0468714
GM
14312* session:: Preserve the state of code evaluation
14313* noweb:: Toggle expansion of noweb references
ce57c2fe 14314* noweb-ref:: Specify block's noweb reference resolution target
153ae947 14315* noweb-sep:: String used to separate noweb references
c0468714 14316* cache:: Avoid re-evaluating unchanged code blocks
ce57c2fe 14317* sep:: Delimiter for writing tabular results outside Org
c0468714
GM
14318* hlines:: Handle horizontal lines in tables
14319* colnames:: Handle column names in tables
14320* rownames:: Handle row names in tables
14321* shebang:: Make tangled files executable
271672fa 14322* tangle-mode:: Set permission of tangled files
86fbb8ca 14323* eval:: Limit evaluation of specific code blocks
8223b1d2 14324* wrap:: Mark source block evaluation results
271672fa
BG
14325* post:: Post processing of code block results
14326* prologue:: Text to prepend to code block body
14327* epilogue:: Text to append to code block body
86fbb8ca
CD
14328@end menu
14329
ce57c2fe
BG
14330Additional header arguments are defined on a language-specific basis, see
14331@ref{Languages}.
14332
86fbb8ca
CD
14333@node var, results, Specific header arguments, Specific header arguments
14334@subsubsection @code{:var}
14335The @code{:var} header argument is used to pass arguments to code blocks.
14336The specifics of how arguments are included in a code block vary by language;
ce57c2fe 14337these are addressed in the language-specific documentation. However, the
e66ba1df
BG
14338syntax used to specify arguments is the same across all languages. In every
14339case, variables require a default value when they are declared.
14340
14341The values passed to arguments can either be literal values, references, or
271672fa
BG
14342Emacs Lisp code (see @ref{var, Emacs Lisp evaluation of variables}).
14343References include anything in the Org mode file that takes a @code{#+NAME:}
14344or @code{#+RESULTS:} line: tables, lists, @code{#+BEGIN_EXAMPLE} blocks,
14345other code blocks and the results of other code blocks.
14346
14347Note: When a reference is made to another code block, the referenced block
14348will be evaluated unless it has current cached results (see @ref{cache}).
86fbb8ca 14349
e66ba1df
BG
14350Argument values can be indexed in a manner similar to arrays (see @ref{var,
14351Indexable variable values}).
86fbb8ca
CD
14352
14353The following syntax is used to pass arguments to code blocks using the
14354@code{:var} header argument.
14355
14356@example
14357:var name=assign
14358@end example
14359
e66ba1df
BG
14360The argument, @code{assign}, can either be a literal value, such as a string
14361@samp{"string"} or a number @samp{9}, or a reference to a table, a list, a
14362literal example, another code block (with or without arguments), or the
14363results of evaluating another code block.
86fbb8ca 14364
e66ba1df
BG
14365Here are examples of passing values by reference:
14366
14367@table @dfn
86fbb8ca 14368
e66ba1df 14369@item table
271672fa 14370an Org mode table named with either a @code{#+NAME:} line
63aa0982 14371
86fbb8ca 14372@example
271672fa 14373#+NAME: example-table
86fbb8ca
CD
14374| 1 |
14375| 2 |
14376| 3 |
14377| 4 |
14378
e66ba1df
BG
14379#+NAME: table-length
14380#+BEGIN_SRC emacs-lisp :var table=example-table
86fbb8ca 14381(length table)
e66ba1df 14382#+END_SRC
86fbb8ca 14383
8223b1d2 14384#+RESULTS: table-length
86fbb8ca
CD
14385: 4
14386@end example
14387
e66ba1df
BG
14388@item list
14389a simple list named with a @code{#+NAME:} line (note that nesting is not
14390carried through to the source code block)
86fbb8ca
CD
14391
14392@example
e66ba1df
BG
14393#+NAME: example-list
14394 - simple
14395 - not
14396 - nested
14397 - list
14398
14399#+BEGIN_SRC emacs-lisp :var x=example-list
14400 (print x)
14401#+END_SRC
14402
8223b1d2 14403#+RESULTS:
e66ba1df
BG
14404| simple | list |
14405@end example
14406
14407@item code block without arguments
14408a code block name (from the example above), as assigned by @code{#+NAME:},
14409optionally followed by parentheses
14410
14411@example
14412#+BEGIN_SRC emacs-lisp :var length=table-length()
86fbb8ca 14413(* 2 length)
e66ba1df 14414#+END_SRC
86fbb8ca 14415
8223b1d2 14416#+RESULTS:
86fbb8ca
CD
14417: 8
14418@end example
14419
e66ba1df
BG
14420@item code block with arguments
14421a code block name, as assigned by @code{#+NAME:}, followed by parentheses and
14422optional arguments passed within the parentheses following the
14423code block name using standard function call syntax
86fbb8ca
CD
14424
14425@example
e66ba1df
BG
14426#+NAME: double
14427#+BEGIN_SRC emacs-lisp :var input=8
86fbb8ca 14428(* 2 input)
e66ba1df 14429#+END_SRC
86fbb8ca 14430
8223b1d2 14431#+RESULTS: double
86fbb8ca
CD
14432: 16
14433
e66ba1df
BG
14434#+NAME: squared
14435#+BEGIN_SRC emacs-lisp :var input=double(input=1)
86fbb8ca 14436(* input input)
e66ba1df 14437#+END_SRC
86fbb8ca 14438
8223b1d2 14439#+RESULTS: squared
86fbb8ca
CD
14440: 4
14441@end example
e66ba1df
BG
14442
14443@item literal example
14444a literal example block named with a @code{#+NAME:} line
14445
14446@example
14447#+NAME: literal-example
14448#+BEGIN_EXAMPLE
14449A literal example
14450on two lines
14451#+END_EXAMPLE
14452
14453#+NAME: read-literal-example
14454#+BEGIN_SRC emacs-lisp :var x=literal-example
14455 (concatenate 'string x " for you.")
14456#+END_SRC
14457
8223b1d2 14458#+RESULTS: read-literal-example
e66ba1df
BG
14459: A literal example
14460: on two lines for you.
14461
14462@end example
14463
14464@end table
86fbb8ca 14465
86fbb8ca
CD
14466@subsubheading Indexable variable values
14467It is possible to reference portions of variable values by ``indexing'' into
14468the variables. Indexes are 0 based with negative values counting back from
14469the end. If an index is separated by @code{,}s then each subsequent section
ce57c2fe
BG
14470will index into the next deepest nesting or dimension of the value. Note
14471that this indexing occurs @emph{before} other table related header arguments
14472like @code{:hlines}, @code{:colnames} and @code{:rownames} are applied. The
86fbb8ca
CD
14473following example assigns the last cell of the first row the table
14474@code{example-table} to the variable @code{data}:
14475
14476@example
e66ba1df 14477#+NAME: example-table
86fbb8ca
CD
14478| 1 | a |
14479| 2 | b |
14480| 3 | c |
14481| 4 | d |
14482
e66ba1df 14483#+BEGIN_SRC emacs-lisp :var data=example-table[0,-1]
86fbb8ca 14484 data
e66ba1df 14485#+END_SRC
86fbb8ca 14486
8223b1d2 14487#+RESULTS:
86fbb8ca
CD
14488: a
14489@end example
14490
14491Ranges of variable values can be referenced using two integers separated by a
14492@code{:}, in which case the entire inclusive range is referenced. For
14493example the following assigns the middle three rows of @code{example-table}
14494to @code{data}.
14495
14496@example
e66ba1df 14497#+NAME: example-table
86fbb8ca
CD
14498| 1 | a |
14499| 2 | b |
14500| 3 | c |
14501| 4 | d |
14502| 5 | 3 |
14503
e66ba1df 14504#+BEGIN_SRC emacs-lisp :var data=example-table[1:3]
86fbb8ca 14505 data
e66ba1df 14506#+END_SRC
86fbb8ca 14507
8223b1d2 14508#+RESULTS:
86fbb8ca
CD
14509| 2 | b |
14510| 3 | c |
14511| 4 | d |
14512@end example
14513
14514Additionally, an empty index, or the single character @code{*}, are both
14515interpreted to mean the entire range and as such are equivalent to
14516@code{0:-1}, as shown in the following example in which the entire first
14517column is referenced.
14518
14519@example
e66ba1df 14520#+NAME: example-table
86fbb8ca
CD
14521| 1 | a |
14522| 2 | b |
14523| 3 | c |
14524| 4 | d |
14525
e66ba1df 14526#+BEGIN_SRC emacs-lisp :var data=example-table[,0]
86fbb8ca 14527 data
e66ba1df 14528#+END_SRC
86fbb8ca 14529
8223b1d2 14530#+RESULTS:
86fbb8ca
CD
14531| 1 | 2 | 3 | 4 |
14532@end example
14533
14534It is possible to index into the results of code blocks as well as tables.
14535Any number of dimensions can be indexed. Dimensions are separated from one
14536another by commas, as shown in the following example.
14537
14538@example
e66ba1df
BG
14539#+NAME: 3D
14540#+BEGIN_SRC emacs-lisp
86fbb8ca
CD
14541 '(((1 2 3) (4 5 6) (7 8 9))
14542 ((10 11 12) (13 14 15) (16 17 18))
14543 ((19 20 21) (22 23 24) (25 26 27)))
e66ba1df 14544#+END_SRC
86fbb8ca 14545
e66ba1df 14546#+BEGIN_SRC emacs-lisp :var data=3D[1,,1]
86fbb8ca 14547 data
e66ba1df 14548#+END_SRC
86fbb8ca 14549
8223b1d2 14550#+RESULTS:
86fbb8ca
CD
14551| 11 | 14 | 17 |
14552@end example
14553
ce57c2fe
BG
14554@subsubheading Emacs Lisp evaluation of variables
14555
14556Emacs lisp code can be used to initialize variable values. When a variable
e66ba1df
BG
14557value starts with @code{(}, @code{[}, @code{'} or @code{`} it will be
14558evaluated as Emacs Lisp and the result of the evaluation will be assigned as
14559the variable value. The following example demonstrates use of this
14560evaluation to reliably pass the file-name of the Org mode buffer to a code
14561block---note that evaluation of header arguments is guaranteed to take place
14562in the original Org mode file, while there is no such guarantee for
14563evaluation of the code block body.
ce57c2fe
BG
14564
14565@example
e66ba1df 14566#+BEGIN_SRC sh :var filename=(buffer-file-name) :exports both
ce57c2fe 14567 wc -w $filename
e66ba1df 14568#+END_SRC
ce57c2fe
BG
14569@end example
14570
14571Note that values read from tables and lists will not be evaluated as
14572Emacs Lisp, as shown in the following example.
14573
14574@example
e66ba1df 14575#+NAME: table
ce57c2fe
BG
14576| (a b c) |
14577
e66ba1df
BG
14578#+HEADERS: :var data=table[0,0]
14579#+BEGIN_SRC perl
ce57c2fe 14580 $data
e66ba1df 14581#+END_SRC
ce57c2fe 14582
8223b1d2 14583#+RESULTS:
ce57c2fe
BG
14584: (a b c)
14585@end example
14586
86fbb8ca
CD
14587@node results, file, var, Specific header arguments
14588@subsubsection @code{:results}
14589
271672fa 14590There are four classes of @code{:results} header argument. Only one option
acedf35c 14591per class may be supplied per code block.
86fbb8ca
CD
14592
14593@itemize @bullet
14594@item
14595@b{collection} header arguments specify how the results should be collected
14596from the code block
14597@item
14598@b{type} header arguments specify what type of result the code block will
271672fa
BG
14599return---which has implications for how they will be processed before
14600insertion into the Org mode buffer
14601@item
14602@b{format} header arguments specify what type of result the code block will
86fbb8ca 14603return---which has implications for how they will be inserted into the
e66ba1df 14604Org mode buffer
86fbb8ca
CD
14605@item
14606@b{handling} header arguments specify how the results of evaluating the code
14607block should be handled.
14608@end itemize
14609
14610@subsubheading Collection
14611The following options are mutually exclusive, and specify how the results
14612should be collected from the code block.
14613
14614@itemize @bullet
14615@item @code{value}
14616This is the default. The result is the value of the last statement in the
14617code block. This header argument places the evaluation in functional
acedf35c 14618mode. Note that in some languages, e.g., Python, use of this result type
86fbb8ca 14619requires that a @code{return} statement be included in the body of the source
ce57c2fe 14620code block. E.g., @code{:results value}.
86fbb8ca
CD
14621@item @code{output}
14622The result is the collection of everything printed to STDOUT during the
14623execution of the code block. This header argument places the
14624evaluation in scripting mode. E.g., @code{:results output}.
14625@end itemize
14626
14627@subsubheading Type
14628
14629The following options are mutually exclusive and specify what type of results
14630the code block will return. By default, results are inserted as either a
14631table or scalar depending on their value.
14632
14633@itemize @bullet
14634@item @code{table}, @code{vector}
e66ba1df 14635The results should be interpreted as an Org mode table. If a single value is
86fbb8ca
CD
14636returned, it will be converted into a table with one row and one column.
14637E.g., @code{:results value table}.
acedf35c 14638@item @code{list}
e66ba1df 14639The results should be interpreted as an Org mode list. If a single scalar
acedf35c 14640value is returned it will be converted into a list with only one element.
86fbb8ca
CD
14641@item @code{scalar}, @code{verbatim}
14642The results should be interpreted literally---they will not be
e66ba1df 14643converted into a table. The results will be inserted into the Org mode
86fbb8ca
CD
14644buffer as quoted text. E.g., @code{:results value verbatim}.
14645@item @code{file}
14646The results will be interpreted as the path to a file, and will be inserted
e66ba1df 14647into the Org mode buffer as a file link. E.g., @code{:results value file}.
271672fa
BG
14648@end itemize
14649
14650@subsubheading Format
14651
14652The following options are mutually exclusive and specify what type of results
14653the code block will return. By default, results are inserted according to the
14654type as specified above.
14655
14656@itemize @bullet
8223b1d2 14657@item @code{raw}
e66ba1df 14658The results are interpreted as raw Org mode code and are inserted directly
86fbb8ca 14659into the buffer. If the results look like a table they will be aligned as
e66ba1df 14660such by Org mode. E.g., @code{:results value raw}.
8223b1d2
BG
14661@item @code{org}
14662The results are will be enclosed in a @code{BEGIN_SRC org} block.
14663They are not comma-escaped by default but they will be if you hit @kbd{TAB}
14664in the block and/or if you export the file. E.g., @code{:results value org}.
86fbb8ca 14665@item @code{html}
8223b1d2 14666Results are assumed to be HTML and will be enclosed in a @code{BEGIN_HTML}
86fbb8ca
CD
14667block. E.g., @code{:results value html}.
14668@item @code{latex}
8223b1d2 14669Results assumed to be @LaTeX{} and are enclosed in a @code{BEGIN_LaTeX} block.
86fbb8ca
CD
14670E.g., @code{:results value latex}.
14671@item @code{code}
fac916bf 14672Result are assumed to be parsable code and are enclosed in a code block.
86fbb8ca
CD
14673E.g., @code{:results value code}.
14674@item @code{pp}
14675The result is converted to pretty-printed code and is enclosed in a code
acedf35c 14676block. This option currently supports Emacs Lisp, Python, and Ruby. E.g.,
86fbb8ca 14677@code{:results value pp}.
8223b1d2 14678@item @code{drawer}
153ae947 14679The result is wrapped in a RESULTS drawer. This can be useful for
ce57c2fe 14680inserting @code{raw} or @code{org} syntax results in such a way that their
153ae947 14681extent is known and they can be automatically removed or replaced.
86fbb8ca
CD
14682@end itemize
14683
14684@subsubheading Handling
14685The following results options indicate what happens with the
14686results once they are collected.
14687
14688@itemize @bullet
14689@item @code{silent}
14690The results will be echoed in the minibuffer but will not be inserted into
e66ba1df 14691the Org mode buffer. E.g., @code{:results output silent}.
86fbb8ca
CD
14692@item @code{replace}
14693The default value. Any existing results will be removed, and the new results
e66ba1df 14694will be inserted into the Org mode buffer in their place. E.g.,
86fbb8ca
CD
14695@code{:results output replace}.
14696@item @code{append}
14697If there are pre-existing results of the code block then the new results will
14698be appended to the existing results. Otherwise the new results will be
14699inserted as with @code{replace}.
14700@item @code{prepend}
14701If there are pre-existing results of the code block then the new results will
14702be prepended to the existing results. Otherwise the new results will be
14703inserted as with @code{replace}.
14704@end itemize
14705
8223b1d2 14706@node file, file-desc, results, Specific header arguments
86fbb8ca
CD
14707@subsubsection @code{:file}
14708
ce57c2fe 14709The header argument @code{:file} is used to specify an external file in which
e66ba1df 14710to save code block results. After code block evaluation an Org mode style
ce57c2fe 14711@code{[[file:]]} link (see @ref{Link format}) to the file will be inserted
e66ba1df 14712into the Org mode buffer. Some languages including R, gnuplot, dot, and
ce57c2fe
BG
14713ditaa provide special handling of the @code{:file} header argument
14714automatically wrapping the code block body in the boilerplate code required
14715to save output to the specified file. This is often useful for saving
14716graphical output of a code block to the specified file.
86fbb8ca 14717
ce57c2fe
BG
14718The argument to @code{:file} should be either a string specifying the path to
14719a file, or a list of two strings in which case the first element of the list
14720should be the path to a file and the second a description for the link.
86fbb8ca 14721
8223b1d2
BG
14722@node file-desc, dir, file, Specific header arguments
14723@subsubsection @code{:file-desc}
14724
14725The value of the @code{:file-desc} header argument is used to provide a
14726description for file code block results which are inserted as Org mode links
14727(see @ref{Link format}). If the @code{:file-desc} header argument is given
14728with no value the link path will be placed in both the ``link'' and the
14729``description'' portion of the Org mode link.
14730
14731@node dir, exports, file-desc, Specific header arguments
86fbb8ca
CD
14732@subsubsection @code{:dir} and remote execution
14733
14734While the @code{:file} header argument can be used to specify the path to the
14735output file, @code{:dir} specifies the default directory during code block
ce57c2fe
BG
14736execution. If it is absent, then the directory associated with the current
14737buffer is used. In other words, supplying @code{:dir path} temporarily has
271672fa 14738the same effect as changing the current directory with @kbd{M-x cd path RET}, and
ce57c2fe 14739then not supplying @code{:dir}. Under the surface, @code{:dir} simply sets
86fbb8ca
CD
14740the value of the Emacs variable @code{default-directory}.
14741
14742When using @code{:dir}, you should supply a relative path for file output
1df7defd 14743(e.g., @code{:file myfile.jpg} or @code{:file results/myfile.jpg}) in which
86fbb8ca
CD
14744case that path will be interpreted relative to the default directory.
14745
acedf35c
CD
14746In other words, if you want your plot to go into a folder called @file{Work}
14747in your home directory, you could use
86fbb8ca
CD
14748
14749@example
e66ba1df 14750#+BEGIN_SRC R :file myplot.png :dir ~/Work
86fbb8ca 14751matplot(matrix(rnorm(100), 10), type="l")
e66ba1df 14752#+END_SRC
86fbb8ca
CD
14753@end example
14754
14755@subsubheading Remote execution
14756A directory on a remote machine can be specified using tramp file syntax, in
ce57c2fe 14757which case the code will be evaluated on the remote machine. An example is
86fbb8ca
CD
14758
14759@example
e66ba1df 14760#+BEGIN_SRC R :file plot.png :dir /dand@@yakuba.princeton.edu:
86fbb8ca 14761plot(1:10, main=system("hostname", intern=TRUE))
e66ba1df 14762#+END_SRC
86fbb8ca
CD
14763@end example
14764
e66ba1df 14765Text results will be returned to the local Org mode buffer as usual, and file
86fbb8ca 14766output will be created on the remote machine with relative paths interpreted
e66ba1df 14767relative to the remote directory. An Org mode link to the remote file will be
86fbb8ca
CD
14768created.
14769
14770So, in the above example a plot will be created on the remote machine,
14771and a link of the following form will be inserted in the org buffer:
14772
14773@example
14774[[file:/scp:dand@@yakuba.princeton.edu:/home/dand/plot.png][plot.png]]
14775@end example
14776
14777Most of this functionality follows immediately from the fact that @code{:dir}
14778sets the value of the Emacs variable @code{default-directory}, thanks to
ce57c2fe 14779tramp. Those using XEmacs, or GNU Emacs prior to version 23 may need to
acedf35c 14780install tramp separately in order for these features to work correctly.
86fbb8ca
CD
14781
14782@subsubheading Further points
14783
14784@itemize @bullet
14785@item
14786If @code{:dir} is used in conjunction with @code{:session}, although it will
14787determine the starting directory for a new session as expected, no attempt is
14788currently made to alter the directory associated with an existing session.
14789@item
14790@code{:dir} should typically not be used to create files during export with
ce57c2fe 14791@code{:exports results} or @code{:exports both}. The reason is that, in order
86fbb8ca 14792to retain portability of exported material between machines, during export
e66ba1df 14793links inserted into the buffer will @emph{not} be expanded against @code{default
ce57c2fe 14794directory}. Therefore, if @code{default-directory} is altered using
86fbb8ca
CD
14795@code{:dir}, it is probable that the file will be created in a location to
14796which the link does not point.
14797@end itemize
14798
14799@node exports, tangle, dir, Specific header arguments
14800@subsubsection @code{:exports}
14801
14802The @code{:exports} header argument specifies what should be included in HTML
e66ba1df 14803or @LaTeX{} exports of the Org mode file.
86fbb8ca
CD
14804
14805@itemize @bullet
14806@item @code{code}
14807The default. The body of code is included into the exported file. E.g.,
14808@code{:exports code}.
14809@item @code{results}
ce57c2fe 14810The result of evaluating the code is included in the exported file. E.g.,
86fbb8ca
CD
14811@code{:exports results}.
14812@item @code{both}
ce57c2fe 14813Both the code and results are included in the exported file. E.g.,
86fbb8ca
CD
14814@code{:exports both}.
14815@item @code{none}
14816Nothing is included in the exported file. E.g., @code{:exports none}.
14817@end itemize
14818
ce57c2fe 14819@node tangle, mkdirp, exports, Specific header arguments
86fbb8ca
CD
14820@subsubsection @code{:tangle}
14821
14822The @code{:tangle} header argument specifies whether or not the code
14823block should be included in tangled extraction of source code files.
14824
14825@itemize @bullet
acedf35c 14826@item @code{tangle}
ce57c2fe 14827The code block is exported to a source code file named after the full path
e66ba1df 14828(including the directory) and file name (w/o extension) of the Org mode file.
ce57c2fe 14829E.g., @code{:tangle yes}.
86fbb8ca
CD
14830@item @code{no}
14831The default. The code block is not exported to a source code file.
14832E.g., @code{:tangle no}.
14833@item other
14834Any other string passed to the @code{:tangle} header argument is interpreted
e66ba1df 14835as a path (directory and file name relative to the directory of the Org mode
ce57c2fe 14836file) to which the block will be exported. E.g., @code{:tangle path}.
86fbb8ca
CD
14837@end itemize
14838
ce57c2fe
BG
14839@node mkdirp, comments, tangle, Specific header arguments
14840@subsubsection @code{:mkdirp}
14841
14842The @code{:mkdirp} header argument can be used to create parent directories
14843of tangled files when missing. This can be set to @code{yes} to enable
14844directory creation or to @code{no} to inhibit directory creation.
14845
14846@node comments, padline, mkdirp, Specific header arguments
86fbb8ca
CD
14847@subsubsection @code{:comments}
14848By default code blocks are tangled to source-code files without any insertion
14849of comments beyond those which may already exist in the body of the code
afe98dfa
CD
14850block. The @code{:comments} header argument can be set as follows to control
14851the insertion of extra comments into the tangled code file.
14852
14853@itemize @bullet
14854@item @code{no}
14855The default. No extra comments are inserted during tangling.
14856@item @code{link}
14857The code block is wrapped in comments which contain pointers back to the
14858original Org file from which the code was tangled.
14859@item @code{yes}
14860A synonym for ``link'' to maintain backwards compatibility.
14861@item @code{org}
e66ba1df 14862Include text from the Org mode file as a comment.
afe98dfa
CD
14863The text is picked from the leading context of the tangled code and is
14864limited by the nearest headline or source block as the case may be.
14865@item @code{both}
14866Turns on both the ``link'' and ``org'' comment options.
ce57c2fe
BG
14867@item @code{noweb}
14868Turns on the ``link'' comment option, and additionally wraps expanded noweb
14869references in the code block body in link comments.
afe98dfa 14870@end itemize
86fbb8ca 14871
ce57c2fe
BG
14872@node padline, no-expand, comments, Specific header arguments
14873@subsubsection @code{:padline}
14874Control in insertion of padding lines around code block bodies in tangled
14875code files. The default value is @code{yes} which results in insertion of
14876newlines before and after each tangled code block. The following arguments
14877are accepted.
14878
14879@itemize @bullet
14880@item @code{yes}
14881Insert newlines before and after each code block body in tangled code files.
14882@item @code{no}
14883Do not insert any newline padding in tangled output.
14884@end itemize
14885
14886@node no-expand, session, padline, Specific header arguments
86fbb8ca
CD
14887@subsubsection @code{:no-expand}
14888
14889By default, code blocks are expanded with @code{org-babel-expand-src-block}
14890during tangling. This has the effect of assigning values to variables
14891specified with @code{:var} (see @ref{var}), and of replacing ``noweb''
14892references (see @ref{Noweb reference syntax}) with their targets. The
14893@code{:no-expand} header argument can be used to turn off this behavior.
14894
14895@node session, noweb, no-expand, Specific header arguments
14896@subsubsection @code{:session}
14897
14898The @code{:session} header argument starts a session for an interpreted
14899language where state is preserved.
14900
14901By default, a session is not started.
14902
14903A string passed to the @code{:session} header argument will give the session
14904a name. This makes it possible to run concurrent sessions for each
14905interpreted language.
14906
ce57c2fe 14907@node noweb, noweb-ref, session, Specific header arguments
86fbb8ca
CD
14908@subsubsection @code{:noweb}
14909
8223b1d2
BG
14910The @code{:noweb} header argument controls expansion of ``noweb'' syntax
14911references (see @ref{Noweb reference syntax}) when the code block is
14912evaluated, tangled, or exported. The @code{:noweb} header argument can have
14913one of the five values: @code{no}, @code{yes}, @code{tangle}, or
14914@code{no-export} @code{strip-export}.
86fbb8ca
CD
14915
14916@itemize @bullet
14917@item @code{no}
8223b1d2
BG
14918The default. ``Noweb'' syntax references in the body of the code block will
14919not be expanded before the code block is evaluated, tangled or exported.
14920@item @code{yes}
14921``Noweb'' syntax references in the body of the code block will be
14922expanded before the code block is evaluated, tangled or exported.
acedf35c 14923@item @code{tangle}
8223b1d2
BG
14924``Noweb'' syntax references in the body of the code block will be expanded
14925before the code block is tangled. However, ``noweb'' syntax references will
14926not be expanded when the code block is evaluated or exported.
14927@item @code{no-export}
14928``Noweb'' syntax references in the body of the code block will be expanded
14929before the block is evaluated or tangled. However, ``noweb'' syntax
14930references will not be expanded when the code block is exported.
14931@item @code{strip-export}
14932``Noweb'' syntax references in the body of the code block will be expanded
14933before the block is evaluated or tangled. However, ``noweb'' syntax
271672fa 14934references will be removed when the code block is exported.
8223b1d2
BG
14935@item @code{eval}
14936``Noweb'' syntax references in the body of the code block will only be
14937expanded before the block is evaluated.
86fbb8ca
CD
14938@end itemize
14939
14940@subsubheading Noweb prefix lines
14941Noweb insertions are now placed behind the line prefix of the
14942@code{<<reference>>}.
14943This behavior is illustrated in the following example. Because the
14944@code{<<example>>} noweb reference appears behind the SQL comment syntax,
14945each line of the expanded noweb reference will be commented.
14946
14947This code block:
14948
14949@example
14950-- <<example>>
14951@end example
14952
86fbb8ca
CD
14953expands to:
14954
14955@example
14956-- this is the
14957-- multi-line body of example
14958@end example
14959
14960Note that noweb replacement text that does not contain any newlines will not
14961be affected by this change, so it is still possible to use inline noweb
14962references.
14963
153ae947 14964@node noweb-ref, noweb-sep, noweb, Specific header arguments
ce57c2fe
BG
14965@subsubsection @code{:noweb-ref}
14966When expanding ``noweb'' style references the bodies of all code block with
14967@emph{either} a block name matching the reference name @emph{or} a
14968@code{:noweb-ref} header argument matching the reference name will be
14969concatenated together to form the replacement text.
14970
14971By setting this header argument at the sub-tree or file level, simple code
14972block concatenation may be achieved. For example, when tangling the
e66ba1df
BG
14973following Org mode file, the bodies of code blocks will be concatenated into
14974the resulting pure code file@footnote{(The example needs property inheritance
14975to be turned on for the @code{noweb-ref} property, see @ref{Property
14976inheritance}).}.
ce57c2fe
BG
14977
14978@example
e66ba1df 14979 #+BEGIN_SRC sh :tangle yes :noweb yes :shebang #!/bin/sh
ce57c2fe 14980 <<fullest-disk>>
e66ba1df 14981 #+END_SRC
ce57c2fe
BG
14982 * the mount point of the fullest disk
14983 :PROPERTIES:
14984 :noweb-ref: fullest-disk
14985 :END:
14986
14987 ** query all mounted disks
e66ba1df 14988 #+BEGIN_SRC sh
ce57c2fe 14989 df \
e66ba1df 14990 #+END_SRC
ce57c2fe
BG
14991
14992 ** strip the header row
e66ba1df 14993 #+BEGIN_SRC sh
ce57c2fe 14994 |sed '1d' \
e66ba1df 14995 #+END_SRC
ce57c2fe
BG
14996
14997 ** sort by the percent full
e66ba1df 14998 #+BEGIN_SRC sh
ce57c2fe 14999 |awk '@{print $5 " " $6@}'|sort -n |tail -1 \
e66ba1df 15000 #+END_SRC
ce57c2fe
BG
15001
15002 ** extract the mount point
e66ba1df 15003 #+BEGIN_SRC sh
ce57c2fe 15004 |awk '@{print $2@}'
e66ba1df 15005 #+END_SRC
ce57c2fe
BG
15006@end example
15007
153ae947
BG
15008The @code{:noweb-sep} (see @ref{noweb-sep}) header argument holds the string
15009used to separate accumulate noweb references like those above. By default a
15010newline is used.
15011
15012@node noweb-sep, cache, noweb-ref, Specific header arguments
15013@subsubsection @code{:noweb-sep}
15014
15015The @code{:noweb-sep} header argument holds the string used to separate
15016accumulate noweb references (see @ref{noweb-ref}). By default a newline is
15017used.
15018
15019@node cache, sep, noweb-sep, Specific header arguments
86fbb8ca
CD
15020@subsubsection @code{:cache}
15021
15022The @code{:cache} header argument controls the use of in-buffer caching of
15023the results of evaluating code blocks. It can be used to avoid re-evaluating
153ae947
BG
15024unchanged code blocks. Note that the @code{:cache} header argument will not
15025attempt to cache results when the @code{:session} header argument is used,
15026because the results of the code block execution may be stored in the session
8223b1d2 15027outside of the Org mode buffer. The @code{:cache} header argument can have
153ae947 15028one of two values: @code{yes} or @code{no}.
86fbb8ca
CD
15029
15030@itemize @bullet
15031@item @code{no}
15032The default. No caching takes place, and the code block will be evaluated
15033every time it is called.
15034@item @code{yes}
acedf35c 15035Every time the code block is run a SHA1 hash of the code and arguments
86fbb8ca 15036passed to the block will be generated. This hash is packed into the
8223b1d2 15037@code{#+RESULTS:} line and will be checked on subsequent
86fbb8ca
CD
15038executions of the code block. If the code block has not
15039changed since the last time it was evaluated, it will not be re-evaluated.
15040@end itemize
15041
ce57c2fe
BG
15042Code block caches notice if the value of a variable argument
15043to the code block has changed. If this is the case, the cache is
15044invalidated and the code block is re-run. In the following example,
15045@code{caller} will not be re-run unless the results of @code{random} have
15046changed since it was last run.
15047
15048@example
e66ba1df
BG
15049 #+NAME: random
15050 #+BEGIN_SRC R :cache yes
ce57c2fe 15051 runif(1)
e66ba1df 15052 #+END_SRC
ce57c2fe 15053
8223b1d2 15054 #+RESULTS[a2a72cd647ad44515fab62e144796432793d68e1]: random
ce57c2fe
BG
15055 0.4659510825295
15056
e66ba1df
BG
15057 #+NAME: caller
15058 #+BEGIN_SRC emacs-lisp :var x=random :cache yes
ce57c2fe 15059 x
e66ba1df 15060 #+END_SRC
ce57c2fe 15061
8223b1d2 15062 #+RESULTS[bec9c8724e397d5df3b696502df3ed7892fc4f5f]: caller
ce57c2fe
BG
15063 0.254227238707244
15064@end example
15065
15066@node sep, hlines, cache, Specific header arguments
15067@subsubsection @code{:sep}
15068
15069The @code{:sep} header argument can be used to control the delimiter used
e66ba1df 15070when writing tabular results out to files external to Org mode. This is used
ce57c2fe
BG
15071either when opening tabular results of a code block by calling the
15072@code{org-open-at-point} function bound to @kbd{C-c C-o} on the code block,
15073or when writing code block results to an external file (see @ref{file})
15074header argument.
15075
15076By default, when @code{:sep} is not specified output tables are tab
15077delimited.
15078
15079@node hlines, colnames, sep, Specific header arguments
86fbb8ca
CD
15080@subsubsection @code{:hlines}
15081
15082Tables are frequently represented with one or more horizontal lines, or
15083hlines. The @code{:hlines} argument to a code block accepts the
15084values @code{yes} or @code{no}, with a default value of @code{no}.
15085
15086@itemize @bullet
15087@item @code{no}
15088Strips horizontal lines from the input table. In most languages this is the
15089desired effect because an @code{hline} symbol is interpreted as an unbound
15090variable and raises an error. Setting @code{:hlines no} or relying on the
15091default value yields the following results.
15092
15093@example
271672fa 15094#+NAME: many-cols
86fbb8ca
CD
15095| a | b | c |
15096|---+---+---|
15097| d | e | f |
15098|---+---+---|
15099| g | h | i |
15100
e66ba1df
BG
15101#+NAME: echo-table
15102#+BEGIN_SRC python :var tab=many-cols
86fbb8ca 15103 return tab
e66ba1df 15104#+END_SRC
86fbb8ca 15105
8223b1d2 15106#+RESULTS: echo-table
86fbb8ca
CD
15107| a | b | c |
15108| d | e | f |
15109| g | h | i |
15110@end example
15111
15112@item @code{yes}
ce57c2fe 15113Leaves hlines in the table. Setting @code{:hlines yes} has this effect.
86fbb8ca
CD
15114
15115@example
271672fa 15116#+NAME: many-cols
86fbb8ca
CD
15117| a | b | c |
15118|---+---+---|
15119| d | e | f |
15120|---+---+---|
15121| g | h | i |
15122
e66ba1df
BG
15123#+NAME: echo-table
15124#+BEGIN_SRC python :var tab=many-cols :hlines yes
86fbb8ca 15125 return tab
e66ba1df 15126#+END_SRC
86fbb8ca 15127
8223b1d2 15128#+RESULTS: echo-table
86fbb8ca
CD
15129| a | b | c |
15130|---+---+---|
15131| d | e | f |
15132|---+---+---|
15133| g | h | i |
15134@end example
15135@end itemize
15136
15137@node colnames, rownames, hlines, Specific header arguments
15138@subsubsection @code{:colnames}
15139
15140The @code{:colnames} header argument accepts the values @code{yes},
15141@code{no}, or @code{nil} for unassigned. The default value is @code{nil}.
e66ba1df 15142Note that the behavior of the @code{:colnames} header argument may differ
271672fa 15143across languages.
86fbb8ca
CD
15144
15145@itemize @bullet
15146@item @code{nil}
15147If an input table looks like it has column names
15148(because its second row is an hline), then the column
15149names will be removed from the table before
15150processing, then reapplied to the results.
15151
15152@example
271672fa 15153#+NAME: less-cols
86fbb8ca
CD
15154| a |
15155|---|
15156| b |
15157| c |
15158
e66ba1df
BG
15159#+NAME: echo-table-again
15160#+BEGIN_SRC python :var tab=less-cols
86fbb8ca 15161 return [[val + '*' for val in row] for row in tab]
e66ba1df 15162#+END_SRC
86fbb8ca 15163
8223b1d2 15164#+RESULTS: echo-table-again
86fbb8ca
CD
15165| a |
15166|----|
15167| b* |
15168| c* |
15169@end example
15170
ce57c2fe
BG
15171Please note that column names are not removed before the table is indexed
15172using variable indexing @xref{var, Indexable variable values}.
15173
86fbb8ca
CD
15174@item @code{no}
15175No column name pre-processing takes place
15176
15177@item @code{yes}
15178Column names are removed and reapplied as with @code{nil} even if the table
1df7defd 15179does not ``look like'' it has column names (i.e., the second row is not an
86fbb8ca
CD
15180hline)
15181@end itemize
15182
15183@node rownames, shebang, colnames, Specific header arguments
15184@subsubsection @code{:rownames}
15185
271672fa
BG
15186The @code{:rownames} header argument can take on the values @code{yes} or
15187@code{no}, with a default value of @code{no}. Note that Emacs Lisp code
15188blocks ignore the @code{:rownames} header argument entirely given the ease
15189with which tables with row names may be handled directly in Emacs Lisp.
86fbb8ca
CD
15190
15191@itemize @bullet
15192@item @code{no}
15193No row name pre-processing will take place.
15194
15195@item @code{yes}
15196The first column of the table is removed from the table before processing,
15197and is then reapplied to the results.
15198
15199@example
271672fa 15200#+NAME: with-rownames
86fbb8ca
CD
15201| one | 1 | 2 | 3 | 4 | 5 |
15202| two | 6 | 7 | 8 | 9 | 10 |
15203
e66ba1df
BG
15204#+NAME: echo-table-once-again
15205#+BEGIN_SRC python :var tab=with-rownames :rownames yes
86fbb8ca 15206 return [[val + 10 for val in row] for row in tab]
e66ba1df 15207#+END_SRC
86fbb8ca 15208
8223b1d2 15209#+RESULTS: echo-table-once-again
86fbb8ca
CD
15210| one | 11 | 12 | 13 | 14 | 15 |
15211| two | 16 | 17 | 18 | 19 | 20 |
15212@end example
ce57c2fe
BG
15213
15214Please note that row names are not removed before the table is indexed using
15215variable indexing @xref{var, Indexable variable values}.
15216
86fbb8ca
CD
15217@end itemize
15218
271672fa 15219@node shebang, tangle-mode, rownames, Specific header arguments
86fbb8ca
CD
15220@subsubsection @code{:shebang}
15221
15222Setting the @code{:shebang} header argument to a string value
1df7defd 15223(e.g., @code{:shebang "#!/bin/bash"}) causes the string to be inserted as the
86fbb8ca
CD
15224first line of any tangled file holding the code block, and the file
15225permissions of the tangled file are set to make it executable.
15226
271672fa
BG
15227
15228@node tangle-mode, eval, shebang, Specific header arguments
15229@subsubsection @code{:tangle-mode}
15230
15231The @code{tangle-mode} header argument controls the permission set on tangled
15232files. The value of this header argument will be passed to
15233@code{set-file-modes}. For example, to set a tangled file as read only use
15234@code{:tangle-mode (identity #o444)}, or to set a tangled file as executable
15235use @code{:tangle-mode (identity #o755)}. Blocks with @code{shebang}
15236(@ref{shebang}) header arguments will automatically be made executable unless
15237the @code{tangle-mode} header argument is also used. The behavior is
15238undefined if multiple code blocks with different values for the
15239@code{tangle-mode} header argument are tangled to the same file.
15240
15241@node eval, wrap, tangle-mode, Specific header arguments
86fbb8ca
CD
15242@subsubsection @code{:eval}
15243The @code{:eval} header argument can be used to limit the evaluation of
e66ba1df
BG
15244specific code blocks. The @code{:eval} header argument can be useful for
15245protecting against the evaluation of dangerous code blocks or to ensure that
15246evaluation will require a query regardless of the value of the
15247@code{org-confirm-babel-evaluate} variable. The possible values of
15248@code{:eval} and their effects are shown below.
15249
15250@table @code
15251@item never or no
15252The code block will not be evaluated under any circumstances.
15253@item query
15254Evaluation of the code block will require a query.
15255@item never-export or no-export
15256The code block will not be evaluated during export but may still be called
15257interactively.
15258@item query-export
15259Evaluation of the code block during export will require a query.
15260@end table
86fbb8ca 15261
ce57c2fe
BG
15262If this header argument is not set then evaluation is determined by the value
15263of the @code{org-confirm-babel-evaluate} variable see @ref{Code evaluation
15264security}.
15265
271672fa 15266@node wrap, post, eval, Specific header arguments
8223b1d2
BG
15267@subsubsection @code{:wrap}
15268The @code{:wrap} header argument is used to mark the results of source block
15269evaluation. The header argument can be passed a string that will be appended
15270to @code{#+BEGIN_} and @code{#+END_}, which will then be used to wrap the
15271results. If not string is specified then the results will be wrapped in a
15272@code{#+BEGIN/END_RESULTS} block.
15273
271672fa
BG
15274@node post, prologue, wrap, Specific header arguments
15275@subsubsection @code{:post}
15276The @code{:post} header argument is used to post-process the results of a
15277code block execution. When a post argument is given, the results of the code
15278block will temporarily be bound to the @code{*this*} variable. This variable
15279may then be included in header argument forms such as those used in @ref{var}
15280header argument specifications allowing passing of results to other code
15281blocks, or direct execution via Emacs Lisp.
15282
15283The following example illustrates the usage of the @code{:post} header
15284argument.
15285
15286@example
15287#+name: attr_wrap
15288#+begin_src sh :var data="" :var width="\\textwidth" :results output
15289 echo "#+ATTR_LATEX :width $width"
15290 echo "$data"
15291#+end_src
15292
15293#+header: :file /tmp/it.png
15294#+begin_src dot :post attr_wrap(width="5cm", data=*this*) :results drawer
15295 digraph@{
15296 a -> b;
15297 b -> c;
15298 c -> a;
15299 @}
15300#+end_src
15301
15302#+RESULTS:
15303:RESULTS:
15304#+ATTR_LATEX :width 5cm
15305[[file:/tmp/it.png]]
15306:END:
15307@end example
15308
15309@node prologue, epilogue, post, Specific header arguments
15310@subsubsection @code{:prologue}
15311The value of the @code{prologue} header argument will be prepended to the
15312code block body before execution. For example, @code{:prologue "reset"} may
15313be used to reset a gnuplot session before execution of a particular code
15314block, or the following configuration may be used to do this for all gnuplot
15315code blocks. Also see @ref{epilogue}.
15316
15317@lisp
15318(add-to-list 'org-babel-default-header-args:gnuplot
15319 '((:prologue . "reset")))
15320@end lisp
15321
15322@node epilogue, , prologue, Specific header arguments
15323@subsubsection @code{:epilogue}
15324The value of the @code{epilogue} header argument will be appended to the code
15325block body before execution. Also see @ref{prologue}.
15326
86fbb8ca
CD
15327@node Results of evaluation, Noweb reference syntax, Header arguments, Working With Source Code
15328@section Results of evaluation
15329@cindex code block, results of evaluation
15330@cindex source code, results of evaluation
15331
15332The way in which results are handled depends on whether a session is invoked,
15333as well as on whether @code{:results value} or @code{:results output} is
ce57c2fe
BG
15334used. The following table shows the table possibilities. For a full listing
15335of the possible results header arguments see @ref{results}.
86fbb8ca
CD
15336
15337@multitable @columnfractions 0.26 0.33 0.41
15338@item @tab @b{Non-session} @tab @b{Session}
15339@item @code{:results value} @tab value of last expression @tab value of last expression
15340@item @code{:results output} @tab contents of STDOUT @tab concatenation of interpreter output
15341@end multitable
15342
15343Note: With @code{:results value}, the result in both @code{:session} and
e66ba1df 15344non-session is returned to Org mode as a table (a one- or two-dimensional
86fbb8ca
CD
15345vector of strings or numbers) when appropriate.
15346
15347@subsection Non-session
15348@subsubsection @code{:results value}
ce57c2fe 15349This is the default. Internally, the value is obtained by wrapping the code
86fbb8ca 15350in a function definition in the external language, and evaluating that
ce57c2fe
BG
15351function. Therefore, code should be written as if it were the body of such a
15352function. In particular, note that Python does not automatically return a
86fbb8ca 15353value from a function unless a @code{return} statement is present, and so a
acedf35c 15354@samp{return} statement will usually be required in Python.
86fbb8ca
CD
15355
15356This is the only one of the four evaluation contexts in which the code is
15357automatically wrapped in a function definition.
15358
15359@subsubsection @code{:results output}
15360The code is passed to the interpreter as an external process, and the
ce57c2fe 15361contents of the standard output stream are returned as text. (In certain
86fbb8ca
CD
15362languages this also contains the error output stream; this is an area for
15363future work.)
15364
acedf35c 15365@subsection Session
86fbb8ca 15366@subsubsection @code{:results value}
ce57c2fe
BG
15367The code is passed to an interpreter running as an interactive Emacs inferior
15368process. Only languages which provide tools for interactive evaluation of
15369code have session support, so some language (e.g., C and ditaa) do not
15370support the @code{:session} header argument, and in other languages (e.g.,
15371Python and Haskell) which have limitations on the code which may be entered
15372into interactive sessions, those limitations apply to the code in code blocks
15373using the @code{:session} header argument as well.
15374
15375Unless the @code{:results output} option is supplied (see below) the result
15376returned is the result of the last evaluation performed by the
15377interpreter. (This is obtained in a language-specific manner: the value of
15378the variable @code{_} in Python and Ruby, and the value of @code{.Last.value}
15379in R).
86fbb8ca
CD
15380
15381@subsubsection @code{:results output}
15382The code is passed to the interpreter running as an interactive Emacs
ce57c2fe
BG
15383inferior process. The result returned is the concatenation of the sequence of
15384(text) output from the interactive interpreter. Notice that this is not
86fbb8ca
CD
15385necessarily the same as what would be sent to @code{STDOUT} if the same code
15386were passed to a non-interactive interpreter running as an external
ce57c2fe 15387process. For example, compare the following two blocks:
86fbb8ca
CD
15388
15389@example
e66ba1df 15390#+BEGIN_SRC python :results output
86fbb8ca
CD
15391 print "hello"
15392 2
15393 print "bye"
e66ba1df 15394#+END_SRC
86fbb8ca 15395
8223b1d2 15396#+RESULTS:
86fbb8ca
CD
15397: hello
15398: bye
15399@end example
15400
acedf35c 15401In non-session mode, the `2' is not printed and does not appear.
63aa0982 15402
86fbb8ca 15403@example
e66ba1df 15404#+BEGIN_SRC python :results output :session
86fbb8ca
CD
15405 print "hello"
15406 2
15407 print "bye"
e66ba1df 15408#+END_SRC
86fbb8ca 15409
8223b1d2 15410#+RESULTS:
86fbb8ca
CD
15411: hello
15412: 2
15413: bye
15414@end example
15415
acedf35c 15416But in @code{:session} mode, the interactive interpreter receives input `2'
ce57c2fe 15417and prints out its value, `2'. (Indeed, the other print statements are
86fbb8ca
CD
15418unnecessary here).
15419
15420@node Noweb reference syntax, Key bindings and useful functions, Results of evaluation, Working With Source Code
15421@section Noweb reference syntax
15422@cindex code block, noweb reference
15423@cindex syntax, noweb
15424@cindex source code, noweb reference
15425
15426The ``noweb'' (see @uref{http://www.cs.tufts.edu/~nr/noweb/}) Literate
15427Programming system allows named blocks of code to be referenced by using the
15428familiar Noweb syntax:
15429
15430@example
15431<<code-block-name>>
15432@end example
15433
15434When a code block is tangled or evaluated, whether or not ``noweb''
15435references are expanded depends upon the value of the @code{:noweb} header
15436argument. If @code{:noweb yes}, then a Noweb reference is expanded before
15437evaluation. If @code{:noweb no}, the default, then the reference is not
e66ba1df
BG
15438expanded before evaluation. See the @ref{noweb-ref} header argument for
15439a more flexible way to resolve noweb references.
86fbb8ca 15440
153ae947
BG
15441It is possible to include the @emph{results} of a code block rather than the
15442body. This is done by appending parenthesis to the code block name which may
15443optionally contain arguments to the code block as shown below.
15444
15445@example
15446<<code-block-name(optional arguments)>>
15447@end example
15448
86fbb8ca
CD
15449Note: the default value, @code{:noweb no}, was chosen to ensure that
15450correct code is not broken in a language, such as Ruby, where
15451@code{<<arg>>} is a syntactically valid construct. If @code{<<arg>>} is not
15452syntactically valid in languages that you use, then please consider setting
15453the default value.
15454
8223b1d2 15455Note: if noweb tangling is slow in large Org mode files consider setting the
271672fa 15456@code{org-babel-use-quick-and-dirty-noweb-expansion} variable to @code{t}.
e66ba1df
BG
15457This will result in faster noweb reference resolution at the expense of not
15458correctly resolving inherited values of the @code{:noweb-ref} header
15459argument.
15460
86fbb8ca
CD
15461@node Key bindings and useful functions, Batch execution, Noweb reference syntax, Working With Source Code
15462@section Key bindings and useful functions
15463@cindex code block, key bindings
15464
e66ba1df 15465Many common Org mode key sequences are re-bound depending on
86fbb8ca
CD
15466the context.
15467
15468Within a code block, the following key bindings
15469are active:
15470
15471@multitable @columnfractions 0.25 0.75
15472@kindex C-c C-c
ce57c2fe 15473@item @kbd{C-c C-c} @tab @code{org-babel-execute-src-block}
86fbb8ca 15474@kindex C-c C-o
ce57c2fe 15475@item @kbd{C-c C-o} @tab @code{org-babel-open-src-block-result}
86fbb8ca 15476@kindex C-up
ce57c2fe 15477@item @kbd{C-@key{up}} @tab @code{org-babel-load-in-session}
86fbb8ca 15478@kindex M-down
ce57c2fe 15479@item @kbd{M-@key{down}} @tab @code{org-babel-pop-to-session}
86fbb8ca
CD
15480@end multitable
15481
e66ba1df 15482In an Org mode buffer, the following key bindings are active:
86fbb8ca
CD
15483
15484@multitable @columnfractions 0.45 0.55
153ae947
BG
15485@kindex C-c C-v p
15486@kindex C-c C-v C-p
15487@item @kbd{C-c C-v p} @ @ @r{or} @ @ @kbd{C-c C-v C-p} @tab @code{org-babel-previous-src-block}
15488@kindex C-c C-v n
15489@kindex C-c C-v C-n
15490@item @kbd{C-c C-v n} @ @ @r{or} @ @ @kbd{C-c C-v C-n} @tab @code{org-babel-next-src-block}
15491@kindex C-c C-v e
15492@kindex C-c C-v C-e
15493@item @kbd{C-c C-v e} @ @ @r{or} @ @ @kbd{C-c C-v C-e} @tab @code{org-babel-execute-maybe}
15494@kindex C-c C-v o
15495@kindex C-c C-v C-o
15496@item @kbd{C-c C-v o} @ @ @r{or} @ @ @kbd{C-c C-v C-o} @tab @code{org-babel-open-src-block-result}
15497@kindex C-c C-v v
15498@kindex C-c C-v C-v
15499@item @kbd{C-c C-v v} @ @ @r{or} @ @ @kbd{C-c C-v C-v} @tab @code{org-babel-expand-src-block}
15500@kindex C-c C-v u
15501@kindex C-c C-v C-u
15502@item @kbd{C-c C-v u} @ @ @r{or} @ @ @kbd{C-c C-v C-u} @tab @code{org-babel-goto-src-block-head}
15503@kindex C-c C-v g
15504@kindex C-c C-v C-g
15505@item @kbd{C-c C-v g} @ @ @r{or} @ @ @kbd{C-c C-v C-g} @tab @code{org-babel-goto-named-src-block}
15506@kindex C-c C-v r
15507@kindex C-c C-v C-r
15508@item @kbd{C-c C-v r} @ @ @r{or} @ @ @kbd{C-c C-v C-r} @tab @code{org-babel-goto-named-result}
86fbb8ca
CD
15509@kindex C-c C-v b
15510@kindex C-c C-v C-b
ce57c2fe 15511@item @kbd{C-c C-v b} @ @ @r{or} @ @ @kbd{C-c C-v C-b} @tab @code{org-babel-execute-buffer}
86fbb8ca
CD
15512@kindex C-c C-v s
15513@kindex C-c C-v C-s
ce57c2fe 15514@item @kbd{C-c C-v s} @ @ @r{or} @ @ @kbd{C-c C-v C-s} @tab @code{org-babel-execute-subtree}
153ae947
BG
15515@kindex C-c C-v d
15516@kindex C-c C-v C-d
15517@item @kbd{C-c C-v d} @ @ @r{or} @ @ @kbd{C-c C-v C-d} @tab @code{org-babel-demarcate-block}
86fbb8ca
CD
15518@kindex C-c C-v t
15519@kindex C-c C-v C-t
ce57c2fe 15520@item @kbd{C-c C-v t} @ @ @r{or} @ @ @kbd{C-c C-v C-t} @tab @code{org-babel-tangle}
153ae947
BG
15521@kindex C-c C-v f
15522@kindex C-c C-v C-f
15523@item @kbd{C-c C-v f} @ @ @r{or} @ @ @kbd{C-c C-v C-f} @tab @code{org-babel-tangle-file}
15524@kindex C-c C-v c
15525@kindex C-c C-v C-c
15526@item @kbd{C-c C-v c} @ @ @r{or} @ @ @kbd{C-c C-v C-c} @tab @code{org-babel-check-src-block}
15527@kindex C-c C-v j
15528@kindex C-c C-v C-j
15529@item @kbd{C-c C-v j} @ @ @r{or} @ @ @kbd{C-c C-v C-j} @tab @code{org-babel-insert-header-arg}
15530@kindex C-c C-v l
15531@kindex C-c C-v C-l
15532@item @kbd{C-c C-v l} @ @ @r{or} @ @ @kbd{C-c C-v C-l} @tab @code{org-babel-load-in-session}
15533@kindex C-c C-v i
15534@kindex C-c C-v C-i
15535@item @kbd{C-c C-v i} @ @ @r{or} @ @ @kbd{C-c C-v C-i} @tab @code{org-babel-lob-ingest}
15536@kindex C-c C-v I
15537@kindex C-c C-v C-I
15538@item @kbd{C-c C-v I} @ @ @r{or} @ @ @kbd{C-c C-v C-I} @tab @code{org-babel-view-src-block-info}
86fbb8ca
CD
15539@kindex C-c C-v z
15540@kindex C-c C-v C-z
153ae947
BG
15541@item @kbd{C-c C-v z} @ @ @r{or} @ @ @kbd{C-c C-v C-z} @tab @code{org-babel-switch-to-session-with-code}
15542@kindex C-c C-v a
15543@kindex C-c C-v C-a
15544@item @kbd{C-c C-v a} @ @ @r{or} @ @ @kbd{C-c C-v C-a} @tab @code{org-babel-sha1-hash}
15545@kindex C-c C-v h
15546@kindex C-c C-v C-h
15547@item @kbd{C-c C-v h} @ @ @r{or} @ @ @kbd{C-c C-v C-h} @tab @code{org-babel-describe-bindings}
15548@kindex C-c C-v x
15549@kindex C-c C-v C-x
15550@item @kbd{C-c C-v x} @ @ @r{or} @ @ @kbd{C-c C-v C-x} @tab @code{org-babel-do-key-sequence-in-edit-buffer}
86fbb8ca
CD
15551@end multitable
15552
15553@c When possible these keybindings were extended to work when the control key is
15554@c kept pressed, resulting in the following additional keybindings.
15555
15556@c @multitable @columnfractions 0.25 0.75
ce57c2fe
BG
15557@c @item @kbd{C-c C-v C-a} @tab @code{org-babel-sha1-hash}
15558@c @item @kbd{C-c C-v C-b} @tab @code{org-babel-execute-buffer}
15559@c @item @kbd{C-c C-v C-f} @tab @code{org-babel-tangle-file}
15560@c @item @kbd{C-c C-v C-l} @tab @code{org-babel-lob-ingest}
15561@c @item @kbd{C-c C-v C-p} @tab @code{org-babel-expand-src-block}
15562@c @item @kbd{C-c C-v C-s} @tab @code{org-babel-execute-subtree}
15563@c @item @kbd{C-c C-v C-t} @tab @code{org-babel-tangle}
15564@c @item @kbd{C-c C-v C-z} @tab @code{org-babel-switch-to-session}
86fbb8ca
CD
15565@c @end multitable
15566
15567@node Batch execution, , Key bindings and useful functions, Working With Source Code
15568@section Batch execution
15569@cindex code block, batch execution
15570@cindex source code, batch execution
15571
15572It is possible to call functions from the command line. This shell
15573script calls @code{org-babel-tangle} on every one of its arguments.
15574
15575Be sure to adjust the paths to fit your system.
15576
15577@example
15578#!/bin/sh
15579# -*- mode: shell-script -*-
15580#
afe98dfa 15581# tangle files with org-mode
86fbb8ca
CD
15582#
15583DIR=`pwd`
15584FILES=""
15585
15586# wrap each argument in the code required to call tangle on it
15587for i in $@@; do
afe98dfa 15588 FILES="$FILES \"$i\""
86fbb8ca
CD
15589done
15590
bdebdb64 15591emacs -Q --batch \
86fbb8ca
CD
15592--eval "(progn
15593(add-to-list 'load-path (expand-file-name \"~/src/org/lisp/\"))
8223b1d2 15594(add-to-list 'load-path (expand-file-name \"~/src/org/contrib/lisp/\" t))
86fbb8ca
CD
15595(require 'org)(require 'org-exp)(require 'ob)(require 'ob-tangle)
15596(mapc (lambda (file)
15597 (find-file (expand-file-name file \"$DIR\"))
15598 (org-babel-tangle)
afe98dfa 15599 (kill-buffer)) '($FILES)))" 2>&1 |grep tangled
86fbb8ca
CD
15600@end example
15601
15602@node Miscellaneous, Hacking, Working With Source Code, Top
15603@chapter Miscellaneous
15604
15605@menu
c0468714 15606* Completion:: M-TAB knows what you need
afe98dfa 15607* Easy Templates:: Quick insertion of structural elements
c0468714
GM
15608* Speed keys:: Electric commands at the beginning of a headline
15609* Code evaluation security:: Org mode files evaluate inline code
15610* Customization:: Adapting Org to your taste
15611* In-buffer settings:: Overview of the #+KEYWORDS
15612* The very busy C-c C-c key:: When in doubt, press C-c C-c
15613* Clean view:: Getting rid of leading stars in the outline
15614* TTY keys:: Using Org on a tty
15615* Interaction:: Other Emacs packages
271672fa 15616* org-crypt:: Encrypting Org files
86fbb8ca
CD
15617@end menu
15618
15619
afe98dfa 15620@node Completion, Easy Templates, Miscellaneous, Miscellaneous
86fbb8ca
CD
15621@section Completion
15622@cindex completion, of @TeX{} symbols
15623@cindex completion, of TODO keywords
15624@cindex completion, of dictionary words
15625@cindex completion, of option keywords
15626@cindex completion, of tags
15627@cindex completion, of property keys
15628@cindex completion, of link abbreviations
15629@cindex @TeX{} symbol completion
15630@cindex TODO keywords completion
15631@cindex dictionary word completion
15632@cindex option keyword completion
15633@cindex tag completion
15634@cindex link abbreviations, completion of
15635
e66ba1df 15636Emacs would not be Emacs without completion, and Org mode uses it whenever it
86fbb8ca
CD
15637makes sense. If you prefer an @i{iswitchb}- or @i{ido}-like interface for
15638some of the completion prompts, you can specify your preference by setting at
15639most one of the variables @code{org-completion-use-iswitchb}
15640@code{org-completion-use-ido}.
15641
15642Org supports in-buffer completion. This type of completion does
15643not make use of the minibuffer. You simply type a few letters into
15644the buffer and use the key to complete text right there.
15645
15646@table @kbd
15647@kindex M-@key{TAB}
15648@item M-@key{TAB}
15649Complete word at point
15650@itemize @bullet
15651@item
15652At the beginning of a headline, complete TODO keywords.
15653@item
15654After @samp{\}, complete @TeX{} symbols supported by the exporter.
15655@item
15656After @samp{*}, complete headlines in the current buffer so that they
15657can be used in search links like @samp{[[*find this headline]]}.
15658@item
15659After @samp{:} in a headline, complete tags. The list of tags is taken
15660from the variable @code{org-tag-alist} (possibly set through the
15661@samp{#+TAGS} in-buffer option, @pxref{Setting tags}), or it is created
15662dynamically from all tags used in the current buffer.
15663@item
15664After @samp{:} and not in a headline, complete property keys. The list
15665of keys is constructed dynamically from all keys used in the current
15666buffer.
15667@item
15668After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
15669@item
15670After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
e66ba1df 15671@samp{OPTIONS} which set file-specific options for Org mode. When the
86fbb8ca
CD
15672option keyword is already complete, pressing @kbd{M-@key{TAB}} again
15673will insert example settings for this keyword.
15674@item
15675In the line after @samp{#+STARTUP: }, complete startup keywords,
1df7defd 15676i.e., valid keys for this line.
86fbb8ca
CD
15677@item
15678Elsewhere, complete dictionary words using Ispell.
15679@end itemize
15680@end table
15681
afe98dfa
CD
15682@node Easy Templates, Speed keys, Completion, Miscellaneous
15683@section Easy Templates
15684@cindex template insertion
15685@cindex insertion, of templates
15686
e66ba1df 15687Org mode supports insertion of empty structural elements (like
afe98dfa
CD
15688@code{#+BEGIN_SRC} and @code{#+END_SRC} pairs) with just a few key
15689strokes. This is achieved through a native template expansion mechanism.
15690Note that Emacs has several other template mechanisms which could be used in
15691a similar way, for example @file{yasnippet}.
15692
15693To insert a structural element, type a @samp{<}, followed by a template
15694selector and @kbd{@key{TAB}}. Completion takes effect only when the above
15695keystrokes are typed on a line by itself.
15696
15697The following template selectors are currently supported.
15698
15699@multitable @columnfractions 0.1 0.9
8223b1d2
BG
15700@item @kbd{s} @tab @code{#+BEGIN_SRC ... #+END_SRC}
15701@item @kbd{e} @tab @code{#+BEGIN_EXAMPLE ... #+END_EXAMPLE}
15702@item @kbd{q} @tab @code{#+BEGIN_QUOTE ... #+END_QUOTE}
15703@item @kbd{v} @tab @code{#+BEGIN_VERSE ... #+END_VERSE}
15704@item @kbd{c} @tab @code{#+BEGIN_CENTER ... #+END_CENTER}
15705@item @kbd{l} @tab @code{#+BEGIN_LaTeX ... #+END_LaTeX}
15706@item @kbd{L} @tab @code{#+LaTeX:}
15707@item @kbd{h} @tab @code{#+BEGIN_HTML ... #+END_HTML}
15708@item @kbd{H} @tab @code{#+HTML:}
15709@item @kbd{a} @tab @code{#+BEGIN_ASCII ... #+END_ASCII}
15710@item @kbd{A} @tab @code{#+ASCII:}
15711@item @kbd{i} @tab @code{#+INDEX:} line
15712@item @kbd{I} @tab @code{#+INCLUDE:} line
afe98dfa
CD
15713@end multitable
15714
15715For example, on an empty line, typing "<e" and then pressing TAB, will expand
15716into a complete EXAMPLE template.
15717
15718You can install additional templates by customizing the variable
ce57c2fe 15719@code{org-structure-template-alist}. See the docstring of the variable for
afe98dfa
CD
15720additional details.
15721
15722@node Speed keys, Code evaluation security, Easy Templates, Miscellaneous
86fbb8ca
CD
15723@section Speed keys
15724@cindex speed keys
15725@vindex org-use-speed-commands
15726@vindex org-speed-commands-user
15727
15728Single keys can be made to execute commands when the cursor is at the
1df7defd 15729beginning of a headline, i.e., before the first star. Configure the variable
86fbb8ca
CD
15730@code{org-use-speed-commands} to activate this feature. There is a
15731pre-defined list of commands, and you can add more such commands using the
15732variable @code{org-speed-commands-user}. Speed keys do not only speed up
15733navigation and other commands, but they also provide an alternative way to
acedf35c 15734execute commands bound to keys that are not or not easily available on a TTY,
86fbb8ca
CD
15735or on a small mobile device with a limited keyboard.
15736
15737To see which commands are available, activate the feature and press @kbd{?}
15738with the cursor at the beginning of a headline.
15739
15740@node Code evaluation security, Customization, Speed keys, Miscellaneous
15741@section Code evaluation and security issues
15742
afe98dfa 15743Org provides tools to work with the code snippets, including evaluating them.
86fbb8ca
CD
15744
15745Running code on your machine always comes with a security risk. Badly
15746written or malicious code can be executed on purpose or by accident. Org has
15747default settings which will only evaluate such code if you give explicit
15748permission to do so, and as a casual user of these features you should leave
15749these precautions intact.
15750
15751For people who regularly work with such code, the confirmation prompts can
15752become annoying, and you might want to turn them off. This can be done, but
15753you must be aware of the risks that are involved.
15754
15755Code evaluation can happen under the following circumstances:
15756
15757@table @i
15758@item Source code blocks
15759Source code blocks can be evaluated during export, or when pressing @kbd{C-c
15760C-c} in the block. The most important thing to realize here is that Org mode
afe98dfa 15761files which contain code snippets are, in a certain sense, like executable
86fbb8ca 15762files. So you should accept them and load them into Emacs only from trusted
acedf35c 15763sources---just like you would do with a program you install on your computer.
86fbb8ca
CD
15764
15765Make sure you know what you are doing before customizing the variables
afe98dfa 15766which take off the default security brakes.
86fbb8ca
CD
15767
15768@defopt org-confirm-babel-evaluate
ce57c2fe 15769When t (the default), the user is asked before every code block evaluation.
271672fa 15770When @code{nil}, the user is not asked. When set to a function, it is called with
ce57c2fe 15771two arguments (language and body of the code block) and should return t to
271672fa 15772ask and @code{nil} not to ask.
86fbb8ca
CD
15773@end defopt
15774
ce57c2fe
BG
15775For example, here is how to execute "ditaa" code (which is considered safe)
15776without asking:
63aa0982 15777
271672fa 15778@lisp
ce57c2fe
BG
15779(defun my-org-confirm-babel-evaluate (lang body)
15780 (not (string= lang "ditaa"))) ; don't ask for ditaa
15781(setq org-confirm-babel-evaluate 'my-org-confirm-babel-evaluate)
271672fa 15782@end lisp
ce57c2fe 15783
86fbb8ca
CD
15784@item Following @code{shell} and @code{elisp} links
15785Org has two link types that can directly evaluate code (@pxref{External
afe98dfa 15786links}). These links can be problematic because the code to be evaluated is
86fbb8ca
CD
15787not visible.
15788
15789@defopt org-confirm-shell-link-function
15790Function to queries user about shell link execution.
15791@end defopt
15792@defopt org-confirm-elisp-link-function
15793Functions to query user for Emacs Lisp link execution.
15794@end defopt
15795
86fbb8ca
CD
15796@item Formulas in tables
15797Formulas in tables (@pxref{The spreadsheet}) are code that is evaluated
15798either by the @i{calc} interpreter, or by the @i{Emacs Lisp} interpreter.
15799@end table
15800
15801@node Customization, In-buffer settings, Code evaluation security, Miscellaneous
15802@section Customization
15803@cindex customization
15804@cindex options, for customization
15805@cindex variables, for customization
15806
8223b1d2 15807There are more than 500 variables that can be used to customize
86fbb8ca
CD
15808Org. For the sake of compactness of the manual, I am not
15809describing the variables here. A structured overview of customization
271672fa 15810variables is available with @kbd{M-x org-customize RET}. Or select
86fbb8ca
CD
15811@code{Browse Org Group} from the @code{Org->Customization} menu. Many
15812settings can also be activated on a per-file basis, by putting special
15813lines into the buffer (@pxref{In-buffer settings}).
4009494e
GM
15814
15815@node In-buffer settings, The very busy C-c C-c key, Customization, Miscellaneous
15816@section Summary of in-buffer settings
15817@cindex in-buffer settings
15818@cindex special keywords
15819
e66ba1df 15820Org mode uses special lines in the buffer to define settings on a
4009494e
GM
15821per-file basis. These lines start with a @samp{#+} followed by a
15822keyword, a colon, and then individual words defining a setting. Several
15823setting words can be in the same line, but you can also have multiple
15824lines for the keyword. While these settings are described throughout
15825the manual, here is a summary. After changing any of those lines in the
15826buffer, press @kbd{C-c C-c} with the cursor still in the line to
15827activate the changes immediately. Otherwise they become effective only
15828when the file is visited again in a new Emacs session.
15829
c8d0cf5c 15830@vindex org-archive-location
4009494e
GM
15831@table @kbd
15832@item #+ARCHIVE: %s_done::
15833This line sets the archive location for the agenda file. It applies for
15834all subsequent lines until the next @samp{#+ARCHIVE} line, or the end
15835of the file. The first such line also applies to any entries before it.
15836The corresponding variable is @code{org-archive-location}.
15837@item #+CATEGORY:
15838This line sets the category for the agenda file. The category applies
15839for all subsequent lines until the next @samp{#+CATEGORY} line, or the
15840end of the file. The first such line also applies to any entries before it.
30cb51f1 15841@item #+COLUMNS: %25ITEM ...
c8d0cf5c 15842@cindex property, COLUMNS
4009494e 15843Set the default format for columns view. This format applies when
c8d0cf5c 15844columns view is invoked in locations where no @code{COLUMNS} property
dbc28aaa 15845applies.
4009494e 15846@item #+CONSTANTS: name1=value1 ...
c8d0cf5c
CD
15847@vindex org-table-formula-constants
15848@vindex org-table-formula
4009494e 15849Set file-local values for constants to be used in table formulas. This
acedf35c 15850line sets the local variable @code{org-table-formula-constants-local}.
dbc28aaa 15851The global version of this variable is
4009494e 15852@code{org-table-formula-constants}.
b349f79f
CD
15853@item #+FILETAGS: :tag1:tag2:tag3:
15854Set tags that can be inherited by any entry in the file, including the
15855top-level entries.
30cb51f1 15856@item #+DRAWERS: NAME1 ...
c8d0cf5c 15857@vindex org-drawers
8223b1d2
BG
15858Set the file-local set of additional drawers. The corresponding global
15859variable is @code{org-drawers}.
30cb51f1 15860@item #+LINK: linkword replace
c8d0cf5c 15861@vindex org-link-abbrev-alist
4009494e
GM
15862These lines (several are allowed) specify link abbreviations.
15863@xref{Link abbreviations}. The corresponding variable is
15864@code{org-link-abbrev-alist}.
15865@item #+PRIORITIES: highest lowest default
c8d0cf5c
CD
15866@vindex org-highest-priority
15867@vindex org-lowest-priority
15868@vindex org-default-priority
4009494e 15869This line sets the limits and the default for the priorities. All three
f99f1641 15870must be either letters A--Z or numbers 0--9. The highest priority must
acedf35c 15871have a lower ASCII number than the lowest priority.
4009494e
GM
15872@item #+PROPERTY: Property_Name Value
15873This line sets a default inheritance value for entries in the current
15874buffer, most useful for specifying the allowed values of a property.
c8d0cf5c 15875@cindex #+SETUPFILE
b349f79f
CD
15876@item #+SETUPFILE: file
15877This line defines a file that holds more in-buffer setup. Normally this is
15878entirely ignored. Only when the buffer is parsed for option-setting lines
1e20eeb7 15879(i.e., when starting Org mode for a file, when pressing @kbd{C-c C-c} in a
b349f79f 15880settings line, or when exporting), then the contents of this file are parsed
a50253cc 15881as if they had been included in the buffer. In particular, the file can be
e66ba1df 15882any other Org mode file with internal setup. You can visit the file the
b349f79f 15883cursor is in the line with @kbd{C-c '}.
4009494e 15884@item #+STARTUP:
271672fa 15885@cindex #+STARTUP
e66ba1df 15886This line sets options to be used at startup of Org mode, when an
c8d0cf5c
CD
15887Org file is being visited.
15888
15889The first set of options deals with the initial visibility of the outline
15890tree. The corresponding variable for global default settings is
15891@code{org-startup-folded}, with a default value @code{t}, which means
15892@code{overview}.
15893@vindex org-startup-folded
4009494e
GM
15894@cindex @code{overview}, STARTUP keyword
15895@cindex @code{content}, STARTUP keyword
15896@cindex @code{showall}, STARTUP keyword
7006d207 15897@cindex @code{showeverything}, STARTUP keyword
4009494e 15898@example
7006d207
CD
15899overview @r{top-level headlines only}
15900content @r{all headlines}
15901showall @r{no folding of any entries}
15902showeverything @r{show even drawer contents}
4009494e 15903@end example
c8d0cf5c
CD
15904
15905@vindex org-startup-indented
15906@cindex @code{indent}, STARTUP keyword
15907@cindex @code{noindent}, STARTUP keyword
15908Dynamic virtual indentation is controlled by the variable
e66ba1df 15909@code{org-startup-indented}@footnote{Emacs 23 and Org mode 6.29 are required}
c8d0cf5c
CD
15910@example
15911indent @r{start with @code{org-indent-mode} turned on}
15912noindent @r{start with @code{org-indent-mode} turned off}
15913@end example
15914
15915@vindex org-startup-align-all-tables
4009494e
GM
15916Then there are options for aligning tables upon visiting a file. This
15917is useful in files containing narrowed table columns. The corresponding
15918variable is @code{org-startup-align-all-tables}, with a default value
28a16a1b 15919@code{nil}.
4009494e
GM
15920@cindex @code{align}, STARTUP keyword
15921@cindex @code{noalign}, STARTUP keyword
15922@example
15923align @r{align all tables}
15924noalign @r{don't align tables on startup}
15925@end example
afe98dfa
CD
15926
15927@vindex org-startup-with-inline-images
15928When visiting a file, inline images can be automatically displayed. The
15929corresponding variable is @code{org-startup-with-inline-images}, with a
15930default value @code{nil} to avoid delays when visiting a file.
15931@cindex @code{inlineimages}, STARTUP keyword
15932@cindex @code{noinlineimages}, STARTUP keyword
15933@example
15934inlineimages @r{show inline images}
15935noinlineimages @r{don't show inline images on startup}
15936@end example
15937
271672fa
BG
15938@vindex org-startup-with-latex-preview
15939When visiting a file, @LaTeX{} fragments can be converted to images
15940automatically. The variable @code{org-startup-with-latex-preview} which
15941controls this behavior, is set to @code{nil} by default to avoid delays on
15942startup.
15943@cindex @code{latexpreview}, STARTUP keyword
15944@cindex @code{nolatexpreview}, STARTUP keyword
15945@example
15946latexpreview @r{preview @LaTeX{} fragments}
15947nolatexpreview @r{don't preview @LaTeX{} fragments}
15948@end example
15949
c8d0cf5c
CD
15950@vindex org-log-done
15951@vindex org-log-note-clock-out
15952@vindex org-log-repeat
15953Logging the closing and reopening of TODO items and clock intervals can be
15954configured using these options (see variables @code{org-log-done},
15955@code{org-log-note-clock-out} and @code{org-log-repeat})
4009494e 15956@cindex @code{logdone}, STARTUP keyword
4009494e 15957@cindex @code{lognotedone}, STARTUP keyword
28a16a1b 15958@cindex @code{nologdone}, STARTUP keyword
4009494e 15959@cindex @code{lognoteclock-out}, STARTUP keyword
28a16a1b 15960@cindex @code{nolognoteclock-out}, STARTUP keyword
4009494e 15961@cindex @code{logrepeat}, STARTUP keyword
28a16a1b 15962@cindex @code{lognoterepeat}, STARTUP keyword
4009494e 15963@cindex @code{nologrepeat}, STARTUP keyword
a351880d
CD
15964@cindex @code{logreschedule}, STARTUP keyword
15965@cindex @code{lognotereschedule}, STARTUP keyword
15966@cindex @code{nologreschedule}, STARTUP keyword
15967@cindex @code{logredeadline}, STARTUP keyword
15968@cindex @code{lognoteredeadline}, STARTUP keyword
15969@cindex @code{nologredeadline}, STARTUP keyword
ed21c5c8
CD
15970@cindex @code{logrefile}, STARTUP keyword
15971@cindex @code{lognoterefile}, STARTUP keyword
15972@cindex @code{nologrefile}, STARTUP keyword
271672fa
BG
15973@cindex @code{logdrawer}, STARTUP keyword
15974@cindex @code{nologdrawer}, STARTUP keyword
15975@cindex @code{logstatesreversed}, STARTUP keyword
15976@cindex @code{nologstatesreversed}, STARTUP keyword
15977@example
15978logdone @r{record a timestamp when an item is marked DONE}
15979lognotedone @r{record timestamp and a note when DONE}
15980nologdone @r{don't record when items are marked DONE}
15981logrepeat @r{record a time when reinstating a repeating item}
15982lognoterepeat @r{record a note when reinstating a repeating item}
15983nologrepeat @r{do not record when reinstating repeating item}
15984lognoteclock-out @r{record a note when clocking out}
15985nolognoteclock-out @r{don't record a note when clocking out}
15986logreschedule @r{record a timestamp when scheduling time changes}
15987lognotereschedule @r{record a note when scheduling time changes}
15988nologreschedule @r{do not record when a scheduling date changes}
15989logredeadline @r{record a timestamp when deadline changes}
15990lognoteredeadline @r{record a note when deadline changes}
15991nologredeadline @r{do not record when a deadline date changes}
15992logrefile @r{record a timestamp when refiling}
15993lognoterefile @r{record a note when refiling}
15994nologrefile @r{do not record when refiling}
15995logdrawer @r{store log into drawer}
15996nologdrawer @r{store log outside of drawer}
15997logstatesreversed @r{reverse the order of states notes}
15998nologstatesreversed @r{do not reverse the order of states notes}
4009494e 15999@end example
271672fa 16000
c8d0cf5c
CD
16001@vindex org-hide-leading-stars
16002@vindex org-odd-levels-only
b349f79f
CD
16003Here are the options for hiding leading stars in outline headings, and for
16004indenting outlines. The corresponding variables are
16005@code{org-hide-leading-stars} and @code{org-odd-levels-only}, both with a
16006default setting @code{nil} (meaning @code{showstars} and @code{oddeven}).
4009494e
GM
16007@cindex @code{hidestars}, STARTUP keyword
16008@cindex @code{showstars}, STARTUP keyword
16009@cindex @code{odd}, STARTUP keyword
16010@cindex @code{even}, STARTUP keyword
16011@example
16012hidestars @r{make all but one of the stars starting a headline invisible.}
16013showstars @r{show all stars starting a headline}
b349f79f
CD
16014indent @r{virtual indentation according to outline level}
16015noindent @r{no virtual indentation according to outline level}
4009494e
GM
16016odd @r{allow only odd outline levels (1,3,...)}
16017oddeven @r{allow all outline levels}
16018@end example
271672fa 16019
c8d0cf5c
CD
16020@vindex org-put-time-stamp-overlays
16021@vindex org-time-stamp-overlay-formats
16022To turn on custom format overlays over timestamps (variables
4009494e
GM
16023@code{org-put-time-stamp-overlays} and
16024@code{org-time-stamp-overlay-formats}), use
16025@cindex @code{customtime}, STARTUP keyword
16026@example
16027customtime @r{overlay custom time format}
16028@end example
271672fa 16029
c8d0cf5c 16030@vindex constants-unit-system
4009494e
GM
16031The following options influence the table spreadsheet (variable
16032@code{constants-unit-system}).
16033@cindex @code{constcgs}, STARTUP keyword
16034@cindex @code{constSI}, STARTUP keyword
16035@example
16036constcgs @r{@file{constants.el} should use the c-g-s unit system}
16037constSI @r{@file{constants.el} should use the SI unit system}
16038@end example
271672fa 16039
c8d0cf5c
CD
16040@vindex org-footnote-define-inline
16041@vindex org-footnote-auto-label
16042@vindex org-footnote-auto-adjust
55e0839d 16043To influence footnote settings, use the following keywords. The
c8d0cf5c
CD
16044corresponding variables are @code{org-footnote-define-inline},
16045@code{org-footnote-auto-label}, and @code{org-footnote-auto-adjust}.
55e0839d 16046@cindex @code{fninline}, STARTUP keyword
c8d0cf5c 16047@cindex @code{nofninline}, STARTUP keyword
55e0839d
CD
16048@cindex @code{fnlocal}, STARTUP keyword
16049@cindex @code{fnprompt}, STARTUP keyword
16050@cindex @code{fnauto}, STARTUP keyword
16051@cindex @code{fnconfirm}, STARTUP keyword
16052@cindex @code{fnplain}, STARTUP keyword
c8d0cf5c
CD
16053@cindex @code{fnadjust}, STARTUP keyword
16054@cindex @code{nofnadjust}, STARTUP keyword
55e0839d
CD
16055@example
16056fninline @r{define footnotes inline}
16057fnnoinline @r{define footnotes in separate section}
16058fnlocal @r{define footnotes near first reference, but not inline}
16059fnprompt @r{prompt for footnote labels}
ce57c2fe 16060fnauto @r{create @code{[fn:1]}-like labels automatically (default)}
55e0839d 16061fnconfirm @r{offer automatic label for editing or confirmation}
ce57c2fe 16062fnplain @r{create @code{[1]}-like labels automatically}
c8d0cf5c
CD
16063fnadjust @r{automatically renumber and sort footnotes}
16064nofnadjust @r{do not renumber and sort automatically}
16065@end example
271672fa 16066
c8d0cf5c 16067@cindex org-hide-block-startup
ce57c2fe 16068To hide blocks on startup, use these keywords. The corresponding variable is
c8d0cf5c
CD
16069@code{org-hide-block-startup}.
16070@cindex @code{hideblocks}, STARTUP keyword
16071@cindex @code{nohideblocks}, STARTUP keyword
16072@example
16073hideblocks @r{Hide all begin/end blocks on startup}
16074nohideblocks @r{Do not hide blocks on startup}
55e0839d 16075@end example
271672fa 16076
86fbb8ca 16077@cindex org-pretty-entities
acedf35c 16078The display of entities as UTF-8 characters is governed by the variable
86fbb8ca
CD
16079@code{org-pretty-entities} and the keywords
16080@cindex @code{entitiespretty}, STARTUP keyword
16081@cindex @code{entitiesplain}, STARTUP keyword
16082@example
acedf35c 16083entitiespretty @r{Show entities as UTF-8 characters where possible}
86fbb8ca
CD
16084entitiesplain @r{Leave entities plain}
16085@end example
271672fa 16086
4009494e 16087@item #+TAGS: TAG1(c1) TAG2(c2)
c8d0cf5c 16088@vindex org-tag-alist
cad1d376 16089These lines (several such lines are allowed) specify the valid tags in
4009494e
GM
16090this file, and (potentially) the corresponding @emph{fast tag selection}
16091keys. The corresponding variable is @code{org-tag-alist}.
271672fa 16092@cindex #+TBLFM
4009494e
GM
16093@item #+TBLFM:
16094This line contains the formulas for the table directly above the line.
271672fa
BG
16095
16096Table can have multiple lines containing @samp{#+TBLFM:}. Note
16097that only the first line of @samp{#+TBLFM:} will be applied when
16098you recalculate the table. For more details see @ref{Using
16099multiple #+TBLFM lines} in @ref{Editing and debugging formulas}.
16100
16101@item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+DATE:,
16102@itemx #+OPTIONS:, #+BIND:,
86fbb8ca 16103@itemx #+DESCRIPTION:, #+KEYWORDS:,
271672fa
BG
16104@itemx #+LaTeX_HEADER:, #+LaTeX_HEADER_EXTRA:,
16105@itemx #+HTML_HEAD:, #+HTML_HEAD_EXTRA:, #+HTML_LINK_UP:, #+HTML_LINK_HOME:,
16106@itemx #+SELECT_TAGS:, #+EXCLUDE_TAGS:
4009494e 16107These lines provide settings for exporting files. For more details see
271672fa 16108@ref{Export settings}.
c8d0cf5c
CD
16109@item #+TODO: #+SEQ_TODO: #+TYP_TODO:
16110@vindex org-todo-keywords
4009494e 16111These lines set the TODO keywords and their interpretation in the
c8d0cf5c 16112current file. The corresponding variable is @code{org-todo-keywords}.
4009494e
GM
16113@end table
16114
16115@node The very busy C-c C-c key, Clean view, In-buffer settings, Miscellaneous
16116@section The very busy C-c C-c key
16117@kindex C-c C-c
16118@cindex C-c C-c, overview
16119
a7808fba 16120The key @kbd{C-c C-c} has many purposes in Org, which are all
4009494e
GM
16121mentioned scattered throughout this manual. One specific function of
16122this key is to add @emph{tags} to a headline (@pxref{Tags}). In many
c8d0cf5c
CD
16123other circumstances it means something like @emph{``Hey Org, look
16124here and update according to what you see here''}. Here is a summary of
4009494e
GM
16125what this means in different contexts.
16126
16127@itemize @minus
16128@item
16129If there are highlights in the buffer from the creation of a sparse
16130tree, or from clock display, remove these highlights.
16131@item
16132If the cursor is in one of the special @code{#+KEYWORD} lines, this
16133triggers scanning the buffer for these lines and updating the
28a16a1b 16134information.
4009494e
GM
16135@item
16136If the cursor is inside a table, realign the table. This command
16137works even if the automatic table editor has been turned off.
16138@item
16139If the cursor is on a @code{#+TBLFM} line, re-apply the formulas to
16140the entire table.
16141@item
86fbb8ca 16142If the current buffer is a capture buffer, close the note and file it.
4009494e
GM
16143With a prefix argument, file it, without further interaction, to the
16144default location.
16145@item
16146If the cursor is on a @code{<<<target>>>}, update radio targets and
16147corresponding links in this buffer.
16148@item
16149If the cursor is in a property line or at the start or end of a property
16150drawer, offer property commands.
16151@item
55e0839d 16152If the cursor is at a footnote reference, go to the corresponding
271672fa 16153definition, and @emph{vice versa}.
55e0839d 16154@item
6eb02347
CD
16155If the cursor is on a statistics cookie, update it.
16156@item
4009494e
GM
16157If the cursor is in a plain list item with a checkbox, toggle the status
16158of the checkbox.
16159@item
16160If the cursor is on a numbered item in a plain list, renumber the
16161ordered list.
dbc28aaa 16162@item
c8d0cf5c 16163If the cursor is on the @code{#+BEGIN} line of a dynamic block, the
dbc28aaa 16164block is updated.
e66ba1df
BG
16165@item
16166If the cursor is at a timestamp, fix the day name in the timestamp.
4009494e
GM
16167@end itemize
16168
16169@node Clean view, TTY keys, The very busy C-c C-c key, Miscellaneous
16170@section A cleaner outline view
16171@cindex hiding leading stars
b349f79f
CD
16172@cindex dynamic indentation
16173@cindex odd-levels-only outlines
4009494e
GM
16174@cindex clean outline view
16175
c8d0cf5c
CD
16176Some people find it noisy and distracting that the Org headlines start with a
16177potentially large number of stars, and that text below the headlines is not
6eb02347
CD
16178indented. While this is no problem when writing a @emph{book-like} document
16179where the outline headings are really section headings, in a more
16180@emph{list-oriented} outline, indented structure is a lot cleaner:
4009494e
GM
16181
16182@example
b349f79f
CD
16183@group
16184* Top level headline | * Top level headline
16185** Second level | * Second level
16186*** 3rd level | * 3rd level
16187some text | some text
16188*** 3rd level | * 3rd level
16189more text | more text
16190* Another top level headline | * Another top level headline
16191@end group
4009494e
GM
16192@end example
16193
16194@noindent
86fbb8ca
CD
16195
16196If you are using at least Emacs 23.2@footnote{Emacs 23.1 can actually crash
16197with @code{org-indent-mode}} and version 6.29 of Org, this kind of view can
16198be achieved dynamically at display time using @code{org-indent-mode}. In
16199this minor mode, all lines are prefixed for display with the necessary amount
16200of space@footnote{@code{org-indent-mode} also sets the @code{wrap-prefix}
16201property, such that @code{visual-line-mode} (or purely setting
16202@code{word-wrap}) wraps long lines (including headlines) correctly indented.
16203}. Also headlines are prefixed with additional stars, so that the amount of
16204indentation shifts by two@footnote{See the variable
ed21c5c8
CD
16205@code{org-indent-indentation-per-level}.} spaces per level. All headline
16206stars but the last one are made invisible using the @code{org-hide}
16207face@footnote{Turning on @code{org-indent-mode} sets
16208@code{org-hide-leading-stars} to @code{t} and @code{org-adapt-indentation} to
f99f1641 16209@code{nil}.}; see below under @samp{2.} for more information on how this
ed21c5c8
CD
16210works. You can turn on @code{org-indent-mode} for all files by customizing
16211the variable @code{org-startup-indented}, or you can turn it on for
16212individual files using
c8d0cf5c
CD
16213
16214@example
16215#+STARTUP: indent
16216@end example
16217
acedf35c 16218If you want a similar effect in an earlier version of Emacs and/or Org, or if
c8d0cf5c
CD
16219you want the indentation to be hard space characters so that the plain text
16220file looks as similar as possible to the Emacs display, Org supports you in
16221the following way:
4009494e 16222
b349f79f 16223@enumerate
96c8522a 16224@item
b349f79f
CD
16225@emph{Indentation of text below headlines}@*
16226You may indent text below each headline to make the left boundary line up
16227with the headline, like
4009494e 16228
b349f79f
CD
16229@example
16230*** 3rd level
16231 more text, now indented
16232@end example
16233
c8d0cf5c
CD
16234@vindex org-adapt-indentation
16235Org supports this with paragraph filling, line wrapping, and structure
16236editing@footnote{See also the variable @code{org-adapt-indentation}.},
16237preserving or adapting the indentation as appropriate.
b349f79f
CD
16238
16239@item
c8d0cf5c 16240@vindex org-hide-leading-stars
b349f79f
CD
16241@emph{Hiding leading stars}@* You can modify the display in such a way that
16242all leading stars become invisible. To do this in a global way, configure
16243the variable @code{org-hide-leading-stars} or change this on a per-file basis
16244with
4009494e
GM
16245
16246@example
4009494e 16247#+STARTUP: hidestars
c8d0cf5c 16248#+STARTUP: showstars
4009494e
GM
16249@end example
16250
b349f79f 16251With hidden stars, the tree becomes:
4009494e
GM
16252
16253@example
b349f79f 16254@group
4009494e
GM
16255* Top level headline
16256 * Second level
16257 * 3rd level
b349f79f
CD
16258 ...
16259@end group
4009494e
GM
16260@end example
16261
16262@noindent
c8d0cf5c
CD
16263@vindex org-hide @r{(face)}
16264The leading stars are not truly replaced by whitespace, they are only
16265fontified with the face @code{org-hide} that uses the background color as
16266font color. If you are not using either white or black background, you may
16267have to customize this face to get the wanted effect. Another possibility is
16268to set this font such that the extra stars are @i{almost} invisible, for
16269example using the color @code{grey90} on a white background.
4009494e 16270
b349f79f 16271@item
c8d0cf5c 16272@vindex org-odd-levels-only
b349f79f
CD
16273Things become cleaner still if you skip all the even levels and use only odd
16274levels 1, 3, 5..., effectively adding two stars to go from one outline level
c8d0cf5c 16275to the next@footnote{When you need to specify a level for a property search
1e20eeb7 16276or refile targets, @samp{LEVEL=2} will correspond to 3 stars, etc.}. In this
c8d0cf5c
CD
16277way we get the outline view shown at the beginning of this section. In order
16278to make the structure editing and export commands handle this convention
16279correctly, configure the variable @code{org-odd-levels-only}, or set this on
16280a per-file basis with one of the following lines:
4009494e
GM
16281
16282@example
16283#+STARTUP: odd
16284#+STARTUP: oddeven
16285@end example
16286
a7808fba 16287You can convert an Org file from single-star-per-level to the
4009494e
GM
16288double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
16289RET} in that file. The reverse operation is @kbd{M-x
16290org-convert-to-oddeven-levels}.
b349f79f 16291@end enumerate
4009494e
GM
16292
16293@node TTY keys, Interaction, Clean view, Miscellaneous
a7808fba
CD
16294@section Using Org on a tty
16295@cindex tty key bindings
4009494e 16296
c8d0cf5c 16297Because Org contains a large number of commands, by default many of
a7808fba 16298Org's core commands are bound to keys that are generally not
dbc28aaa
CD
16299accessible on a tty, such as the cursor keys (@key{left}, @key{right},
16300@key{up}, @key{down}), @key{TAB} and @key{RET}, in particular when used
16301together with modifiers like @key{Meta} and/or @key{Shift}. To access
16302these commands on a tty when special keys are unavailable, the following
16303alternative bindings can be used. The tty bindings below will likely be
16304more cumbersome; you may find for some of the bindings below that a
c8d0cf5c
CD
16305customized workaround suits you better. For example, changing a timestamp
16306is really only fun with @kbd{S-@key{cursor}} keys, whereas on a
dbc28aaa 16307tty you would rather use @kbd{C-c .} to re-insert the timestamp.
4009494e 16308
17673adf 16309@multitable @columnfractions 0.15 0.2 0.1 0.2
86fbb8ca
CD
16310@item @b{Default} @tab @b{Alternative 1} @tab @b{Speed key} @tab @b{Alternative 2}
16311@item @kbd{S-@key{TAB}} @tab @kbd{C-u @key{TAB}} @tab @kbd{C} @tab
16312@item @kbd{M-@key{left}} @tab @kbd{C-c C-x l} @tab @kbd{l} @tab @kbd{@key{Esc} @key{left}}
16313@item @kbd{M-S-@key{left}} @tab @kbd{C-c C-x L} @tab @kbd{L} @tab
17673adf 16314@item @kbd{M-@key{right}} @tab @kbd{C-c C-x r} @tab @kbd{r} @tab @kbd{@key{Esc} @key{right}}
86fbb8ca
CD
16315@item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R} @tab @kbd{R} @tab
16316@item @kbd{M-@key{up}} @tab @kbd{C-c C-x u} @tab @kbd{ } @tab @kbd{@key{Esc} @key{up}}
16317@item @kbd{M-S-@key{up}} @tab @kbd{C-c C-x U} @tab @kbd{U} @tab
17673adf 16318@item @kbd{M-@key{down}} @tab @kbd{C-c C-x d} @tab @kbd{ } @tab @kbd{@key{Esc} @key{down}}
86fbb8ca 16319@item @kbd{M-S-@key{down}} @tab @kbd{C-c C-x D} @tab @kbd{D} @tab
17673adf
CD
16320@item @kbd{S-@key{RET}} @tab @kbd{C-c C-x c} @tab @kbd{ } @tab
16321@item @kbd{M-@key{RET}} @tab @kbd{C-c C-x m} @tab @kbd{ } @tab @kbd{@key{Esc} @key{RET}}
16322@item @kbd{M-S-@key{RET}} @tab @kbd{C-c C-x M} @tab @kbd{ } @tab
16323@item @kbd{S-@key{left}} @tab @kbd{C-c @key{left}} @tab @kbd{ } @tab
16324@item @kbd{S-@key{right}} @tab @kbd{C-c @key{right}} @tab @kbd{ } @tab
16325@item @kbd{S-@key{up}} @tab @kbd{C-c @key{up}} @tab @kbd{ } @tab
16326@item @kbd{S-@key{down}} @tab @kbd{C-c @key{down}} @tab @kbd{ } @tab
16327@item @kbd{C-S-@key{left}} @tab @kbd{C-c C-x @key{left}} @tab @kbd{ } @tab
16328@item @kbd{C-S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab @kbd{ } @tab
4009494e
GM
16329@end multitable
16330
c8d0cf5c 16331
271672fa 16332@node Interaction, org-crypt, TTY keys, Miscellaneous
4009494e
GM
16333@section Interaction with other packages
16334@cindex packages, interaction with other
a7808fba 16335Org lives in the world of GNU Emacs and interacts in various ways
4009494e
GM
16336with other code out there.
16337
16338@menu
c0468714
GM
16339* Cooperation:: Packages Org cooperates with
16340* Conflicts:: Packages that lead to conflicts
4009494e
GM
16341@end menu
16342
16343@node Cooperation, Conflicts, Interaction, Interaction
a7808fba 16344@subsection Packages that Org cooperates with
4009494e
GM
16345
16346@table @asis
16347@cindex @file{calc.el}
c8d0cf5c 16348@cindex Gillespie, Dave
4009494e 16349@item @file{calc.el} by Dave Gillespie
a7808fba
CD
16350Org uses the Calc package for implementing spreadsheet
16351functionality in its tables (@pxref{The spreadsheet}). Org
16352checks for the availability of Calc by looking for the function
c8d0cf5c 16353@code{calc-eval} which will have been autoloaded during setup if Calc has
a7808fba 16354been installed properly. As of Emacs 22, Calc is part of the Emacs
4009494e 16355distribution. Another possibility for interaction between the two
ce57c2fe 16356packages is using Calc for embedded calculations. @xref{Embedded Mode,
153ae947 16357, Embedded Mode, calc, GNU Emacs Calc Manual}.
4009494e 16358@item @file{constants.el} by Carsten Dominik
c8d0cf5c
CD
16359@cindex @file{constants.el}
16360@cindex Dominik, Carsten
16361@vindex org-table-formula-constants
4009494e
GM
16362In a table formula (@pxref{The spreadsheet}), it is possible to use
16363names for natural constants or units. Instead of defining your own
16364constants in the variable @code{org-table-formula-constants}, install
16365the @file{constants} package which defines a large number of constants
16366and units, and lets you use unit prefixes like @samp{M} for
1e20eeb7 16367@samp{Mega}, etc. You will need version 2.0 of this package, available
ce57c2fe 16368at @url{http://www.astro.uva.nl/~dominik/Tools}. Org checks for
4009494e
GM
16369the function @code{constants-get}, which has to be autoloaded in your
16370setup. See the installation instructions in the file
16371@file{constants.el}.
16372@item @file{cdlatex.el} by Carsten Dominik
16373@cindex @file{cdlatex.el}
c8d0cf5c 16374@cindex Dominik, Carsten
e66ba1df 16375Org mode can make use of the CD@LaTeX{} package to efficiently enter
acedf35c 16376@LaTeX{} fragments into Org files. See @ref{CDLaTeX mode}.
dbc28aaa
CD
16377@item @file{imenu.el} by Ake Stenhoff and Lars Lindberg
16378@cindex @file{imenu.el}
e66ba1df 16379Imenu allows menu access to an index of items in a file. Org mode
c8d0cf5c 16380supports Imenu---all you need to do to get the index is the following:
dbc28aaa 16381@lisp
28a16a1b 16382(add-hook 'org-mode-hook
a7808fba 16383 (lambda () (imenu-add-to-menubar "Imenu")))
dbc28aaa 16384@end lisp
c8d0cf5c
CD
16385@vindex org-imenu-depth
16386By default the index is two levels deep---you can modify the depth using
dbc28aaa 16387the option @code{org-imenu-depth}.
4009494e
GM
16388@item @file{remember.el} by John Wiegley
16389@cindex @file{remember.el}
c8d0cf5c 16390@cindex Wiegley, John
86fbb8ca 16391Org used to use this package for capture, but no longer does.
dbc28aaa
CD
16392@item @file{speedbar.el} by Eric M. Ludlam
16393@cindex @file{speedbar.el}
c8d0cf5c 16394@cindex Ludlam, Eric M.
dbc28aaa 16395Speedbar is a package that creates a special frame displaying files and
e66ba1df 16396index items in files. Org mode supports Speedbar and allows you to
c8d0cf5c 16397drill into Org files directly from the Speedbar. It also allows you to
dbc28aaa 16398restrict the scope of agenda commands to a file or a subtree by using
a7808fba 16399the command @kbd{<} in the Speedbar frame.
4009494e
GM
16400@cindex @file{table.el}
16401@item @file{table.el} by Takaaki Ota
16402@kindex C-c C-c
16403@cindex table editor, @file{table.el}
16404@cindex @file{table.el}
c8d0cf5c 16405@cindex Ota, Takaaki
4009494e 16406
ed21c5c8
CD
16407Complex ASCII tables with automatic line wrapping, column- and row-spanning,
16408and alignment can be created using the Emacs table package by Takaaki Ota
16409(@uref{http://sourceforge.net/projects/table}, and also part of Emacs 22).
e66ba1df
BG
16410Org mode will recognize these tables and export them properly. Because of
16411interference with other Org mode functionality, you unfortunately cannot edit
ed21c5c8
CD
16412these tables directly in the buffer. Instead, you need to use the command
16413@kbd{C-c '} to edit them, similar to source code snippets.
4009494e
GM
16414
16415@table @kbd
acedf35c 16416@orgcmd{C-c ',org-edit-special}
ed21c5c8 16417Edit a @file{table.el} table. Works when the cursor is in a table.el table.
4009494e 16418@c
acedf35c 16419@orgcmd{C-c ~,org-table-create-with-table.el}
c8d0cf5c 16420Insert a @file{table.el} table. If there is already a table at point, this
e66ba1df 16421command converts it between the @file{table.el} format and the Org mode
4009494e
GM
16422format. See the documentation string of the command
16423@code{org-convert-table} for the restrictions under which this is
16424possible.
16425@end table
ed21c5c8 16426@file{table.el} is part of Emacs since Emacs 22.
4009494e 16427@item @file{footnote.el} by Steven L. Baur
c8d0cf5c
CD
16428@cindex @file{footnote.el}
16429@cindex Baur, Steven L.
e66ba1df
BG
16430Org mode recognizes numerical footnotes as provided by this package.
16431However, Org mode also has its own footnote support (@pxref{Footnotes}),
55e0839d 16432which makes using @file{footnote.el} unnecessary.
4009494e
GM
16433@end table
16434
16435@node Conflicts, , Cooperation, Interaction
e66ba1df 16436@subsection Packages that lead to conflicts with Org mode
4009494e
GM
16437
16438@table @asis
16439
3da3282e 16440@cindex @code{shift-selection-mode}
c8d0cf5c 16441@vindex org-support-shift-select
3da3282e
CD
16442In Emacs 23, @code{shift-selection-mode} is on by default, meaning that
16443cursor motions combined with the shift key should start or enlarge regions.
16444This conflicts with the use of @kbd{S-@key{cursor}} commands in Org to change
16445timestamps, TODO keywords, priorities, and item bullet types if the cursor is
16446at such a location. By default, @kbd{S-@key{cursor}} commands outside
16447special contexts don't do anything, but you can customize the variable
e66ba1df 16448@code{org-support-shift-select}. Org mode then tries to accommodate shift
3da3282e
CD
16449selection by (i) using it outside of the special contexts where special
16450commands apply, and by (ii) extending an existing active region even if the
16451cursor moves across a special context.
4009494e 16452
4009494e 16453@item @file{CUA.el} by Kim. F. Storm
c8d0cf5c
CD
16454@cindex @file{CUA.el}
16455@cindex Storm, Kim. F.
16456@vindex org-replace-disputed-keys
3da3282e 16457Key bindings in Org conflict with the @kbd{S-<cursor>} keys used by CUA mode
c8d0cf5c 16458(as well as @code{pc-select-mode} and @code{s-region-mode}) to select and extend the
3da3282e
CD
16459region. In fact, Emacs 23 has this built-in in the form of
16460@code{shift-selection-mode}, see previous paragraph. If you are using Emacs
c8d0cf5c 1646123, you probably don't want to use another package for this purpose. However,
3da3282e 16462if you prefer to leave these keys to a different package while working in
e66ba1df 16463Org mode, configure the variable @code{org-replace-disputed-keys}. When set,
3da3282e
CD
16464Org will move the following key bindings in Org files, and in the agenda
16465buffer (but not during date selection).
4009494e
GM
16466
16467@example
ce57c2fe
BG
16468S-UP @result{} M-p S-DOWN @result{} M-n
16469S-LEFT @result{} M-- S-RIGHT @result{} M-+
16470C-S-LEFT @result{} M-S-- C-S-RIGHT @result{} M-S-+
4009494e
GM
16471@end example
16472
c8d0cf5c 16473@vindex org-disputed-keys
4009494e
GM
16474Yes, these are unfortunately more difficult to remember. If you want
16475to have other replacement keys, look at the variable
16476@code{org-disputed-keys}.
3da3282e 16477
271672fa
BG
16478@item @file{ecomplete.el} by Lars Magne Ingebrigtsen @email{larsi@@gnus.org}
16479@cindex @file{ecomplete.el}
16480
16481Ecomplete provides ``electric'' address completion in address header
16482lines in message buffers. Sadly Orgtbl mode cuts ecompletes power
16483supply: No completion happens when Orgtbl mode is enabled in message
16484buffers while entering text in address header lines. If one wants to
16485use ecomplete one should @emph{not} follow the advice to automagically
16486turn on Orgtbl mode in message buffers (see @ref{Orgtbl mode}), but
16487instead---after filling in the message headers---turn on Orgtbl mode
16488manually when needed in the messages body.
16489
8223b1d2
BG
16490@item @file{filladapt.el} by Kyle Jones
16491@cindex @file{filladapt.el}
16492
16493Org mode tries to do the right thing when filling paragraphs, list items and
16494other elements. Many users reported they had problems using both
16495@file{filladapt.el} and Org mode, so a safe thing to do is to disable it like
16496this:
16497
16498@lisp
16499(add-hook 'org-mode-hook 'turn-off-filladapt-mode)
16500@end lisp
16501
c8d0cf5c
CD
16502@item @file{yasnippet.el}
16503@cindex @file{yasnippet.el}
271672fa 16504The way Org mode binds the @key{TAB} key (binding to @code{[tab]} instead of
acedf35c 16505@code{"\t"}) overrules YASnippet's access to this key. The following code
c8d0cf5c
CD
16506fixed this problem:
16507
16508@lisp
16509(add-hook 'org-mode-hook
c0468714
GM
16510 (lambda ()
16511 (org-set-local 'yas/trigger-key [tab])
e66ba1df 16512 (define-key yas/keymap [tab] 'yas/next-field-or-maybe-expand)))
c8d0cf5c
CD
16513@end lisp
16514
ce57c2fe
BG
16515The latest version of yasnippet doesn't play well with Org mode. If the
16516above code does not fix the conflict, start by defining the following
16517function:
16518
16519@lisp
16520(defun yas/org-very-safe-expand ()
63aa0982 16521 (let ((yas/fallback-behavior 'return-nil)) (yas/expand)))
ce57c2fe
BG
16522@end lisp
16523
16524Then, tell Org mode what to do with the new function:
16525
16526@lisp
16527(add-hook 'org-mode-hook
16528 (lambda ()
271672fa
BG
16529 (make-variable-buffer-local 'yas/trigger-key)
16530 (setq yas/trigger-key [tab])
16531 (add-to-list 'org-tab-first-hook 'yas/org-very-safe-expand)
16532 (define-key yas/keymap [tab] 'yas/next-field)))
ce57c2fe
BG
16533@end lisp
16534
4009494e
GM
16535@item @file{windmove.el} by Hovav Shacham
16536@cindex @file{windmove.el}
c8d0cf5c 16537This package also uses the @kbd{S-<cursor>} keys, so everything written
86fbb8ca 16538in the paragraph above about CUA mode also applies here. If you want make
e66ba1df 16539the windmove function active in locations where Org mode does not have
86fbb8ca
CD
16540special functionality on @kbd{S-@key{cursor}}, add this to your
16541configuration:
16542
16543@lisp
16544;; Make windmove work in org-mode:
16545(add-hook 'org-shiftup-final-hook 'windmove-up)
16546(add-hook 'org-shiftleft-final-hook 'windmove-left)
16547(add-hook 'org-shiftdown-final-hook 'windmove-down)
16548(add-hook 'org-shiftright-final-hook 'windmove-right)
16549@end lisp
4009494e 16550
a351880d
CD
16551@item @file{viper.el} by Michael Kifer
16552@cindex @file{viper.el}
16553@kindex C-c /
16554Viper uses @kbd{C-c /} and therefore makes this key not access the
e66ba1df 16555corresponding Org mode command @code{org-sparse-tree}. You need to find
a351880d
CD
16556another key for this command, or override the key in
16557@code{viper-vi-global-user-map} with
16558
16559@lisp
16560(define-key viper-vi-global-user-map "C-c /" 'org-sparse-tree)
16561@end lisp
16562
271672fa
BG
16563
16564
4009494e
GM
16565@end table
16566
271672fa 16567@node org-crypt, , Interaction, Miscellaneous
ce57c2fe
BG
16568@section org-crypt.el
16569@cindex @file{org-crypt.el}
16570@cindex @code{org-decrypt-entry}
16571
16572Org-crypt will encrypt the text of an entry, but not the headline, or
16573properties. Org-crypt uses the Emacs EasyPG library to encrypt and decrypt
16574files.
16575
16576Any text below a headline that has a @samp{:crypt:} tag will be automatically
16577be encrypted when the file is saved. If you want to use a different tag just
16578customize the @code{org-crypt-tag-matcher} setting.
16579
16580To use org-crypt it is suggested that you have the following in your
16581@file{.emacs}:
16582
271672fa 16583@lisp
ce57c2fe
BG
16584(require 'org-crypt)
16585(org-crypt-use-before-save-magic)
16586(setq org-tags-exclude-from-inheritance (quote ("crypt")))
16587
16588(setq org-crypt-key nil)
16589 ;; GPG key to use for encryption
16590 ;; Either the Key ID or set to nil to use symmetric encryption.
16591
16592(setq auto-save-default nil)
16593 ;; Auto-saving does not cooperate with org-crypt.el: so you need
16594 ;; to turn it off if you plan to use org-crypt.el quite often.
16595 ;; Otherwise, you'll get an (annoying) message each time you
16596 ;; start Org.
16597
16598 ;; To turn it off only locally, you can insert this:
16599 ;;
16600 ;; # -*- buffer-auto-save-file-name: nil; -*-
271672fa 16601@end lisp
ce57c2fe
BG
16602
16603Excluding the crypt tag from inheritance prevents already encrypted text
16604being encrypted again.
7006d207
CD
16605
16606@node Hacking, MobileOrg, Miscellaneous, Top
b349f79f 16607@appendix Hacking
c8d0cf5c 16608@cindex hacking
b349f79f
CD
16609
16610This appendix covers some aspects where users can extend the functionality of
a7808fba 16611Org.
4009494e
GM
16612
16613@menu
8223b1d2 16614* Hooks:: How to reach into Org's internals
c0468714
GM
16615* Add-on packages:: Available extensions
16616* Adding hyperlink types:: New custom link types
271672fa 16617* Adding export back-ends:: How to write new export back-ends
c0468714 16618* Context-sensitive commands:: How to add functionality to such commands
acedf35c 16619* Tables in arbitrary syntax:: Orgtbl for @LaTeX{} and other programs
c0468714
GM
16620* Dynamic blocks:: Automatically filled blocks
16621* Special agenda views:: Customized views
271672fa
BG
16622* Speeding up your agendas:: Tips on how to speed up your agendas
16623* Extracting agenda information:: Post-processing of agenda information
c0468714
GM
16624* Using the property API:: Writing programs that use entry properties
16625* Using the mapping API:: Mapping over all or selected entries
4009494e
GM
16626@end menu
16627
c8d0cf5c
CD
16628@node Hooks, Add-on packages, Hacking, Hacking
16629@section Hooks
16630@cindex hooks
16631
16632Org has a large number of hook variables that can be used to add
16633functionality. This appendix about hacking is going to illustrate the
16634use of some of them. A complete list of all hooks with documentation is
16635maintained by the Worg project and can be found at
16636@uref{http://orgmode.org/worg/org-configs/org-hooks.php}.
16637
16638@node Add-on packages, Adding hyperlink types, Hooks, Hacking
16639@section Add-on packages
16640@cindex add-on packages
16641
16642A large number of add-on packages have been written by various authors.
271672fa 16643
c8d0cf5c 16644These packages are not part of Emacs, but they are distributed as contributed
271672fa
BG
16645packages with the separate release available at @uref{http://orgmode.org}.
16646See the @file{contrib/README} file in the source code directory for a list of
16647contributed files. You may also find some more information on the Worg page:
c8d0cf5c
CD
16648@uref{http://orgmode.org/worg/org-contrib/}.
16649
271672fa 16650@node Adding hyperlink types, Adding export back-ends, Add-on packages, Hacking
4009494e
GM
16651@section Adding hyperlink types
16652@cindex hyperlinks, adding new types
16653
a7808fba 16654Org has a large number of hyperlink types built-in
c8d0cf5c
CD
16655(@pxref{Hyperlinks}). If you would like to add new link types, Org
16656provides an interface for doing so. Let's look at an example file,
16657@file{org-man.el}, that will add support for creating links like
a7808fba 16658@samp{[[man:printf][The printf manpage]]} to show Unix manual pages inside
c8d0cf5c 16659Emacs:
4009494e
GM
16660
16661@lisp
a7808fba 16662;;; org-man.el - Support for links to manpages in Org
4009494e
GM
16663
16664(require 'org)
16665
16666(org-add-link-type "man" 'org-man-open)
16667(add-hook 'org-store-link-functions 'org-man-store-link)
16668
16669(defcustom org-man-command 'man
16670 "The Emacs command to be used to display a man page."
16671 :group 'org-link
16672 :type '(choice (const man) (const woman)))
16673
16674(defun org-man-open (path)
16675 "Visit the manpage on PATH.
16676PATH should be a topic that can be thrown at the man command."
16677 (funcall org-man-command path))
16678
16679(defun org-man-store-link ()
16680 "Store a link to a manpage."
16681 (when (memq major-mode '(Man-mode woman-mode))
16682 ;; This is a man page, we do make this link
16683 (let* ((page (org-man-get-page-name))
16684 (link (concat "man:" page))
16685 (description (format "Manpage for %s" page)))
16686 (org-store-link-props
16687 :type "man"
16688 :link link
16689 :description description))))
16690
16691(defun org-man-get-page-name ()
16692 "Extract the page name from the buffer name."
16693 ;; This works for both `Man-mode' and `woman-mode'.
16694 (if (string-match " \\(\\S-+\\)\\*" (buffer-name))
16695 (match-string 1 (buffer-name))
16696 (error "Cannot create link to this man page")))
16697
16698(provide 'org-man)
16699
16700;;; org-man.el ends here
16701@end lisp
16702
16703@noindent
16704You would activate this new link type in @file{.emacs} with
16705
16706@lisp
16707(require 'org-man)
16708@end lisp
16709
16710@noindent
864c9740 16711Let's go through the file and see what it does.
4009494e 16712@enumerate
28a16a1b 16713@item
4009494e
GM
16714It does @code{(require 'org)} to make sure that @file{org.el} has been
16715loaded.
16716@item
16717The next line calls @code{org-add-link-type} to define a new link type
16718with prefix @samp{man}. The call also contains the name of a function
16719that will be called to follow such a link.
16720@item
c8d0cf5c 16721@vindex org-store-link-functions
4009494e
GM
16722The next line adds a function to @code{org-store-link-functions}, in
16723order to allow the command @kbd{C-c l} to record a useful link in a
16724buffer displaying a man page.
16725@end enumerate
16726
16727The rest of the file defines the necessary variables and functions.
c8d0cf5c 16728First there is a customization variable that determines which Emacs
a7808fba 16729command should be used to display man pages. There are two options,
4009494e 16730@code{man} and @code{woman}. Then the function to follow a link is
c8d0cf5c 16731defined. It gets the link path as an argument---in this case the link
4009494e
GM
16732path is just a topic for the manual command. The function calls the
16733value of @code{org-man-command} to display the man page.
16734
16735Finally the function @code{org-man-store-link} is defined. When you try
c8d0cf5c 16736to store a link with @kbd{C-c l}, this function will be called to
4009494e 16737try to make a link. The function must first decide if it is supposed to
c8d0cf5c 16738create the link for this buffer type; we do this by checking the value
4009494e 16739of the variable @code{major-mode}. If not, the function must exit and
a7808fba
CD
16740return the value @code{nil}. If yes, the link is created by getting the
16741manual topic from the buffer name and prefixing it with the string
4009494e
GM
16742@samp{man:}. Then it must call the command @code{org-store-link-props}
16743and set the @code{:type} and @code{:link} properties. Optionally you
16744can also set the @code{:description} property to provide a default for
a7808fba 16745the link description when the link is later inserted into an Org
4009494e
GM
16746buffer with @kbd{C-c C-l}.
16747
acedf35c 16748When it makes sense for your new link type, you may also define a function
1df7defd 16749@code{org-PREFIX-complete-link} that implements special (e.g., completion)
c8d0cf5c
CD
16750support for inserting such a link with @kbd{C-c C-l}. Such a function should
16751not accept any arguments, and return the full link with prefix.
16752
271672fa
BG
16753@node Adding export back-ends, Context-sensitive commands, Adding hyperlink types, Hacking
16754@section Adding export back-ends
16755@cindex Export, writing back-ends
16756
16757Org 8.0 comes with a completely rewritten export engine which makes it easy
16758to write new export back-ends, either from scratch, or from deriving them
16759from existing ones.
16760
16761Your two entry points are respectively @code{org-export-define-backend} and
16762@code{org-export-define-derived-backend}. To grok these functions, you
16763should first have a look at @file{ox-latex.el} (for how to define a new
16764back-end from scratch) and @file{ox-beamer.el} (for how to derive a new
16765back-end from an existing one.
16766
16767When creating a new back-end from scratch, the basic idea is to set the name
16768of the back-end (as a symbol) and an an alist of elements and export
16769functions. On top of this, you will need to set additional keywords like
16770@code{:menu-entry} (to display the back-end in the export dispatcher),
16771@code{:export-block} (to specify what blocks should not be exported by this
16772back-end), and @code{:options-alist} (to let the user set export options that
16773are specific to this back-end.)
16774
16775Deriving a new back-end is similar, except that you need to set
16776@code{:translate-alist} to an alist of export functions that should be used
16777instead of the parent back-end functions.
16778
16779For a complete reference documentation, see
16780@url{http://orgmode.org/worg/dev/org-export-reference.html, the Org Export
16781Reference on Worg}.
16782
16783@node Context-sensitive commands, Tables in arbitrary syntax, Adding export back-ends, Hacking
c8d0cf5c
CD
16784@section Context-sensitive commands
16785@cindex context-sensitive commands, hooks
16786@cindex add-ons, context-sensitive commands
16787@vindex org-ctrl-c-ctrl-c-hook
16788
16789Org has several commands that act differently depending on context. The most
153ae947 16790important example is the @kbd{C-c C-c} (@pxref{The very busy C-c C-c key}).
c8d0cf5c
CD
16791Also the @kbd{M-cursor} and @kbd{M-S-cursor} keys have this property.
16792
16793Add-ons can tap into this functionality by providing a function that detects
16794special context for that add-on and executes functionality appropriate for
16795the context. Here is an example from Dan Davison's @file{org-R.el} which
afe98dfa 16796allows you to evaluate commands based on the @file{R} programming language
e66ba1df 16797@footnote{@file{org-R.el} has been replaced by the Org mode functionality
afe98dfa
CD
16798described in @ref{Working With Source Code} and is now obsolete.}. For this
16799package, special contexts are lines that start with @code{#+R:} or
c8d0cf5c
CD
16800@code{#+RR:}.
16801
16802@lisp
16803(defun org-R-apply-maybe ()
16804 "Detect if this is context for org-R and execute R commands."
16805 (if (save-excursion
16806 (beginning-of-line 1)
16807 (looking-at "#\\+RR?:"))
16808 (progn (call-interactively 'org-R-apply)
16809 t) ;; to signal that we took action
16810 nil)) ;; to signal that we did not
16811
16812(add-hook 'org-ctrl-c-ctrl-c-hook 'org-R-apply-maybe)
16813@end lisp
16814
16815The function first checks if the cursor is in such a line. If that is the
16816case, @code{org-R-apply} is called and the function returns @code{t} to
16817signal that action was taken, and @kbd{C-c C-c} will stop looking for other
ce57c2fe
BG
16818contexts. If the function finds it should do nothing locally, it returns
16819@code{nil} so that other, similar functions can have a try.
c8d0cf5c
CD
16820
16821
16822@node Tables in arbitrary syntax, Dynamic blocks, Context-sensitive commands, Hacking
a7808fba 16823@section Tables and lists in arbitrary syntax
4009494e 16824@cindex tables, in other modes
dbc28aaa 16825@cindex lists, in other modes
a7808fba 16826@cindex Orgtbl mode
4009494e 16827
a7808fba 16828Since Orgtbl mode can be used as a minor mode in arbitrary buffers, a
4009494e 16829frequent feature request has been to make it work with native tables in
acedf35c 16830specific languages, for example @LaTeX{}. However, this is extremely
dbc28aaa 16831hard to do in a general way, would lead to a customization nightmare,
ce57c2fe 16832and would take away much of the simplicity of the Orgtbl mode table
dbc28aaa
CD
16833editor.
16834
a7808fba 16835This appendix describes a different approach. We keep the Orgtbl mode
4009494e
GM
16836table in its native format (the @i{source table}), and use a custom
16837function to @i{translate} the table to the correct syntax, and to
16838@i{install} it in the right location (the @i{target table}). This puts
16839the burden of writing conversion functions on the user, but it allows
16840for a very flexible system.
16841
86fbb8ca
CD
16842Bastien added the ability to do the same with lists, in Orgstruct mode. You
16843can use Org's facilities to edit and structure lists by turning
16844@code{orgstruct-mode} on, then locally exporting such lists in another format
acedf35c 16845(HTML, @LaTeX{} or Texinfo.)
dbc28aaa
CD
16846
16847
4009494e 16848@menu
c0468714 16849* Radio tables:: Sending and receiving radio tables
e66ba1df 16850* A @LaTeX{} example:: Step by step, almost a tutorial
c0468714 16851* Translator functions:: Copy and modify
271672fa 16852* Radio lists:: Sending and receiving lists
4009494e
GM
16853@end menu
16854
e66ba1df 16855@node Radio tables, A @LaTeX{} example, Tables in arbitrary syntax, Tables in arbitrary syntax
4009494e
GM
16856@subsection Radio tables
16857@cindex radio tables
16858
16859To define the location of the target table, you first need to create two
271672fa
BG
16860lines that are comments in the current mode, but contain magic words
16861@code{BEGIN/END RECEIVE ORGTBL} for Orgtbl mode to find. Orgtbl mode will
16862insert the translated table between these lines, replacing whatever was there
16863before. For example in C mode where comments are between @code{/* ... */}:
4009494e
GM
16864
16865@example
16866/* BEGIN RECEIVE ORGTBL table_name */
16867/* END RECEIVE ORGTBL table_name */
16868@end example
16869
16870@noindent
16871Just above the source table, we put a special line that tells
a7808fba 16872Orgtbl mode how to translate this table and where to install it. For
4009494e 16873example:
c8d0cf5c 16874@cindex #+ORGTBL
4009494e 16875@example
30cb51f1 16876#+ORGTBL: SEND table_name translation_function arguments...
4009494e
GM
16877@end example
16878
16879@noindent
16880@code{table_name} is the reference name for the table that is also used
ce57c2fe 16881in the receiver lines. @code{translation_function} is the Lisp function
4009494e
GM
16882that does the translation. Furthermore, the line can contain a list of
16883arguments (alternating key and value) at the end. The arguments will be
16884passed as a property list to the translation function for
16885interpretation. A few standard parameters are already recognized and
16886acted upon before the translation function is called:
16887
16888@table @code
16889@item :skip N
b349f79f
CD
16890Skip the first N lines of the table. Hlines do count as separate lines for
16891this parameter!
16892
4009494e
GM
16893@item :skipcols (n1 n2 ...)
16894List of columns that should be skipped. If the table has a column with
16895calculation marks, that column is automatically discarded as well.
16896Please note that the translator function sees the table @emph{after} the
16897removal of these columns, the function never knows that there have been
16898additional columns.
8223b1d2
BG
16899
16900@item :no-escape t
271672fa
BG
16901When non-@code{nil}, do not escape special characters @code{&%#_^} when exporting
16902the table. The default value is @code{nil}.
4009494e
GM
16903@end table
16904
16905@noindent
16906The one problem remaining is how to keep the source table in the buffer
16907without disturbing the normal workings of the file, for example during
acedf35c 16908compilation of a C file or processing of a @LaTeX{} file. There are a
4009494e
GM
16909number of different solutions:
16910
16911@itemize @bullet
16912@item
16913The table could be placed in a block comment if that is supported by the
a7808fba 16914language. For example, in C mode you could wrap the table between
4009494e 16915@samp{/*} and @samp{*/} lines.
28a16a1b 16916@item
4009494e 16917Sometimes it is possible to put the table after some kind of @i{END}
c8d0cf5c 16918statement, for example @samp{\bye} in @TeX{} and @samp{\end@{document@}}
acedf35c 16919in @LaTeX{}.
4009494e 16920@item
c8d0cf5c 16921You can just comment the table line-by-line whenever you want to process
4009494e 16922the file, and uncomment it whenever you need to edit the table. This
271672fa 16923only sounds tedious---the command @kbd{M-x orgtbl-toggle-comment RET}
c8d0cf5c 16924makes this comment-toggling very easy, in particular if you bind it to a
4009494e
GM
16925key.
16926@end itemize
16927
e66ba1df 16928@node A @LaTeX{} example, Translator functions, Radio tables, Tables in arbitrary syntax
acedf35c
CD
16929@subsection A @LaTeX{} example of radio tables
16930@cindex @LaTeX{}, and Orgtbl mode
4009494e 16931
acedf35c 16932The best way to wrap the source table in @LaTeX{} is to use the
4009494e
GM
16933@code{comment} environment provided by @file{comment.sty}. It has to be
16934activated by placing @code{\usepackage@{comment@}} into the document
a7808fba 16935header. Orgtbl mode can insert a radio table skeleton@footnote{By
acedf35c 16936default this works only for @LaTeX{}, HTML, and Texinfo. Configure the
271672fa
BG
16937variable @code{orgtbl-radio-table-templates} to install templates for other
16938modes.} with the command @kbd{M-x orgtbl-insert-radio-table RET}. You will
55e0839d 16939be prompted for a table name, let's say we use @samp{salesfigures}. You
4009494e
GM
16940will then get the following template:
16941
c8d0cf5c 16942@cindex #+ORGTBL, SEND
4009494e
GM
16943@example
16944% BEGIN RECEIVE ORGTBL salesfigures
16945% END RECEIVE ORGTBL salesfigures
16946\begin@{comment@}
16947#+ORGTBL: SEND salesfigures orgtbl-to-latex
16948| | |
16949\end@{comment@}
16950@end example
16951
16952@noindent
acedf35c 16953@vindex @LaTeX{}-verbatim-environments
a7808fba 16954The @code{#+ORGTBL: SEND} line tells Orgtbl mode to use the function
acedf35c 16955@code{orgtbl-to-latex} to convert the table into @LaTeX{} and to put it
4009494e 16956into the receiver location with name @code{salesfigures}. You may now
acedf35c 16957fill in the table---feel free to use the spreadsheet features@footnote{If
4009494e 16958the @samp{#+TBLFM} line contains an odd number of dollar characters,
acedf35c 16959this may cause problems with font-lock in @LaTeX{} mode. As shown in the
4009494e
GM
16960example you can fix this by adding an extra line inside the
16961@code{comment} environment that is used to balance the dollar
c8d0cf5c 16962expressions. If you are using AUC@TeX{} with the font-latex library, a
4009494e
GM
16963much better solution is to add the @code{comment} environment to the
16964variable @code{LaTeX-verbatim-environments}.}:
16965
16966@example
16967% BEGIN RECEIVE ORGTBL salesfigures
16968% END RECEIVE ORGTBL salesfigures
16969\begin@{comment@}
16970#+ORGTBL: SEND salesfigures orgtbl-to-latex
16971| Month | Days | Nr sold | per day |
16972|-------+------+---------+---------|
16973| Jan | 23 | 55 | 2.4 |
16974| Feb | 21 | 16 | 0.8 |
16975| March | 22 | 278 | 12.6 |
16976#+TBLFM: $4=$3/$2;%.1f
16977% $ (optional extra dollar to keep font-lock happy, see footnote)
16978\end@{comment@}
16979@end example
16980
16981@noindent
16982When you are done, press @kbd{C-c C-c} in the table to get the converted
16983table inserted between the two marker lines.
16984
55e0839d 16985Now let's assume you want to make the table header by hand, because you
1df7defd 16986want to control how columns are aligned, etc. In this case we make sure
c8d0cf5c 16987that the table translator skips the first 2 lines of the source
1df7defd 16988table, and tell the command to work as a @i{splice}, i.e., to not produce
4009494e
GM
16989header and footer commands of the target table:
16990
16991@example
16992\begin@{tabular@}@{lrrr@}
16993Month & \multicolumn@{1@}@{c@}@{Days@} & Nr.\ sold & per day\\
16994% BEGIN RECEIVE ORGTBL salesfigures
16995% END RECEIVE ORGTBL salesfigures
16996\end@{tabular@}
16997%
16998\begin@{comment@}
16999#+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2
17000| Month | Days | Nr sold | per day |
17001|-------+------+---------+---------|
17002| Jan | 23 | 55 | 2.4 |
17003| Feb | 21 | 16 | 0.8 |
17004| March | 22 | 278 | 12.6 |
17005#+TBLFM: $4=$3/$2;%.1f
17006\end@{comment@}
17007@end example
17008
acedf35c 17009The @LaTeX{} translator function @code{orgtbl-to-latex} is already part of
a7808fba 17010Orgtbl mode. It uses a @code{tabular} environment to typeset the table
4009494e 17011and marks horizontal lines with @code{\hline}. Furthermore, it
c8d0cf5c 17012interprets the following parameters (see also @pxref{Translator functions}):
4009494e
GM
17013
17014@table @code
17015@item :splice nil/t
17016When set to t, return only table body lines, don't wrap them into a
271672fa 17017tabular environment. Default is @code{nil}.
4009494e
GM
17018
17019@item :fmt fmt
c8d0cf5c 17020A format to be used to wrap each field, it should contain @code{%s} for the
4009494e
GM
17021original field value. For example, to wrap each field value in dollars,
17022you could use @code{:fmt "$%s$"}. This may also be a property list with
ce57c2fe 17023column numbers and formats, for example @code{:fmt (2 "$%s$" 4 "%s\\%%")}.
a7808fba
CD
17024A function of one argument can be used in place of the strings; the
17025function must return a formatted string.
4009494e
GM
17026
17027@item :efmt efmt
17028Use this format to print numbers with exponentials. The format should
17029have @code{%s} twice for inserting mantissa and exponent, for example
17030@code{"%s\\times10^@{%s@}"}. The default is @code{"%s\\,(%s)"}. This
17031may also be a property list with column numbers and formats, for example
17032@code{:efmt (2 "$%s\\times10^@{%s@}$" 4 "$%s\\cdot10^@{%s@}$")}. After
17033@code{efmt} has been applied to a value, @code{fmt} will also be
a7808fba
CD
17034applied. Similar to @code{fmt}, functions of two arguments can be
17035supplied instead of strings.
4009494e
GM
17036@end table
17037
e66ba1df 17038@node Translator functions, Radio lists, A @LaTeX{} example, Tables in arbitrary syntax
4009494e 17039@subsection Translator functions
a7808fba 17040@cindex HTML, and Orgtbl mode
4009494e
GM
17041@cindex translator function
17042
b349f79f
CD
17043Orgtbl mode has several translator functions built-in: @code{orgtbl-to-csv}
17044(comma-separated values), @code{orgtbl-to-tsv} (TAB-separated values)
17045@code{orgtbl-to-latex}, @code{orgtbl-to-html}, and @code{orgtbl-to-texinfo}.
17046Except for @code{orgtbl-to-html}@footnote{The HTML translator uses the same
17047code that produces tables during HTML export.}, these all use a generic
17048translator, @code{orgtbl-to-generic}. For example, @code{orgtbl-to-latex}
17049itself is a very short function that computes the column definitions for the
17050@code{tabular} environment, defines a few field and line separators and then
c8d0cf5c 17051hands processing over to the generic translator. Here is the entire code:
4009494e
GM
17052
17053@lisp
17054@group
17055(defun orgtbl-to-latex (table params)
a7808fba 17056 "Convert the Orgtbl mode TABLE to LaTeX."
4009494e
GM
17057 (let* ((alignment (mapconcat (lambda (x) (if x "r" "l"))
17058 org-table-last-alignment ""))
17059 (params2
17060 (list
17061 :tstart (concat "\\begin@{tabular@}@{" alignment "@}")
17062 :tend "\\end@{tabular@}"
17063 :lstart "" :lend " \\\\" :sep " & "
17064 :efmt "%s\\,(%s)" :hline "\\hline")))
17065 (orgtbl-to-generic table (org-combine-plists params2 params))))
17066@end group
17067@end lisp
17068
17069As you can see, the properties passed into the function (variable
17070@var{PARAMS}) are combined with the ones newly defined in the function
1df7defd 17071(variable @var{PARAMS2}). The ones passed into the function (i.e., the
4009494e 17072ones set by the @samp{ORGTBL SEND} line) take precedence. So if you
acedf35c 17073would like to use the @LaTeX{} translator, but wanted the line endings to
4009494e
GM
17074be @samp{\\[2mm]} instead of the default @samp{\\}, you could just
17075overrule the default with
17076
17077@example
17078#+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]"
17079@end example
17080
17081For a new language, you can either write your own converter function in
acedf35c 17082analogy with the @LaTeX{} translator, or you can use the generic function
4009494e
GM
17083directly. For example, if you have a language where a table is started
17084with @samp{!BTBL!}, ended with @samp{!ETBL!}, and where table lines are
c8d0cf5c 17085started with @samp{!BL!}, ended with @samp{!EL!}, and where the field
4009494e
GM
17086separator is a TAB, you could call the generic translator like this (on
17087a single line!):
17088
17089@example
17090#+ORGTBL: SEND test orgtbl-to-generic :tstart "!BTBL!" :tend "!ETBL!"
17091 :lstart "!BL! " :lend " !EL!" :sep "\t"
17092@end example
17093
17094@noindent
17095Please check the documentation string of the function
17096@code{orgtbl-to-generic} for a full list of parameters understood by
c8d0cf5c 17097that function, and remember that you can pass each of them into
4009494e
GM
17098@code{orgtbl-to-latex}, @code{orgtbl-to-texinfo}, and any other function
17099using the generic function.
17100
17101Of course you can also write a completely new function doing complicated
17102things the generic translator cannot do. A translator function takes
17103two arguments. The first argument is the table, a list of lines, each
17104line either the symbol @code{hline} or a list of fields. The second
17105argument is the property list containing all parameters specified in the
17106@samp{#+ORGTBL: SEND} line. The function must return a single string
17107containing the formatted table. If you write a generally useful
c8d0cf5c 17108translator, please post it on @email{emacs-orgmode@@gnu.org} so that
4009494e
GM
17109others can benefit from your work.
17110
86fbb8ca 17111@node Radio lists, , Translator functions, Tables in arbitrary syntax
dbc28aaa
CD
17112@subsection Radio lists
17113@cindex radio lists
17114@cindex org-list-insert-radio-list
17115
acedf35c 17116Sending and receiving radio lists works exactly the same way as sending and
6eb02347 17117receiving radio tables (@pxref{Radio tables}). As for radio tables, you can
acedf35c 17118insert radio list templates in HTML, @LaTeX{} and Texinfo modes by calling
6eb02347 17119@code{org-list-insert-radio-list}.
dbc28aaa
CD
17120
17121Here are the differences with radio tables:
17122
17123@itemize @minus
17124@item
86fbb8ca
CD
17125Orgstruct mode must be active.
17126@item
17127Use the @code{ORGLST} keyword instead of @code{ORGTBL}.
dbc28aaa
CD
17128@item
17129The available translation functions for radio lists don't take
17130parameters.
28a16a1b 17131@item
c8d0cf5c 17132@kbd{C-c C-c} will work when pressed on the first item of the list.
dbc28aaa
CD
17133@end itemize
17134
acedf35c
CD
17135Here is a @LaTeX{} example. Let's say that you have this in your
17136@LaTeX{} file:
dbc28aaa 17137
86fbb8ca 17138@cindex #+ORGLST
dbc28aaa
CD
17139@example
17140% BEGIN RECEIVE ORGLST to-buy
17141% END RECEIVE ORGLST to-buy
17142\begin@{comment@}
86fbb8ca 17143#+ORGLST: SEND to-buy org-list-to-latex
dbc28aaa
CD
17144- a new house
17145- a new computer
17146 + a new keyboard
17147 + a new mouse
17148- a new life
17149\end@{comment@}
17150@end example
17151
d3517077 17152Pressing @kbd{C-c C-c} on @code{a new house} and will insert the converted
acedf35c 17153@LaTeX{} list between the two marker lines.
dbc28aaa 17154
b349f79f 17155@node Dynamic blocks, Special agenda views, Tables in arbitrary syntax, Hacking
4009494e
GM
17156@section Dynamic blocks
17157@cindex dynamic blocks
17158
a7808fba 17159Org documents can contain @emph{dynamic blocks}. These are
4009494e
GM
17160specially marked regions that are updated by some user-written function.
17161A good example for such a block is the clock table inserted by the
17162command @kbd{C-c C-x C-r} (@pxref{Clocking work time}).
17163
acedf35c 17164Dynamic blocks are enclosed by a BEGIN-END structure that assigns a name
4009494e
GM
17165to the block and can also specify parameters for the function producing
17166the content of the block.
17167
acedf35c 17168@cindex #+BEGIN:dynamic block
4009494e
GM
17169@example
17170#+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
17171
17172#+END:
17173@end example
17174
17175Dynamic blocks are updated with the following commands
17176
17177@table @kbd
acedf35c 17178@orgcmd{C-c C-x C-u,org-dblock-update}
4009494e 17179Update dynamic block at point.
acedf35c 17180@orgkey{C-u C-c C-x C-u}
4009494e
GM
17181Update all dynamic blocks in the current file.
17182@end table
17183
17184Updating a dynamic block means to remove all the text between BEGIN and
17185END, parse the BEGIN line for parameters and then call the specific
28a16a1b
CD
17186writer function for this block to insert the new content. If you want
17187to use the original content in the writer function, you can use the
17188extra parameter @code{:content}.
17189
17190For a block with name @code{myblock}, the writer function is
4009494e
GM
17191@code{org-dblock-write:myblock} with as only parameter a property list
17192with the parameters given in the begin line. Here is a trivial example
17193of a block that keeps track of when the block update function was last
17194run:
17195
17196@example
17197#+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M"
17198
17199#+END:
17200@end example
17201
17202@noindent
17203The corresponding block writer function could look like this:
17204
17205@lisp
17206(defun org-dblock-write:block-update-time (params)
63aa0982
BG
17207 (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
17208 (insert "Last block update at: "
271672fa 17209 (format-time-string fmt (current-time)))))
4009494e
GM
17210@end lisp
17211
17212If you want to make sure that all dynamic blocks are always up-to-date,
17213you could add the function @code{org-update-all-dblocks} to a hook, for
17214example @code{before-save-hook}. @code{org-update-all-dblocks} is
c8d0cf5c 17215written in a way such that it does nothing in buffers that are not in
a7808fba 17216@code{org-mode}.
4009494e 17217
ce57c2fe
BG
17218You can narrow the current buffer to the current dynamic block (like any
17219other block) with @code{org-narrow-to-block}.
17220
271672fa 17221@node Special agenda views, Speeding up your agendas, Dynamic blocks, Hacking
a7808fba 17222@section Special agenda views
4009494e
GM
17223@cindex agenda views, user-defined
17224
ce57c2fe
BG
17225@vindex org-agenda-skip-function
17226@vindex org-agenda-skip-function-global
afe98dfa 17227Org provides a special hook that can be used to narrow down the selection
271672fa
BG
17228made by these agenda views: @code{agenda}, @code{agenda*}@footnote{The
17229@code{agenda*} view is the same than @code{agenda} except that it only
17230considers @emph{appointments}, i.e., scheduled and deadline items that have a
17231time specification @code{[h]h:mm} in their time-stamps.}, @code{todo},
17232@code{alltodo}, @code{tags}, @code{tags-todo}, @code{tags-tree}. You may
17233specify a function that is used at each match to verify if the match should
17234indeed be part of the agenda view, and if not, how much should be skipped.
17235You can specify a global condition that will be applied to all agenda views,
17236this condition would be stored in the variable
17237@code{org-agenda-skip-function-global}. More commonly, such a definition is
17238applied only to specific custom searches, using
17239@code{org-agenda-skip-function}.
4009494e
GM
17240
17241Let's say you want to produce a list of projects that contain a WAITING
17242tag anywhere in the project tree. Let's further assume that you have
a7808fba 17243marked all tree headings that define a project with the TODO keyword
1df7defd 17244PROJECT@. In this case you would run a TODO search for the keyword
4009494e
GM
17245PROJECT, but skip the match unless there is a WAITING tag anywhere in
17246the subtree belonging to the project line.
17247
17248To achieve this, you must write a function that searches the subtree for
17249the tag. If the tag is found, the function must return @code{nil} to
17250indicate that this match should not be skipped. If there is no such
17251tag, return the location of the end of the subtree, to indicate that
17252search should continue from there.
17253
17254@lisp
17255(defun my-skip-unless-waiting ()
17256 "Skip trees that are not waiting"
17257 (let ((subtree-end (save-excursion (org-end-of-subtree t))))
dbc28aaa 17258 (if (re-search-forward ":waiting:" subtree-end t)
4009494e
GM
17259 nil ; tag found, do not skip
17260 subtree-end))) ; tag not found, continue after end of subtree
17261@end lisp
17262
17263Now you may use this function in an agenda custom command, for example
17264like this:
17265
17266@lisp
17267(org-add-agenda-custom-command
17268 '("b" todo "PROJECT"
e45e3595 17269 ((org-agenda-skip-function 'my-skip-unless-waiting)
4009494e
GM
17270 (org-agenda-overriding-header "Projects waiting for something: "))))
17271@end lisp
17272
c8d0cf5c 17273@vindex org-agenda-overriding-header
4009494e
GM
17274Note that this also binds @code{org-agenda-overriding-header} to get a
17275meaningful header in the agenda view.
17276
c8d0cf5c
CD
17277@vindex org-odd-levels-only
17278@vindex org-agenda-skip-function
a7808fba
CD
17279A general way to create custom searches is to base them on a search for
17280entries with a certain level limit. If you want to study all entries with
c8d0cf5c
CD
17281your custom search function, simply do a search for
17282@samp{LEVEL>0}@footnote{Note that, when using @code{org-odd-levels-only}, a
17283level number corresponds to order in the hierarchy, not to the number of
17284stars.}, and then use @code{org-agenda-skip-function} to select the entries
17285you really want to have.
a7808fba 17286
4009494e
GM
17287You may also put a Lisp form into @code{org-agenda-skip-function}. In
17288particular, you may use the functions @code{org-agenda-skip-entry-if}
17289and @code{org-agenda-skip-subtree-if} in this form, for example:
17290
17291@table @code
6d72f719 17292@item (org-agenda-skip-entry-if 'scheduled)
4009494e 17293Skip current entry if it has been scheduled.
6d72f719 17294@item (org-agenda-skip-entry-if 'notscheduled)
4009494e 17295Skip current entry if it has not been scheduled.
6d72f719 17296@item (org-agenda-skip-entry-if 'deadline)
4009494e 17297Skip current entry if it has a deadline.
6d72f719 17298@item (org-agenda-skip-entry-if 'scheduled 'deadline)
4009494e 17299Skip current entry if it has a deadline, or if it is scheduled.
6d72f719 17300@item (org-agenda-skip-entry-if 'todo '("TODO" "WAITING"))
ed21c5c8 17301Skip current entry if the TODO keyword is TODO or WAITING.
6d72f719 17302@item (org-agenda-skip-entry-if 'todo 'done)
ed21c5c8 17303Skip current entry if the TODO keyword marks a DONE state.
6d72f719 17304@item (org-agenda-skip-entry-if 'timestamp)
c8d0cf5c 17305Skip current entry if it has any timestamp, may also be deadline or scheduled.
8223b1d2
BG
17306@anchor{x-agenda-skip-entry-regexp}
17307@item (org-agenda-skip-entry-if 'regexp "regular expression")
dbc28aaa 17308Skip current entry if the regular expression matches in the entry.
8223b1d2 17309@item (org-agenda-skip-entry-if 'notregexp "regular expression")
dbc28aaa 17310Skip current entry unless the regular expression matches.
6d72f719 17311@item (org-agenda-skip-subtree-if 'regexp "regular expression")
4009494e
GM
17312Same as above, but check and skip the entire subtree.
17313@end table
17314
17315Therefore we could also have written the search for WAITING projects
17316like this, even without defining a special function:
17317
17318@lisp
17319(org-add-agenda-custom-command
17320 '("b" todo "PROJECT"
17321 ((org-agenda-skip-function '(org-agenda-skip-subtree-if
dbc28aaa 17322 'regexp ":waiting:"))
4009494e
GM
17323 (org-agenda-overriding-header "Projects waiting for something: "))))
17324@end lisp
17325
271672fa
BG
17326@node Speeding up your agendas, Extracting agenda information, Special agenda views, Hacking
17327@section Speeding up your agendas
17328@cindex agenda views, optimization
17329
17330When your Org files grow in both number and size, agenda commands may start
17331to become slow. Below are some tips on how to speed up the agenda commands.
17332
17333@enumerate
17334@item
d1389828
PE
17335Reduce the number of Org agenda files: this will reduce the slowness caused
17336by accessing a hard drive.
271672fa
BG
17337@item
17338Reduce the number of DONE and archived headlines: this way the agenda does
17339not need to skip them.
17340@item
17341@vindex org-agenda-dim-blocked-tasks
17342Inhibit the dimming of blocked tasks:
17343@lisp
17344(setq org-agenda-dim-blocked-tasks nil)
17345@end lisp
17346@item
17347@vindex org-startup-folded
17348@vindex org-agenda-inhibit-startup
17349Inhibit agenda files startup options:
17350@lisp
17351(setq org-agenda-inhibit-startup nil)
17352@end lisp
17353@item
17354@vindex org-agenda-show-inherited-tags
17355@vindex org-agenda-use-tag-inheritance
17356Disable tag inheritance in agenda:
17357@lisp
17358(setq org-agenda-use-tag-inheritance nil)
17359@end lisp
17360@end enumerate
17361
17362You can set these options for specific agenda views only. See the docstrings
17363of these variables for details on why they affect the agenda generation, and
17364this @uref{http://orgmode.org/worg/agenda-optimization.html, dedicated Worg
17365page} for further explanations.
17366
17367@node Extracting agenda information, Using the property API, Speeding up your agendas, Hacking
c8d0cf5c
CD
17368@section Extracting agenda information
17369@cindex agenda, pipe
17370@cindex Scripts, for agenda processing
17371
17372@vindex org-agenda-custom-commands
17373Org provides commands to access agenda information for the command
17374line in Emacs batch mode. This extracted information can be sent
17375directly to a printer, or it can be read by a program that does further
17376processing of the data. The first of these commands is the function
17377@code{org-batch-agenda}, that produces an agenda view and sends it as
1df7defd 17378ASCII text to STDOUT@. The command takes a single string as parameter.
c8d0cf5c
CD
17379If the string has length 1, it is used as a key to one of the commands
17380you have configured in @code{org-agenda-custom-commands}, basically any
17381key you can use after @kbd{C-c a}. For example, to directly print the
17382current TODO list, you could use
17383
17384@example
17385emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
17386@end example
17387
17388If the parameter is a string with 2 or more characters, it is used as a
17389tags/TODO match string. For example, to print your local shopping list
17390(all items with the tag @samp{shop}, but excluding the tag
17391@samp{NewYork}), you could use
17392
17393@example
17394emacs -batch -l ~/.emacs \
17395 -eval '(org-batch-agenda "+shop-NewYork")' | lpr
17396@end example
17397
17398@noindent
17399You may also modify parameters on the fly like this:
17400
17401@example
17402emacs -batch -l ~/.emacs \
17403 -eval '(org-batch-agenda "a" \
e66ba1df 17404 org-agenda-span (quote month) \
c8d0cf5c
CD
17405 org-agenda-include-diary nil \
17406 org-agenda-files (quote ("~/org/project.org")))' \
17407 | lpr
17408@end example
17409
17410@noindent
17411which will produce a 30-day agenda, fully restricted to the Org file
17412@file{~/org/projects.org}, not even including the diary.
17413
17414If you want to process the agenda data in more sophisticated ways, you
17415can use the command @code{org-batch-agenda-csv} to get a comma-separated
17416list of values for each agenda item. Each line in the output will
17417contain a number of fields separated by commas. The fields in a line
17418are:
17419
17420@example
17421category @r{The category of the item}
17422head @r{The headline, without TODO keyword, TAGS and PRIORITY}
17423type @r{The type of the agenda entry, can be}
17424 todo @r{selected in TODO match}
17425 tagsmatch @r{selected in tags match}
17426 diary @r{imported from diary}
17427 deadline @r{a deadline}
17428 scheduled @r{scheduled}
17429 timestamp @r{appointment, selected by timestamp}
17430 closed @r{entry was closed on date}
17431 upcoming-deadline @r{warning about nearing deadline}
17432 past-scheduled @r{forwarded scheduled item}
17433 block @r{entry has date block including date}
17434todo @r{The TODO keyword, if any}
17435tags @r{All tags including inherited ones, separated by colons}
17436date @r{The relevant date, like 2007-2-14}
17437time @r{The time, like 15:00-16:50}
17438extra @r{String with extra planning info}
17439priority-l @r{The priority letter if any was given}
17440priority-n @r{The computed numerical priority}
17441@end example
17442
17443@noindent
17444Time and date will only be given if a timestamp (or deadline/scheduled)
17445led to the selection of the item.
17446
17447A CSV list like this is very easy to use in a post-processing script.
17448For example, here is a Perl program that gets the TODO list from
17449Emacs/Org and prints all the items, preceded by a checkbox:
17450
17451@example
17452#!/usr/bin/perl
17453
17454# define the Emacs command to run
17455$cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'";
17456
17457# run it and capture the output
17458$agenda = qx@{$cmd 2>/dev/null@};
17459
17460# loop over all lines
17461foreach $line (split(/\n/,$agenda)) @{
17462 # get the individual values
17463 ($category,$head,$type,$todo,$tags,$date,$time,$extra,
17464 $priority_l,$priority_n) = split(/,/,$line);
17465 # process and print
17466 print "[ ] $head\n";
17467@}
17468@end example
17469
c8d0cf5c 17470@node Using the property API, Using the mapping API, Extracting agenda information, Hacking
4009494e
GM
17471@section Using the property API
17472@cindex API, for properties
17473@cindex properties, API
17474
17475Here is a description of the functions that can be used to work with
17476properties.
17477
17478@defun org-entry-properties &optional pom which
c8d0cf5c 17479Get all properties of the entry at point-or-marker POM.@*
4009494e
GM
17480This includes the TODO keyword, the tags, time strings for deadline,
17481scheduled, and clocking, and any additional properties defined in the
acedf35c 17482entry. The return value is an alist. Keys may occur multiple times
c8d0cf5c 17483if the property key was used several times.@*
271672fa
BG
17484POM may also be @code{nil}, in which case the current entry is used.
17485If WHICH is @code{nil} or `all', get all properties. If WHICH is
4009494e
GM
17486`special' or `standard', only get that subclass.
17487@end defun
c8d0cf5c 17488@vindex org-use-property-inheritance
8223b1d2 17489@findex org-insert-property-drawer
4009494e 17490@defun org-entry-get pom property &optional inherit
271672fa
BG
17491Get value of @code{PROPERTY} for entry at point-or-marker @code{POM}@. By default,
17492this only looks at properties defined locally in the entry. If @code{INHERIT}
17493is non-@code{nil} and the entry does not have the property, then also check
17494higher levels of the hierarchy. If @code{INHERIT} is the symbol
a7808fba 17495@code{selective}, use inheritance if and only if the setting of
271672fa 17496@code{org-use-property-inheritance} selects @code{PROPERTY} for inheritance.
4009494e
GM
17497@end defun
17498
17499@defun org-entry-delete pom property
271672fa 17500Delete the property @code{PROPERTY} from entry at point-or-marker POM.
4009494e
GM
17501@end defun
17502
17503@defun org-entry-put pom property value
271672fa 17504Set @code{PROPERTY} to @code{VALUE} for entry at point-or-marker POM.
4009494e
GM
17505@end defun
17506
17507@defun org-buffer-property-keys &optional include-specials
17508Get all property keys in the current buffer.
17509@end defun
17510
17511@defun org-insert-property-drawer
8223b1d2 17512Insert a property drawer for the current entry. Also
4009494e
GM
17513@end defun
17514
864c9740 17515@defun org-entry-put-multivalued-property pom property &rest values
271672fa
BG
17516Set @code{PROPERTY} at point-or-marker @code{POM} to @code{VALUES}@.
17517@code{VALUES} should be a list of strings. They will be concatenated, with
17518spaces as separators.
864c9740
CD
17519@end defun
17520
17521@defun org-entry-get-multivalued-property pom property
271672fa
BG
17522Treat the value of the property @code{PROPERTY} as a whitespace-separated
17523list of values and return the values as a list of strings.
864c9740
CD
17524@end defun
17525
a7808fba 17526@defun org-entry-add-to-multivalued-property pom property value
271672fa
BG
17527Treat the value of the property @code{PROPERTY} as a whitespace-separated
17528list of values and make sure that @code{VALUE} is in this list.
a7808fba
CD
17529@end defun
17530
17531@defun org-entry-remove-from-multivalued-property pom property value
271672fa
BG
17532Treat the value of the property @code{PROPERTY} as a whitespace-separated
17533list of values and make sure that @code{VALUE} is @emph{not} in this list.
a7808fba
CD
17534@end defun
17535
17536@defun org-entry-member-in-multivalued-property pom property value
271672fa
BG
17537Treat the value of the property @code{PROPERTY} as a whitespace-separated
17538list of values and check if @code{VALUE} is in this list.
a7808fba
CD
17539@end defun
17540
ed21c5c8 17541@defopt org-property-allowed-value-functions
acedf35c 17542Hook for functions supplying allowed values for a specific property.
ed21c5c8
CD
17543The functions must take a single argument, the name of the property, and
17544return a flat list of allowed values. If @samp{:ETC} is one of
17545the values, use the values as completion help, but allow also other values
17546to be entered. The functions must return @code{nil} if they are not
17547responsible for this property.
17548@end defopt
17549
b349f79f
CD
17550@node Using the mapping API, , Using the property API, Hacking
17551@section Using the mapping API
17552@cindex API, for mapping
17553@cindex mapping entries, API
17554
17555Org has sophisticated mapping capabilities to find all entries satisfying
17556certain criteria. Internally, this functionality is used to produce agenda
17557views, but there is also an API that can be used to execute arbitrary
17558functions for each or selected entries. The main entry point for this API
96c8522a 17559is:
b349f79f
CD
17560
17561@defun org-map-entries func &optional match scope &rest skip
271672fa 17562Call @code{FUNC} at each headline selected by @code{MATCH} in @code{SCOPE}.
b349f79f 17563
271672fa
BG
17564@code{FUNC} is a function or a Lisp form. The function will be called
17565without arguments, with the cursor positioned at the beginning of the
17566headline. The return values of all calls to the function will be collected
17567and returned as a list.
b349f79f 17568
271672fa
BG
17569The call to @code{FUNC} will be wrapped into a save-excursion form, so
17570@code{FUNC} does not need to preserve point. After evaluation, the cursor
17571will be moved to the end of the line (presumably of the headline of the
17572processed entry) and search continues from there. Under some circumstances,
17573this may not produce the wanted results. For example, if you have removed
17574(e.g., archived) the current (sub)tree it could mean that the next entry will
17575be skipped entirely. In such cases, you can specify the position from where
17576search should continue by making @code{FUNC} set the variable
17577@code{org-map-continue-from} to the desired buffer position.
c8d0cf5c 17578
271672fa
BG
17579@code{MATCH} is a tags/property/todo match as it is used in the agenda match
17580view. Only headlines that are matched by this query will be considered
17581during the iteration. When @code{MATCH} is @code{nil} or @code{t}, all
17582headlines will be visited by the iteration.
b349f79f 17583
271672fa 17584@code{SCOPE} determines the scope of this command. It can be any of:
b349f79f
CD
17585
17586@example
17587nil @r{the current buffer, respecting the restriction if any}
17588tree @r{the subtree started with the entry at point}
ce57c2fe 17589region @r{The entries within the active region, if any}
b349f79f
CD
17590file @r{the current buffer, without restriction}
17591file-with-archives
17592 @r{the current buffer, and any archives associated with it}
17593agenda @r{all agenda files}
17594agenda-with-archives
17595 @r{all agenda files with any archive files associated with them}
17596(file1 file2 ...)
17597 @r{if this is a list, all files in the list will be scanned}
17598@end example
c8d0cf5c 17599@noindent
b349f79f
CD
17600The remaining args are treated as settings for the skipping facilities of
17601the scanner. The following items can be given here:
17602
c8d0cf5c 17603@vindex org-agenda-skip-function
b349f79f
CD
17604@example
17605archive @r{skip trees with the archive tag}
17606comment @r{skip trees with the COMMENT keyword}
17607function or Lisp form
17608 @r{will be used as value for @code{org-agenda-skip-function},}
867d4bb3 17609 @r{so whenever the function returns t, FUNC}
b349f79f
CD
17610 @r{will not be called for that entry and search will}
17611 @r{continue from the point where the function leaves it}
17612@end example
17613@end defun
17614
17615The function given to that mapping routine can really do anything you like.
a50253cc
GM
17616It can use the property API (@pxref{Using the property API}) to gather more
17617information about the entry, or in order to change metadata in the entry.
b349f79f 17618Here are a couple of functions that might be handy:
96c8522a 17619
b349f79f 17620@defun org-todo &optional arg
acedf35c 17621Change the TODO state of the entry. See the docstring of the functions for
271672fa 17622the many possible values for the argument @code{ARG}.
b349f79f
CD
17623@end defun
17624
17625@defun org-priority &optional action
acedf35c 17626Change the priority of the entry. See the docstring of this function for the
271672fa 17627possible values for @code{ACTION}.
b349f79f
CD
17628@end defun
17629
17630@defun org-toggle-tag tag &optional onoff
271672fa
BG
17631Toggle the tag @code{TAG} in the current entry. Setting @code{ONOFF} to
17632either @code{on} or @code{off} will not toggle tag, but ensure that it is
17633either on or off.
b349f79f
CD
17634@end defun
17635
17636@defun org-promote
17637Promote the current entry.
17638@end defun
17639
17640@defun org-demote
17641Demote the current entry.
17642@end defun
17643
17644Here is a simple example that will turn all entries in the current file with
17645a tag @code{TOMORROW} into TODO entries with the keyword @code{UPCOMING}.
17646Entries in comment trees and in archive trees will be ignored.
17647
17648@lisp
17649(org-map-entries
63aa0982
BG
17650 '(org-todo "UPCOMING")
17651 "+TOMORROW" 'file 'archive 'comment)
b349f79f
CD
17652@end lisp
17653
17654The following example counts the number of entries with TODO keyword
17655@code{WAITING}, in all agenda files.
17656
17657@lisp
96c8522a 17658(length (org-map-entries t "/+WAITING" 'agenda))
b349f79f
CD
17659@end lisp
17660
7006d207
CD
17661@node MobileOrg, History and Acknowledgments, Hacking, Top
17662@appendix MobileOrg
17663@cindex iPhone
17664@cindex MobileOrg
17665
8223b1d2
BG
17666@i{MobileOrg} is the name of the mobile companion app for Org mode, currently
17667available for iOS and for Android. @i{MobileOrg} offers offline viewing and
17668capture support for an Org mode system rooted on a ``real'' computer. It
271672fa
BG
17669does also allow you to record changes to existing entries. The
17670@uref{https://github.com/MobileOrg/, iOS implementation} for the
17671@i{iPhone/iPod Touch/iPad} series of devices, was started by Richard Moreland
17672and is now in the hands Sean Escriva. Android users should check out
86fbb8ca 17673@uref{http://wiki.github.com/matburt/mobileorg-android/, MobileOrg Android}
8223b1d2
BG
17674by Matt Jones. The two implementations are not identical but offer similar
17675features.
7006d207
CD
17676
17677This appendix describes the support Org has for creating agenda views in a
17678format that can be displayed by @i{MobileOrg}, and for integrating notes
a351880d
CD
17679captured and changes made by @i{MobileOrg} into the main system.
17680
17681For changing tags and TODO states in MobileOrg, you should have set up the
271672fa 17682customization variables @code{org-todo-keywords} and @code{org-tag-alist} to
86fbb8ca 17683cover all important tags and TODO keywords, even if individual files use only
a351880d 17684part of these. MobileOrg will also offer you states and tags set up with
86fbb8ca 17685in-buffer settings, but it will understand the logistics of TODO state
a351880d
CD
17686@i{sets} (@pxref{Per-file keywords}) and @i{mutually exclusive} tags
17687(@pxref{Setting tags}) only for those set in these variables.
7006d207
CD
17688
17689@menu
c0468714
GM
17690* Setting up the staging area:: Where to interact with the mobile device
17691* Pushing to MobileOrg:: Uploading Org files and agendas
17692* Pulling from MobileOrg:: Integrating captured and flagged items
7006d207
CD
17693@end menu
17694
17695@node Setting up the staging area, Pushing to MobileOrg, MobileOrg, MobileOrg
17696@section Setting up the staging area
17697
acedf35c 17698MobileOrg needs to interact with Emacs through a directory on a server. If you
afe98dfa 17699are using a public server, you should consider to encrypt the files that are
e66ba1df 17700uploaded to the server. This can be done with Org mode 7.02 and with
afe98dfa
CD
17701@i{MobileOrg 1.5} (iPhone version), and you need an @file{openssl}
17702installation on your system. To turn on encryption, set a password in
17703@i{MobileOrg} and, on the Emacs side, configure the variable
17704@code{org-mobile-use-encryption}@footnote{If you can safely store the
17705password in your Emacs setup, you might also want to configure
17706@code{org-mobile-encryption-password}. Please read the docstring of that
17707variable. Note that encryption will apply only to the contents of the
17708@file{.org} files. The file names themselves will remain visible.}.
17709
17710The easiest way to create that directory is to use a free
17711@uref{http://dropbox.com,Dropbox.com} account@footnote{If you cannot use
17712Dropbox, or if your version of MobileOrg does not support it, you can use a
acedf35c 17713webdav server. For more information, check out the documentation of MobileOrg and also this
ce57c2fe 17714@uref{http://orgmode.org/worg/org-faq.html#mobileorg_webdav, FAQ entry}.}.
86fbb8ca
CD
17715When MobileOrg first connects to your Dropbox, it will create a directory
17716@i{MobileOrg} inside the Dropbox. After the directory has been created, tell
17717Emacs about it:
a351880d 17718
86fbb8ca
CD
17719@lisp
17720(setq org-mobile-directory "~/Dropbox/MobileOrg")
17721@end lisp
a351880d 17722
e66ba1df 17723Org mode has commands to put files for @i{MobileOrg} into that directory,
86fbb8ca 17724and to read captured notes from there.
7006d207
CD
17725
17726@node Pushing to MobileOrg, Pulling from MobileOrg, Setting up the staging area, MobileOrg
17727@section Pushing to MobileOrg
17728
17729This operation copies all files currently listed in @code{org-mobile-files}
17730to the directory @code{org-mobile-directory}. By default this list contains
17731all agenda files (as listed in @code{org-agenda-files}), but additional files
ce57c2fe 17732can be included by customizing @code{org-mobile-files}. File names will be
acedf35c 17733staged with paths relative to @code{org-directory}, so all files should be
c7cf0ebc
BG
17734inside this directory@footnote{Symbolic links in @code{org-directory} need to
17735have the same name than their targets.}.
17736
17737The push operation also creates a special Org file @file{agendas.org} with
17738all custom agenda view defined by the user@footnote{While creating the
17739agendas, Org mode will force ID properties on all referenced entries, so that
17740these entries can be uniquely identified if @i{MobileOrg} flags them for
17741further action. If you do not want to get these properties in so many
17742entries, you can set the variable @code{org-mobile-force-id-on-agenda-items}
17743to @code{nil}. Org mode will then rely on outline paths, in the hope that
17744these will be unique enough.}.
17745
afe98dfa
CD
17746Finally, Org writes the file @file{index.org}, containing links to all other
17747files. @i{MobileOrg} first reads this file from the server, and then
17748downloads all agendas and Org files listed in it. To speed up the download,
735135f9 17749MobileOrg will only read files whose checksums@footnote{Checksums are stored
8223b1d2 17750automatically in the file @file{checksums.dat}} have changed.
7006d207
CD
17751
17752@node Pulling from MobileOrg, , Pushing to MobileOrg, MobileOrg
17753@section Pulling from MobileOrg
17754
86fbb8ca
CD
17755When @i{MobileOrg} synchronizes with the server, it not only pulls the Org
17756files for viewing. It also appends captured entries and pointers to flagged
17757and changed entries to the file @file{mobileorg.org} on the server. Org has
17758a @emph{pull} operation that integrates this information into an inbox file
17759and operates on the pointers to flagged entries. Here is how it works:
7006d207
CD
17760
17761@enumerate
17762@item
17763Org moves all entries found in
17764@file{mobileorg.org}@footnote{@file{mobileorg.org} will be empty after this
17765operation.} and appends them to the file pointed to by the variable
a351880d
CD
17766@code{org-mobile-inbox-for-pull}. Each captured entry and each editing event
17767will be a top-level entry in the inbox file.
17768@item
17769After moving the entries, Org will attempt to implement the changes made in
17770@i{MobileOrg}. Some changes are applied directly and without user
17771interaction. Examples are all changes to tags, TODO state, headline and body
17772text that can be cleanly applied. Entries that have been flagged for further
17773action will receive a tag @code{:FLAGGED:}, so that they can be easily found
17774again. When there is a problem finding an entry or applying the change, the
17775pointer entry will remain in the inbox and will be marked with an error
17776message. You need to later resolve these issues by hand.
7006d207
CD
17777@item
17778Org will then generate an agenda view with all flagged entries. The user
17779should then go through these entries and do whatever actions are necessary.
17780If a note has been stored while flagging an entry in @i{MobileOrg}, that note
17781will be displayed in the echo area when the cursor is on the corresponding
17782agenda line.
271672fa 17783
7006d207
CD
17784@table @kbd
17785@kindex ?
17786@item ?
17787Pressing @kbd{?} in that special agenda will display the full flagging note in
17788another window and also push it onto the kill ring. So you could use @kbd{?
17789z C-y C-c C-c} to store that flagging note as a normal note in the entry.
17790Pressing @kbd{?} twice in succession will offer to remove the
17791@code{:FLAGGED:} tag along with the recorded flagging note (which is stored
acedf35c 17792in a property). In this way you indicate that the intended processing for
a351880d 17793this flagged entry is finished.
7006d207
CD
17794@end table
17795@end enumerate
17796
17797@kindex C-c a ?
17798If you are not able to process all flagged entries directly, you can always
afe98dfa 17799return to this agenda view@footnote{Note, however, that there is a subtle
271672fa
BG
17800difference. The view created automatically by @kbd{M-x org-mobile-pull RET}
17801is guaranteed to search all files that have been addressed by the last pull.
17802This might include a file that is not currently in your list of agenda files.
17803If you later use @kbd{C-c a ?} to regenerate the view, only the current
17804agenda files will be searched.} using @kbd{C-c a ?}.
7006d207 17805
257b2c7d 17806@node History and Acknowledgments, GNU Free Documentation License, MobileOrg, Top
86fbb8ca
CD
17807@appendix History and acknowledgments
17808@cindex acknowledgments
4009494e
GM
17809@cindex history
17810@cindex thanks
17811
8223b1d2
BG
17812@section From Carsten
17813
86fbb8ca
CD
17814Org was born in 2003, out of frustration over the user interface of the Emacs
17815Outline mode. I was trying to organize my notes and projects, and using
17816Emacs seemed to be the natural way to go. However, having to remember eleven
17817different commands with two or three keys per command, only to hide and show
17818parts of the outline tree, that seemed entirely unacceptable to me. Also,
17819when using outlines to take notes, I constantly wanted to restructure the
17820tree, organizing it parallel to my thoughts and plans. @emph{Visibility
17821cycling} and @emph{structure editing} were originally implemented in the
17822package @file{outline-magic.el}, but quickly moved to the more general
17823@file{org.el}. As this environment became comfortable for project planning,
17824the next step was adding @emph{TODO entries}, basic @emph{timestamps}, and
17825@emph{table support}. These areas highlighted the two main goals that Org
17826still has today: to be a new, outline-based, plain text mode with innovative
17827and intuitive editing features, and to incorporate project planning
17828functionality directly into a notes file.
a7808fba 17829
c8d0cf5c
CD
17830Since the first release, literally thousands of emails to me or to
17831@email{emacs-orgmode@@gnu.org} have provided a constant stream of bug
4009494e
GM
17832reports, feedback, new ideas, and sometimes patches and add-on code.
17833Many thanks to everyone who has helped to improve this package. I am
17834trying to keep here a list of the people who had significant influence
a7808fba 17835in shaping one or more aspects of Org. The list may not be
4009494e
GM
17836complete, if I have forgotten someone, please accept my apologies and
17837let me know.
17838
86fbb8ca
CD
17839Before I get to this list, a few special mentions are in order:
17840
17841@table @i
17842@item Bastien Guerry
17843Bastien has written a large number of extensions to Org (most of them
e66ba1df 17844integrated into the core by now), including the @LaTeX{} exporter and the plain
86fbb8ca
CD
17845list parser. His support during the early days, when he basically acted as
17846co-maintainer, was central to the success of this project. Bastien also
8223b1d2 17847invented Worg, helped establishing the Web presence of Org, and sponsored
86fbb8ca
CD
17848hosting costs for the orgmode.org website.
17849@item Eric Schulte and Dan Davison
17850Eric and Dan are jointly responsible for the Org-babel system, which turns
17851Org into a multi-language environment for evaluating code and doing literate
17852programming and reproducible research.
17853@item John Wiegley
acedf35c
CD
17854John has contributed a number of great ideas and patches directly to Org,
17855including the attachment system (@file{org-attach.el}), integration with
17856Apple Mail (@file{org-mac-message.el}), hierarchical dependencies of TODO
17857items, habit tracking (@file{org-habits.el}), and encryption
17858(@file{org-crypt.el}). Also, the capture system is really an extended copy
17859of his great @file{remember.el}.
86fbb8ca
CD
17860@item Sebastian Rose
17861Without Sebastian, the HTML/XHTML publishing of Org would be the pitiful work
17862of an ignorant amateur. Sebastian has pushed this part of Org onto a much
17863higher level. He also wrote @file{org-info.js}, a Java script for displaying
271672fa 17864web pages derived from Org using an Info-like or a folding interface with
86fbb8ca
CD
17865single-key navigation.
17866@end table
17867
8223b1d2
BG
17868@noindent See below for the full list of contributions! Again, please
17869let me know what I am missing here!
17870
17871@section From Bastien
17872
17873I (Bastien) have been maintaining Org since January 2011. This appendix
17874would not be complete without adding a few more acknowledgements and thanks
17875to Carsten's ones above.
17876
17877I am first grateful to Carsten for his trust while handing me over the
271672fa
BG
17878maintainership of Org. His unremitting support is what really helped me
17879getting more confident over time, with both the community and the code.
8223b1d2
BG
17880
17881When I took over maintainership, I knew I would have to make Org more
17882collaborative than ever, as I would have to rely on people that are more
17883knowledgeable than I am on many parts of the code. Here is a list of the
17884persons I could rely on, they should really be considered co-maintainers,
17885either of the code or the community:
17886
17887@table @i
17888@item Eric Schulte
17889Eric is maintaining the Babel parts of Org. His reactivity here kept me away
17890from worrying about possible bugs here and let me focus on other parts.
17891
17892@item Nicolas Goaziou
271672fa
BG
17893Nicolas is maintaining the consistency of the deepest parts of Org. His
17894work on @file{org-element.el} and @file{ox.el} has been outstanding, and
17895opened the doors for many new ideas and features. He rewrote many of the
17896old exporters to use the new export engine, and helped with documenting
17897this major change. More importantly (if that's possible), he has been more
17898than reliable during all the work done for Org 8.0, and always very
17899reactive on the mailing list.
8223b1d2
BG
17900
17901@item Achim Gratz
17902Achim rewrote the building process of Org, turning some @emph{ad hoc} tools
17903into a flexible and conceptually clean process. He patiently coped with the
1e20eeb7 17904many hiccups that such a change can create for users.
8223b1d2
BG
17905
17906@item Nick Dokos
17907The Org mode mailing list would not be such a nice place without Nick, who
17908patiently helped users so many times. It is impossible to overestimate such
17909a great help, and the list would not be so active without him.
17910@end table
17911
17912I received support from so many users that it is clearly impossible to be
f99f1641 17913fair when shortlisting a few of them, but Org's history would not be
8223b1d2
BG
17914complete if the ones above were not mentioned in this manual.
17915
17916@section List of contributions
86fbb8ca 17917
4009494e
GM
17918@itemize @bullet
17919
17920@item
17921@i{Russel Adams} came up with the idea for drawers.
17922@item
271672fa
BG
17923@i{Suvayu Ali} has steadily helped on the mailing list, providing useful
17924feedback on many features and several patches.
17925@item
17926@i{Luis Anaya} wrote @file{ox-man.el}.
17927@item
a7808fba 17928@i{Thomas Baumann} wrote @file{org-bbdb.el} and @file{org-mhe.el}.
4009494e 17929@item
271672fa
BG
17930@i{Michael Brand} helped by reporting many bugs and testing many features.
17931He also implemented the distinction between empty fields and 0-value fields
17932in Org's spreadsheets.
17933@item
b349f79f 17934@i{Christophe Bataillon} created the great unicorn logo that we use on the
e66ba1df 17935Org mode website.
b349f79f 17936@item
c8d0cf5c
CD
17937@i{Alex Bochannek} provided a patch for rounding timestamps.
17938@item
ed21c5c8
CD
17939@i{Jan Böcker} wrote @file{org-docview.el}.
17940@item
e66ba1df 17941@i{Brad Bozarth} showed how to pull RSS feed data into Org mode files.
c8d0cf5c
CD
17942@item
17943@i{Tom Breton} wrote @file{org-choose.el}.
4009494e
GM
17944@item
17945@i{Charles Cave}'s suggestion sparked the implementation of templates
86fbb8ca 17946for Remember, which are now templates for capture.
4009494e
GM
17947@item
17948@i{Pavel Chalmoviansky} influenced the agenda treatment of items with
17949specified time.
17950@item
c8d0cf5c 17951@i{Gregory Chernov} patched support for Lisp forms into table
4009494e
GM
17952calculations and improved XEmacs compatibility, in particular by porting
17953@file{nouline.el} to XEmacs.
17954@item
c8d0cf5c
CD
17955@i{Sacha Chua} suggested copying some linking code from Planner.
17956@item
271672fa
BG
17957@i{Toby S. Cubitt} contributed to the code for clock formats.
17958@item
17959@i{Baoqiu Cui} contributed the DocBook exporter. It has been deleted from
17960Org 8.0: you can now export to Texinfo and export the @file{.texi} file to
17961DocBook using @code{makeinfo}.
4009494e 17962@item
5fbc0f11 17963@i{Eddward DeVilla} proposed and tested checkbox statistics. He also
4009494e
GM
17964came up with the idea of properties, and that there should be an API for
17965them.
17966@item
c8d0cf5c
CD
17967@i{Nick Dokos} tracked down several nasty bugs.
17968@item
4009494e
GM
17969@i{Kees Dullemond} used to edit projects lists directly in HTML and so
17970inspired some of the early development, including HTML export. He also
17971asked for a way to narrow wide table columns.
17972@item
271672fa 17973@i{Jason Dunsmore} has been maintaining the Org-Mode server at Rackspace for
d1389828 17974several years now. He also sponsored the hosting costs until Rackspace
271672fa
BG
17975started to host us for free.
17976@item
86fbb8ca
CD
17977@i{Thomas S. Dye} contributed documentation on Worg and helped integrating
17978the Org-Babel documentation into the manual.
17979@item
acedf35c
CD
17980@i{Christian Egli} converted the documentation into Texinfo format, inspired
17981the agenda, patched CSS formatting into the HTML exporter, and wrote
271672fa
BG
17982@file{org-taskjuggler.el}, which has been rewritten by Nicolas Goaziou as
17983@file{ox-taskjuggler.el} for Org 8.0.
4009494e
GM
17984@item
17985@i{David Emery} provided a patch for custom CSS support in exported
17986HTML agendas.
17987@item
271672fa
BG
17988@i{Sean Escriva} took over MobileOrg development on the iPhone platform.
17989@item
4009494e
GM
17990@i{Nic Ferrier} contributed mailcap and XOXO support.
17991@item
28a16a1b
CD
17992@i{Miguel A. Figueroa-Villanueva} implemented hierarchical checkboxes.
17993@item
4009494e
GM
17994@i{John Foerch} figured out how to make incremental search show context
17995around a match in a hidden outline tree.
17996@item
a351880d
CD
17997@i{Raimar Finken} wrote @file{org-git-line.el}.
17998@item
17999@i{Mikael Fornius} works as a mailing list moderator.
18000@item
18001@i{Austin Frank} works as a mailing list moderator.
18002@item
acedf35c
CD
18003@i{Eric Fraga} drove the development of BEAMER export with ideas and
18004testing.
18005@item
18006@i{Barry Gidden} did proofreading the manual in preparation for the book
18007publication through Network Theory Ltd.
18008@item
dbc28aaa 18009@i{Niels Giesen} had the idea to automatically archive DONE trees.
4009494e 18010@item
271672fa
BG
18011@i{Nicolas Goaziou} rewrote much of the plain list code. He also wrote
18012@file{org-element.el} and @file{org-export.el}, which was a huge step forward
18013in implementing a clean framework for Org exporters.
afe98dfa 18014@item
4009494e
GM
18015@i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
18016@item
acedf35c
CD
18017@i{Brian Gough} of Network Theory Ltd publishes the Org mode manual as a
18018book.
18019@item
a7808fba
CD
18020@i{Bernt Hansen} has driven much of the support for auto-repeating tasks,
18021task state change logging, and the clocktable. His clear explanations have
c8d0cf5c 18022been critical when we started to adopt the Git version control system.
a7808fba 18023@item
c8d0cf5c 18024@i{Manuel Hermenegildo} has contributed various ideas, small fixes and
864c9740
CD
18025patches.
18026@item
a7808fba
CD
18027@i{Phil Jackson} wrote @file{org-irc.el}.
18028@item
4009494e
GM
18029@i{Scott Jaderholm} proposed footnotes, control over whitespace between
18030folded entries, and column view for properties.
18031@item
86fbb8ca
CD
18032@i{Matt Jones} wrote @i{MobileOrg Android}.
18033@item
a7808fba
CD
18034@i{Tokuya Kameshima} wrote @file{org-wl.el} and @file{org-mew.el}.
18035@item
271672fa
BG
18036@i{Jonathan Leech-Pepin} wrote @file{ox-texinfo.el}.
18037@item
acedf35c 18038@i{Shidai Liu} ("Leo") asked for embedded @LaTeX{} and tested it. He also
4009494e
GM
18039provided frequent feedback and some patches.
18040@item
55e0839d
CD
18041@i{Matt Lundin} has proposed last-row references for table formulas and named
18042invisible anchors. He has also worked a lot on the FAQ.
18043@item
86fbb8ca
CD
18044@i{David Maus} wrote @file{org-atom.el}, maintains the issues file for Org,
18045and is a prolific contributor on the mailing list with competent replies,
18046small fixes and patches.
18047@item
4009494e
GM
18048@i{Jason F. McBrayer} suggested agenda export to CSV format.
18049@item
271672fa 18050@i{Max Mikhanosha} came up with the idea of refiling and sticky agendas.
dbc28aaa 18051@item
4009494e
GM
18052@i{Dmitri Minaev} sent a patch to set priority limits on a per-file
18053basis.
18054@item
18055@i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
18056happy.
18057@item
7006d207
CD
18058@i{Richard Moreland} wrote @i{MobileOrg} for the iPhone.
18059@item
c8d0cf5c
CD
18060@i{Rick Moynihan} proposed allowing multiple TODO sequences in a file
18061and being able to quickly restrict the agenda to a subtree.
4009494e 18062@item
c8d0cf5c
CD
18063@i{Todd Neal} provided patches for links to Info files and Elisp forms.
18064@item
18065@i{Greg Newman} refreshed the unicorn logo into its current form.
4009494e
GM
18066@item
18067@i{Tim O'Callaghan} suggested in-file links, search options for general
18068file links, and TAGS.
18069@item
acedf35c 18070@i{Osamu Okano} wrote @file{orgcard2ref.pl}, a Perl program to create a text
86fbb8ca
CD
18071version of the reference card.
18072@item
4009494e
GM
18073@i{Takeshi Okano} translated the manual and David O'Toole's tutorial
18074into Japanese.
18075@item
18076@i{Oliver Oppitz} suggested multi-state TODO items.
18077@item
18078@i{Scott Otterson} sparked the introduction of descriptive text for
18079links, among other things.
18080@item
18081@i{Pete Phillips} helped during the development of the TAGS feature, and
18082provided frequent feedback.
18083@item
271672fa
BG
18084@i{Francesco Pizzolante} provided patches that helped speeding up the agenda
18085generation.
18086@item
c8d0cf5c
CD
18087@i{Martin Pohlack} provided the code snippet to bundle character insertion
18088into bundles of 20 for undo.
18089@item
271672fa
BG
18090@i{Rackspace.com} is hosting our website for free. Thank you Rackspace!
18091@item
4009494e
GM
18092@i{T.V. Raman} reported bugs and suggested improvements.
18093@item
18094@i{Matthias Rempe} (Oelde) provided ideas, Windows support, and quality
18095control.
18096@item
a351880d
CD
18097@i{Paul Rivier} provided the basic implementation of named footnotes. He
18098also acted as mailing list moderator for some time.
55e0839d 18099@item
4009494e
GM
18100@i{Kevin Rogers} contributed code to access VM files on remote hosts.
18101@item
18102@i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a
18103conflict with @file{allout.el}.
18104@item
c8d0cf5c 18105@i{Jason Riedy} generalized the send-receive mechanism for Orgtbl tables with
b349f79f 18106extensive patches.
4009494e 18107@item
b349f79f
CD
18108@i{Philip Rooke} created the Org reference card, provided lots
18109of feedback, developed and applied standards to the Org documentation.
4009494e
GM
18110@item
18111@i{Christian Schlauer} proposed angular brackets around links, among
18112other things.
18113@item
271672fa
BG
18114@i{Christopher Schmidt} reworked @code{orgstruct-mode} so that users can
18115enjoy folding in non-org buffers by using Org headlines in comments.
18116@item
ed21c5c8
CD
18117@i{Paul Sexton} wrote @file{org-ctags.el}.
18118@item
b349f79f 18119Linking to VM/BBDB/Gnus was first inspired by @i{Tom Shannon}'s
4009494e
GM
18120@file{organizer-mode.el}.
18121@item
55e0839d
CD
18122@i{Ilya Shlyakhter} proposed the Archive Sibling, line numbering in literal
18123examples, and remote highlighting for referenced code lines.
a7808fba 18124@item
64fb801f
CD
18125@i{Stathis Sideris} wrote the @file{ditaa.jar} ASCII to PNG converter that is
18126now packaged into Org's @file{contrib} directory.
18127@item
4009494e
GM
18128@i{Daniel Sinder} came up with the idea of internal archiving by locking
18129subtrees.
18130@item
18131@i{Dale Smith} proposed link abbreviations.
18132@item
864c9740
CD
18133@i{James TD Smith} has contributed a large number of patches for useful
18134tweaks and features.
18135@item
b349f79f
CD
18136@i{Adam Spiers} asked for global linking commands, inspired the link
18137extension system, added support for mairix, and proposed the mapping API.
4009494e 18138@item
86fbb8ca 18139@i{Ulf Stegemann} created the table to translate special symbols to HTML,
e66ba1df 18140@LaTeX{}, UTF-8, Latin-1 and ASCII.
86fbb8ca 18141@item
96c8522a
CD
18142@i{Andy Stewart} contributed code to @file{org-w3m.el}, to copy HTML content
18143with links transformation to Org syntax.
18144@item
4009494e
GM
18145@i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
18146chapter about publishing.
18147@item
271672fa 18148@i{Jambunathan K} contributed the ODT exporter and rewrote the HTML exporter.
ce57c2fe 18149@item
e66ba1df 18150@i{Sebastien Vauban} reported many issues with @LaTeX{} and BEAMER export and
27e428e7 18151enabled source code highlighting in Gnus.
acedf35c 18152@item
86fbb8ca
CD
18153@i{Stefan Vollmar} organized a video-recorded talk at the
18154Max-Planck-Institute for Neurology. He also inspired the creation of a
18155concept index for HTML export.
18156@item
4009494e
GM
18157@i{J@"urgen Vollmer} contributed code generating the table of contents
18158in HTML output.
18159@item
ed21c5c8
CD
18160@i{Samuel Wales} has provided important feedback and bug reports.
18161@item
4009494e
GM
18162@i{Chris Wallace} provided a patch implementing the @samp{QUOTE}
18163keyword.
18164@item
18165@i{David Wainberg} suggested archiving, and improvements to the linking
18166system.
18167@item
4009494e 18168@i{Carsten Wimmer} suggested some changes and helped fix a bug in
a7808fba 18169linking to Gnus.
4009494e 18170@item
a7808fba 18171@i{Roland Winkler} requested additional key bindings to make Org
4009494e
GM
18172work on a tty.
18173@item
18174@i{Piotr Zielinski} wrote @file{org-mouse.el}, proposed agenda blocks
18175and contributed various ideas and code snippets.
18176@end itemize
18177
18178
257b2c7d
GM
18179@node GNU Free Documentation License, Main Index, History and Acknowledgments, Top
18180@appendix GNU Free Documentation License
18181@include doclicense.texi
18182
18183
18184@node Main Index, Key Index, GNU Free Documentation License, Top
86fbb8ca 18185@unnumbered Concept index
4009494e
GM
18186
18187@printindex cp
18188
afe98dfa 18189@node Key Index, Command and Function Index, Main Index, Top
86fbb8ca 18190@unnumbered Key index
4009494e
GM
18191
18192@printindex ky
18193
afe98dfa
CD
18194@node Command and Function Index, Variable Index, Key Index, Top
18195@unnumbered Command and function index
18196
18197@printindex fn
18198
18199@node Variable Index, , Command and Function Index, Top
86fbb8ca 18200@unnumbered Variable index
c8d0cf5c
CD
18201
18202This is not a complete index of variables and faces, only the ones that are
18203mentioned in the manual. For a more complete list, use @kbd{M-x
a351880d 18204org-customize @key{RET}} and then click yourself through the tree.
c8d0cf5c
CD
18205
18206@printindex vr
18207
4009494e
GM
18208@bye
18209
a7808fba 18210@c Local variables:
62803a2e 18211@c coding: utf-8
a7808fba 18212@c fill-column: 77
afe98dfa 18213@c indent-tabs-mode: nil
acedf35c
CD
18214@c paragraph-start: "\b\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|\f\\|[ ]*$"
18215@c paragraph-separate: "\b\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|[ \f]*$"
a7808fba 18216@c End:
44ce9197 18217
7006d207
CD
18218
18219@c LocalWords: webdavhost pre