]> code.delx.au - gnu-emacs/blob - doc/misc/org.texi
2008-11-24 Carsten Dominik <carsten.dominik@gmail.com>
[gnu-emacs] / doc / misc / org.texi
1 \input texinfo
2 @c %**start of header
3 @setfilename ../../info/org
4 @settitle The Org Manual
5
6 @set VERSION 6.13a
7 @set DATE November 2008
8
9 @dircategory Emacs
10 @direntry
11 * Org Mode: (org). Outline-based notes management and organizer
12 @end direntry
13
14 @c Version and Contact Info
15 @set MAINTAINERSITE @uref{http://orgmode.org,maintainers webpage}
16 @set AUTHOR Carsten Dominik
17 @set MAINTAINER Carsten Dominik
18 @set MAINTAINEREMAIL @email{carsten at orgmode dot org}
19 @set MAINTAINERCONTACT @uref{mailto:carsten at orgmode dot org,contact the maintainer}
20 @c %**end of header
21 @finalout
22
23 @c Macro definitions
24
25 @c Subheadings inside a table.
26 @macro tsubheading{text}
27 @ifinfo
28 @subsubheading \text\
29 @end ifinfo
30 @ifnotinfo
31 @item @b{\text\}
32 @end ifnotinfo
33 @end macro
34
35 @copying
36 This manual is for Org (version @value{VERSION}).
37
38 Copyright @copyright{} 2004, 2005, 2006, 2007, 2008 Free Software Foundation
39
40 @quotation
41 Permission is granted to copy, distribute and/or modify this document
42 under the terms of the GNU Free Documentation License, Version 1.3 or
43 any later version published by the Free Software Foundation; with no
44 Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
45 and with the Back-Cover Texts as in (a) below. A copy of the license
46 is included in the section entitled ``GNU Free Documentation License.''
47
48 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
49 modify this GNU manual. Buying copies from the FSF supports it in
50 developing GNU and promoting software freedom.''
51
52 This document is part of a collection distributed under the GNU Free
53 Documentation License. If you want to distribute this document
54 separately from the collection, you can do so by adding a copy of the
55 license to the document, as described in section 6 of the license.
56 @end quotation
57 @end copying
58
59 @titlepage
60 @title The Org Manual
61
62 @subtitle Release @value{VERSION}
63 @author by Carsten Dominik
64
65 @c The following two commands start the copyright page.
66 @page
67 @vskip 0pt plus 1filll
68 @insertcopying
69 @end titlepage
70
71 @c Output the table of contents at the beginning.
72 @contents
73
74 @ifnottex
75 @node Top, Introduction, (dir), (dir)
76 @top Org Mode Manual
77
78 @insertcopying
79 @end ifnottex
80
81 @menu
82 * Introduction:: Getting started
83 * Document Structure:: A tree works like your brain
84 * Tables:: Pure magic for quick formatting
85 * Hyperlinks:: Notes in context
86 * TODO Items:: Every tree branch can be a TODO item
87 * Tags:: Tagging headlines and matching sets of tags
88 * Properties and Columns:: Storing information about an entry
89 * Dates and Times:: Making items useful for planning
90 * Capture:: Creating tasks and attaching files
91 * Agenda Views:: Collecting information into views
92 * Embedded LaTeX:: LaTeX fragments and formulas
93 * Exporting:: Sharing and publishing of notes
94 * Publishing:: Create a web site of linked Org files
95 * Miscellaneous:: All the rest which did not fit elsewhere
96 * Extensions:: Add-ons for Org mode
97 * Hacking:: How hack your way around
98 * History and Acknowledgments:: How Org came into being
99 * Main Index:: An index of Org's concepts and features
100 * Key Index:: Key bindings and where they are described
101
102 @detailmenu
103 --- The Detailed Node Listing ---
104
105 Introduction
106
107 * Summary:: Brief summary of what Org does
108 * Installation:: How to install a downloaded version of Org
109 * Activation:: How to activate Org for certain buffers
110 * Feedback:: Bug reports, ideas, patches etc.
111 * Conventions:: Type-setting conventions in the manual
112
113 Document Structure
114
115 * Outlines:: Org is based on Outline mode
116 * Headlines:: How to typeset Org tree headlines
117 * Visibility cycling:: Show and hide, much simplified
118 * Motion:: Jumping to other headlines
119 * Structure editing:: Changing sequence and level of headlines
120 * Archiving:: Move done task trees to a different place
121 * Sparse trees:: Matches embedded in context
122 * Plain lists:: Additional structure within an entry
123 * Drawers:: Tucking stuff away
124 * Orgstruct mode:: Structure editing outside Org
125
126 Archiving
127
128 * ARCHIVE tag:: Marking a tree as inactive
129 * Moving subtrees:: Moving a tree to an archive file
130
131 Tables
132
133 * Built-in table editor:: Simple tables
134 * Narrow columns:: Stop wasting space in tables
135 * Column groups:: Grouping to trigger vertical lines
136 * Orgtbl mode:: The table editor as minor mode
137 * The spreadsheet:: The table editor has spreadsheet capabilities
138 * Org Plot:: Plotting from org tables
139
140 The spreadsheet
141
142 * References:: How to refer to another field or range
143 * Formula syntax for Calc:: Using Calc to compute stuff
144 * Formula syntax for Lisp:: Writing formulas in Emacs Lisp
145 * Field formulas:: Formulas valid for a single field
146 * Column formulas:: Formulas valid for an entire column
147 * Editing and debugging formulas:: Fixing formulas
148 * Updating the table:: Recomputing all dependent fields
149 * Advanced features:: Field names, parameters and automatic recalc
150
151 Hyperlinks
152
153 * Link format:: How links in Org are formatted
154 * Internal links:: Links to other places in the current file
155 * External links:: URL-like links to the world
156 * Handling links:: Creating, inserting and following
157 * Using links outside Org:: Linking from my C source code?
158 * Link abbreviations:: Shortcuts for writing complex links
159 * Search options:: Linking to a specific location
160 * Custom searches:: When the default search is not enough
161
162 Internal links
163
164 * Radio targets:: Make targets trigger links in plain text
165
166 TODO Items
167
168 * TODO basics:: Marking and displaying TODO entries
169 * TODO extensions:: Workflow and assignments
170 * Progress logging:: Dates and notes for progress
171 * Priorities:: Some things are more important than others
172 * Breaking down tasks:: Splitting a task into manageable pieces
173 * Checkboxes:: Tick-off lists
174
175 Extended use of TODO keywords
176
177 * Workflow states:: From TODO to DONE in steps
178 * TODO types:: I do this, Fred does the rest
179 * Multiple sets in one file:: Mixing it all, and still finding your way
180 * Fast access to TODO states:: Single letter selection of a state
181 * Per-file keywords:: Different files, different requirements
182 * Faces for TODO keywords:: Highlighting states
183
184 Progress logging
185
186 * Closing items:: When was this entry marked DONE?
187 * Tracking TODO state changes:: When did the status change?
188
189 Tags
190
191 * Tag inheritance:: Tags use the tree structure of the outline
192 * Setting tags:: How to assign tags to a headline
193 * Tag searches:: Searching for combinations of tags
194
195 Properties and Columns
196
197 * Property syntax:: How properties are spelled out
198 * Special properties:: Access to other Org mode features
199 * Property searches:: Matching property values
200 * Property inheritance:: Passing values down the tree
201 * Column view:: Tabular viewing and editing
202 * Property API:: Properties for Lisp programmers
203
204 Column view
205
206 * Defining columns:: The COLUMNS format property
207 * Using column view:: How to create and use column view
208 * Capturing column view:: A dynamic block for column view
209
210 Defining columns
211
212 * Scope of column definitions:: Where defined, where valid?
213 * Column attributes:: Appearance and content of a column
214
215 Dates and Times
216
217 * Timestamps:: Assigning a time to a tree entry
218 * Creating timestamps:: Commands which insert timestamps
219 * Deadlines and scheduling:: Planning your work
220 * Clocking work time:: Tracking how long you spend on a task
221 * Effort estimates:: Planning work effort in advance
222
223 Creating timestamps
224
225 * The date/time prompt:: How Org mode helps you entering date and time
226 * Custom time format:: Making dates look different
227
228 Deadlines and scheduling
229
230 * Inserting deadline/schedule:: Planning items
231 * Repeated tasks:: Items that show up again and again
232
233 Capture
234
235 * Remember:: Capture new tasks/ideas with little interruption
236 * Attachments:: Add files to tasks.
237
238 Remember
239
240 * Setting up Remember:: Some code for .emacs to get things going
241 * Remember templates:: Define the outline of different note types
242 * Storing notes:: Directly get the note to where it belongs
243 * Refiling notes:: Moving a note or task to a project
244
245 Agenda Views
246
247 * Agenda files:: Files being searched for agenda information
248 * Agenda dispatcher:: Keyboard access to agenda views
249 * Built-in agenda views:: What is available out of the box?
250 * Presentation and sorting:: How agenda items are prepared for display
251 * Agenda commands:: Remote editing of Org trees
252 * Custom agenda views:: Defining special searches and views
253 * Agenda column view:: Using column view for collected entries
254
255 The built-in agenda views
256
257 * Weekly/daily agenda:: The calendar page with current tasks
258 * Global TODO list:: All unfinished action items
259 * Matching tags and properties:: Structured information with fine-tuned search
260 * Timeline:: Time-sorted view for single file
261 * Keyword search:: Finding entries by keyword
262 * Stuck projects:: Find projects you need to review
263
264 Presentation and sorting
265
266 * Categories:: Not all tasks are equal
267 * Time-of-day specifications:: How the agenda knows the time
268 * Sorting of agenda items:: The order of things
269
270 Custom agenda views
271
272 * Storing searches:: Type once, use often
273 * Block agenda:: All the stuff you need in a single buffer
274 * Setting Options:: Changing the rules
275 * Exporting Agenda Views:: Writing agendas to files
276 * Using the agenda elsewhere:: Using agenda information in other programs
277
278 Embedded LaTeX
279
280 * Math symbols:: TeX macros for symbols and Greek letters
281 * Subscripts and superscripts:: Simple syntax for raising/lowering text
282 * LaTeX fragments:: Complex formulas made easy
283 * Processing LaTeX fragments:: Previewing LaTeX processing
284 * CDLaTeX mode:: Speed up entering of formulas
285
286 Exporting
287
288 * Markup rules:: Which structures are recognized?
289 * Selective export:: Using tags to select and exclude trees
290 * Export options:: Per-file export settings
291 * The export dispatcher:: How to access exporter commands
292 * ASCII export:: Exporting to plain ASCII
293 * HTML export:: Exporting to HTML
294 * LaTeX and PDF export:: Exporting to LaTeX, and processing to PDF
295 * XOXO export:: Exporting to XOXO
296 * iCalendar export:: Exporting in iCalendar format
297
298 Markup rules
299
300 * Document title:: How the document title is determined
301 * Headings and sections:: The main structure of the exported document
302 * Table of contents:: If, where, how to create a table of contents
303 * Initial text:: Text before the first headline
304 * Lists:: Plain lists are exported
305 * Paragraphs:: What determines beginning and ending
306 * Literal examples:: Source code and other examples
307 * Include files:: Include the contents of a file during export
308 * Tables exported:: Tables are exported richly
309 * Footnotes:: Numbers like [1]
310 * Emphasis and monospace:: To bold or not to bold
311 * TeX macros and LaTeX fragments:: Create special, rich export.
312 * Horizontal rules:: A line across the page
313 * Comment lines:: Some lines will not be exported
314
315 HTML export
316
317 * HTML Export commands:: How to invoke HTML export
318 * Quoting HTML tags:: Using direct HTML in Org mode
319 * Links:: Transformation of links for HTML
320 * Images:: How to include images
321 * CSS support:: Changing the appearance of the output
322 * Javascript support:: Info and Folding in a web browser
323
324 LaTeX and PDF export
325
326 * LaTeX/PDF export commands::
327 * Quoting LaTeX code:: Incorporating literal LaTeX code
328 * Sectioning structure:: Changing sectioning in LaTeX output
329
330 Publishing
331
332 * Configuration:: Defining projects
333 * Sample configuration:: Example projects
334 * Triggering publication:: Publication commands
335
336 Configuration
337
338 * Project alist:: The central configuration variable
339 * Sources and destinations:: From here to there
340 * Selecting files:: What files are part of the project?
341 * Publishing action:: Setting the function doing the publishing
342 * Publishing options:: Tweaking HTML export
343 * Publishing links:: Which links keep working after publishing?
344 * Project page index:: Publishing a list of project files
345
346 Sample configuration
347
348 * Simple example:: One-component publishing
349 * Complex example:: A multi-component publishing example
350
351 Miscellaneous
352
353 * Completion:: M-TAB knows what you need
354 * Customization:: Adapting Org to your taste
355 * In-buffer settings:: Overview of the #+KEYWORDS
356 * The very busy C-c C-c key:: When in doubt, press C-c C-c
357 * Clean view:: Getting rid of leading stars in the outline
358 * TTY keys:: Using Org on a tty
359 * Interaction:: Other Emacs packages
360 * Bugs:: Things which do not work perfectly
361
362 Interaction with other packages
363
364 * Cooperation:: Packages Org cooperates with
365 * Conflicts:: Packages that lead to conflicts
366
367 Extensions
368
369 * Extensions in the contrib directory:: These come with the Org distro
370 * Other extensions:: These you have to find on the web.
371
372 Hacking
373
374 * Adding hyperlink types:: New custom link types
375 * Tables in arbitrary syntax:: Orgtbl for LaTeX and other programs
376 * Dynamic blocks:: Automatically filled blocks
377 * Special agenda views:: Customized views
378 * Using the property API:: Writing programs that use entry properties
379 * Using the mapping API:: Mapping over all or selected entries
380
381 Tables and lists in arbitrary syntax
382
383 * Radio tables:: Sending and receiving
384 * A LaTeX example:: Step by step, almost a tutorial
385 * Translator functions:: Copy and modify
386 * Radio lists:: Doing the same for lists
387
388 @end detailmenu
389 @end menu
390
391 @node Introduction, Document Structure, Top, Top
392 @chapter Introduction
393 @cindex introduction
394
395 @menu
396 * Summary:: Brief summary of what Org does
397 * Installation:: How to install a downloaded version of Org
398 * Activation:: How to activate Org for certain buffers
399 * Feedback:: Bug reports, ideas, patches etc.
400 * Conventions:: Type-setting conventions in the manual
401 @end menu
402
403 @node Summary, Installation, Introduction, Introduction
404 @section Summary
405 @cindex summary
406
407 Org is a mode for keeping notes, maintaining TODO lists, and doing
408 project planning with a fast and effective plain-text system.
409
410 Org develops organizational tasks around NOTES files that contain
411 lists or information about projects as plain text. Org is
412 implemented on top of Outline mode, which makes it possible to keep the
413 content of large files well structured. Visibility cycling and
414 structure editing help to work with the tree. Tables are easily created
415 with a built-in table editor. Org supports TODO items, deadlines,
416 time stamps, and scheduling. It dynamically compiles entries into an
417 agenda that utilizes and smoothly integrates much of the Emacs calendar
418 and diary. Plain text URL-like links connect to websites, emails,
419 Usenet messages, BBDB entries, and any files related to the projects.
420 For printing and sharing of notes, an Org file can be exported as a
421 structured ASCII file, as HTML, or (TODO and agenda items only) as an
422 iCalendar file. It can also serve as a publishing tool for a set of
423 linked web pages.
424
425 An important design aspect that distinguishes Org from for example
426 Planner/Muse is that it encourages to store every piece of information
427 only once. In Planner, you have project pages, day pages and possibly
428 other files, duplicating some information such as tasks. In Org,
429 you only have notes files. In your notes you mark entries as tasks,
430 label them with tags and timestamps. All necessary lists like a
431 schedule for the day, the agenda for a meeting, tasks lists selected by
432 tags etc are created dynamically when you need them.
433
434 Org keeps simple things simple. When first fired up, it should
435 feel like a straightforward, easy to use outliner. Complexity is not
436 imposed, but a large amount of functionality is available when you need
437 it. Org is a toolbox and can be used in different ways, for
438 example as:
439
440 @example
441 @r{@bullet{} outline extension with visibility cycling and structure editing}
442 @r{@bullet{} ASCII system and table editor for taking structured notes}
443 @r{@bullet{} ASCII table editor with spreadsheet-like capabilities}
444 @r{@bullet{} TODO list editor}
445 @r{@bullet{} full agenda and planner with deadlines and work scheduling}
446 @r{@bullet{} environment to implement David Allen's GTD system}
447 @r{@bullet{} a basic database application}
448 @r{@bullet{} simple hypertext system, with HTML and LaTeX export}
449 @r{@bullet{} publishing tool to create a set of interlinked webpages}
450 @end example
451
452 Org's automatic, context sensitive table editor with spreadsheet
453 capabilities can be integrated into any major mode by activating the
454 minor Orgtbl mode. Using a translation step, it can be used to maintain
455 tables in arbitrary file types, for example in La@TeX{}. The structure
456 editing and list creation capabilities can be used outside Org with
457 the minor Orgstruct mode.
458
459 @cindex FAQ
460 There is a website for Org which provides links to the newest
461 version of Org, as well as additional information, frequently asked
462 questions (FAQ), links to tutorials etc. This page is located at
463 @uref{http://orgmode.org}.
464
465 @page
466
467
468 @node Installation, Activation, Summary, Introduction
469 @section Installation
470 @cindex installation
471 @cindex XEmacs
472
473 @b{Important:} @i{If Org is part of the Emacs distribution or an
474 XEmacs package, please skip this section and go directly to
475 @ref{Activation}.}
476
477 If you have downloaded Org from the Web, either as a distribution @file{.zip}
478 or @file{.tar} file, or as a GIT archive, you must take the following steps
479 to install it: Go into the unpacked Org distribution directory and edit the
480 top section of the file @file{Makefile}. You must set the name of the Emacs
481 binary (likely either @file{emacs} or @file{xemacs}), and the paths to the
482 directories where local Lisp and Info files are kept. If you don't have
483 access to the system-wide directories, you can simply run Org directly from
484 the distribution directory by adding the @file{lisp} subdirectory to the
485 Emacs load path. To do this, add the following line to @file{.emacs}:
486
487 @example
488 (setq load-path (cons "~/path/to/orgdir/lisp" load-path))
489 @end example
490
491 @noindent
492 If you plan to use code from the @file{contrib} subdirectory, do a similar
493 step for this directory:
494
495 @example
496 (setq load-path (cons "~/path/to/orgdir/contrib/lisp" load-path))
497 @end example
498
499 @b{XEmacs users now need to install the file @file{noutline.el} from
500 the @file{xemacs} sub-directory of the Org distribution. Use the
501 command:}
502
503 @example
504 @b{make install-noutline}
505 @end example
506
507 @noindent Now byte-compile the Lisp files with the shell command:
508
509 @example
510 make
511 @end example
512
513 @noindent If you are running Org from the distribution directory, this is
514 all. If you want to install into the system directories, use
515
516 @example
517 make install
518 make install-info
519 @end example
520
521 @noindent Then add to @file{.emacs}:
522
523 @lisp
524 ;; This line only if Org is not part of the X/Emacs distribution.
525 (require 'org-install)
526 @end lisp
527
528
529 @node Activation, Feedback, Installation, Introduction
530 @section Activation
531 @cindex activation
532 @cindex autoload
533 @cindex global key bindings
534 @cindex key bindings, global
535
536 @iftex
537 @b{Important:} @i{If you use copy-and-paste to copy lisp code from the
538 PDF documentation as viewed by some PDF viewers to your .emacs file, the
539 single quote character comes out incorrectly and the code will not work.
540 You need to fix the single quotes by hand, or copy from Info
541 documentation.}
542 @end iftex
543
544 Add the following lines to your @file{.emacs} file. The last three lines
545 define @emph{global} keys for the commands @command{org-store-link},
546 @command{org-agenda}, and @command{org-iswitchb} - please choose suitable
547 keys yourself.
548
549 @lisp
550 ;; The following lines are always needed. Choose your own keys.
551 (add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
552 (global-set-key "\C-cl" 'org-store-link)
553 (global-set-key "\C-ca" 'org-agenda)
554 (global-set-key "\C-cb" 'org-iswitchb)
555 @end lisp
556
557 Furthermore, you must activate @code{font-lock-mode} in Org
558 buffers, because significant functionality depends on font-locking being
559 active. You can do this with either one of the following two lines
560 (XEmacs user must use the second option):
561 @lisp
562 (global-font-lock-mode 1) ; for all buffers
563 (add-hook 'org-mode-hook 'turn-on-font-lock) ; Org buffers only
564 @end lisp
565
566 @cindex Org mode, turning on
567 With this setup, all files with extension @samp{.org} will be put
568 into Org mode. As an alternative, make the first line of a file look
569 like this:
570
571 @example
572 MY PROJECTS -*- mode: org; -*-
573 @end example
574
575 @noindent which will select Org mode for this buffer no matter what
576 the file's name is. See also the variable
577 @code{org-insert-mode-line-in-empty-file}.
578
579 @node Feedback, Conventions, Activation, Introduction
580 @section Feedback
581 @cindex feedback
582 @cindex bug reports
583 @cindex maintainer
584 @cindex author
585
586 If you find problems with Org, or if you have questions, remarks, or ideas
587 about it, please mail to the Org mailing list @code{emacs-orgmode@@gnu.org}.
588 If you are not a member of the mailing list, your mail will be reviewed by a
589 moderator and then passed through to the list.
590
591 For bug reports, please provide as much information as possible,
592 including the version information of Emacs (@kbd{C-h v emacs-version
593 @key{RET}}) and Org (@kbd{C-h v org-version @key{RET}}), as well as
594 the Org related setup in @file{.emacs}. If an error occurs, a
595 backtrace can be very useful (see below on how to create one). Often a
596 small example file helps, along with clear information about:
597
598 @enumerate
599 @item What exactly did you do?
600 @item What did you expect to happen?
601 @item What happened instead?
602 @end enumerate
603 @noindent Thank you for helping to improve this mode.
604
605 @subsubheading How to create a useful backtrace
606
607 @cindex backtrace of an error
608 If working with Org produces an error with a message you don't
609 understand, you may have hit a bug. The best way to report this is by
610 providing, in addition to what was mentioned above, a @emph{Backtrace}.
611 This is information from the built-in debugger about where and how the
612 error occurred. Here is how to produce a useful backtrace:
613
614 @enumerate
615 @item
616 Start a fresh Emacs or XEmacs, and make sure that it will load the
617 original Lisp code in @file{org.el} instead of the compiled version in
618 @file{org.elc}. The backtrace contains much more information if it is
619 produced with uncompiled code. To do this, either rename @file{org.elc}
620 to something else before starting Emacs, or ask Emacs explicitly to load
621 @file{org.el} by using the command line
622 @example
623 emacs -l /path/to/org.el
624 @end example
625 @item
626 Go to the @code{Options} menu and select @code{Enter Debugger on Error}
627 (XEmacs has this option in the @code{Troubleshooting} sub-menu).
628 @item
629 Do whatever you have to do to hit the error. Don't forget to
630 document the steps you take.
631 @item
632 When you hit the error, a @file{*Backtrace*} buffer will appear on the
633 screen. Save this buffer to a file (for example using @kbd{C-x C-w}) and
634 attach it to your bug report.
635 @end enumerate
636
637 @node Conventions, , Feedback, Introduction
638 @section Typesetting conventions used in this manual
639
640 Org uses three types of keywords: TODO keywords, tags, and property
641 names. In this manual we use the following conventions:
642
643 @table @code
644 @item TODO
645 @itemx WAITING
646 TODO keywords are written with all capitals, even if they are
647 user-defined.
648 @item boss
649 @itemx ARCHIVE
650 User-defined tags are written in lowercase; built-in tags with special
651 meaning are written with all capitals.
652 @item Release
653 @itemx PRIORITY
654 User-defined properties are capitalized; built-in properties with
655 special meaning are written with all capitals.
656 @end table
657
658 @node Document Structure, Tables, Introduction, Top
659 @chapter Document Structure
660 @cindex document structure
661 @cindex structure of document
662
663 Org is based on outline mode and provides flexible commands to
664 edit the structure of the document.
665
666 @menu
667 * Outlines:: Org is based on Outline mode
668 * Headlines:: How to typeset Org tree headlines
669 * Visibility cycling:: Show and hide, much simplified
670 * Motion:: Jumping to other headlines
671 * Structure editing:: Changing sequence and level of headlines
672 * Archiving:: Move done task trees to a different place
673 * Sparse trees:: Matches embedded in context
674 * Plain lists:: Additional structure within an entry
675 * Drawers:: Tucking stuff away
676 * Orgstruct mode:: Structure editing outside Org
677 @end menu
678
679 @node Outlines, Headlines, Document Structure, Document Structure
680 @section Outlines
681 @cindex outlines
682 @cindex Outline mode
683
684 Org is implemented on top of Outline mode. Outlines allow a
685 document to be organized in a hierarchical structure, which (at least
686 for me) is the best representation of notes and thoughts. An overview
687 of this structure is achieved by folding (hiding) large parts of the
688 document to show only the general document structure and the parts
689 currently being worked on. Org greatly simplifies the use of
690 outlines by compressing the entire show/hide functionality into a single
691 command @command{org-cycle}, which is bound to the @key{TAB} key.
692
693 @node Headlines, Visibility cycling, Outlines, Document Structure
694 @section Headlines
695 @cindex headlines
696 @cindex outline tree
697
698 Headlines define the structure of an outline tree. The headlines in
699 Org start with one or more stars, on the left margin@footnote{See
700 the variable @code{org-special-ctrl-a/e} to configure special behavior
701 of @kbd{C-a} and @kbd{C-e} in headlines.}. For example:
702
703 @example
704 * Top level headline
705 ** Second level
706 *** 3rd level
707 some text
708 *** 3rd level
709 more text
710
711 * Another top level headline
712 @end example
713
714 @noindent Some people find the many stars too noisy and would prefer an
715 outline that has whitespace followed by a single star as headline
716 starters. @ref{Clean view} describes a setup to realize this.
717
718 An empty line after the end of a subtree is considered part of it and
719 will be hidden when the subtree is folded. However, if you leave at
720 least two empty lines, one empty line will remain visible after folding
721 the subtree, in order to structure the collapsed view. See the
722 variable @code{org-cycle-separator-lines} to modify this behavior.
723
724 @node Visibility cycling, Motion, Headlines, Document Structure
725 @section Visibility cycling
726 @cindex cycling, visibility
727 @cindex visibility cycling
728 @cindex trees, visibility
729 @cindex show hidden text
730 @cindex hide text
731
732 Outlines make it possible to hide parts of the text in the buffer.
733 Org uses just two commands, bound to @key{TAB} and
734 @kbd{S-@key{TAB}} to change the visibility in the buffer.
735
736 @cindex subtree visibility states
737 @cindex subtree cycling
738 @cindex folded, subtree visibility state
739 @cindex children, subtree visibility state
740 @cindex subtree, subtree visibility state
741 @table @kbd
742 @kindex @key{TAB}
743 @item @key{TAB}
744 @emph{Subtree cycling}: Rotate current subtree among the states
745
746 @example
747 ,-> FOLDED -> CHILDREN -> SUBTREE --.
748 '-----------------------------------'
749 @end example
750
751 The cursor must be on a headline for this to work@footnote{see, however,
752 the option @code{org-cycle-emulate-tab}.}. When the cursor is at the
753 beginning of the buffer and the first line is not a headline, then
754 @key{TAB} actually runs global cycling (see below)@footnote{see the
755 option @code{org-cycle-global-at-bob}.}. Also when called with a prefix
756 argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
757
758 @cindex global visibility states
759 @cindex global cycling
760 @cindex overview, global visibility state
761 @cindex contents, global visibility state
762 @cindex show all, global visibility state
763 @kindex S-@key{TAB}
764 @item S-@key{TAB}
765 @itemx C-u @key{TAB}
766 @emph{Global cycling}: Rotate the entire buffer among the states
767
768 @example
769 ,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
770 '--------------------------------------'
771 @end example
772
773 When @kbd{S-@key{TAB}} is called with a numeric prefix argument N, the
774 CONTENTS view up to headlines of level N will be shown. Note that inside
775 tables, @kbd{S-@key{TAB}} jumps to the previous field.
776
777 @cindex show all, command
778 @kindex C-u C-u C-u @key{TAB}
779 @item C-u C-u C-u @key{TAB}
780 Show all, including drawers.
781 @kindex C-c C-r
782 @item C-c C-r
783 Reveal context around point, showing the current entry, the following heading
784 and the hierarchy above. Useful for working near a location that has been
785 exposed by a sparse tree command (@pxref{Sparse trees}) or an agenda command
786 (@pxref{Agenda commands}). With a prefix argument show, on each
787 level, all sibling headings.
788 @kindex C-c C-x b
789 @item C-c C-x b
790 Show the current subtree in an indirect buffer@footnote{The indirect
791 buffer
792 @ifinfo
793 (@pxref{Indirect Buffers,,,emacs,GNU Emacs Manual})
794 @end ifinfo
795 @ifnotinfo
796 (see the Emacs manual for more information about indirect buffers)
797 @end ifnotinfo
798 will contain the entire buffer, but will be narrowed to the current
799 tree. Editing the indirect buffer will also change the original buffer,
800 but without affecting visibility in that buffer.}. With a numeric
801 prefix argument N, go up to level N and then take that tree. If N is
802 negative then go up that many levels. With a @kbd{C-u} prefix, do not remove
803 the previously used indirect buffer.
804 @end table
805
806 When Emacs first visits an Org file, the global state is set to
807 OVERVIEW, i.e. only the top level headlines are visible. This can be
808 configured through the variable @code{org-startup-folded}, or on a
809 per-file basis by adding one of the following lines anywhere in the
810 buffer:
811
812 @example
813 #+STARTUP: overview
814 #+STARTUP: content
815 #+STARTUP: showall
816 @end example
817
818 @noindent
819 Forthermore, any entries with a @samp{VISIBILITY} property (@pxref{Properties
820 and Columns}) will get their visibility adapted accordingly. Allowed values
821 for this property are @code{folded}, @code{children}, @code{content}, and
822 @code{all}.
823 @table @kbd
824 @kindex C-u C-u @key{TAB}
825 @item C-u C-u @key{TAB}
826 Switch back to the startup visibility of the buffer, i.e. whatever is
827 requested by startup options and @samp{VISIBILITY} properties in individual
828 entries.
829 @end table
830
831 @node Motion, Structure editing, Visibility cycling, Document Structure
832 @section Motion
833 @cindex motion, between headlines
834 @cindex jumping, to headlines
835 @cindex headline navigation
836 The following commands jump to other headlines in the buffer.
837
838 @table @kbd
839 @kindex C-c C-n
840 @item C-c C-n
841 Next heading.
842 @kindex C-c C-p
843 @item C-c C-p
844 Previous heading.
845 @kindex C-c C-f
846 @item C-c C-f
847 Next heading same level.
848 @kindex C-c C-b
849 @item C-c C-b
850 Previous heading same level.
851 @kindex C-c C-u
852 @item C-c C-u
853 Backward to higher level heading.
854 @kindex C-c C-j
855 @item C-c C-j
856 Jump to a different place without changing the current outline
857 visibility. Shows the document structure in a temporary buffer, where
858 you can use the following keys to find your destination:
859 @example
860 @key{TAB} @r{Cycle visibility.}
861 @key{down} / @key{up} @r{Next/previous visible headline.}
862 @key{RET} @r{Select this location.}
863 @kbd{/} @r{Do a Sparse-tree search}
864 @r{The following keys work if you turn off @code{org-goto-auto-isearch}}
865 n / p @r{Next/previous visible headline.}
866 f / b @r{Next/previous headline same level.}
867 u @r{One level up.}
868 0-9 @r{Digit argument.}
869 q @r{Quit}
870 @end example
871 See also the variable@code{org-goto-interface}.
872 @end table
873
874 @node Structure editing, Archiving, Motion, Document Structure
875 @section Structure editing
876 @cindex structure editing
877 @cindex headline, promotion and demotion
878 @cindex promotion, of subtrees
879 @cindex demotion, of subtrees
880 @cindex subtree, cut and paste
881 @cindex pasting, of subtrees
882 @cindex cutting, of subtrees
883 @cindex copying, of subtrees
884 @cindex subtrees, cut and paste
885
886 @table @kbd
887 @kindex M-@key{RET}
888 @item M-@key{RET}
889 Insert new heading with same level as current. If the cursor is in a
890 plain list item, a new item is created (@pxref{Plain lists}). To force
891 creation of a new headline, use a prefix argument, or first press @key{RET}
892 to get to the beginning of the next line. When this command is used in
893 the middle of a line, the line is split and the rest of the line becomes
894 the new headline@footnote{If you do not want the line to be split,
895 customize the variable @code{org-M-RET-may-split-line}.}. If the
896 command is used at the beginning of a headline, the new headline is
897 created before the current line. If at the beginning of any other line,
898 the content of that line is made the new heading. If the command is
899 used at the end of a folded subtree (i.e. behind the ellipses at the end
900 of a headline), then a headline like the current one will be inserted
901 after the end of the subtree.
902 @kindex C-@key{RET}
903 @item C-@key{RET}
904 Just like @kbd{M-@key{RET}}, except when adding a new heading below the
905 current heading, the new heading is placed after the body instead of before
906 it. This command works from anywhere in the entry.
907 @kindex M-S-@key{RET}
908 @item M-S-@key{RET}
909 Insert new TODO entry with same level as current heading.
910 @kindex C-S-@key{RET}
911 @item C-S-@key{RET}
912 Insert new TODO entry with same level as current heading. Like
913 @kbd{C-@key{RET}}, the new headline will be inserted after the current
914 subtree.
915 @kindex M-@key{left}
916 @item M-@key{left}
917 Promote current heading by one level.
918 @kindex M-@key{right}
919 @item M-@key{right}
920 Demote current heading by one level.
921 @kindex M-S-@key{left}
922 @item M-S-@key{left}
923 Promote the current subtree by one level.
924 @kindex M-S-@key{right}
925 @item M-S-@key{right}
926 Demote the current subtree by one level.
927 @kindex M-S-@key{up}
928 @item M-S-@key{up}
929 Move subtree up (swap with previous subtree of same
930 level).
931 @kindex M-S-@key{down}
932 @item M-S-@key{down}
933 Move subtree down (swap with next subtree of same level).
934 @kindex C-c C-x C-w
935 @item C-c C-x C-w
936 Kill subtree, i.e. remove it from buffer but save in kill ring.
937 With a numeric prefix argument N, kill N sequential subtrees.
938 @kindex C-c C-x M-w
939 @item C-c C-x M-w
940 Copy subtree to kill ring. With a numeric prefix argument N, copy the N
941 sequential subtrees.
942 @kindex C-c C-x C-y
943 @item C-c C-x C-y
944 Yank subtree from kill ring. This does modify the level of the subtree to
945 make sure the tree fits in nicely at the yank position. The yank level can
946 also be specified with a numeric prefix argument, or by yanking after a
947 headline marker like @samp{****}.
948 @kindex C-y
949 @item C-y
950 Depending on the variables @code{org-yank-adjusted-subtrees} and
951 @code{org-yank-folded-subtrees}, Org's internal @code{yank} command will
952 paste subtrees folded and in a clever way, using the same command as @kbd{C-c
953 C-x C-y}. With the default settings, level adjustment will take place and
954 yanked trees will be folded unless doing so would swallow text previously
955 visible. Any prefix argument to this command will force a normal @code{yank}
956 to be executed, with the prefix passed along. A good way to force a normal
957 yank is @kbd{C-u C-y}. If you use @code{yank-pop} after a yank, it will yank
958 previous kill items plainly, without adjustment and folding.
959 @kindex C-c C-w
960 @item C-c C-w
961 Refile entry or region to a different location. @xref{Refiling notes}.
962 @kindex C-c ^
963 @item C-c ^
964 Sort same-level entries. When there is an active region, all entries in the
965 region will be sorted. Otherwise the children of the current headline are
966 sorted. The command prompts for the sorting method, which can be
967 alphabetically, numerically, by time (using the first time stamp in each
968 entry), by priority, or by TODO keyword (in the sequence the keywords have
969 been defined in the setup). Reverse sorting is possible as well. You can
970 also supply your own function to extract the sorting key. With a @kbd{C-u}
971 prefix, sorting will be case-sensitive. With two @kbd{C-u C-u} prefixes,
972 duplicate entries will also be removed.
973 @kindex C-x n s
974 @item C-x n s
975 Narrow buffer to current subtree.
976 @kindex C-x n w
977 @item C-x n w
978 Widen buffer to remove a narrowing.
979 @kindex C-c *
980 @item C-c *
981 Turn a normal line or plain list item into a headline (so that it
982 becomes a subheading at its location). Also turn a headline into a
983 normal line by removing the stars. If there is an active region, turn
984 all lines in the region into headlines. Or, if the first line is a
985 headline, remove the stars from all headlines in the region.
986 @end table
987
988 @cindex region, active
989 @cindex active region
990 @cindex Transient mark mode
991 When there is an active region (Transient mark mode), promotion and
992 demotion work on all headlines in the region. To select a region of
993 headlines, it is best to place both point and mark at the beginning of a
994 line, mark at the beginning of the first headline, and point at the line
995 just after the last headline to change. Note that when the cursor is
996 inside a table (@pxref{Tables}), the Meta-Cursor keys have different
997 functionality.
998
999 @node Archiving, Sparse trees, Structure editing, Document Structure
1000 @section Archiving
1001 @cindex archiving
1002
1003 When a project represented by a (sub)tree is finished, you may want
1004 to move the tree out of the way and to stop it from contributing to the
1005 agenda. Org mode knows two ways of archiving. You can mark a tree with
1006 the ARCHIVE tag, or you can move an entire (sub)tree to a different
1007 location.
1008
1009 @menu
1010 * ARCHIVE tag:: Marking a tree as inactive
1011 * Moving subtrees:: Moving a tree to an archive file
1012 @end menu
1013
1014 @node ARCHIVE tag, Moving subtrees, Archiving, Archiving
1015 @subsection The ARCHIVE tag
1016 @cindex internal archiving
1017
1018 A headline that is marked with the ARCHIVE tag (@pxref{Tags}) stays at
1019 its location in the outline tree, but behaves in the following way:
1020 @itemize @minus
1021 @item
1022 It does not open when you attempt to do so with a visibility cycling
1023 command (@pxref{Visibility cycling}). You can force cycling archived
1024 subtrees with @kbd{C-@key{TAB}}, or by setting the option
1025 @code{org-cycle-open-archived-trees}. Also normal outline commands like
1026 @code{show-all} will open archived subtrees.
1027 @item
1028 During sparse tree construction (@pxref{Sparse trees}), matches in
1029 archived subtrees are not exposed, unless you configure the option
1030 @code{org-sparse-tree-open-archived-trees}.
1031 @item
1032 During agenda view construction (@pxref{Agenda Views}), the content of
1033 archived trees is ignored unless you configure the option
1034 @code{org-agenda-skip-archived-trees}, in which case these trees will always
1035 be included. In the agenda you can press the @kbd{v} key to get archives
1036 temporarily included.
1037 @item
1038 Archived trees are not exported (@pxref{Exporting}), only the headline
1039 is. Configure the details using the variable
1040 @code{org-export-with-archived-trees}.
1041 @end itemize
1042
1043 The following commands help managing the ARCHIVE tag:
1044
1045 @table @kbd
1046 @kindex C-c C-x a
1047 @item C-c C-x a
1048 Toggle the ARCHIVE tag for the current headline. When the tag is set,
1049 the headline changes to a shadowed face, and the subtree below it is
1050 hidden.
1051 @kindex C-u C-c C-x a
1052 @item C-u C-c C-x a
1053 Check if any direct children of the current headline should be archived.
1054 To do this, each subtree is checked for open TODO entries. If none are
1055 found, the command offers to set the ARCHIVE tag for the child. If the
1056 cursor is @emph{not} on a headline when this command is invoked, the
1057 level 1 trees will be checked.
1058 @kindex C-@kbd{TAB}
1059 @item C-@kbd{TAB}
1060 Cycle a tree even if it is tagged with ARCHIVE.
1061 @end table
1062
1063 @node Moving subtrees, , ARCHIVE tag, Archiving
1064 @subsection Moving subtrees
1065 @cindex external archiving
1066
1067 Once an entire project is finished, you may want to move it to a different
1068 location. Org can move it to an @emph{Archive Sibling} in the same tree, to a
1069 different tree in the current file, or to a different file, the archive file.
1070
1071 @table @kbd
1072 @kindex C-c C-x A
1073 @item C-c C-x A
1074 Move the current entry to the @emph{Archive Sibling}. This is a sibling of
1075 the entry with the heading @samp{Archive} and the tag @samp{ARCHIVE}
1076 (@pxref{ARCHIVE tag}). The entry becomes a child of that sibling and in this
1077 way retains a lot of its original context, including inherited tags and
1078 approximate position in the outline.
1079 @kindex C-c C-x C-s
1080 @item C-c C-x C-s
1081 Archive the subtree starting at the cursor position to the location
1082 given by @code{org-archive-location}. Context information that could be
1083 lost like the file name, the category, inherited tags, and the TODO
1084 state will be store as properties in the entry.
1085 @kindex C-u C-c C-x C-s
1086 @item C-u C-c C-x C-s
1087 Check if any direct children of the current headline could be moved to
1088 the archive. To do this, each subtree is checked for open TODO entries.
1089 If none are found, the command offers to move it to the archive
1090 location. If the cursor is @emph{not} on a headline when this command
1091 is invoked, the level 1 trees will be checked.
1092 @end table
1093
1094 @cindex archive locations
1095 The default archive location is a file in the same directory as the
1096 current file, with the name derived by appending @file{_archive} to the
1097 current file name. For information and examples on how to change this,
1098 see the documentation string of the variable
1099 @code{org-archive-location}. There is also an in-buffer option for
1100 setting this variable, for example@footnote{For backward compatibility,
1101 the following also works: If there are several such lines in a file,
1102 each specifies the archive location for the text below it. The first
1103 such line also applies to any text before its definition. However,
1104 using this method is @emph{strongly} deprecated as it is incompatible
1105 with the outline structure of the document. The correct method for
1106 setting multiple archive locations in a buffer is using a property.}:
1107
1108 @example
1109 #+ARCHIVE: %s_done::
1110 @end example
1111
1112 @noindent
1113 If you would like to have a special ARCHIVE location for a single entry
1114 or a (sub)tree, give the entry an @code{:ARCHIVE:} property with the
1115 location as the value (@pxref{Properties and Columns}).
1116
1117 When a subtree is moved, it receives a number of special properties that
1118 record context information like the file from where the entry came, it's
1119 outline path the archiving time etc. Configure the variable
1120 @code{org-archive-save-context-info} to adjust the amount of information
1121 added.
1122
1123 @node Sparse trees, Plain lists, Archiving, Document Structure
1124 @section Sparse trees
1125 @cindex sparse trees
1126 @cindex trees, sparse
1127 @cindex folding, sparse trees
1128 @cindex occur, command
1129
1130 An important feature of Org mode is the ability to construct @emph{sparse
1131 trees} for selected information in an outline tree, so that the entire
1132 document is folded as much as possible, but the selected information is made
1133 visible along with the headline structure above it@footnote{See also the
1134 variables @code{org-show-hierarchy-above}, @code{org-show-following-heading},
1135 @code{org-show-siblings}, and @code{org-show-entry-below} for detailed
1136 control on how much context is shown around each match.}. Just try it out
1137 and you will see immediately how it works.
1138
1139 Org mode contains several commands creating such trees, all these
1140 commands can be accessed through a dispatcher:
1141
1142 @table @kbd
1143 @kindex C-c /
1144 @item C-c /
1145 This prompts for an extra key to select a sparse-tree creating command.
1146 @kindex C-c / r
1147 @item C-c / r
1148 Occur. Prompts for a regexp and shows a sparse tree with all matches. If
1149 the match is in a headline, the headline is made visible. If the match is in
1150 the body of an entry, headline and body are made visible. In order to
1151 provide minimal context, also the full hierarchy of headlines above the match
1152 is shown, as well as the headline following the match. Each match is also
1153 highlighted; the highlights disappear when the buffer is changed by an
1154 editing command@footnote{depending on the option
1155 @code{org-remove-highlights-with-change}}, or by pressing @kbd{C-c C-c}.
1156 When called with a @kbd{C-u} prefix argument, previous highlights are kept,
1157 so several calls to this command can be stacked.
1158 @end table
1159
1160 @noindent
1161 For frequently used sparse trees of specific search strings, you can
1162 use the variable @code{org-agenda-custom-commands} to define fast
1163 keyboard access to specific sparse trees. These commands will then be
1164 accessible through the agenda dispatcher (@pxref{Agenda dispatcher}).
1165 For example:
1166
1167 @lisp
1168 (setq org-agenda-custom-commands
1169 '(("f" occur-tree "FIXME")))
1170 @end lisp
1171
1172 @noindent will define the key @kbd{C-c a f} as a shortcut for creating
1173 a sparse tree matching the string @samp{FIXME}.
1174
1175 The other sparse tree commands select headings based on TODO keywords,
1176 tags, or properties and will be discussed later in this manual.
1177
1178 @kindex C-c C-e v
1179 @cindex printing sparse trees
1180 @cindex visible text, printing
1181 To print a sparse tree, you can use the Emacs command
1182 @code{ps-print-buffer-with-faces} which does not print invisible parts
1183 of the document @footnote{This does not work under XEmacs, because
1184 XEmacs uses selective display for outlining, not text properties.}.
1185 Or you can use the command @kbd{C-c C-e v} to export only the visible
1186 part of the document and print the resulting file.
1187
1188 @node Plain lists, Drawers, Sparse trees, Document Structure
1189 @section Plain lists
1190 @cindex plain lists
1191 @cindex lists, plain
1192 @cindex lists, ordered
1193 @cindex ordered lists
1194
1195 Within an entry of the outline tree, hand-formatted lists can provide
1196 additional structure. They also provide a way to create lists of
1197 checkboxes (@pxref{Checkboxes}). Org supports editing such lists,
1198 and the HTML exporter (@pxref{Exporting}) parses and formats them.
1199
1200 Org knows ordered lists, unordered lists, and description lists.
1201 @itemize @bullet
1202 @item
1203 @emph{Unordered} list items start with @samp{-}, @samp{+}, or
1204 @samp{*}@footnote{When using @samp{*} as a bullet, lines must be indented or
1205 they will be seen as top-level headlines. Also, when you are hiding leading
1206 stars to get a clean outline view, plain list items starting with a star are
1207 visually indistinguishable from true headlines. In short: even though
1208 @samp{*} is supported, it may be better to not use it for plain list items.}
1209 as bullets.
1210 @item
1211 @emph{Ordered} list items start with a numeral followed by either a period or
1212 a right parenthesis, such as @samp{1.} or @samp{1)}.
1213 @item
1214 @emph{Description} list items are like unordered list items, but contain the
1215 separator @samp{ :: } to separate the description @emph{term} from the
1216 desciption.
1217 @end itemize
1218
1219 Items belonging to the same list must have the same indentation on the first
1220 line. In particular, if an ordered list reaches number @samp{10.}, then the
1221 2--digit numbers must be written left-aligned with the other numbers in the
1222 list. Indentation also determines the end of a list item. It ends before
1223 the next line that is indented like the bullet/number, or less. Empty lines
1224 are part of the previous item, so you can have several paragraphs in one
1225 item. If you would like an empty line to terminate all currently open plain
1226 lists, configure the variable @code{org-empty-line-terminates-plain-lists}.
1227 Here is an example:
1228
1229 @example
1230 @group
1231 ** Lord of the Rings
1232 My favorite scenes are (in this order)
1233 1. The attack of the Rohirrim
1234 2. Eowyns fight with the witch king
1235 + this was already my favorite scene in the book
1236 + I really like Miranda Otto.
1237 3. Peter Jackson being shot by Legolas
1238 - on DVD only
1239 He makes a really funny face when it happens.
1240 But in the end, not individual scenes matter but the film as a whole.
1241 Important actors in this film are:
1242 - @b{Elijah Wood} :: He plays the Frodo
1243 - @b{Sean Austin} :: He plays the Sam, Frodos friend. I still remember
1244 him very well from his role as Mikey Walsh a in the Goonies.
1245 @end group
1246 @end example
1247
1248 Org supports these lists by tuning filling and wrapping commands to
1249 deal with them correctly@footnote{Org only changes the filling
1250 settings for Emacs. For XEmacs, you should use Kyle E. Jones'
1251 @file{filladapt.el}. To turn this on, put into @file{.emacs}:
1252 @code{(require 'filladapt)}}, and by exporting them properly
1253 (@pxref{Exporting}).
1254
1255 The following commands act on items when the cursor is in the first line
1256 of an item (the line with the bullet or number).
1257
1258 @table @kbd
1259 @kindex @key{TAB}
1260 @item @key{TAB}
1261 Items can be folded just like headline levels if you set the variable
1262 @code{org-cycle-include-plain-lists}. The level of an item is then
1263 given by the indentation of the bullet/number. Items are always
1264 subordinate to real headlines, however; the hierarchies remain
1265 completely separated.
1266
1267 If @code{org-cycle-include-plain-lists} has not been set, @key{TAB}
1268 fixes the indentation of the current line in a heuristic way.
1269 @kindex M-@key{RET}
1270 @item M-@key{RET}
1271 Insert new item at current level. With a prefix argument, force a new
1272 heading (@pxref{Structure editing}). If this command is used in the middle
1273 of a line, the line is @emph{split} and the rest of the line becomes the new
1274 item@footnote{If you do not want the line to be split, customize the variable
1275 @code{org-M-RET-may-split-line}.}. If this command is executed in the
1276 @emph{whitespace before a bullet or number}, the new item is created
1277 @emph{before} the current item. If the command is executed in the white
1278 space before the text that is part of an item but does not contain the
1279 bullet, a bullet is added to the current line.
1280 @kindex M-S-@key{RET}
1281 @item M-S-@key{RET}
1282 Insert a new item with a checkbox (@pxref{Checkboxes}).
1283 @kindex S-@key{up}
1284 @kindex S-@key{down}
1285 @item S-@key{up}
1286 @itemx S-@key{down}
1287 Jump to the previous/next item in the current list.
1288 @kindex M-S-@key{up}
1289 @kindex M-S-@key{down}
1290 @item M-S-@key{up}
1291 @itemx M-S-@key{down}
1292 Move the item including subitems up/down (swap with previous/next item
1293 of same indentation). If the list is ordered, renumbering is
1294 automatic.
1295 @kindex M-S-@key{left}
1296 @kindex M-S-@key{right}
1297 @item M-S-@key{left}
1298 @itemx M-S-@key{right}
1299 Decrease/increase the indentation of the item, including subitems.
1300 Initially, the item tree is selected based on current indentation.
1301 When these commands are executed several times in direct succession,
1302 the initially selected region is used, even if the new indentation
1303 would imply a different hierarchy. To use the new hierarchy, break
1304 the command chain with a cursor motion or so.
1305 @kindex C-c C-c
1306 @item C-c C-c
1307 If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the
1308 state of the checkbox. If not, this command makes sure that all the
1309 items on this list level use the same bullet. Furthermore, if this is
1310 an ordered list, make sure the numbering is OK.
1311 @kindex C-c -
1312 @item C-c -
1313 Cycle the entire list level through the different itemize/enumerate bullets
1314 (@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}). With a numeric prefix
1315 argument N, select the Nth bullet from this list. If there is an active
1316 region when calling this, all lines will be converted to list items. If the
1317 first line already was a list item, any item markers will be removed from the
1318 list. Finally, even without an active region, a normal line will be
1319 converted into a list item.
1320 @kindex S-@key{left}
1321 @kindex S-@key{right}
1322 @item S-@key{left}/@key{right}
1323 Also cycle bullet styles when in the first line of an item.
1324 @end table
1325
1326 @node Drawers, Orgstruct mode, Plain lists, Document Structure
1327 @section Drawers
1328 @cindex drawers
1329 @cindex visibility cycling, drawers
1330
1331 Sometimes you want to keep information associated with an entry, but you
1332 normally don't want to see it. For this, Org mode has @emph{drawers}.
1333 Drawers need to be configured with the variable
1334 @code{org-drawers}@footnote{You can define drawers on a per-file basis
1335 with a line like @code{#+DRAWERS: HIDDEN PROPERTIES STATE}}. Drawers
1336 look like this:
1337
1338 @example
1339 ** This is a headline
1340 Still outside the drawer
1341 :DRAWERNAME:
1342 This is inside the drawer.
1343 :END:
1344 After the drawer.
1345 @end example
1346
1347 Visibility cycling (@pxref{Visibility cycling}) on the headline will
1348 hide and show the entry, but keep the drawer collapsed to a single line.
1349 In order to look inside the drawer, you need to move the cursor to the
1350 drawer line and press @key{TAB} there. Org mode uses a drawer for
1351 storing properties (@pxref{Properties and Columns}), and another one for
1352 storing clock times (@pxref{Clocking work time}).
1353
1354 @node Orgstruct mode, , Drawers, Document Structure
1355 @section The Orgstruct minor mode
1356 @cindex Orgstruct mode
1357 @cindex minor mode for structure editing
1358
1359 If you like the intuitive way the Org mode structure editing and list
1360 formatting works, you might want to use these commands in other modes
1361 like Text mode or Mail mode as well. The minor mode Orgstruct mode
1362 makes this possible. You can always toggle the mode with @kbd{M-x
1363 orgstruct-mode}. To turn it on by default, for example in Mail mode,
1364 use
1365
1366 @lisp
1367 (add-hook 'mail-mode-hook 'turn-on-orgstruct)
1368 @end lisp
1369
1370 When this mode is active and the cursor is on a line that looks to
1371 Org like a headline of the first line of a list item, most
1372 structure editing commands will work, even if the same keys normally
1373 have different functionality in the major mode you are using. If the
1374 cursor is not in one of those special lines, Orgstruct mode lurks
1375 silently in the shadow.
1376
1377 @node Tables, Hyperlinks, Document Structure, Top
1378 @chapter Tables
1379 @cindex tables
1380 @cindex editing tables
1381
1382 Org comes with a fast and intuitive table editor. Spreadsheet-like
1383 calculations are supported in connection with the Emacs @file{calc}
1384 package
1385 @ifinfo
1386 (@pxref{Top,Calc,,Calc,Gnu Emacs Calculator Manual}).
1387 @end ifinfo
1388 @ifnotinfo
1389 (see the Emacs Calculator manual for more information about the Emacs
1390 calculator).
1391 @end ifnotinfo
1392
1393 @menu
1394 * Built-in table editor:: Simple tables
1395 * Narrow columns:: Stop wasting space in tables
1396 * Column groups:: Grouping to trigger vertical lines
1397 * Orgtbl mode:: The table editor as minor mode
1398 * The spreadsheet:: The table editor has spreadsheet capabilities
1399 * Org Plot:: Plotting from org tables
1400 @end menu
1401
1402 @node Built-in table editor, Narrow columns, Tables, Tables
1403 @section The built-in table editor
1404 @cindex table editor, built-in
1405
1406 Org makes it easy to format tables in plain ASCII. Any line with
1407 @samp{|} as the first non-whitespace character is considered part of a
1408 table. @samp{|} is also the column separator. A table might look like
1409 this:
1410
1411 @example
1412 | Name | Phone | Age |
1413 |-------+-------+-----|
1414 | Peter | 1234 | 17 |
1415 | Anna | 4321 | 25 |
1416 @end example
1417
1418 A table is re-aligned automatically each time you press @key{TAB} or
1419 @key{RET} or @kbd{C-c C-c} inside the table. @key{TAB} also moves to
1420 the next field (@key{RET} to the next row) and creates new table rows
1421 at the end of the table or before horizontal lines. The indentation
1422 of the table is set by the first line. Any line starting with
1423 @samp{|-} is considered as a horizontal separator line and will be
1424 expanded on the next re-align to span the whole table width. So, to
1425 create the above table, you would only type
1426
1427 @example
1428 |Name|Phone|Age|
1429 |-
1430 @end example
1431
1432 @noindent and then press @key{TAB} to align the table and start filling in
1433 fields.
1434
1435 When typing text into a field, Org treats @key{DEL},
1436 @key{Backspace}, and all character keys in a special way, so that
1437 inserting and deleting avoids shifting other fields. Also, when
1438 typing @emph{immediately after the cursor was moved into a new field
1439 with @kbd{@key{TAB}}, @kbd{S-@key{TAB}} or @kbd{@key{RET}}}, the
1440 field is automatically made blank. If this behavior is too
1441 unpredictable for you, configure the variables
1442 @code{org-enable-table-editor} and @code{org-table-auto-blank-field}.
1443
1444 @table @kbd
1445 @tsubheading{Creation and conversion}
1446 @kindex C-c |
1447 @item C-c |
1448 Convert the active region to table. If every line contains at least one
1449 TAB character, the function assumes that the material is tab separated.
1450 If every line contains a comma, comma-separated values (CSV) are assumed.
1451 If not, lines are split at whitespace into fields. You can use a prefix
1452 argument to force a specific separator: @kbd{C-u} forces CSV, @kbd{C-u
1453 C-u} forces TAB, and a numeric argument N indicates that at least N
1454 consecutive spaces, or alternatively a TAB will be the separator.
1455 @*
1456 If there is no active region, this command creates an empty Org
1457 table. But it's easier just to start typing, like
1458 @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
1459
1460 @tsubheading{Re-aligning and field motion}
1461 @kindex C-c C-c
1462 @item C-c C-c
1463 Re-align the table without moving the cursor.
1464 @c
1465 @kindex @key{TAB}
1466 @item @key{TAB}
1467 Re-align the table, move to the next field. Creates a new row if
1468 necessary.
1469 @c
1470 @kindex S-@key{TAB}
1471 @item S-@key{TAB}
1472 Re-align, move to previous field.
1473 @c
1474 @kindex @key{RET}
1475 @item @key{RET}
1476 Re-align the table and move down to next row. Creates a new row if
1477 necessary. At the beginning or end of a line, @key{RET} still does
1478 NEWLINE, so it can be used to split a table.
1479
1480 @tsubheading{Column and row editing}
1481 @kindex M-@key{left}
1482 @kindex M-@key{right}
1483 @item M-@key{left}
1484 @itemx M-@key{right}
1485 Move the current column left/right.
1486 @c
1487 @kindex M-S-@key{left}
1488 @item M-S-@key{left}
1489 Kill the current column.
1490 @c
1491 @kindex M-S-@key{right}
1492 @item M-S-@key{right}
1493 Insert a new column to the left of the cursor position.
1494 @c
1495 @kindex M-@key{up}
1496 @kindex M-@key{down}
1497 @item M-@key{up}
1498 @itemx M-@key{down}
1499 Move the current row up/down.
1500 @c
1501 @kindex M-S-@key{up}
1502 @item M-S-@key{up}
1503 Kill the current row or horizontal line.
1504 @c
1505 @kindex M-S-@key{down}
1506 @item M-S-@key{down}
1507 Insert a new row above the current row. With a prefix argument, the line is
1508 created below the current one.
1509 @c
1510 @kindex C-c -
1511 @item C-c -
1512 Insert a horizontal line below current row. With a prefix argument, the line
1513 is created above the current line.
1514 @c
1515 @kindex C-c ^
1516 @item C-c ^
1517 Sort the table lines in the region. The position of point indicates the
1518 column to be used for sorting, and the range of lines is the range
1519 between the nearest horizontal separator lines, or the entire table. If
1520 point is before the first column, you will be prompted for the sorting
1521 column. If there is an active region, the mark specifies the first line
1522 and the sorting column, while point should be in the last line to be
1523 included into the sorting. The command prompts for the sorting type
1524 (alphabetically, numerically, or by time). When called with a prefix
1525 argument, alphabetic sorting will be case-sensitive.
1526
1527 @tsubheading{Regions}
1528 @kindex C-c C-x M-w
1529 @item C-c C-x M-w
1530 Copy a rectangular region from a table to a special clipboard. Point
1531 and mark determine edge fields of the rectangle. The process ignores
1532 horizontal separator lines.
1533 @c
1534 @kindex C-c C-x C-w
1535 @item C-c C-x C-w
1536 Copy a rectangular region from a table to a special clipboard, and
1537 blank all fields in the rectangle. So this is the ``cut'' operation.
1538 @c
1539 @kindex C-c C-x C-y
1540 @item C-c C-x C-y
1541 Paste a rectangular region into a table.
1542 The upper left corner ends up in the current field. All involved fields
1543 will be overwritten. If the rectangle does not fit into the present table,
1544 the table is enlarged as needed. The process ignores horizontal separator
1545 lines.
1546 @c
1547 @kindex C-c C-q
1548 @kindex M-@key{RET}
1549 @item C-c C-q
1550 @itemx M-@kbd{RET}
1551 Wrap several fields in a column like a paragraph. If there is an active
1552 region, and both point and mark are in the same column, the text in the
1553 column is wrapped to minimum width for the given number of lines. A numeric
1554 prefix argument may be used to change the number of desired lines. If there
1555 is no region, the current field is split at the cursor position and the text
1556 fragment to the right of the cursor is prepended to the field one line
1557 down. If there is no region, but you specify a prefix argument, the current
1558 field is made blank, and the content is appended to the field above.
1559
1560 @tsubheading{Calculations}
1561 @cindex formula, in tables
1562 @cindex calculations, in tables
1563 @cindex region, active
1564 @cindex active region
1565 @cindex Transient mark mode
1566 @kindex C-c +
1567 @item C-c +
1568 Sum the numbers in the current column, or in the rectangle defined by
1569 the active region. The result is shown in the echo area and can
1570 be inserted with @kbd{C-y}.
1571 @c
1572 @kindex S-@key{RET}
1573 @item S-@key{RET}
1574 When current field is empty, copy from first non-empty field above. When not
1575 empty, copy current field down to next row and move cursor along with it.
1576 Depending on the variable @code{org-table-copy-increment}, integer field
1577 values will be incremented during copy. Integers that are too large will not
1578 be incremented. Also, a @code{0} prefix argument temporarily dispables the
1579 increment. This key is also used by CUA mode (@pxref{Cooperation}).
1580
1581 @tsubheading{Miscellaneous}
1582 @kindex C-c `
1583 @item C-c `
1584 Edit the current field in a separate window. This is useful for fields
1585 that are not fully visible (@pxref{Narrow columns}). When called with a
1586 @kbd{C-u} prefix, just make the full field visible, so that it can be
1587 edited in place.
1588 @c
1589 @item M-x org-table-import
1590 Import a file as a table. The table should be TAB- or whitespace
1591 separated. Useful, for example, to import a spreadsheet table or data
1592 from a database, because these programs generally can write
1593 TAB-separated text files. This command works by inserting the file into
1594 the buffer and then converting the region to a table. Any prefix
1595 argument is passed on to the converter, which uses it to determine the
1596 separator.
1597 @item C-c |
1598 Tables can also be imported by pasting tabular text into the Org
1599 buffer, selecting the pasted text with @kbd{C-x C-x} and then using the
1600 @kbd{C-c |} command (see above under @i{Creation and conversion}).
1601 @c
1602 @item M-x org-table-export
1603 Export the table, by default as a TAB-separated file. Useful for data
1604 exchange with, for example, spreadsheet or database programs. The format
1605 used to export the file can be configured in the variable
1606 @code{org-table-export-default-format}. You may also use properties
1607 @code{TABLE_EXPORT_FILE} and @code{TABLE_EXPORT_FORMAT} to specify the file
1608 name and the format for table export in a subtree. Org supports quite
1609 general formats for exported tables. The exporter format is the same as the
1610 format used by Orgtbl radio tables, see @ref{Translator functions} for a
1611 detailed description.
1612 @end table
1613
1614 If you don't like the automatic table editor because it gets in your
1615 way on lines which you would like to start with @samp{|}, you can turn
1616 it off with
1617
1618 @lisp
1619 (setq org-enable-table-editor nil)
1620 @end lisp
1621
1622 @noindent Then the only table command that still works is
1623 @kbd{C-c C-c} to do a manual re-align.
1624
1625 @node Narrow columns, Column groups, Built-in table editor, Tables
1626 @section Narrow columns
1627 @cindex narrow columns in tables
1628
1629 The width of columns is automatically determined by the table editor.
1630 Sometimes a single field or a few fields need to carry more text,
1631 leading to inconveniently wide columns. To limit@footnote{This feature
1632 does not work on XEmacs.} the width of a column, one field anywhere in
1633 the column may contain just the string @samp{<N>} where @samp{N} is an
1634 integer specifying the width of the column in characters. The next
1635 re-align will then set the width of this column to no more than this
1636 value.
1637
1638 @example
1639 @group
1640 |---+------------------------------| |---+--------|
1641 | | | | | <6> |
1642 | 1 | one | | 1 | one |
1643 | 2 | two | ----\ | 2 | two |
1644 | 3 | This is a long chunk of text | ----/ | 3 | This=> |
1645 | 4 | four | | 4 | four |
1646 |---+------------------------------| |---+--------|
1647 @end group
1648 @end example
1649
1650 @noindent
1651 Fields that are wider become clipped and end in the string @samp{=>}.
1652 Note that the full text is still in the buffer, it is only invisible.
1653 To see the full text, hold the mouse over the field - a tool-tip window
1654 will show the full content. To edit such a field, use the command
1655 @kbd{C-c `} (that is @kbd{C-c} followed by the backquote). This will
1656 open a new window with the full field. Edit it and finish with @kbd{C-c
1657 C-c}.
1658
1659 When visiting a file containing a table with narrowed columns, the
1660 necessary character hiding has not yet happened, and the table needs to
1661 be aligned before it looks nice. Setting the option
1662 @code{org-startup-align-all-tables} will realign all tables in a file
1663 upon visiting, but also slow down startup. You can also set this option
1664 on a per-file basis with:
1665
1666 @example
1667 #+STARTUP: align
1668 #+STARTUP: noalign
1669 @end example
1670
1671 @node Column groups, Orgtbl mode, Narrow columns, Tables
1672 @section Column groups
1673 @cindex grouping columns in tables
1674
1675 When Org exports tables, it does so by default without vertical
1676 lines because that is visually more satisfying in general. Occasionally
1677 however, vertical lines can be useful to structure a table into groups
1678 of columns, much like horizontal lines can do for groups of rows. In
1679 order to specify column groups, you can use a special row where the
1680 first field contains only @samp{/}. The further fields can either
1681 contain @samp{<} to indicate that this column should start a group,
1682 @samp{>} to indicate the end of a column, or @samp{<>} to make a column
1683 a group of its own. Boundaries between column groups will upon export be
1684 marked with vertical lines. Here is an example:
1685
1686 @example
1687 | | N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
1688 |---+----+-----+-----+-----+---------+------------|
1689 | / | <> | < | | > | < | > |
1690 | # | 1 | 1 | 1 | 1 | 1 | 1 |
1691 | # | 2 | 4 | 8 | 16 | 1.4142 | 1.1892 |
1692 | # | 3 | 9 | 27 | 81 | 1.7321 | 1.3161 |
1693 |---+----+-----+-----+-----+---------+------------|
1694 #+TBLFM: $3=$2^2::$4=$2^3::$5=$2^4::$6=sqrt($2)::$7=sqrt(sqrt(($2)))
1695 @end example
1696
1697 It is also sufficient to just insert the column group starters after
1698 every vertical line you'd like to have:
1699
1700 @example
1701 | N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
1702 |----+-----+-----+-----+---------+------------|
1703 | / | < | | | < | |
1704 @end example
1705
1706 @node Orgtbl mode, The spreadsheet, Column groups, Tables
1707 @section The Orgtbl minor mode
1708 @cindex Orgtbl mode
1709 @cindex minor mode for tables
1710
1711 If you like the intuitive way the Org table editor works, you
1712 might also want to use it in other modes like Text mode or Mail mode.
1713 The minor mode Orgtbl mode makes this possible. You can always toggle
1714 the mode with @kbd{M-x orgtbl-mode}. To turn it on by default, for
1715 example in mail mode, use
1716
1717 @lisp
1718 (add-hook 'mail-mode-hook 'turn-on-orgtbl)
1719 @end lisp
1720
1721 Furthermore, with some special setup, it is possible to maintain tables
1722 in arbitrary syntax with Orgtbl mode. For example, it is possible to
1723 construct La@TeX{} tables with the underlying ease and power of
1724 Orgtbl mode, including spreadsheet capabilities. For details, see
1725 @ref{Tables in arbitrary syntax}.
1726
1727 @node The spreadsheet, Org Plot, Orgtbl mode, Tables
1728 @section The spreadsheet
1729 @cindex calculations, in tables
1730 @cindex spreadsheet capabilities
1731 @cindex @file{calc} package
1732
1733 The table editor makes use of the Emacs @file{calc} package to implement
1734 spreadsheet-like capabilities. It can also evaluate Emacs Lisp forms to
1735 derive fields from other fields. While fully featured, Org's
1736 implementation is not identical to other spreadsheets. For example,
1737 Org knows the concept of a @emph{column formula} that will be
1738 applied to all non-header fields in a column without having to copy the
1739 formula to each relevant field.
1740
1741 @menu
1742 * References:: How to refer to another field or range
1743 * Formula syntax for Calc:: Using Calc to compute stuff
1744 * Formula syntax for Lisp:: Writing formulas in Emacs Lisp
1745 * Field formulas:: Formulas valid for a single field
1746 * Column formulas:: Formulas valid for an entire column
1747 * Editing and debugging formulas:: Fixing formulas
1748 * Updating the table:: Recomputing all dependent fields
1749 * Advanced features:: Field names, parameters and automatic recalc
1750 @end menu
1751
1752 @node References, Formula syntax for Calc, The spreadsheet, The spreadsheet
1753 @subsection References
1754 @cindex references
1755
1756 To compute fields in the table from other fields, formulas must
1757 reference other fields or ranges. In Org, fields can be referenced
1758 by name, by absolute coordinates, and by relative coordinates. To find
1759 out what the coordinates of a field are, press @kbd{C-c ?} in that
1760 field, or press @kbd{C-c @}} to toggle the display of a grid.
1761
1762 @subsubheading Field references
1763 @cindex field references
1764 @cindex references, to fields
1765
1766 Formulas can reference the value of another field in two ways. Like in
1767 any other spreadsheet, you may reference fields with a letter/number
1768 combination like @code{B3}, meaning the 2nd field in the 3rd row.
1769 @c Such references are always fixed to that field, they don't change
1770 @c when you copy and paste a formula to a different field. So
1771 @c Org's @code{B3} behaves like @code{$B$3} in other spreadsheets.
1772
1773 @noindent
1774 Org also uses another, more general operator that looks like this:
1775 @example
1776 @@row$column
1777 @end example
1778
1779 @noindent
1780 Column references can be absolute like @samp{1}, @samp{2},...@samp{N},
1781 or relative to the current column like @samp{+1} or @samp{-2}.
1782
1783 The row specification only counts data lines and ignores horizontal
1784 separator lines (hlines). You can use absolute row numbers
1785 @samp{1}...@samp{N}, and row numbers relative to the current row like
1786 @samp{+3} or @samp{-1}. Or specify the row relative to one of the
1787 hlines: @samp{I} refers to the first hline@footnote{Note that only
1788 hlines are counted that @emph{separate} table lines. If the table
1789 starts with a hline above the header, it does not count.}, @samp{II} to
1790 the second etc. @samp{-I} refers to the first such line above the
1791 current line, @samp{+I} to the first such line below the current line.
1792 You can also write @samp{III+2} which is the second data line after the
1793 third hline in the table. Relative row numbers like @samp{-3} will not
1794 cross hlines if the current line is too close to the hline. Instead,
1795 the value directly at the hline is used.
1796
1797 @samp{0} refers to the current row and column. Also, if you omit
1798 either the column or the row part of the reference, the current
1799 row/column is implied.
1800
1801 Org's references with @emph{unsigned} numbers are fixed references
1802 in the sense that if you use the same reference in the formula for two
1803 different fields, the same field will be referenced each time.
1804 Org's references with @emph{signed} numbers are floating
1805 references because the same reference operator can reference different
1806 fields depending on the field being calculated by the formula.
1807
1808 Here are a few examples:
1809
1810 @example
1811 @@2$3 @r{2nd row, 3rd column}
1812 C2 @r{same as previous}
1813 $5 @r{column 5 in the current row}
1814 E& @r{same as previous}
1815 @@2 @r{current column, row 2}
1816 @@-1$-3 @r{the field one row up, three columns to the left}
1817 @@-I$2 @r{field just under hline above current row, column 2}
1818 @end example
1819
1820 @subsubheading Range references
1821 @cindex range references
1822 @cindex references, to ranges
1823
1824 You may reference a rectangular range of fields by specifying two field
1825 references connected by two dots @samp{..}. If both fields are in the
1826 current row, you may simply use @samp{$2..$7}, but if at least one field
1827 is in a different row, you need to use the general @code{@@row$column}
1828 format at least for the first field (i.e the reference must start with
1829 @samp{@@} in order to be interpreted correctly). Examples:
1830
1831 @example
1832 $1..$3 @r{First three fields in the current row.}
1833 $P..$Q @r{Range, using column names (see under Advanced)}
1834 @@2$1..@@4$3 @r{6 fields between these two fields.}
1835 A2..C4 @r{Same as above.}
1836 @@-1$-2..@@-1 @r{3 numbers from the column to the left, 2 up to current row}
1837 @end example
1838
1839 @noindent Range references return a vector of values that can be fed
1840 into Calc vector functions. Empty fields in ranges are normally
1841 suppressed, so that the vector contains only the non-empty fields (but
1842 see the @samp{E} mode switch below). If there are no non-empty fields,
1843 @samp{[0]} is returned to avoid syntax errors in formulas.
1844
1845 @subsubheading Named references
1846 @cindex named references
1847 @cindex references, named
1848 @cindex name, of column or field
1849 @cindex constants, in calculations
1850
1851 @samp{$name} is interpreted as the name of a column, parameter or
1852 constant. Constants are defined globally through the variable
1853 @code{org-table-formula-constants}, and locally (for the file) through a
1854 line like
1855
1856 @example
1857 #+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6
1858 @end example
1859
1860 @noindent
1861 Also properties (@pxref{Properties and Columns}) can be used as
1862 constants in table formulas: For a property @samp{:Xyz:} use the name
1863 @samp{$PROP_Xyz}, and the property will be searched in the current
1864 outline entry and in the hierarchy above it. If you have the
1865 @file{constants.el} package, it will also be used to resolve constants,
1866 including natural constants like @samp{$h} for Planck's constant, and
1867 units like @samp{$km} for kilometers@footnote{@file{Constant.el} can
1868 supply the values of constants in two different unit systems, @code{SI}
1869 and @code{cgs}. Which one is used depends on the value of the variable
1870 @code{constants-unit-system}. You can use the @code{#+STARTUP} options
1871 @code{constSI} and @code{constcgs} to set this value for the current
1872 buffer.}. Column names and parameters can be specified in special table
1873 lines. These are described below, see @ref{Advanced features}. All
1874 names must start with a letter, and further consist of letters and
1875 numbers.
1876
1877 @node Formula syntax for Calc, Formula syntax for Lisp, References, The spreadsheet
1878 @subsection Formula syntax for Calc
1879 @cindex formula syntax, Calc
1880 @cindex syntax, of formulas
1881
1882 A formula can be any algebraic expression understood by the Emacs
1883 @file{Calc} package. @b{Note that @file{calc} has the
1884 non-standard convention that @samp{/} has lower precedence than
1885 @samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.} Before
1886 evaluation by @code{calc-eval} (@pxref{Calling Calc from
1887 Your Programs,calc-eval,Calling Calc from Your Lisp Programs,Calc,GNU
1888 Emacs Calc Manual}),
1889 @c FIXME: The link to the Calc manual in HTML does not work.
1890 variable substitution takes place according to the rules described above.
1891 @cindex vectors, in table calculations
1892 The range vectors can be directly fed into the Calc vector functions
1893 like @samp{vmean} and @samp{vsum}.
1894
1895 @cindex format specifier
1896 @cindex mode, for @file{calc}
1897 A formula can contain an optional mode string after a semicolon. This
1898 string consists of flags to influence Calc and other modes during
1899 execution. By default, Org uses the standard Calc modes (precision
1900 12, angular units degrees, fraction and symbolic modes off). The display
1901 format, however, has been changed to @code{(float 5)} to keep tables
1902 compact. The default settings can be configured using the variable
1903 @code{org-calc-default-modes}.
1904
1905 @example
1906 p20 @r{switch the internal precision to 20 digits}
1907 n3 s3 e2 f4 @r{normal, scientific, engineering, or fixed display format}
1908 D R @r{angle modes: degrees, radians}
1909 F S @r{fraction and symbolic modes}
1910 N @r{interpret all fields as numbers, use 0 for non-numbers}
1911 T @r{force text interpretation}
1912 E @r{keep empty fields in ranges}
1913 @end example
1914
1915 @noindent
1916 In addition, you may provide a @code{printf} format specifier to
1917 reformat the final result. A few examples:
1918
1919 @example
1920 $1+$2 @r{Sum of first and second field}
1921 $1+$2;%.2f @r{Same, format result to two decimals}
1922 exp($2)+exp($1) @r{Math functions can be used}
1923 $0;%.1f @r{Reformat current cell to 1 decimal}
1924 ($3-32)*5/9 @r{Degrees F -> C conversion}
1925 $c/$1/$cm @r{Hz -> cm conversion, using @file{constants.el}}
1926 tan($1);Dp3s1 @r{Compute in degrees, precision 3, display SCI 1}
1927 sin($1);Dp3%.1e @r{Same, but use printf specifier for display}
1928 vmean($2..$7) @r{Compute column range mean, using vector function}
1929 vmean($2..$7);EN @r{Same, but treat empty fields as 0}
1930 taylor($3,x=7,2) @r{taylor series of $3, at x=7, second degree}
1931 @end example
1932
1933 Calc also contains a complete set of logical operations. For example
1934
1935 @example
1936 if($1<20,teen,string("")) @r{``teen'' if age $1 less than 20, else empty}
1937 @end example
1938
1939 @node Formula syntax for Lisp, Field formulas, Formula syntax for Calc, The spreadsheet
1940 @subsection Emacs Lisp forms as formulas
1941 @cindex Lisp forms, as table formulas
1942
1943 It is also possible to write a formula in Emacs Lisp; this can be useful
1944 for string manipulation and control structures, if the Calc's
1945 functionality is not enough. If a formula starts with a single quote
1946 followed by an opening parenthesis, then it is evaluated as a lisp form.
1947 The evaluation should return either a string or a number. Just as with
1948 @file{calc} formulas, you can specify modes and a printf format after a
1949 semicolon. With Emacs Lisp forms, you need to be conscious about the way
1950 field references are interpolated into the form. By default, a
1951 reference will be interpolated as a Lisp string (in double quotes)
1952 containing the field. If you provide the @samp{N} mode switch, all
1953 referenced elements will be numbers (non-number fields will be zero) and
1954 interpolated as Lisp numbers, without quotes. If you provide the
1955 @samp{L} flag, all fields will be interpolated literally, without quotes.
1956 I.e., if you want a reference to be interpreted as a string by the Lisp
1957 form, enclose the reference operator itself in double quotes, like
1958 @code{"$3"}. Ranges are inserted as space-separated fields, so you can
1959 embed them in list or vector syntax. A few examples, note how the
1960 @samp{N} mode is used when we do computations in lisp.
1961
1962 @example
1963 @r{Swap the first two characters of the content of column 1}
1964 '(concat (substring $1 1 2) (substring $1 0 1) (substring $1 2))
1965 @r{Add columns 1 and 2, equivalent to the Calc's @code{$1+$2}}
1966 '(+ $1 $2);N
1967 @r{Compute the sum of columns 1-4, like Calc's @code{vsum($1..$4)}}
1968 '(apply '+ '($1..$4));N
1969 @end example
1970
1971 @node Field formulas, Column formulas, Formula syntax for Lisp, The spreadsheet
1972 @subsection Field formulas
1973 @cindex field formula
1974 @cindex formula, for individual table field
1975
1976 To assign a formula to a particular field, type it directly into the
1977 field, preceded by @samp{:=}, for example @samp{:=$1+$2}. When you
1978 press @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in
1979 the field, the formula will be stored as the formula for this field,
1980 evaluated, and the current field replaced with the result.
1981
1982 Formulas are stored in a special line starting with @samp{#+TBLFM:}
1983 directly below the table. If you typed the equation in the 4th field of
1984 the 3rd data line in the table, the formula will look like
1985 @samp{@@3$4=$1+$2}. When inserting/deleting/swapping column and rows
1986 with the appropriate commands, @i{absolute references} (but not relative
1987 ones) in stored formulas are modified in order to still reference the
1988 same field. Of cause this is not true if you edit the table structure
1989 with normal editing commands - then you must fix the equations yourself.
1990
1991 Instead of typing an equation into the field, you may also use the
1992 following command
1993
1994 @table @kbd
1995 @kindex C-u C-c =
1996 @item C-u C-c =
1997 Install a new formula for the current field. The command prompts for a
1998 formula, with default taken from the @samp{#+TBLFM:} line, applies
1999 it to the current field and stores it.
2000 @end table
2001
2002 @node Column formulas, Editing and debugging formulas, Field formulas, The spreadsheet
2003 @subsection Column formulas
2004 @cindex column formula
2005 @cindex formula, for table column
2006
2007 Often in a table, the same formula should be used for all fields in a
2008 particular column. Instead of having to copy the formula to all fields
2009 in that column, Org allows to assign a single formula to an entire
2010 column. If the table contains horizontal separator hlines, everything
2011 before the first such line is considered part of the table @emph{header}
2012 and will not be modified by column formulas.
2013
2014 To assign a formula to a column, type it directly into any field in the
2015 column, preceded by an equal sign, like @samp{=$1+$2}. When you press
2016 @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the
2017 field, the formula will be stored as the formula for the current column,
2018 evaluated and the current field replaced with the result. If the field
2019 contains only @samp{=}, the previously stored formula for this column is
2020 used. For each column, Org will only remember the most recently
2021 used formula. In the @samp{TBLFM:} line, column formulas will look like
2022 @samp{$4=$1+$2}.
2023
2024 Instead of typing an equation into the field, you may also use the
2025 following command:
2026
2027 @table @kbd
2028 @kindex C-c =
2029 @item C-c =
2030 Install a new formula for the current column and replace current field with
2031 the result of the formula. The command prompts for a formula, with default
2032 taken from the @samp{#+TBLFM} line, applies it to the current field and
2033 stores it. With a numeric prefix argument(e.g. @kbd{C-5 C-c =}) the command
2034 will apply it to that many consecutive fields in the current column.
2035 @end table
2036
2037 @node Editing and debugging formulas, Updating the table, Column formulas, The spreadsheet
2038 @subsection Editing and debugging formulas
2039 @cindex formula editing
2040 @cindex editing, of table formulas
2041
2042 You can edit individual formulas in the minibuffer or directly in the
2043 field. Org can also prepare a special buffer with all active
2044 formulas of a table. When offering a formula for editing, Org
2045 converts references to the standard format (like @code{B3} or @code{D&})
2046 if possible. If you prefer to only work with the internal format (like
2047 @code{@@3$2} or @code{$4}), configure the variable
2048 @code{org-table-use-standard-references}.
2049
2050 @table @kbd
2051 @kindex C-c =
2052 @kindex C-u C-c =
2053 @item C-c =
2054 @itemx C-u C-c =
2055 Edit the formula associated with the current column/field in the
2056 minibuffer. See @ref{Column formulas} and @ref{Field formulas}.
2057 @kindex C-u C-u C-c =
2058 @item C-u C-u C-c =
2059 Re-insert the active formula (either a
2060 field formula, or a column formula) into the current field, so that you
2061 can edit it directly in the field. The advantage over editing in the
2062 minibuffer is that you can use the command @kbd{C-c ?}.
2063 @kindex C-c ?
2064 @item C-c ?
2065 While editing a formula in a table field, highlight the field(s)
2066 referenced by the reference at the cursor position in the formula.
2067 @kindex C-c @}
2068 @item C-c @}
2069 Toggle the display of row and column numbers for a table, using
2070 overlays. These are updated each time the table is aligned, you can
2071 force it with @kbd{C-c C-c}.
2072 @kindex C-c @{
2073 @item C-c @{
2074 Toggle the formula debugger on and off. See below.
2075 @kindex C-c '
2076 @item C-c '
2077 Edit all formulas for the current table in a special buffer, where the
2078 formulas will be displayed one per line. If the current field has an
2079 active formula, the cursor in the formula editor will mark it.
2080 While inside the special buffer, Org will automatically highlight
2081 any field or range reference at the cursor position. You may edit,
2082 remove and add formulas, and use the following commands:
2083 @table @kbd
2084 @kindex C-c C-c
2085 @kindex C-x C-s
2086 @item C-c C-c
2087 @itemx C-x C-s
2088 Exit the formula editor and store the modified formulas. With @kbd{C-u}
2089 prefix, also apply the new formulas to the entire table.
2090 @kindex C-c C-q
2091 @item C-c C-q
2092 Exit the formula editor without installing changes.
2093 @kindex C-c C-r
2094 @item C-c C-r
2095 Toggle all references in the formula editor between standard (like
2096 @code{B3}) and internal (like @code{@@3$2}).
2097 @kindex @key{TAB}
2098 @item @key{TAB}
2099 Pretty-print or indent lisp formula at point. When in a line containing
2100 a lisp formula, format the formula according to Emacs Lisp rules.
2101 Another @key{TAB} collapses the formula back again. In the open
2102 formula, @key{TAB} re-indents just like in Emacs lisp mode.
2103 @kindex M-@key{TAB}
2104 @item M-@key{TAB}
2105 Complete Lisp symbols, just like in Emacs lisp mode.
2106 @kindex S-@key{up}
2107 @kindex S-@key{down}
2108 @kindex S-@key{left}
2109 @kindex S-@key{right}
2110 @item S-@key{up}/@key{down}/@key{left}/@key{right}
2111 Shift the reference at point. For example, if the reference is
2112 @code{B3} and you press @kbd{S-@key{right}}, it will become @code{C3}.
2113 This also works for relative references, and for hline references.
2114 @kindex M-S-@key{up}
2115 @kindex M-S-@key{down}
2116 @item M-S-@key{up}/@key{down}
2117 Move the test line for column formulas in the Org buffer up and
2118 down.
2119 @kindex M-@key{up}
2120 @kindex M-@key{down}
2121 @item M-@key{up}/@key{down}
2122 Scroll the window displaying the table.
2123 @kindex C-c @}
2124 @item C-c @}
2125 Turn the coordinate grid in the table on and off.
2126 @end table
2127 @end table
2128
2129 Making a table field blank does not remove the formula associated with
2130 the field, because that is stored in a different line (the @samp{TBLFM}
2131 line) - during the next recalculation the field will be filled again.
2132 To remove a formula from a field, you have to give an empty reply when
2133 prompted for the formula, or to edit the @samp{#+TBLFM} line.
2134
2135 @kindex C-c C-c
2136 You may edit the @samp{#+TBLFM} directly and re-apply the changed
2137 equations with @kbd{C-c C-c} in that line, or with the normal
2138 recalculation commands in the table.
2139
2140 @subsubheading Debugging formulas
2141 @cindex formula debugging
2142 @cindex debugging, of table formulas
2143 When the evaluation of a formula leads to an error, the field content
2144 becomes the string @samp{#ERROR}. If you would like see what is going
2145 on during variable substitution and calculation in order to find a bug,
2146 turn on formula debugging in the @code{Tbl} menu and repeat the
2147 calculation, for example by pressing @kbd{C-u C-u C-c = @key{RET}} in a
2148 field. Detailed information will be displayed.
2149
2150 @node Updating the table, Advanced features, Editing and debugging formulas, The spreadsheet
2151 @subsection Updating the table
2152 @cindex recomputing table fields
2153 @cindex updating, table
2154
2155 Recalculation of a table is normally not automatic, but needs to be
2156 triggered by a command. See @ref{Advanced features} for a way to make
2157 recalculation at least semi-automatically.
2158
2159 In order to recalculate a line of a table or the entire table, use the
2160 following commands:
2161
2162 @table @kbd
2163 @kindex C-c *
2164 @item C-c *
2165 Recalculate the current row by first applying the stored column formulas
2166 from left to right, and all field formulas in the current row.
2167 @c
2168 @kindex C-u C-c *
2169 @item C-u C-c *
2170 @kindex C-u C-c C-c
2171 @itemx C-u C-c C-c
2172 Recompute the entire table, line by line. Any lines before the first
2173 hline are left alone, assuming that these are part of the table header.
2174 @c
2175 @kindex C-u C-u C-c *
2176 @kindex C-u C-u C-c C-c
2177 @item C-u C-u C-c *
2178 @itemx C-u C-u C-c C-c
2179 Iterate the table by recomputing it until no further changes occur.
2180 This may be necessary if some computed fields use the value of other
2181 fields that are computed @i{later} in the calculation sequence.
2182 @end table
2183
2184 @node Advanced features, , Updating the table, The spreadsheet
2185 @subsection Advanced features
2186
2187 If you want the recalculation of fields to happen automatically, or if
2188 you want to be able to assign @i{names} to fields and columns, you need
2189 to reserve the first column of the table for special marking characters.
2190 @table @kbd
2191 @kindex C-#
2192 @item C-#
2193 Rotate the calculation mark in first column through the states @samp{},
2194 @samp{#}, @samp{*}, @samp{!}, @samp{$}. When there is an active region,
2195 change all marks in the region.
2196 @end table
2197
2198 Here is an example of a table that collects exam results of students and
2199 makes use of these features:
2200
2201 @example
2202 @group
2203 |---+---------+--------+--------+--------+-------+------|
2204 | | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
2205 |---+---------+--------+--------+--------+-------+------|
2206 | ! | | P1 | P2 | P3 | Tot | |
2207 | # | Maximum | 10 | 15 | 25 | 50 | 10.0 |
2208 | ^ | | m1 | m2 | m3 | mt | |
2209 |---+---------+--------+--------+--------+-------+------|
2210 | # | Peter | 10 | 8 | 23 | 41 | 8.2 |
2211 | # | Sam | 2 | 4 | 3 | 9 | 1.8 |
2212 |---+---------+--------+--------+--------+-------+------|
2213 | | Average | | | | 29.7 | |
2214 | ^ | | | | | at | |
2215 | $ | max=50 | | | | | |
2216 |---+---------+--------+--------+--------+-------+------|
2217 #+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@@-II..@@-I);%.1f
2218 @end group
2219 @end example
2220
2221 @noindent @b{Important}: Please note that for these special tables,
2222 recalculating the table with @kbd{C-u C-c *} will only affect rows that
2223 are marked @samp{#} or @samp{*}, and fields that have a formula assigned
2224 to the field itself. The column formulas are not applied in rows with
2225 empty first field.
2226
2227 @cindex marking characters, tables
2228 The marking characters have the following meaning:
2229 @table @samp
2230 @item !
2231 The fields in this line define names for the columns, so that you may
2232 refer to a column as @samp{$Tot} instead of @samp{$6}.
2233 @item ^
2234 This row defines names for the fields @emph{above} the row. With such
2235 a definition, any formula in the table may use @samp{$m1} to refer to
2236 the value @samp{10}. Also, if you assign a formula to a names field, it
2237 will be stored as @samp{$name=...}.
2238 @item _
2239 Similar to @samp{^}, but defines names for the fields in the row
2240 @emph{below}.
2241 @item $
2242 Fields in this row can define @emph{parameters} for formulas. For
2243 example, if a field in a @samp{$} row contains @samp{max=50}, then
2244 formulas in this table can refer to the value 50 using @samp{$max}.
2245 Parameters work exactly like constants, only that they can be defined on
2246 a per-table basis.
2247 @item #
2248 Fields in this row are automatically recalculated when pressing
2249 @key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row. Also, this row
2250 is selected for a global recalculation with @kbd{C-u C-c *}. Unmarked
2251 lines will be left alone by this command.
2252 @item *
2253 Selects this line for global recalculation with @kbd{C-u C-c *}, but
2254 not for automatic recalculation. Use this when automatic
2255 recalculation slows down editing too much.
2256 @item
2257 Unmarked lines are exempt from recalculation with @kbd{C-u C-c *}.
2258 All lines that should be recalculated should be marked with @samp{#}
2259 or @samp{*}.
2260 @item /
2261 Do not export this line. Useful for lines that contain the narrowing
2262 @samp{<N>} markers.
2263 @end table
2264
2265 Finally, just to whet your appetite on what can be done with the
2266 fantastic @file{calc} package, here is a table that computes the Taylor
2267 series of degree @code{n} at location @code{x} for a couple of
2268 functions.
2269
2270 @example
2271 @group
2272 |---+-------------+---+-----+--------------------------------------|
2273 | | Func | n | x | Result |
2274 |---+-------------+---+-----+--------------------------------------|
2275 | # | exp(x) | 1 | x | 1 + x |
2276 | # | exp(x) | 2 | x | 1 + x + x^2 / 2 |
2277 | # | exp(x) | 3 | x | 1 + x + x^2 / 2 + x^3 / 6 |
2278 | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
2279 | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2 |
2280 | * | tan(x) | 3 | x | 0.0175 x + 1.77e-6 x^3 |
2281 |---+-------------+---+-----+--------------------------------------|
2282 #+TBLFM: $5=taylor($2,$4,$3);n3
2283 @end group
2284 @end example
2285
2286 @page
2287 @node Org Plot, , The spreadsheet, Tables
2288 @section Org Plot
2289 @cindex graph, in tables
2290 @cindex plot tables using gnuplot
2291
2292 Org Plot can produce 2D and 3D graphs of information stored in org tables
2293 using @file{Gnuplot} @uref{http://www.gnuplot.info/} and @file{gnuplot-mode}
2294 @uref{http://cars9.uchicago.edu/~ravel/software/gnuplot-mode.html}. To see
2295 this in action ensure that you have both Gnuplot and Gnuplot-mode installed
2296 on your system, then call @code{org-plot/gnuplot} on the following table.
2297
2298 @example
2299 @group
2300 #+PLOT: title:"Citas" ind:1 deps:(3) type:2d with:histograms set:"yrange [0:]"
2301 | Sede | Max cites | H-index |
2302 |-----------+-----------+---------|
2303 | Chile | 257.72 | 21.39 |
2304 | Leeds | 165.77 | 19.68 |
2305 | Sao Paolo | 71.00 | 11.50 |
2306 | Stockholm | 134.19 | 14.33 |
2307 | Morelia | 257.56 | 17.67 |
2308 @end group
2309 @end example
2310
2311 Notice that Org Plot is smart enough to apply the tables headers as labels.
2312 Further control over the labels, type, content, and appearance of plots can
2313 be exercised through the @code{#+Plot:} lines preceding a table. See below
2314 for a complete list of Org plot options. For more information and examples
2315 see the org-plot tutorial at
2316 @uref{http://legito.org/worg/org-tutorials/org-plot.php}.
2317
2318 @subsubheading Plot Options
2319
2320 @table @code
2321 @item set
2322 Specify any @file{gnuplot} option to be set when graphing.
2323
2324 @item title
2325 Specify the title of the plot.
2326
2327 @item ind
2328 Specify which column of the table to use as the @code{x} axis.
2329
2330 @item deps
2331 Specify the columns to graph as a lisp style list, surrounded by parenthesis
2332 and separated by spaces for example @code{dep:(3 4)} to graph the third and
2333 fourth columns (defaults to graphing all other columns aside from the ind
2334 column).
2335
2336 @item type
2337 Specify whether the plot will be @code{2d}, @code{3d}, or @code{grid}.
2338
2339 @item with
2340 Specify a @code{with} option to be inserted for every col being plotted
2341 (e.g. @code{lines}, @code{points}, @code{boxes}, @code{impulses}, etc...).
2342 Defaults to 'lines'.
2343
2344 @item file
2345 If you want to plot to a file specify the @code{"path/to/desired/output-file"}.
2346
2347 @item labels
2348 List of labels to be used for the deps (defaults to column headers if they
2349 exist).
2350
2351 @item line
2352 Specify an entire line to be inserted in the gnuplot script.
2353
2354 @item map
2355 When plotting @code{3d} or @code{grid} types, set this to @code{t} to graph a
2356 flat mapping rather than a @code{3d} slope.
2357
2358 @item timefmt
2359 Specify format of org-mode timestamps as they will be parsed by gnuplot.
2360 Defaults to '%Y-%m-%d-%H:%M:%S'.
2361
2362 @item script
2363 If you want total control you can specify a script file (place the file name
2364 between double quotes) which will be used to plot. Before plotting, every
2365 instance of @code{$datafile} in the specified script will be replaced with
2366 the path to the generated data file. Note even if you set this option you
2367 may still want to specify the plot type, as that can impact the content of
2368 the data file.
2369 @end table
2370
2371 @node Hyperlinks, TODO Items, Tables, Top
2372 @chapter Hyperlinks
2373 @cindex hyperlinks
2374
2375 Like HTML, Org provides links inside a file, external links to
2376 other files, Usenet articles, emails, and much more.
2377
2378 @menu
2379 * Link format:: How links in Org are formatted
2380 * Internal links:: Links to other places in the current file
2381 * External links:: URL-like links to the world
2382 * Handling links:: Creating, inserting and following
2383 * Using links outside Org:: Linking from my C source code?
2384 * Link abbreviations:: Shortcuts for writing complex links
2385 * Search options:: Linking to a specific location
2386 * Custom searches:: When the default search is not enough
2387 @end menu
2388
2389 @node Link format, Internal links, Hyperlinks, Hyperlinks
2390 @section Link format
2391 @cindex link format
2392 @cindex format, of links
2393
2394 Org will recognize plain URL-like links and activate them as
2395 clickable links. The general link format, however, looks like this:
2396
2397 @example
2398 [[link][description]] @r{or alternatively} [[link]]
2399 @end example
2400
2401 Once a link in the buffer is complete (all brackets present), Org
2402 will change the display so that @samp{description} is displayed instead
2403 of @samp{[[link][description]]} and @samp{link} is displayed instead of
2404 @samp{[[link]]}. Links will be highlighted in the face @code{org-link},
2405 which by default is an underlined face. You can directly edit the
2406 visible part of a link. Note that this can be either the @samp{link}
2407 part (if there is no description) or the @samp{description} part. To
2408 edit also the invisible @samp{link} part, use @kbd{C-c C-l} with the
2409 cursor on the link.
2410
2411 If you place the cursor at the beginning or just behind the end of the
2412 displayed text and press @key{BACKSPACE}, you will remove the
2413 (invisible) bracket at that location. This makes the link incomplete
2414 and the internals are again displayed as plain text. Inserting the
2415 missing bracket hides the link internals again. To show the
2416 internal structure of all links, use the menu entry
2417 @code{Org->Hyperlinks->Literal links}.
2418
2419 @node Internal links, External links, Link format, Hyperlinks
2420 @section Internal links
2421 @cindex internal links
2422 @cindex links, internal
2423 @cindex targets, for links
2424
2425 If the link does not look like a URL, it is considered to be internal in
2426 the current file. Links such as @samp{[[My Target]]} or @samp{[[My
2427 Target][Find my target]]} lead to a text search in the current file.
2428 The link can be followed with @kbd{C-c C-o} when the cursor is on the
2429 link, or with a mouse click (@pxref{Handling links}). The preferred
2430 match for such a link is a dedicated target: the same string in double
2431 angular brackets. Targets may be located anywhere; sometimes it is
2432 convenient to put them into a comment line. For example
2433
2434 @example
2435 # <<My Target>>
2436 @end example
2437
2438 @noindent In HTML export (@pxref{HTML export}), such targets will become
2439 named anchors for direct access through @samp{http} links@footnote{Note that
2440 text before the first headline is usually not exported, so the first such
2441 target should be after the first headline, or in the line directly before the
2442 first headline.}.
2443
2444 If no dedicated target exists, Org will search for the words in the
2445 link. In the above example the search would be for @samp{my target}.
2446 Links starting with a star like @samp{*My Target} restrict the search to
2447 headlines. When searching, Org mode will first try an exact match, but
2448 then move on to more and more lenient searches. For example, the link
2449 @samp{[[*My Targets]]} will find any of the following:
2450
2451 @example
2452 ** My targets
2453 ** TODO my targets are bright
2454 ** my 20 targets are
2455 @end example
2456
2457 To insert a link targeting a headline, in-buffer completion can be used.
2458 Just type a star followed by a few optional letters into the buffer and
2459 press @kbd{M-@key{TAB}}. All headlines in the current buffer will be
2460 offered as completions. @xref{Handling links}, for more commands
2461 creating links.
2462
2463 Following a link pushes a mark onto Org's own mark ring. You can
2464 return to the previous position with @kbd{C-c &}. Using this command
2465 several times in direct succession goes back to positions recorded
2466 earlier.
2467
2468 @menu
2469 * Radio targets:: Make targets trigger links in plain text
2470 @end menu
2471
2472 @node Radio targets, , Internal links, Internal links
2473 @subsection Radio targets
2474 @cindex radio targets
2475 @cindex targets, radio
2476 @cindex links, radio targets
2477
2478 Org can automatically turn any occurrences of certain target names
2479 in normal text into a link. So without explicitly creating a link, the
2480 text connects to the target radioing its position. Radio targets are
2481 enclosed by triple angular brackets. For example, a target @samp{<<<My
2482 Target>>>} causes each occurrence of @samp{my target} in normal text to
2483 become activated as a link. The Org file is scanned automatically
2484 for radio targets only when the file is first loaded into Emacs. To
2485 update the target list during editing, press @kbd{C-c C-c} with the
2486 cursor on or at a target.
2487
2488 @node External links, Handling links, Internal links, Hyperlinks
2489 @section External links
2490 @cindex links, external
2491 @cindex external links
2492 @cindex links, external
2493 @cindex Gnus links
2494 @cindex BBDB links
2495 @cindex IRC links
2496 @cindex URL links
2497 @cindex file links
2498 @cindex VM links
2499 @cindex RMAIL links
2500 @cindex WANDERLUST links
2501 @cindex MH-E links
2502 @cindex USENET links
2503 @cindex SHELL links
2504 @cindex Info links
2505 @cindex elisp links
2506
2507 Org supports links to files, websites, Usenet and email messages,
2508 BBDB database entries and links to both IRC conversations and their
2509 logs. External links are URL-like locators. They start with a short
2510 identifying string followed by a colon. There can be no space after
2511 the colon. The following list shows examples for each link type.
2512
2513 @example
2514 http://www.astro.uva.nl/~dominik @r{on the web}
2515 file:/home/dominik/images/jupiter.jpg @r{file, absolute path}
2516 /home/dominik/images/jupiter.jpg @r{same as above}
2517 file:papers/last.pdf @r{file, relative path}
2518 ./papers/last.pdf @r{same as above}
2519 news:comp.emacs @r{Usenet link}
2520 mailto:adent@@galaxy.net @r{Mail link}
2521 vm:folder @r{VM folder link}
2522 vm:folder#id @r{VM message link}
2523 vm://myself@@some.where.org/folder#id @r{VM on remote machine}
2524 wl:folder @r{WANDERLUST folder link}
2525 wl:folder#id @r{WANDERLUST message link}
2526 mhe:folder @r{MH-E folder link}
2527 mhe:folder#id @r{MH-E message link}
2528 rmail:folder @r{RMAIL folder link}
2529 rmail:folder#id @r{RMAIL message link}
2530 gnus:group @r{Gnus group link}
2531 gnus:group#id @r{Gnus article link}
2532 bbdb:R.*Stallman @r{BBDB link (with regexp)}
2533 irc:/irc.com/#emacs/bob @r{IRC link}
2534 shell:ls *.org @r{A shell command}
2535 elisp:org-agenda @r{Interactive elisp command}
2536 elisp:(find-file-other-frame "Elisp.org") @r{Elisp form to evaluate}
2537 @end example
2538
2539 A link should be enclosed in double brackets and may contain a
2540 descriptive text to be displayed instead of the URL (@pxref{Link
2541 format}), for example:
2542
2543 @example
2544 [[http://www.gnu.org/software/emacs/][GNU Emacs]]
2545 @end example
2546
2547 @noindent
2548 If the description is a file name or URL that points to an image, HTML
2549 export (@pxref{HTML export}) will inline the image as a clickable
2550 button. If there is no description at all and the link points to an
2551 image,
2552 that image will be inlined into the exported HTML file.
2553
2554 @cindex angular brackets, around links
2555 @cindex plain text external links
2556 Org also finds external links in the normal text and activates them
2557 as links. If spaces must be part of the link (for example in
2558 @samp{bbdb:Richard Stallman}), or if you need to remove ambiguities
2559 about the end of the link, enclose them in angular brackets.
2560
2561 @node Handling links, Using links outside Org, External links, Hyperlinks
2562 @section Handling links
2563 @cindex links, handling
2564
2565 Org provides methods to create a link in the correct syntax, to
2566 insert it into an Org file, and to follow the link.
2567
2568 @table @kbd
2569 @kindex C-c l
2570 @cindex storing links
2571 @item C-c l
2572 Store a link to the current location. This is a @emph{global} command
2573 which can be used in any buffer to create a link. The link will be
2574 stored for later insertion into an Org buffer (see below). For
2575 Org files, if there is a @samp{<<target>>} at the cursor, the
2576 link points to the target. Otherwise it points to the current
2577 headline. For VM, Rmail, Wanderlust, MH-E, Gnus and BBDB buffers, the
2578 link will indicate the current article/entry. For W3 and W3M buffers,
2579 the link goes to the current URL. For IRC links, if you set the
2580 variable @code{org-irc-link-to-logs} to non-nil then @kbd{C-c l} will
2581 store a @samp{file:/} style link to the relevant point in the logs for
2582 the current conversation. Otherwise an @samp{irc:/} style link to the
2583 user/channel/server under the point will be stored. For any other
2584 files, the link will point to the file, with a search string
2585 (@pxref{Search options}) pointing to the contents of the current line.
2586 If there is an active region, the selected words will form the basis
2587 of the search string. If the automatically created link is not
2588 working correctly or accurately enough, you can write custom functions
2589 to select the search string and to do the search for particular file
2590 types - see @ref{Custom searches}. The key binding @kbd{C-c l} is
2591 only a suggestion - see @ref{Installation}.
2592 @c
2593 @kindex C-c C-l
2594 @cindex link completion
2595 @cindex completion, of links
2596 @cindex inserting links
2597 @item C-c C-l
2598 Insert a link. This prompts for a link to be inserted into the buffer. You
2599 can just type a link, using text for an internal link, or one of the link
2600 type prefixes mentioned in the examples above. All links stored during the
2601 current session are part of the history for this prompt, so you can access
2602 them with @key{up} and @key{down} (or @kbd{M-p/n}). Completion, on the other
2603 hand, will help you to insert valid link prefixes like @samp{http:} or
2604 @samp{ftp:}, including the prefixes defined through link abbreviations
2605 (@pxref{Link abbreviations}). The link will be inserted into the
2606 buffer@footnote{After insertion of a stored link, the link will be removed
2607 from the list of stored links. To keep it in the list later use, use a
2608 triple @kbd{C-u} prefix argument to @kbd{C-c C-l}, or configure the option
2609 @code{org-keep-stored-link-after-insertion}.}, along with a descriptive text.
2610 If some text was selected when this command is called, the selected text
2611 becomes the default description.@* Note that you don't have to use this
2612 command to insert a link. Links in Org are plain text, and you can type
2613 or paste them straight into the buffer. By using this command, the links are
2614 automatically enclosed in double brackets, and you will be asked for the
2615 optional descriptive text.
2616 @c
2617 @c If the link is a @samp{file:} link and
2618 @c the linked file is located in the same directory as the current file or
2619 @c a subdirectory of it, the path of the file will be inserted relative to
2620 @c the current directory.
2621 @c
2622 @kindex C-u C-c C-l
2623 @cindex file name completion
2624 @cindex completion, of file names
2625 @item C-u C-c C-l
2626 When @kbd{C-c C-l} is called with a @kbd{C-u} prefix argument, a link to
2627 a file will be inserted and you may use file name completion to select
2628 the name of the file. The path to the file is inserted relative to the
2629 directory of the current org file, if the linked file is in the current
2630 directory or in a sub-directory of it, or if the path is written relative
2631 to the current directory using @samp{../}. Otherwise an absolute path
2632 is used, if possible with @samp{~/} for your home directory. You can
2633 force an absolute path with two @kbd{C-u} prefixes.
2634 @c
2635 @item C-c C-l @r{(with cursor on existing link)}
2636 When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
2637 link and description parts of the link.
2638 @c
2639 @cindex following links
2640 @kindex C-c C-o
2641 @item C-c C-o
2642 Open link at point. This will launch a web browser for URLs (using
2643 @command{browse-url-at-point}), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for
2644 the corresponding links, and execute the command in a shell link. When the
2645 cursor is on an internal link, this commands runs the corresponding search.
2646 When the cursor is on a TAG list in a headline, it creates the corresponding
2647 TAGS view. If the cursor is on a time stamp, it compiles the agenda for that
2648 date. Furthermore, it will visit text and remote files in @samp{file:} links
2649 with Emacs and select a suitable application for local non-text files.
2650 Classification of files is based on file extension only. See option
2651 @code{org-file-apps}. If you want to override the default application and
2652 visit the file with Emacs, use a @kbd{C-u} prefix. If you want to avoid
2653 opening in Emacs, use a @kbd{C-u C-u} prefix.
2654 @c
2655 @kindex mouse-2
2656 @kindex mouse-1
2657 @item mouse-2
2658 @itemx mouse-1
2659 On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o}
2660 would. Under Emacs 22, also @kbd{mouse-1} will follow a link.
2661 @c
2662 @kindex mouse-3
2663 @item mouse-3
2664 Like @kbd{mouse-2}, but force file links to be opened with Emacs, and
2665 internal links to be displayed in another window@footnote{See the
2666 variable @code{org-display-internal-link-with-indirect-buffer}}.
2667 @c
2668 @cindex mark ring
2669 @kindex C-c %
2670 @item C-c %
2671 Push the current position onto the mark ring, to be able to return
2672 easily. Commands following an internal link do this automatically.
2673 @c
2674 @cindex links, returning to
2675 @kindex C-c &
2676 @item C-c &
2677 Jump back to a recorded position. A position is recorded by the
2678 commands following internal links, and by @kbd{C-c %}. Using this
2679 command several times in direct succession moves through a ring of
2680 previously recorded positions.
2681 @c
2682 @kindex C-c C-x C-n
2683 @kindex C-c C-x C-p
2684 @cindex links, finding next/previous
2685 @item C-c C-x C-n
2686 @itemx C-c C-x C-p
2687 Move forward/backward to the next link in the buffer. At the limit of
2688 the buffer, the search fails once, and then wraps around. The key
2689 bindings for this are really too long, you might want to bind this also
2690 to @kbd{C-n} and @kbd{C-p}
2691 @lisp
2692 (add-hook 'org-load-hook
2693 (lambda ()
2694 (define-key 'org-mode-map "\C-n" 'org-next-link)
2695 (define-key 'org-mode-map "\C-p" 'org-previous-link)))
2696 @end lisp
2697 @end table
2698
2699 @node Using links outside Org, Link abbreviations, Handling links, Hyperlinks
2700 @section Using links outside Org
2701
2702 You can insert and follow links that have Org syntax not only in
2703 Org, but in any Emacs buffer. For this, you should create two
2704 global commands, like this (please select suitable global keys
2705 yourself):
2706
2707 @lisp
2708 (global-set-key "\C-c L" 'org-insert-link-global)
2709 (global-set-key "\C-c o" 'org-open-at-point-global)
2710 @end lisp
2711
2712 @node Link abbreviations, Search options, Using links outside Org, Hyperlinks
2713 @section Link abbreviations
2714 @cindex link abbreviations
2715 @cindex abbreviation, links
2716
2717 Long URLs can be cumbersome to type, and often many similar links are
2718 needed in a document. For this you can use link abbreviations. An
2719 abbreviated link looks like this
2720
2721 @example
2722 [[linkword:tag][description]]
2723 @end example
2724
2725 @noindent
2726 where the tag is optional. Such abbreviations are resolved according to
2727 the information in the variable @code{org-link-abbrev-alist} that
2728 relates the linkwords to replacement text. Here is an example:
2729
2730 @lisp
2731 @group
2732 (setq org-link-abbrev-alist
2733 '(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
2734 ("google" . "http://www.google.com/search?q=")
2735 ("ads" . "http://adsabs.harvard.edu/cgi-bin/
2736 nph-abs_connect?author=%s&db_key=AST")))
2737 @end group
2738 @end lisp
2739
2740 If the replacement text contains the string @samp{%s}, it will be
2741 replaced with the tag. Otherwise the tag will be appended to the string
2742 in order to create the link. You may also specify a function that will
2743 be called with the tag as the only argument to create the link.
2744
2745 With the above setting, you could link to a specific bug with
2746 @code{[[bugzilla:129]]}, search the web for @samp{OrgMode} with
2747 @code{[[google:OrgMode]]} and find out what the Org author is
2748 doing besides Emacs hacking with @code{[[ads:Dominik,C]]}.
2749
2750 If you need special abbreviations just for a single Org buffer, you
2751 can define them in the file with
2752
2753 @example
2754 #+LINK: bugzilla http://10.1.2.9/bugzilla/show_bug.cgi?id=
2755 #+LINK: google http://www.google.com/search?q=%s
2756 @end example
2757
2758 @noindent
2759 In-buffer completion @pxref{Completion} can be used after @samp{[} to
2760 complete link abbreviations.
2761
2762 @node Search options, Custom searches, Link abbreviations, Hyperlinks
2763 @section Search options in file links
2764 @cindex search option in file links
2765 @cindex file links, searching
2766
2767 File links can contain additional information to make Emacs jump to a
2768 particular location in the file when following a link. This can be a
2769 line number or a search option after a double@footnote{For backward
2770 compatibility, line numbers can also follow a single colon.} colon. For
2771 example, when the command @kbd{C-c l} creates a link (@pxref{Handling
2772 links}) to a file, it encodes the words in the current line as a search
2773 string that can be used to find this line back later when following the
2774 link with @kbd{C-c C-o}.
2775
2776 Here is the syntax of the different ways to attach a search to a file
2777 link, together with an explanation:
2778
2779 @example
2780 [[file:~/code/main.c::255]]
2781 [[file:~/xx.org::My Target]]
2782 [[file:~/xx.org::*My Target]]
2783 [[file:~/xx.org::/regexp/]]
2784 @end example
2785
2786 @table @code
2787 @item 255
2788 Jump to line 255.
2789 @item My Target
2790 Search for a link target @samp{<<My Target>>}, or do a text search for
2791 @samp{my target}, similar to the search in internal links, see
2792 @ref{Internal links}. In HTML export (@pxref{HTML export}), such a file
2793 link will become an HTML reference to the corresponding named anchor in
2794 the linked file.
2795 @item *My Target
2796 In an Org file, restrict search to headlines.
2797 @item /regexp/
2798 Do a regular expression search for @code{regexp}. This uses the Emacs
2799 command @code{occur} to list all matches in a separate window. If the
2800 target file is in Org mode, @code{org-occur} is used to create a
2801 sparse tree with the matches.
2802 @c If the target file is a directory,
2803 @c @code{grep} will be used to search all files in the directory.
2804 @end table
2805
2806 As a degenerate case, a file link with an empty file name can be used
2807 to search the current file. For example, @code{[[file:::find me]]} does
2808 a search for @samp{find me} in the current file, just as
2809 @samp{[[find me]]} would.
2810
2811 @node Custom searches, , Search options, Hyperlinks
2812 @section Custom Searches
2813 @cindex custom search strings
2814 @cindex search strings, custom
2815
2816 The default mechanism for creating search strings and for doing the
2817 actual search related to a file link may not work correctly in all
2818 cases. For example, BibTeX database files have many entries like
2819 @samp{year="1993"} which would not result in good search strings,
2820 because the only unique identification for a BibTeX entry is the
2821 citation key.
2822
2823 If you come across such a problem, you can write custom functions to set
2824 the right search string for a particular file type, and to do the search
2825 for the string in the file. Using @code{add-hook}, these functions need
2826 to be added to the hook variables
2827 @code{org-create-file-search-functions} and
2828 @code{org-execute-file-search-functions}. See the docstring for these
2829 variables for more information. Org actually uses this mechanism
2830 for Bib@TeX{} database files, and you can use the corresponding code as
2831 an implementation example. See the file @file{org-bibtex.el}.
2832
2833 @node TODO Items, Tags, Hyperlinks, Top
2834 @chapter TODO Items
2835 @cindex TODO items
2836
2837 Org mode does not maintain TODO lists as separate documents@footnote{Of
2838 course, you can make a document that contains inly long lists of TODO items,
2839 but this is not required.}. Instead, TODO items are an integral part of the
2840 notes file, because TODO items usually come up while taking notes! With Org
2841 mode, simply mark any entry in a tree as being a TODO item. In this way,
2842 information is not duplicated, and the entire context from which the TODO
2843 item emerged is always present.
2844
2845 Of course, this technique for managing TODO items scatters them
2846 throughout your notes file. Org mode compensates for this by providing
2847 methods to give you an overview of all the things that you have to do.
2848
2849 @menu
2850 * TODO basics:: Marking and displaying TODO entries
2851 * TODO extensions:: Workflow and assignments
2852 * Progress logging:: Dates and notes for progress
2853 * Priorities:: Some things are more important than others
2854 * Breaking down tasks:: Splitting a task into manageable pieces
2855 * Checkboxes:: Tick-off lists
2856 @end menu
2857
2858 @node TODO basics, TODO extensions, TODO Items, TODO Items
2859 @section Basic TODO functionality
2860
2861 Any headline becomes a TODO item when it starts with the word
2862 @samp{TODO}, for example:
2863
2864 @example
2865 *** TODO Write letter to Sam Fortune
2866 @end example
2867
2868 @noindent
2869 The most important commands to work with TODO entries are:
2870
2871 @table @kbd
2872 @kindex C-c C-t
2873 @cindex cycling, of TODO states
2874 @item C-c C-t
2875 Rotate the TODO state of the current item among
2876
2877 @example
2878 ,-> (unmarked) -> TODO -> DONE --.
2879 '--------------------------------'
2880 @end example
2881
2882 The same rotation can also be done ``remotely'' from the timeline and
2883 agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
2884
2885 @kindex C-u C-c C-t
2886 @item C-u C-c C-t
2887 Select a specific keyword using completion or (if it has been set up)
2888 the fast selection interface. For the latter, you need to assign keys
2889 to TODO states, see @ref{Per-file keywords} and @ref{Setting tags} for
2890 more information.
2891
2892 @kindex S-@key{right}
2893 @kindex S-@key{left}
2894 @item S-@key{right}
2895 @itemx S-@key{left}
2896 Select the following/preceding TODO state, similar to cycling. Useful
2897 mostly if more than two TODO states are possible (@pxref{TODO
2898 extensions}).
2899 @kindex C-c C-v
2900 @kindex C-c / t
2901 @cindex sparse tree, for TODO
2902 @item C-c C-v
2903 @itemx C-c / t
2904 View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}). Folds
2905 the entire buffer, but shows all TODO items and the headings hierarchy
2906 above them. With a prefix argument, search for a specific TODO. You will be
2907 prompted for the keyword, and you can also give a list of keywords like
2908 @code{KWD1|KWD2|...}. With numeric prefix argument N, show the tree for the
2909 Nth keyword in the variable @code{org-todo-keywords}. With two prefix
2910 arguments, find all TODO and DONE entries.
2911 @kindex C-c a t
2912 @item C-c a t
2913 Show the global TODO list. Collects the TODO items from all agenda
2914 files (@pxref{Agenda Views}) into a single buffer. The new buffer will
2915 be in @code{agenda-mode}, which provides commands to examine and
2916 manipulate the TODO entries from the new buffer (@pxref{Agenda
2917 commands}). @xref{Global TODO list}, for more information.
2918 @kindex S-M-@key{RET}
2919 @item S-M-@key{RET}
2920 Insert a new TODO entry below the current one.
2921 @end table
2922
2923 @noindent
2924 Changing a TODO state can also trigger tag changes. See the docstring of the
2925 option @code{org-todo-state-tags-triggers} for details.
2926
2927 @node TODO extensions, Progress logging, TODO basics, TODO Items
2928 @section Extended use of TODO keywords
2929 @cindex extended TODO keywords
2930
2931 By default, marked TODO entries have one of only two states: TODO and
2932 DONE. Org mode allows you to classify TODO items in more complex ways
2933 with @emph{TODO keywords} (stored in @code{org-todo-keywords}). With
2934 special setup, the TODO keyword system can work differently in different
2935 files.
2936
2937 Note that @i{tags} are another way to classify headlines in general and
2938 TODO items in particular (@pxref{Tags}).
2939
2940 @menu
2941 * Workflow states:: From TODO to DONE in steps
2942 * TODO types:: I do this, Fred does the rest
2943 * Multiple sets in one file:: Mixing it all, and still finding your way
2944 * Fast access to TODO states:: Single letter selection of a state
2945 * Per-file keywords:: Different files, different requirements
2946 * Faces for TODO keywords:: Highlighting states
2947 @end menu
2948
2949 @node Workflow states, TODO types, TODO extensions, TODO extensions
2950 @subsection TODO keywords as workflow states
2951 @cindex TODO workflow
2952 @cindex workflow states as TODO keywords
2953
2954 You can use TODO keywords to indicate different @emph{sequential} states
2955 in the process of working on an item, for example@footnote{Changing
2956 this variable only becomes effective after restarting Org mode in a
2957 buffer.}:
2958
2959 @lisp
2960 (setq org-todo-keywords
2961 '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
2962 @end lisp
2963
2964 The vertical bar separates the TODO keywords (states that @emph{need
2965 action}) from the DONE states (which need @emph{no further action}). If
2966 you don't provide the separator bar, the last state is used as the DONE
2967 state.
2968 @cindex completion, of TODO keywords
2969 With this setup, the command @kbd{C-c C-t} will cycle an entry from TODO
2970 to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED. You may
2971 also use a numeric prefix argument to quickly select a specific state. For
2972 example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
2973 Or you can use @kbd{S-left} to go backward through the sequence. If you
2974 define many keywords, you can use in-buffer completion
2975 (@pxref{Completion}) or even a special one-key selection scheme
2976 (@pxref{Fast access to TODO states}) to insert these words into the
2977 buffer. Changing a TODO state can be logged with a timestamp, see
2978 @ref{Tracking TODO state changes} for more information.
2979
2980 @node TODO types, Multiple sets in one file, Workflow states, TODO extensions
2981 @subsection TODO keywords as types
2982 @cindex TODO types
2983 @cindex names as TODO keywords
2984 @cindex types as TODO keywords
2985
2986 The second possibility is to use TODO keywords to indicate different
2987 @emph{types} of action items. For example, you might want to indicate
2988 that items are for ``work'' or ``home''. Or, when you work with several
2989 people on a single project, you might want to assign action items
2990 directly to persons, by using their names as TODO keywords. This would
2991 be set up like this:
2992
2993 @lisp
2994 (setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
2995 @end lisp
2996
2997 In this case, different keywords do not indicate a sequence, but rather
2998 different types. So the normal work flow would be to assign a task to a
2999 person, and later to mark it DONE. Org mode supports this style by adapting
3000 the workings of the command @kbd{C-c C-t}@footnote{This is also true for the
3001 @kbd{t} command in the timeline and agenda buffers.}. When used several
3002 times in succession, it will still cycle through all names, in order to first
3003 select the right type for a task. But when you return to the item after some
3004 time and execute @kbd{C-c C-t} again, it will switch from any name directly
3005 to DONE. Use prefix arguments or completion to quickly select a specific
3006 name. You can also review the items of a specific TODO type in a sparse tree
3007 by using a numeric prefix to @kbd{C-c C-v}. For example, to see all things
3008 Lucy has to do, you would use @kbd{C-3 C-c C-v}. To collect Lucy's items
3009 from all agenda files into a single buffer, you would use the numeric prefix
3010 argument as well when creating the global TODO list: @kbd{C-3 C-c t}.
3011
3012 @node Multiple sets in one file, Fast access to TODO states, TODO types, TODO extensions
3013 @subsection Multiple keyword sets in one file
3014 @cindex TODO keyword sets
3015
3016 Sometimes you may want to use different sets of TODO keywords in
3017 parallel. For example, you may want to have the basic
3018 @code{TODO}/@code{DONE}, but also a workflow for bug fixing, and a
3019 separate state indicating that an item has been canceled (so it is not
3020 DONE, but also does not require action). Your setup would then look
3021 like this:
3022
3023 @lisp
3024 (setq org-todo-keywords
3025 '((sequence "TODO" "|" "DONE")
3026 (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
3027 (sequence "|" "CANCELED")))
3028 @end lisp
3029
3030 The keywords should all be different, this helps Org mode to keep track
3031 of which subsequence should be used for a given entry. In this setup,
3032 @kbd{C-c C-t} only operates within a subsequence, so it switches from
3033 @code{DONE} to (nothing) to @code{TODO}, and from @code{FIXED} to
3034 (nothing) to @code{REPORT}. Therefore you need a mechanism to initially
3035 select the correct sequence. Besides the obvious ways like typing a
3036 keyword or using completion, you may also apply the following commands:
3037
3038 @table @kbd
3039 @kindex C-S-@key{right}
3040 @kindex C-S-@key{left}
3041 @item C-S-@key{right}
3042 @itemx C-S-@key{left}
3043 These keys jump from one TODO subset to the next. In the above example,
3044 @kbd{C-S-@key{right}} would jump from @code{TODO} or @code{DONE} to
3045 @code{REPORT}, and any of the words in the second row to @code{CANCELED}.
3046 @kindex S-@key{right}
3047 @kindex S-@key{left}
3048 @item S-@key{right}
3049 @itemx S-@key{left}
3050 @kbd{S-@key{<left>}} and @kbd{S-@key{<right>}} and walk through
3051 @emph{all} keywords from all sets, so for example @kbd{S-@key{<right>}}
3052 would switch from @code{DONE} to @code{REPORT} in the example above.
3053 @end table
3054
3055 @node Fast access to TODO states, Per-file keywords, Multiple sets in one file, TODO extensions
3056 @subsection Fast access to TODO states
3057
3058 If you would like to quickly change an entry to an arbitrary TODO state
3059 instead of cycling through the states, you can set up keys for
3060 single-letter access to the states. This is done by adding the section
3061 key after each keyword, in parenthesis. For example:
3062
3063 @lisp
3064 (setq org-todo-keywords
3065 '((sequence "TODO(t)" "|" "DONE(d)")
3066 (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
3067 (sequence "|" "CANCELED(c)")))
3068 @end lisp
3069
3070 If you then press @code{C-u C-c C-t} followed by the selection key, the
3071 entry will be switched to this state. @key{SPC} can be used to remove
3072 any TODO keyword from an entry. Should you like this way of selecting
3073 TODO states a lot, you might want to set the variable
3074 @code{org-use-fast-todo-selection} to @code{t} and make this behavior
3075 the default. Check also the variable
3076 @code{org-fast-tag-selection-include-todo}, it allows to change the TODO
3077 state through the tags interface (@pxref{Setting tags}), in case you
3078 like to mingle the two concepts.
3079
3080 @node Per-file keywords, Faces for TODO keywords, Fast access to TODO states, TODO extensions
3081 @subsection Setting up keywords for individual files
3082 @cindex keyword options
3083 @cindex per-file keywords
3084
3085 It can be very useful to use different aspects of the TODO mechanism in
3086 different files. For file-local settings, you need to add special lines
3087 to the file which set the keywords and interpretation for that file
3088 only. For example, to set one of the two examples discussed above, you
3089 need one of the following lines, starting in column zero anywhere in the
3090 file:
3091
3092 @example
3093 #+SEQ_TODO: TODO FEEDBACK VERIFY | DONE CANCELED
3094 @end example
3095 or
3096 @example
3097 #+TYP_TODO: Fred Sara Lucy Mike | DONE
3098 @end example
3099
3100 A setup for using several sets in parallel would be:
3101
3102 @example
3103 #+SEQ_TODO: TODO | DONE
3104 #+SEQ_TODO: REPORT BUG KNOWNCAUSE | FIXED
3105 #+SEQ_TODO: | CANCELED
3106 @end example
3107
3108 @cindex completion, of option keywords
3109 @kindex M-@key{TAB}
3110 @noindent To make sure you are using the correct keyword, type
3111 @samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
3112
3113 @cindex DONE, final TODO keyword
3114 Remember that the keywords after the vertical bar (or the last keyword
3115 if no bar is there) must always mean that the item is DONE (although you
3116 may use a different word). After changing one of these lines, use
3117 @kbd{C-c C-c} with the cursor still in the line to make the changes
3118 known to Org mode@footnote{Org mode parses these lines only when
3119 Org mode is activated after visiting a file. @kbd{C-c C-c} with the
3120 cursor in a line starting with @samp{#+} is simply restarting Org mode
3121 for the current buffer.}.
3122
3123 @node Faces for TODO keywords, , Per-file keywords, TODO extensions
3124 @subsection Faces for TODO keywords
3125 @cindex faces, for TODO keywords
3126
3127 Org mode highlights TODO keywords with special faces: @code{org-todo}
3128 for keywords indicating that an item still has to be acted upon, and
3129 @code{org-done} for keywords indicating that an item is finished. If
3130 you are using more than 2 different states, you might want to use
3131 special faces for some of them. This can be done using the variable
3132 @code{org-todo-keyword-faces}. For example:
3133
3134 @lisp
3135 (setq org-todo-keyword-faces
3136 '(("TODO" . org-warning)
3137 ("DEFERRED" . shadow)
3138 ("CANCELED" . (:foreground "blue" :weight bold))))
3139 @end lisp
3140
3141 While using a list with face properties as shown for CANCELED
3142 @emph{should} work, this does not aways seem to be the case. If
3143 necessary, define a special face and use that.
3144
3145 @page
3146 @node Progress logging, Priorities, TODO extensions, TODO Items
3147 @section Progress logging
3148 @cindex progress logging
3149 @cindex logging, of progress
3150
3151 Org mode can automatically record a time stamp and possibly a note when
3152 you mark a TODO item as DONE, or even each time you change the state of
3153 a TODO item. This system is highly configurable, settings can be on a
3154 per-keyword basis and can be localized to a file or even a subtree. For
3155 information on how to clock working time for a task, see @ref{Clocking
3156 work time}.
3157
3158 @menu
3159 * Closing items:: When was this entry marked DONE?
3160 * Tracking TODO state changes:: When did the status change?
3161 @end menu
3162
3163 @node Closing items, Tracking TODO state changes, Progress logging, Progress logging
3164 @subsection Closing items
3165
3166 The most basic logging is to keep track of @emph{when} a certain TODO
3167 item was finished. This is achieved with@footnote{The corresponding
3168 in-buffer setting is: @code{#+STARTUP: logdone}}.
3169
3170 @lisp
3171 (setq org-log-done 'time)
3172 @end lisp
3173
3174 @noindent
3175 Then each time you turn an entry from a TODO (not-done) state into any
3176 of the DONE states, a line @samp{CLOSED: [timestamp]} will be inserted
3177 just after the headline. If you turn the entry back into a TODO item
3178 through further state cycling, that line will be removed again. If you
3179 want to record a note along with the timestamp, use@footnote{The
3180 corresponding in-buffer setting is: @code{#+STARTUP: lognotedone}}
3181
3182 @lisp
3183 (setq org-log-done 'note)
3184 @end lisp
3185
3186 @noindent
3187 You will then be prompted for a note, and that note will be stored below
3188 the entry with a @samp{Closing Note} heading.
3189
3190 In the timeline (@pxref{Timeline}) and in the agenda
3191 (@pxref{Weekly/daily agenda}), you can then use the @kbd{l} key to
3192 display the TODO items with a @samp{CLOSED} timestamp on each day,
3193 giving you an overview of what has been done.
3194
3195 @node Tracking TODO state changes, , Closing items, Progress logging
3196 @subsection Tracking TODO state changes
3197
3198 When TODO keywords are used as workflow states (@pxref{Workflow
3199 states}), you might want to keep track of when a state change occurred
3200 and maybe take a note about this change. Since it is normally too much
3201 to record a note for every state, Org mode expects configuration on a
3202 per-keyword basis for this. This is achieved by adding special markers
3203 @samp{!} (for a time stamp) and @samp{@@} (for a note) in parenthesis
3204 after each keyword. For example, with the setting
3205
3206 @lisp
3207 (setq org-todo-keywords
3208 '((sequence "TODO(t)" "WAIT(w@@/!)" "|" "DONE(d!)" "CANCELED(c@@)")))
3209 @end lisp
3210
3211 @noindent
3212 you not only define global TODO keywords and fast access keys, but also
3213 request that a time is recorded when the entry is turned into
3214 DONE@footnote{It is possible that Org mode will record two time stamps
3215 when you are using both @code{org-log-done} and state change logging.
3216 However, it will never prompt for two notes - if you have configured
3217 both, the state change recording note will take precedence and cancel
3218 the @samp{Closing Note}.}, and that a note is recorded when switching to
3219 WAIT or CANCELED. The setting for WAIT is even more special: The
3220 @samp{!} after the slash means that in addition to the note taken when
3221 entering the state, a time stamp should be recorded when @i{leaving} the
3222 WAIT state, if and only if the @i{target} state does not configure
3223 logging for entering it. So it has no effect when switching from WAIT
3224 to DONE, because DONE is configured to record a timestamp only. But
3225 when switching from WAIT back to TODO, the @samp{/!} in the WAIT
3226 setting now triggers a timestamp even though TODO has no logging
3227 configured.
3228
3229 You can use the exact same syntax for setting logging preferences local
3230 to a buffer:
3231 @example
3232 #+SEQ_TODO: TODO(t) WAIT(w@@/!) | DONE(d!) CANCELED(c@@)
3233 @end example
3234
3235 In order to define logging settings that are local to a subtree or a
3236 single item, define a LOGGING property in this entry. Any non-empty
3237 LOGGING property resets all logging settings to nil. You may then turn
3238 on logging for this specific tree using STARTUP keywords like
3239 @code{lognotedone} or @code{logrepeat}, as well as adding state specific
3240 settings like @code{TODO(!)}. For example
3241
3242 @example
3243 * TODO Log each state with only a time
3244 :PROPERTIES:
3245 :LOGGING: TODO(!) WAIT(!) DONE(!) CANCELED(!)
3246 :END:
3247 * TODO Only log when switching to WAIT, and when repeating
3248 :PROPERTIES:
3249 :LOGGING: WAIT(@@) logrepeat
3250 :END:
3251 * TODO No logging at all
3252 :PROPERTIES:
3253 :LOGGING: nil
3254 :END:
3255 @end example
3256
3257 @node Priorities, Breaking down tasks, Progress logging, TODO Items
3258 @section Priorities
3259 @cindex priorities
3260
3261 If you use Org mode extensively, you may end up enough TODO items that
3262 it starts to make sense to prioritize them. Prioritizing can be done by
3263 placing a @emph{priority cookie} into the headline of a TODO item, like
3264 this
3265
3266 @example
3267 *** TODO [#A] Write letter to Sam Fortune
3268 @end example
3269
3270 @noindent
3271 By default, Org mode supports three priorities: @samp{A}, @samp{B}, and
3272 @samp{C}. @samp{A} is the highest priority. An entry without a cookie
3273 is treated as priority @samp{B}. Priorities make a difference only in
3274 the agenda (@pxref{Weekly/daily agenda}); outside the agenda, they have
3275 no inherent meaning to Org mode.
3276
3277 Priorities can be attached to any outline tree entries; they do not need
3278 to be TODO items.
3279
3280 @table @kbd
3281 @kindex @kbd{C-c ,}
3282 @item @kbd{C-c ,}
3283 Set the priority of the current headline. The command prompts for a
3284 priority character @samp{A}, @samp{B} or @samp{C}. When you press
3285 @key{SPC} instead, the priority cookie is removed from the headline.
3286 The priorities can also be changed ``remotely'' from the timeline and
3287 agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
3288 @c
3289 @kindex S-@key{up}
3290 @kindex S-@key{down}
3291 @item S-@key{up}
3292 @itemx S-@key{down}
3293 Increase/decrease priority of current headline@footnote{See also the
3294 option @code{org-priority-start-cycle-with-default'}.}. Note that these
3295 keys are also used to modify time stamps (@pxref{Creating timestamps}).
3296 Furthermore, these keys are also used by CUA mode (@pxref{Conflicts}).
3297 @end table
3298
3299 You can change the range of allowed priorities by setting the variables
3300 @code{org-highest-priority}, @code{org-lowest-priority}, and
3301 @code{org-default-priority}. For an individual buffer, you may set
3302 these values (highest, lowest, default) like this (please make sure that
3303 the highest priority is earlier in the alphabet than the lowest
3304 priority):
3305
3306 @example
3307 #+PRIORITIES: A C B
3308 @end example
3309
3310 @node Breaking down tasks, Checkboxes, Priorities, TODO Items
3311 @section Breaking tasks down into subtasks
3312 @cindex tasks, breaking down
3313
3314 It is often advisable to break down large tasks into smaller, manageable
3315 subtasks. You can do this by creating an outline tree below a TODO item,
3316 with detailed subtasks on the tree@footnote{To keep subtasks out of the
3317 global TODO list, see the @code{org-agenda-todo-list-sublevels}.}. To keep
3318 the overview over the fraction of subtasks that are already completed, insert
3319 either @samp{[/]} or @samp{[%]} anywhere in the headline. These cookies will
3320 be updates each time the todo status of a child changes. For example:
3321
3322 @example
3323 * Organize Party [33%]
3324 ** TODO Call people [1/2]
3325 *** TODO Peter
3326 *** DONE Sarah
3327 ** TODO Buy food
3328 ** DONE Talk to neighbor
3329 @end example
3330
3331 If you would like a TODO entry to automatically change to DONE when all
3332 chilrden are done, you can use the following setup:
3333
3334 @example
3335 (defun org-summary-todo (n-done n-not-done)
3336 "Switch entry to DONE when all subentries are done, to TODO otherwise."
3337 (let (org-log-done org-log-states) ; turn off logging
3338 (org-todo (if (= n-not-done 0) "DONE" "TODO"))))
3339
3340 (add-hook 'org-after-todo-statistics-hook 'org-summary-todo)
3341 @end example
3342
3343
3344 Another possibility is the use of checkboxes to identify (a hierarchy of) a
3345 large number of subtasks (@pxref{Checkboxes}).
3346
3347
3348 @node Checkboxes, , Breaking down tasks, TODO Items
3349 @section Checkboxes
3350 @cindex checkboxes
3351
3352 Every item in a plain list (@pxref{Plain lists}) can be made into a
3353 checkbox by starting it with the string @samp{[ ]}. This feature is
3354 similar to TODO items (@pxref{TODO Items}), but is more lightweight.
3355 Checkboxes are not included into the global TODO list, so they are often
3356 great to split a task into a number of simple steps. Or you can use
3357 them in a shopping list. To toggle a checkbox, use @kbd{C-c C-c}, or
3358 use the mouse (thanks to Piotr Zielinski's @file{org-mouse.el}).
3359
3360 Here is an example of a checkbox list.
3361
3362 @example
3363 * TODO Organize party [2/4]
3364 - [-] call people [1/3]
3365 - [ ] Peter
3366 - [X] Sarah
3367 - [ ] Sam
3368 - [X] order food
3369 - [ ] think about what music to play
3370 - [X] talk to the neighbors
3371 @end example
3372
3373 Checkboxes work hierarchically, so if a checkbox item has children that
3374 are checkboxes, toggling one of the children checkboxes will make the
3375 parent checkbox reflect if none, some, or all of the children are
3376 checked.
3377
3378 @cindex statistics, for checkboxes
3379 @cindex checkbox statistics
3380 The @samp{[2/4]} and @samp{[1/3]} in the first and second line are
3381 cookies indicating how many checkboxes present in this entry have been
3382 checked off, and the total number of checkboxes are present. This can
3383 give you an idea on how many checkboxes remain, even without opening a
3384 folded entry. The cookies can be placed into a headline or into (the
3385 first line of) a plain list item. Each cookie covers all checkboxes
3386 structurally below the headline/item on which the cookie appear. You
3387 have to insert the cookie yourself by typing either @samp{[/]} or
3388 @samp{[%]}. With @samp{[/]} you get an @samp{n out of m} result, as in
3389 the examples above. With @samp{[%]} you get information about the
3390 percentage of checkboxes checked (in the above example, this would be
3391 @samp{[50%]} and @samp{[33%]}, respectively).
3392
3393 @noindent The following commands work with checkboxes:
3394
3395 @table @kbd
3396 @kindex C-c C-c
3397 @item C-c C-c
3398 Toggle checkbox at point. With a prefix argument, set it to @samp{[-]},
3399 which is considered to be an intermediate state.
3400 @kindex C-c C-x C-b
3401 @item C-c C-x C-b
3402 Toggle checkbox at point.
3403 @itemize @minus
3404 @item
3405 If there is an active region, toggle the first checkbox in the region
3406 and set all remaining boxes to the same status as the first. If you
3407 want to toggle all boxes in the region independently, use a prefix
3408 argument.
3409 @item
3410 If the cursor is in a headline, toggle checkboxes in the region between
3411 this headline and the next (so @emph{not} the entire subtree).
3412 @item
3413 If there is no active region, just toggle the checkbox at point.
3414 @end itemize
3415 @kindex M-S-@key{RET}
3416 @item M-S-@key{RET}
3417 Insert a new item with a checkbox.
3418 This works only if the cursor is already in a plain list item
3419 (@pxref{Plain lists}).
3420 @kindex C-c #
3421 @item C-c #
3422 Update the checkbox statistics in the current outline entry. When
3423 called with a @kbd{C-u} prefix, update the entire file. Checkbox
3424 statistic cookies are updated automatically if you toggle checkboxes
3425 with @kbd{C-c C-c} and make new ones with @kbd{M-S-@key{RET}}. If you
3426 delete boxes or add/change them by hand, use this command to get things
3427 back into synch. Or simply toggle any checkbox twice with @kbd{C-c C-c}.
3428 @end table
3429
3430 @node Tags, Properties and Columns, TODO Items, Top
3431 @chapter Tags
3432 @cindex tags
3433 @cindex headline tagging
3434 @cindex matching, tags
3435 @cindex sparse tree, tag based
3436
3437 An excellent way to implement labels and contexts for cross-correlating
3438 information is to assign @i{tags} to headlines. Org mode has extensive
3439 support for tags.
3440
3441 Every headline can contain a list of tags; they occur at the end of the
3442 headline. Tags are normal words containing letters, numbers, @samp{_},
3443 and @samp{@@}. Tags must be preceded and followed by a single colon,
3444 e.g., @samp{:work:}. Several tags can be specified, as in
3445 @samp{:work:urgent:}.
3446
3447 @menu
3448 * Tag inheritance:: Tags use the tree structure of the outline
3449 * Setting tags:: How to assign tags to a headline
3450 * Tag searches:: Searching for combinations of tags
3451 @end menu
3452
3453 @node Tag inheritance, Setting tags, Tags, Tags
3454 @section Tag inheritance
3455 @cindex tag inheritance
3456 @cindex inheritance, of tags
3457 @cindex sublevels, inclusion into tags match
3458
3459 @i{Tags} make use of the hierarchical structure of outline trees. If a
3460 heading has a certain tag, all subheadings will inherit the tag as
3461 well. For example, in the list
3462
3463 @example
3464 * Meeting with the French group :work:
3465 ** Summary by Frank :boss:notes:
3466 *** TODO Prepare slides for him :action:
3467 @end example
3468
3469 @noindent
3470 the final heading will have the tags @samp{:work:}, @samp{:boss:},
3471 @samp{:notes:}, and @samp{:action:} even though the final heading is not
3472 explicitly marked with those tags. You can also set tags that all entries in
3473 a file should inherit as if these tags would be defined in a hypothetical
3474 level zero that surounds the entire file.
3475
3476 @example
3477 #+FILETAGS: :Peter:Boss:Secret:
3478 @end example
3479
3480 @noindent
3481 To limit tag inheritance to specific tags, or to turn it off entirely, use
3482 the variable @code{org-use-tag-inheritance}.
3483
3484 When a headline matches during a tags search while tag inheritance is turned
3485 on, all the sublevels in the same tree will match as well@footnote{This is
3486 only true if the the search does not involve more complex tests including
3487 properties (@pxref{Property searches}).}. The list of matches may then
3488 become very long. If you only want to see the first tags match in a subtree,
3489 configure the variable @code{org-tags-match-list-sublevels}.
3490
3491 @node Setting tags, Tag searches, Tag inheritance, Tags
3492 @section Setting tags
3493 @cindex setting tags
3494 @cindex tags, setting
3495
3496 @kindex M-@key{TAB}
3497 Tags can simply be typed into the buffer at the end of a headline.
3498 After a colon, @kbd{M-@key{TAB}} offers completion on tags. There is
3499 also a special command for inserting tags:
3500
3501 @table @kbd
3502 @kindex C-c C-q
3503 @item C-c C-q
3504 @cindex completion, of tags
3505 Enter new tags for the current headline. Org mode will either offer
3506 completion or a special single-key interface for setting tags, see
3507 below. After pressing @key{RET}, the tags will be inserted and aligned
3508 to @code{org-tags-column}. When called with a @kbd{C-u} prefix, all
3509 tags in the current buffer will be aligned to that column, just to make
3510 things look nice. TAGS are automatically realigned after promotion,
3511 demotion, and TODO state changes (@pxref{TODO basics}).
3512 @kindex C-c C-c
3513 @item C-c C-c
3514 When the cursor is in a headline, this does the same as @kbd{C-c C-q}.
3515 @end table
3516
3517 Org will support tag insertion based on a @emph{list of tags}. By
3518 default this list is constructed dynamically, containing all tags
3519 currently used in the buffer. You may also globally specify a hard list
3520 of tags with the variable @code{org-tag-alist}. Finally you can set
3521 the default tags for a given file with lines like
3522
3523 @example
3524 #+TAGS: @@work @@home @@tennisclub
3525 #+TAGS: laptop car pc sailboat
3526 @end example
3527
3528 If you have globally defined your preferred set of tags using the
3529 variable @code{org-tag-alist}, but would like to use a dynamic tag list
3530 in a specific file, add an empty TAGS option line to that file:
3531
3532 @example
3533 #+TAGS:
3534 @end example
3535
3536 By default Org mode uses the standard minibuffer completion facilities for
3537 entering tags. However, it also implements another, quicker, tag selection
3538 method called @emph{fast tag selection}. This allows you to select and
3539 deselect tags with just a single key press. For this to work well you should
3540 assign unique letters to most of your commonly used tags. You can do this
3541 globally by configuring the variable @code{org-tag-alist} in your
3542 @file{.emacs} file. For example, you may find the need to tag many items in
3543 different files with @samp{:@@home:}. In this case you can set something
3544 like:
3545
3546 @lisp
3547 (setq org-tag-alist '(("@@work" . ?w) ("@@home" . ?h) ("laptop" . ?l)))
3548 @end lisp
3549
3550 @noindent If the tag is only relevant to the file you are working on then you
3551 can, instead, set the TAGS option line as:
3552
3553 @example
3554 #+TAGS: @@work(w) @@home(h) @@tennisclub(t) laptop(l) pc(p)
3555 @end example
3556
3557 @noindent
3558 You can also group together tags that are mutually exclusive. By using
3559 braces, as in:
3560
3561 @example
3562 #+TAGS: @{ @@work(w) @@home(h) @@tennisclub(t) @} laptop(l) pc(p)
3563 @end example
3564
3565 @noindent you indicate that at most one of @samp{@@work}, @samp{@@home},
3566 and @samp{@@tennisclub} should be selected. Multiple such groups are allowed.
3567
3568 @noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
3569 these lines to activate any changes.
3570
3571 @noindent
3572 To set these mutually exclusive groups in the variable @code{org-mode-alist}
3573 you must use the dummy tags @code{:startgroup} and @code{:endgroup} instead
3574 of the braces. The previous example would be set globally by the following
3575 configuration:
3576
3577 @lisp
3578 (setq org-tag-alist '((:startgroup . nil)
3579 ("@@work" . ?w) ("@@home" . ?h)
3580 ("@@tennisclub" . ?t)
3581 (:endgroup . nil)
3582 ("laptop" . ?l) ("pc" . ?p)))
3583 @end lisp
3584
3585 If at least one tag has a selection key then pressing @kbd{C-c C-c} will
3586 automatically present you with a special interface, listing inherited tags,
3587 the tags of the current headline, and a list of all valid tags with
3588 corresponding keys@footnote{Keys will automatically be assigned to tags which
3589 have no configured keys.}. In this interface, you can use the following
3590 keys:
3591
3592 @table @kbd
3593 @item a-z...
3594 Pressing keys assigned to tags will add or remove them from the list of
3595 tags in the current line. Selecting a tag in a group of mutually
3596 exclusive tags will turn off any other tags from that group.
3597 @kindex @key{TAB}
3598 @item @key{TAB}
3599 Enter a tag in the minibuffer, even if the tag is not in the predefined
3600 list. You will be able to complete on all tags present in the buffer.
3601 @kindex @key{SPC}
3602 @item @key{SPC}
3603 Clear all tags for this line.
3604 @kindex @key{RET}
3605 @item @key{RET}
3606 Accept the modified set.
3607 @item C-g
3608 Abort without installing changes.
3609 @item q
3610 If @kbd{q} is not assigned to a tag, it aborts like @kbd{C-g}.
3611 @item !
3612 Turn off groups of mutually exclusive tags. Use this to (as an
3613 exception) assign several tags from such a group.
3614 @item C-c
3615 Toggle auto-exit after the next change (see below).
3616 If you are using expert mode, the first @kbd{C-c} will display the
3617 selection window.
3618 @end table
3619
3620 @noindent
3621 This method lets you assign tags to a headline with very few keys. With
3622 the above setup, you could clear the current tags and set @samp{@@home},
3623 @samp{laptop} and @samp{pc} tags with just the following keys: @kbd{C-c
3624 C-c @key{SPC} h l p @key{RET}}. Switching from @samp{@@home} to
3625 @samp{@@work} would be done with @kbd{C-c C-c w @key{RET}} or
3626 alternatively with @kbd{C-c C-c C-c w}. Adding the non-predefined tag
3627 @samp{Sarah} could be done with @kbd{C-c C-c @key{TAB} S a r a h
3628 @key{RET} @key{RET}}.
3629
3630 If you find that most of the time, you need only a single key press to
3631 modify your list of tags, set the variable
3632 @code{org-fast-tag-selection-single-key}. Then you no longer have to
3633 press @key{RET} to exit fast tag selection - it will immediately exit
3634 after the first change. If you then occasionally need more keys, press
3635 @kbd{C-c} to turn off auto-exit for the current tag selection process
3636 (in effect: start selection with @kbd{C-c C-c C-c} instead of @kbd{C-c
3637 C-c}). If you set the variable to the value @code{expert}, the special
3638 window is not even shown for single-key tag selection, it comes up only
3639 when you press an extra @kbd{C-c}.
3640
3641 @node Tag searches, , Setting tags, Tags
3642 @section Tag searches
3643 @cindex tag searches
3644 @cindex searching for tags
3645
3646 Once a system of tags has been set up, it can be used to collect related
3647 information into special lists.
3648
3649 @table @kbd
3650 @kindex C-c \
3651 @kindex C-c / T
3652 @item C-c \
3653 @itemx C-c / T
3654 Create a sparse tree with all headlines matching a tags search. With a
3655 @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
3656 @kindex C-c a m
3657 @item C-c a m
3658 Create a global list of tag matches from all agenda files.
3659 @xref{Matching tags and properties}.
3660 @kindex C-c a M
3661 @item C-c a M
3662 Create a global list of tag matches from all agenda files, but check
3663 only TODO items and force checking subitems (see variable
3664 @code{org-tags-match-list-sublevels}).
3665 @end table
3666
3667 @cindex Boolean logic, for tag searches
3668 A @i{tags} search string can use Boolean operators @samp{&} for AND and
3669 @samp{|} for OR. @samp{&} binds more strongly than @samp{|}.
3670 Parenthesis are currently not implemented. A tag may also be preceded
3671 by @samp{-}, to select against it, and @samp{+} is syntactic sugar for
3672 positive selection. The AND operator @samp{&} is optional when @samp{+}
3673 or @samp{-} is present. Examples:
3674
3675 @table @samp
3676 @item +work-boss
3677 Select headlines tagged @samp{:work:}, but discard those also tagged
3678 @samp{:boss:}.
3679 @item work|laptop
3680 Selects lines tagged @samp{:work:} or @samp{:laptop:}.
3681 @item work|laptop&night
3682 Like before, but require the @samp{:laptop:} lines to be tagged also
3683 @samp{:night:}.
3684 @end table
3685
3686 @cindex TODO keyword matching, with tags search
3687 You may also test for TODO keywords (@pxref{TODO extensions}) and properties
3688 (@pxref{Properties and Columns}) at the same time as matching tags. For a
3689 guide on how to match properties, see @ref{Property searches}. To match a
3690 specific TODO keyword, include an expression like @samp{+TODO="NEXT"} as one
3691 of the terms in a tags search.
3692
3693 There is also the possibility to end the tags part of the match (which may
3694 include several terms connected with @samp{|}) with a @samp{/} and then
3695 specify a Boolean expression just for TODO keywords. The syntax is then
3696 similar to the tag matches, but should be applied with consideration: For
3697 example, a positive selection on several TODO keywords can not meaningfully
3698 be combined with boolean AND. However, @emph{negative selection} combined
3699 with AND can be meaningful. To make sure that only lines are checked that
3700 actually have any TODO keyword (resulting in a speed-up), use @kbd{C-c a M},
3701 or equivalently start the TODO part after the slash with @samp{!}. Examples:
3702
3703 @table @samp
3704 @item work+TODO="WAITING"
3705 Select @samp{:work:}-tagged TODO lines with the specific TODO
3706 keyword @samp{WAITING}.
3707 @item work+TODO="WAITING"|home+TODO="WAITING"
3708 Waiting tasks both at work and at home.
3709 @item work/WAITING
3710 Same as the first example.
3711 @item work/!-WAITING-NEXT
3712 Select @samp{:work:}-tagged TODO lines that are neither @samp{WAITING}
3713 nor @samp{NEXT}
3714 @item work/!+WAITING|+NEXT
3715 Select @samp{:work:}-tagged TODO lines that are either @samp{WAITING} or
3716 @samp{NEXT}.
3717 @end table
3718
3719 @cindex regular expressions, with tags search
3720 Any element of the tag/todo match can be a regular expression - in this
3721 case it must be enclosed in curly braces. For example,
3722 @samp{work+@{^boss.*@}} matches headlines that contain the tag
3723 @samp{:work:} and any tag @i{starting} with @samp{boss}. You may also use a
3724 regular expression in @samp{TODO=@{^W@}} which would match TODO keywords
3725 starting with the letter @samp{W}.
3726
3727 @cindex level, require for tags/property match
3728 @cindex category, require for tags/property match
3729 You can also require a headline to be of a certain level or category, by
3730 writing instead of any TAG an expression like @samp{LEVEL=3} or
3731 @samp{CATEGORY="work"}, respectively. For example, a search
3732 @samp{+LEVEL=3+boss/-DONE} lists all level three headlines that have the
3733 tag @samp{boss} and are @emph{not} marked with the TODO keyword DONE.
3734
3735 Accessing TODO, LEVEL, and CATEGORY during a search is fast. Accessing any
3736 other properties will slow down the search.
3737
3738 @node Properties and Columns, Dates and Times, Tags, Top
3739 @chapter Properties and Columns
3740 @cindex properties
3741
3742 Properties are a set of key-value pairs associated with an entry. There
3743 are two main applications for properties in Org mode. First, properties
3744 are like tags, but with a value. Second, you can use properties to
3745 implement (very basic) database capabilities in an Org buffer. For
3746 an example of the first application, imagine maintaining a file where
3747 you document bugs and plan releases of a piece of software. Instead of
3748 using tags like @code{:release_1:}, @code{:release_2:}, one can use a
3749 property, say @code{:Release:}, that in different subtrees has different
3750 values, such as @code{1.0} or @code{2.0}. For an example of the second
3751 application of properties, imagine keeping track of your music CD's,
3752 where properties could be things such as the album artist, date of
3753 release, number of tracks, and so on.
3754
3755 Properties can be conveniently edited and viewed in column view
3756 (@pxref{Column view}).
3757
3758 @menu
3759 * Property syntax:: How properties are spelled out
3760 * Special properties:: Access to other Org mode features
3761 * Property searches:: Matching property values
3762 * Property inheritance:: Passing values down the tree
3763 * Column view:: Tabular viewing and editing
3764 * Property API:: Properties for Lisp programmers
3765 @end menu
3766
3767 @node Property syntax, Special properties, Properties and Columns, Properties and Columns
3768 @section Property syntax
3769 @cindex property syntax
3770 @cindex drawer, for properties
3771
3772 Properties are key-value pairs. They need to be inserted into a special
3773 drawer (@pxref{Drawers}) with the name @code{PROPERTIES}. Each property
3774 is specified on a single line, with the key (surrounded by colons)
3775 first, and the value after it. Here is an example:
3776
3777 @example
3778 * CD collection
3779 ** Classic
3780 *** Goldberg Variations
3781 :PROPERTIES:
3782 :Title: Goldberg Variations
3783 :Composer: J.S. Bach
3784 :Artist: Glen Gould
3785 :Publisher: Deutsche Grammphon
3786 :NDisks: 1
3787 :END:
3788 @end example
3789
3790 You may define the allowed values for a particular property @samp{:Xyz:}
3791 by setting a property @samp{:Xyz_ALL:}. This special property is
3792 @emph{inherited}, so if you set it in a level 1 entry, it will apply to
3793 the entire tree. When allowed values are defined, setting the
3794 corresponding property becomes easier and is less prone to typing
3795 errors. For the example with the CD collection, we can predefine
3796 publishers and the number of disks in a box like this:
3797
3798 @example
3799 * CD collection
3800 :PROPERTIES:
3801 :NDisks_ALL: 1 2 3 4
3802 :Publisher_ALL: "Deutsche Grammophon" Philips EMI
3803 :END:
3804 @end example
3805
3806 If you want to set properties that can be inherited by any entry in a
3807 file, use a line like
3808
3809 @example
3810 #+PROPERTY: NDisks_ALL 1 2 3 4
3811 @end example
3812
3813 Property values set with the global variable
3814 @code{org-global-properties} can be inherited by all entries in all
3815 Org files.
3816
3817 @noindent
3818 The following commands help to work with properties:
3819
3820 @table @kbd
3821 @kindex M-@key{TAB}
3822 @item M-@key{TAB}
3823 After an initial colon in a line, complete property keys. All keys used
3824 in the current file will be offered as possible completions.
3825 @kindex C-c C-x p
3826 @item C-c C-x p
3827 Set a property. This prompts for a property name and a value. If
3828 necessary, the property drawer is created as well.
3829 @item M-x org-insert-property-drawer
3830 Insert a property drawer into the current entry. The drawer will be
3831 inserted early in the entry, but after the lines with planning
3832 information like deadlines.
3833 @kindex C-c C-c
3834 @item C-c C-c
3835 With the cursor in a property drawer, this executes property commands.
3836 @item C-c C-c s
3837 Set a property in the current entry. Both the property and the value
3838 can be inserted using completion.
3839 @kindex S-@key{right}
3840 @kindex S-@key{left}
3841 @item S-@key{left}/@key{right}
3842 Switch property at point to the next/previous allowed value.
3843 @item C-c C-c d
3844 Remove a property from the current entry.
3845 @item C-c C-c D
3846 Globally remove a property, from all entries in the current file.
3847 @item C-c C-c c
3848 Compute the property at point, using the operator and scope from the
3849 nearest column format definition.
3850 @end table
3851
3852 @node Special properties, Property searches, Property syntax, Properties and Columns
3853 @section Special properties
3854 @cindex properties, special
3855
3856 Special properties provide alternative access method to Org mode
3857 features discussed in the previous chapters, like the TODO state or the
3858 priority of an entry. This interface exists so that you can include
3859 these states into columns view (@pxref{Column view}), or to use them in
3860 queries. The following property names are special and should not be
3861 used as keys in the properties drawer:
3862
3863 @example
3864 TODO @r{The TODO keyword of the entry.}
3865 TAGS @r{The tags defined directly in the headline.}
3866 ALLTAGS @r{All tags, including inherited ones.}
3867 PRIORITY @r{The priority of the entry, a string with a single letter.}
3868 DEADLINE @r{The deadline time string, without the angular brackets.}
3869 SCHEDULED @r{The scheduling time stamp, without the angular brackets.}
3870 TIMESTAMP @r{The first keyword-less time stamp in the entry.}
3871 TIMESTAMP_IA @r{The first inactive time stamp in the entry.}
3872 CLOCKSUM @r{The sum of CLOCK intervals in the subtree. @code{org-clock-sum}}
3873 @r{must be run first to compute the values.}
3874 @end example
3875
3876 @node Property searches, Property inheritance, Special properties, Properties and Columns
3877 @section Property searches
3878 @cindex properties, searching
3879 @cindex searching, of properties
3880
3881 To create sparse trees and special lists with selection based on properties,
3882 the same commands are used as for tag searches (@pxref{Tag searches}), and
3883 the same logic applies. For example, here is a search string:
3884
3885 @example
3886 +work-boss+PRIORITY="A"+Coffee="unlimited"+Effort<2 \
3887 +With=@{Sarah\|Denny@}+SCHEDULED>="<2008-10-11>"
3888 @end example
3889
3890 @noindent
3891 The type of comparison will depend on how the comparison value is written:
3892 @itemize @minus
3893 @item
3894 If the comparison value is a plain number, a numerical comparison is done,
3895 and the allowed operators are @samp{<}, @samp{=}, @samp{>}, @samp{<=},
3896 @samp{>=}, and @samp{<>}.
3897 @item
3898 If the comparison value is enclosed in double
3899 quotes, a string comparison is done, and the same operators are allowed.
3900 @item
3901 If the comparison value is enclosed in double quotes @emph{and} angular
3902 brackets (like @samp{DEADLINE<="<2008-12-24 18:30>"}), both values are
3903 assumed to be date/time specifications in the standard Org way@footnote{The
3904 only special values that will be recognized are @samp{"<now>"} for now
3905 (including time), and @samp{"<today>"}, @samp{<tomorrow>}, and
3906 @samp{<yesterday>} for these days at 0:00 hours, i.e. without a time
3907 specification.}, and the comparison will be done accordingly.
3908 @item
3909 If the comparison value is enclosed
3910 in curly braces, a regexp match is performed, with @samp{=} meaning that the
3911 regexp matches the property value, and @samp{<>} meaning that it does not
3912 match.
3913 @end itemize
3914
3915 So the search string in the example finds entries tagged @samp{:work:} but
3916 not @samp{:boss:}, which also have a priority value @samp{A}, a
3917 @samp{:Coffee:} property with the value @samp{unlimited}, an @samp{Effort}
3918 property that is numerically smaller than 2, a @samp{:With:} property that is
3919 matched by the regular expression @samp{Sarah\|Denny}, and that are scheduled
3920 on or after October 11, 2008.
3921
3922 You can configure Org mode to use property inheritance during a search, but
3923 beware that this can slow down searches considerably. See @ref{Property
3924 inheritance} for details.
3925
3926 There is also a special command for creating sparse trees based on a
3927 single property:
3928
3929 @table @kbd
3930 @kindex C-c / p
3931 @item C-c / p
3932 Create a sparse tree based on the value of a property. This first
3933 prompts for the name of a property, and then for a value. A sparse tree
3934 is created with all entries that define this property with the given
3935 value. If you enclose the value into curly braces, it is interpreted as
3936 a regular expression and matched against the property values.
3937 @end table
3938
3939 @node Property inheritance, Column view, Property searches, Properties and Columns
3940 @section Property Inheritance
3941 @cindex properties, inheritance
3942 @cindex inheritance, of properties
3943
3944 The outline structure of Org mode documents lends itself for an
3945 inheritance model of properties: If the parent in a tree has a certain
3946 property, the children can inherit this property. Org mode does not
3947 turn this on by default, because it can slow down property searches
3948 significantly and is often not needed. However, if you find inheritance
3949 useful, you can turn it on by setting the variable
3950 @code{org-use-property-inheritance}. It may be set to @code{t}, to make
3951 all properties inherited from the parent, to a list of properties
3952 that should be inherited, or to a regular expression that matches
3953 inherited properties.
3954
3955 Org mode has a few properties for which inheritance is hard-coded, at
3956 least for the special applications for which they are used:
3957
3958 @table @code
3959 @item COLUMNS
3960 The @code{:COLUMNS:} property defines the format of column view
3961 (@pxref{Column view}). It is inherited in the sense that the level
3962 where a @code{:COLUMNS:} property is defined is used as the starting
3963 point for a column view table, independently of the location in the
3964 subtree from where columns view is turned on.
3965 @item CATEGORY
3966 For agenda view, a category set through a @code{:CATEGORY:} property
3967 applies to the entire subtree.
3968 @item ARCHIVE
3969 For archiving, the @code{:ARCHIVE:} property may define the archive
3970 location for the entire subtree (@pxref{Moving subtrees}).
3971 @item LOGGING
3972 The LOGGING property may define logging settings for an entry or a
3973 subtree (@pxref{Tracking TODO state changes}).
3974 @end table
3975
3976 @node Column view, Property API, Property inheritance, Properties and Columns
3977 @section Column view
3978
3979 A great way to view and edit properties in an outline tree is
3980 @emph{column view}. In column view, each outline item is turned into a
3981 table row. Columns in this table provide access to properties of the
3982 entries. Org mode implements columns by overlaying a tabular structure
3983 over the headline of each item. While the headlines have been turned
3984 into a table row, you can still change the visibility of the outline
3985 tree. For example, you get a compact table by switching to CONTENTS
3986 view (@kbd{S-@key{TAB} S-@key{TAB}}, or simply @kbd{c} while column view
3987 is active), but you can still open, read, and edit the entry below each
3988 headline. Or, you can switch to column view after executing a sparse
3989 tree command and in this way get a table only for the selected items.
3990 Column view also works in agenda buffers (@pxref{Agenda Views}) where
3991 queries have collected selected items, possibly from a number of files.
3992
3993 @menu
3994 * Defining columns:: The COLUMNS format property
3995 * Using column view:: How to create and use column view
3996 * Capturing column view:: A dynamic block for column view
3997 @end menu
3998
3999 @node Defining columns, Using column view, Column view, Column view
4000 @subsection Defining columns
4001 @cindex column view, for properties
4002 @cindex properties, column view
4003
4004 Setting up a column view first requires defining the columns. This is
4005 done by defining a column format line.
4006
4007 @menu
4008 * Scope of column definitions:: Where defined, where valid?
4009 * Column attributes:: Appearance and content of a column
4010 @end menu
4011
4012 @node Scope of column definitions, Column attributes, Defining columns, Defining columns
4013 @subsubsection Scope of column definitions
4014
4015 To define a column format for an entire file, use a line like
4016
4017 @example
4018 #+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
4019 @end example
4020
4021 To specify a format that only applies to a specific tree, add a
4022 @code{:COLUMNS:} property to the top node of that tree, for example:
4023
4024 @example
4025 ** Top node for columns view
4026 :PROPERTIES:
4027 :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
4028 :END:
4029 @end example
4030
4031 If a @code{:COLUMNS:} property is present in an entry, it defines columns
4032 for the entry itself, and for the entire subtree below it. Since the
4033 column definition is part of the hierarchical structure of the document,
4034 you can define columns on level 1 that are general enough for all
4035 sublevels, and more specific columns further down, when you edit a
4036 deeper part of the tree.
4037
4038 @node Column attributes, , Scope of column definitions, Defining columns
4039 @subsubsection Column attributes
4040 A column definition sets the attributes of a column. The general
4041 definition looks like this:
4042
4043 @example
4044 %[width]property[(title)][@{summary-type@}]
4045 @end example
4046
4047 @noindent
4048 Except for the percent sign and the property name, all items are
4049 optional. The individual parts have the following meaning:
4050
4051 @example
4052 width @r{An integer specifying the width of the column in characters.}
4053 @r{If omitted, the width will be determined automatically.}
4054 property @r{The property that should be edited in this column.}
4055 (title) @r{The header text for the column. If omitted, the}
4056 @r{property name is used.}
4057 @{summary-type@} @r{The summary type. If specified, the column values for}
4058 @r{parent nodes are computed from the children.}
4059 @r{Supported summary types are:}
4060 @{+@} @r{Sum numbers in this column.}
4061 @{+;%.1f@} @r{Like @samp{+}, but format result with @samp{%.1f}.}
4062 @{$@} @r{Currency, short for @samp{+;%.2f}.}
4063 @{:@} @r{Sum times, HH:MM:SS, plain numbers are hours.}
4064 @{X@} @r{Checkbox status, [X] if all children are [X].}
4065 @{X/@} @r{Checkbox status, [n/m].}
4066 @{X%@} @r{Checkbox status, [n%].}
4067 @end example
4068
4069 @noindent
4070 Here is an example for a complete columns definition, along with allowed
4071 values.
4072
4073 @example
4074 :COLUMNS: %20ITEM %9Approved(Approved?)@{X@} %Owner %11Status \@footnote{Please note that the COLUMNS definition must be on a single line - it is wrapped here only because of formatting constraints.}
4075 %10Time_Estimate@{:@} %CLOCKSUM
4076 :Owner_ALL: Tammy Mark Karl Lisa Don
4077 :Status_ALL: "In progress" "Not started yet" "Finished" ""
4078 :Approved_ALL: "[ ]" "[X]"
4079 @end example
4080
4081 The first column, @samp{%25ITEM}, means the first 25 characters of the
4082 item itself, i.e. of the headline. You probably always should start the
4083 column definition with the @samp{ITEM} specifier. The other specifiers
4084 create columns @samp{Owner} with a list of names as allowed values, for
4085 @samp{Status} with four different possible values, and for a checkbox
4086 field @samp{Approved}. When no width is given after the @samp{%}
4087 character, the column will be exactly as wide as it needs to be in order
4088 to fully display all values. The @samp{Approved} column does have a
4089 modified title (@samp{Approved?}, with a question mark). Summaries will
4090 be created for the @samp{Time_Estimate} column by adding time duration
4091 expressions like HH:MM, and for the @samp{Approved} column, by providing
4092 an @samp{[X]} status if all children have been checked. The
4093 @samp{CLOCKSUM} column is special, it lists the sum of CLOCK intervals
4094 in the subtree.
4095
4096 @node Using column view, Capturing column view, Defining columns, Column view
4097 @subsection Using column view
4098
4099 @table @kbd
4100 @tsubheading{Turning column view on and off}
4101 @kindex C-c C-x C-c
4102 @item C-c C-x C-c
4103 Create the column view for the local environment. This command searches
4104 the hierarchy, up from point, for a @code{:COLUMNS:} property that defines
4105 a format. When one is found, the column view table is established for
4106 the entire tree, starting from the entry that contains the @code{:COLUMNS:}
4107 property. If none is found, the format is taken from the @code{#+COLUMNS}
4108 line or from the variable @code{org-columns-default-format}, and column
4109 view is established for the current entry and its subtree.
4110 @kindex r
4111 @item r
4112 Recreate the column view, to include recent changes made in the buffer.
4113 @kindex g
4114 @item g
4115 Same as @kbd{r}.
4116 @kindex q
4117 @item q
4118 Exit column view.
4119 @tsubheading{Editing values}
4120 @item @key{left} @key{right} @key{up} @key{down}
4121 Move through the column view from field to field.
4122 @kindex S-@key{left}
4123 @kindex S-@key{right}
4124 @item S-@key{left}/@key{right}
4125 Switch to the next/previous allowed value of the field. For this, you
4126 have to have specified allowed values for a property.
4127 @item 1..9,0
4128 Directly select the nth allowed value, @kbd{0} selects the 10th value.
4129 @kindex n
4130 @kindex p
4131 @itemx n / p
4132 Same as @kbd{S-@key{left}/@key{right}}
4133 @kindex e
4134 @item e
4135 Edit the property at point. For the special properties, this will
4136 invoke the same interface that you normally use to change that
4137 property. For example, when editing a TAGS property, the tag completion
4138 or fast selection interface will pop up.
4139 @kindex C-c C-c
4140 @item C-c C-c
4141 When there is a checkbox at point, toggle it.
4142 @kindex v
4143 @item v
4144 View the full value of this property. This is useful if the width of
4145 the column is smaller than that of the value.
4146 @kindex a
4147 @item a
4148 Edit the list of allowed values for this property. If the list is found
4149 in the hierarchy, the modified values is stored there. If no list is
4150 found, the new value is stored in the first entry that is part of the
4151 current column view.
4152 @tsubheading{Modifying the table structure}
4153 @kindex <
4154 @kindex >
4155 @item < / >
4156 Make the column narrower/wider by one character.
4157 @kindex S-M-@key{right}
4158 @item S-M-@key{right}
4159 Insert a new column, to the left of the current column.
4160 @kindex S-M-@key{left}
4161 @item S-M-@key{left}
4162 Delete the current column.
4163 @end table
4164
4165 @node Capturing column view, , Using column view, Column view
4166 @subsection Capturing column view
4167
4168 Since column view is just an overlay over a buffer, it cannot be
4169 exported or printed directly. If you want to capture a column view, use
4170 this @code{columnview} dynamic block (@pxref{Dynamic blocks}). The frame
4171 of this block looks like this:
4172
4173 @cindex #+BEGIN: columnview
4174 @example
4175 * The column view
4176 #+BEGIN: columnview :hlines 1 :id "label"
4177
4178 #+END:
4179 @end example
4180
4181 @noindent This dynamic block has the following parameters:
4182
4183 @table @code
4184 @item :id
4185 This is most important parameter. Column view is a feature that is
4186 often localized to a certain (sub)tree, and the capture block might be
4187 in a different location in the file. To identify the tree whose view to
4188 capture, you can use 3 values:
4189 @example
4190 local @r{use the tree in which the capture block is located}
4191 global @r{make a global view, including all headings in the file}
4192 "label" @r{call column view in the tree that has an @code{:ID:}}
4193 @r{property with the value @i{label}. You can use}
4194 @r{@kbd{M-x org-id-copy} to create a globally unique ID for}
4195 @r{the current entry and copy it to the kill-ring.}
4196 @end example
4197 @item :hlines
4198 When @code{t}, insert a hline after every line. When a number N, insert
4199 a hline before each headline with level @code{<= N}.
4200 @item :vlines
4201 When set to @code{t}, enforce column groups to get vertical lines.
4202 @item :maxlevel
4203 When set to a number, don't capture entries below this level.
4204 @item :skip-empty-rows
4205 When set to @code{t}, skip row where the only non-empty specifier of the
4206 column view is @code{ITEM}.
4207
4208 @end table
4209
4210 @noindent
4211 The following commands insert or update the dynamic block:
4212
4213 @table @kbd
4214 @kindex C-c C-x i
4215 @item C-c C-x i
4216 Insert a dynamic block capturing a column view. You will be prompted
4217 for the scope or id of the view.
4218 @kindex C-c C-c
4219 @item C-c C-c
4220 @kindex C-c C-x C-u
4221 @itemx C-c C-x C-u
4222 Update dynamical block at point. The cursor needs to be in the
4223 @code{#+BEGIN} line of the dynamic block.
4224 @kindex C-u C-c C-x C-u
4225 @item C-u C-c C-x C-u
4226 Update all dynamic blocks (@pxref{Dynamic blocks}). This is useful if
4227 you have several clock table blocks in a buffer.
4228 @end table
4229
4230 You can add formulas to the column view table and you may add plotting
4231 instructions in front of the table - these will survive an update of the
4232 block. If there is a @code{#+TBLFM:} after the table, the table will
4233 actually be recalculated automatically after an update.
4234
4235 @node Property API, , Column view, Properties and Columns
4236 @section The Property API
4237 @cindex properties, API
4238 @cindex API, for properties
4239
4240 There is a full API for accessing and changing properties. This API can
4241 be used by Emacs Lisp programs to work with properties and to implement
4242 features based on them. For more information see @ref{Using the
4243 property API}.
4244
4245 @node Dates and Times, Capture, Properties and Columns, Top
4246 @chapter Dates and Times
4247 @cindex dates
4248 @cindex times
4249 @cindex time stamps
4250 @cindex date stamps
4251
4252 To assist project planning, TODO items can be labeled with a date and/or
4253 a time. The specially formatted string carrying the date and time
4254 information is called a @emph{timestamp} in Org mode. This may be a
4255 little confusing because timestamp is often used as indicating when
4256 something was created or last changed. However, in Org mode this term
4257 is used in a much wider sense.
4258
4259 @menu
4260 * Timestamps:: Assigning a time to a tree entry
4261 * Creating timestamps:: Commands which insert timestamps
4262 * Deadlines and scheduling:: Planning your work
4263 * Clocking work time:: Tracking how long you spend on a task
4264 * Effort estimates:: Planning work effort in advance
4265 @end menu
4266
4267
4268 @node Timestamps, Creating timestamps, Dates and Times, Dates and Times
4269 @section Timestamps, deadlines and scheduling
4270 @cindex time stamps
4271 @cindex ranges, time
4272 @cindex date stamps
4273 @cindex deadlines
4274 @cindex scheduling
4275
4276 A time stamp is a specification of a date (possibly with time or a range
4277 of times) in a special format, either @samp{<2003-09-16 Tue>} or
4278 @samp{<2003-09-16 Tue 09:39>} or @samp{<2003-09-16 Tue
4279 12:00-12:30>}@footnote{This is the standard ISO date/time format. To
4280 use an alternative format, see @ref{Custom time format}.}. A time stamp
4281 can appear anywhere in the headline or body of an Org tree entry. Its
4282 presence causes entries to be shown on specific dates in the agenda
4283 (@pxref{Weekly/daily agenda}). We distinguish:
4284
4285 @table @var
4286 @item Plain time stamp; Event; Appointment
4287 @cindex timestamp
4288 A simple time stamp just assigns a date/time to an item. This is just
4289 like writing down an appointment or event in a paper agenda. In the
4290 timeline and agenda displays, the headline of an entry associated with a
4291 plain time stamp will be shown exactly on that date.
4292
4293 @example
4294 * Meet Peter at the movies <2006-11-01 Wed 19:15>
4295 * Discussion on climate change <2006-11-02 Thu 20:00-22:00>
4296 @end example
4297
4298 @item Time stamp with repeater interval
4299 @cindex timestamp, with repeater interval
4300 A time stamp may contain a @emph{repeater interval}, indicating that it
4301 applies not only on the given date, but again and again after a certain
4302 interval of N days (d), weeks (w), months(m), or years(y). The
4303 following will show up in the agenda every Wednesday:
4304
4305 @example
4306 * Pick up Sam at school <2007-05-16 Wed 12:30 +1w>
4307 @end example
4308
4309 @item Diary-style sexp entries
4310 For more complex date specifications, Org mode supports using the
4311 special sexp diary entries implemented in the Emacs calendar/diary
4312 package. For example
4313
4314 @example
4315 * The nerd meeting on every 2nd Thursday of the month
4316 <%%(diary-float t 4 2)>
4317 @end example
4318
4319 @item Time/Date range
4320 @cindex timerange
4321 @cindex date range
4322 Two time stamps connected by @samp{--} denote a range. The headline
4323 will be shown on the first and last day of the range, and on any dates
4324 that are displayed and fall in the range. Here is an example:
4325
4326 @example
4327 ** Meeting in Amsterdam
4328 <2004-08-23 Mon>--<2004-08-26 Thu>
4329 @end example
4330
4331 @item Inactive time stamp
4332 @cindex timestamp, inactive
4333 @cindex inactive timestamp
4334 Just like a plain time stamp, but with square brackets instead of
4335 angular ones. These time stamps are inactive in the sense that they do
4336 @emph{not} trigger an entry to show up in the agenda.
4337
4338 @example
4339 * Gillian comes late for the fifth time [2006-11-01 Wed]
4340 @end example
4341
4342 @end table
4343
4344 @node Creating timestamps, Deadlines and scheduling, Timestamps, Dates and Times
4345 @section Creating timestamps
4346 @cindex creating timestamps
4347 @cindex timestamps, creating
4348
4349 For Org mode to recognize time stamps, they need to be in the specific
4350 format. All commands listed below produce time stamps in the correct
4351 format.
4352
4353 @table @kbd
4354 @kindex C-c .
4355 @item C-c .
4356 Prompt for a date and insert a corresponding time stamp. When the cursor is
4357 at an existing time stamp in the buffer, the command is used to modify this
4358 timestamp instead of inserting a new one. When this command is used twice in
4359 succession, a time range is inserted.
4360 @c
4361 @kindex C-u C-c .
4362 @item C-u C-c .
4363 Like @kbd{C-c .}, but use the alternative format which contains date
4364 and time. The default time can be rounded to multiples of 5 minutes,
4365 see the option @code{org-time-stamp-rounding-minutes}.
4366 @c
4367 @kindex C-c !
4368 @item C-c !
4369 Like @kbd{C-c .}, but insert an inactive time stamp that will not cause
4370 an agenda entry.
4371 @c
4372 @kindex C-c <
4373 @item C-c <
4374 Insert a time stamp corresponding to the cursor date in the Calendar.
4375 @c
4376 @kindex C-c >
4377 @item C-c >
4378 Access the Emacs calendar for the current date. If there is a
4379 timestamp in the current line, go to the corresponding date
4380 instead.
4381 @c
4382 @kindex C-c C-o
4383 @item C-c C-o
4384 Access the agenda for the date given by the time stamp or -range at
4385 point (@pxref{Weekly/daily agenda}).
4386 @c
4387 @kindex S-@key{left}
4388 @kindex S-@key{right}
4389 @item S-@key{left}
4390 @itemx S-@key{right}
4391 Change date at cursor by one day. These key bindings conflict with
4392 CUA mode (@pxref{Conflicts}).
4393 @c
4394 @kindex S-@key{up}
4395 @kindex S-@key{down}
4396 @item S-@key{up}
4397 @itemx S-@key{down}
4398 Change the item under the cursor in a timestamp. The cursor can be on a
4399 year, month, day, hour or minute. Note that if the cursor is in a
4400 headline and not at a time stamp, these same keys modify the priority of
4401 an item. (@pxref{Priorities}). The key bindings also conflict with
4402 CUA mode (@pxref{Conflicts}).
4403 @c
4404 @kindex C-c C-y
4405 @cindex evaluate time range
4406 @item C-c C-y
4407 Evaluate a time range by computing the difference between start and end.
4408 With a prefix argument, insert result after the time range (in a table: into
4409 the following column).
4410 @end table
4411
4412
4413 @menu
4414 * The date/time prompt:: How Org mode helps you entering date and time
4415 * Custom time format:: Making dates look different
4416 @end menu
4417
4418 @node The date/time prompt, Custom time format, Creating timestamps, Creating timestamps
4419 @subsection The date/time prompt
4420 @cindex date, reading in minibuffer
4421 @cindex time, reading in minibuffer
4422
4423 When Org mode prompts for a date/time, the default is shown as an ISO
4424 date, and the prompt therefore seems to ask for an ISO date. But it
4425 will in fact accept any string containing some date and/or time
4426 information, and it is really smart about interpreting your input. You
4427 can, for example, use @kbd{C-y} to paste a (possibly multi-line) string
4428 copied from an email message. Org mode will find whatever information
4429 is in there and derive anything you have not specified from the
4430 @emph{default date and time}. The default is usually the current date
4431 and time, but when modifying an existing time stamp, or when entering
4432 the second stamp of a range, it is taken from the stamp in the buffer.
4433 When filling in information, Org mode assumes that most of the time you
4434 will want to enter a date in the future: If you omit the month/year and
4435 the given day/month is @i{before} today, it will assume that you mean a
4436 future date@footnote{See the variable
4437 @code{org-read-date-prefer-future}.}.
4438
4439 For example, lets assume that today is @b{June 13, 2006}. Here is how
4440 various inputs will be interpreted, the items filled in by Org mode are
4441 in @b{bold}.
4442
4443 @example
4444 3-2-5 --> 2003-02-05
4445 14 --> @b{2006}-@b{06}-14
4446 12 --> @b{2006}-@b{07}-12
4447 Fri --> nearest Friday (defaultdate or later)
4448 sep 15 --> @b{2006}-11-15
4449 feb 15 --> @b{2007}-02-15
4450 sep 12 9 --> 2009-09-12
4451 12:45 --> @b{2006}-@b{06}-@b{13} 12:45
4452 22 sept 0:34 --> @b{2006}-09-22 0:34
4453 w4 --> ISO week for of the current year @b{2006}
4454 2012 w4 fri --> Friday of ISO week 4 in 2012
4455 2012-w04-5 --> Same as above
4456 @end example
4457
4458 Furthermore you can specify a relative date by giving, as the
4459 @emph{first} thing in the input: a plus/minus sign, a number and a
4460 letter [dwmy] to indicate change in days weeks, months, years. With a
4461 single plus or minus, the date is always relative to today. With a
4462 double plus or minus, it is relative to the default date. If instead of
4463 a single letter, you use the abbreviation of day name, the date will be
4464 the nth such day. E.g.
4465
4466 @example
4467 +0 --> today
4468 . --> today
4469 +4d --> four days from today
4470 +4 --> same as above
4471 +2w --> two weeks from today
4472 ++5 --> five days from default date
4473 +2tue --> second tuesday from now.
4474 @end example
4475
4476 The function understands English month and weekday abbreviations. If
4477 you want to use unabbreviated names and/or other languages, configure
4478 the variables @code{parse-time-months} and @code{parse-time-weekdays}.
4479
4480 @cindex calendar, for selecting date
4481 Parallel to the minibuffer prompt, a calendar is popped up@footnote{If
4482 you don't need/want the calendar, configure the variable
4483 @code{org-popup-calendar-for-date-prompt}.}. When you exit the date
4484 prompt, either by clicking on a date in the calendar, or by pressing
4485 @key{RET}, the date selected in the calendar will be combined with the
4486 information entered at the prompt. You can control the calendar fully
4487 from the minibuffer:
4488
4489 @kindex <
4490 @kindex >
4491 @kindex mouse-1
4492 @kindex S-@key{right}
4493 @kindex S-@key{left}
4494 @kindex S-@key{down}
4495 @kindex S-@key{up}
4496 @kindex M-S-@key{right}
4497 @kindex M-S-@key{left}
4498 @kindex @key{RET}
4499 @example
4500 > / < @r{Scroll calendar forward/backward by one month.}
4501 mouse-1 @r{Select date by clicking on it.}
4502 S-@key{right}/@key{left} @r{One day forward/backward.}
4503 S-@key{down}/@key{up} @r{One week forward/backward.}
4504 M-S-@key{right}/@key{left} @r{One month forward/backward.}
4505 @key{RET} @r{Choose date in calendar.}
4506 @end example
4507
4508 The actions of the date/time prompt may seem complex, but I assure you they
4509 will grow on you, and you will start getting annoyed by pretty much any other
4510 way of entering a date/time out there. To help you understand what is going
4511 on, the current interpretation of your input will be displayed live in the
4512 minibuffer@footnote{If you find this distracting, turn the display of with
4513 @code{org-read-date-display-live}.}.
4514
4515 @node Custom time format, , The date/time prompt, Creating timestamps
4516 @subsection Custom time format
4517 @cindex custom date/time format
4518 @cindex time format, custom
4519 @cindex date format, custom
4520
4521 Org mode uses the standard ISO notation for dates and times as it is
4522 defined in ISO 8601. If you cannot get used to this and require another
4523 representation of date and time to keep you happy, you can get it by
4524 customizing the variables @code{org-display-custom-times} and
4525 @code{org-time-stamp-custom-formats}.
4526
4527 @table @kbd
4528 @kindex C-c C-x C-t
4529 @item C-c C-x C-t
4530 Toggle the display of custom formats for dates and times.
4531 @end table
4532
4533 @noindent
4534 Org mode needs the default format for scanning, so the custom date/time
4535 format does not @emph{replace} the default format - instead it is put
4536 @emph{over} the default format using text properties. This has the
4537 following consequences:
4538 @itemize @bullet
4539 @item
4540 You cannot place the cursor onto a time stamp anymore, only before or
4541 after.
4542 @item
4543 The @kbd{S-@key{up}/@key{down}} keys can no longer be used to adjust
4544 each component of a time stamp. If the cursor is at the beginning of
4545 the stamp, @kbd{S-@key{up}/@key{down}} will change the stamp by one day,
4546 just like @kbd{S-@key{left}/@key{right}}. At the end of the stamp, the
4547 time will be changed by one minute.
4548 @item
4549 If the time stamp contains a range of clock times or a repeater, these
4550 will not be overlayed, but remain in the buffer as they were.
4551 @item
4552 When you delete a time stamp character-by-character, it will only
4553 disappear from the buffer after @emph{all} (invisible) characters
4554 belonging to the ISO timestamp have been removed.
4555 @item
4556 If the custom time stamp format is longer than the default and you are
4557 using dates in tables, table alignment will be messed up. If the custom
4558 format is shorter, things do work as expected.
4559 @end itemize
4560
4561
4562 @node Deadlines and scheduling, Clocking work time, Creating timestamps, Dates and Times
4563 @section Deadlines and scheduling
4564
4565 A time stamp may be preceded by special keywords to facilitate planning:
4566
4567 @table @var
4568 @item DEADLINE
4569 @cindex DEADLINE keyword
4570
4571 Meaning: the task (most likely a TODO item, though not necessarily) is supposed
4572 to be finished on that date.
4573
4574 On the deadline date, the task will be listed in the agenda. In
4575 addition, the agenda for @emph{today} will carry a warning about the
4576 approaching or missed deadline, starting
4577 @code{org-deadline-warning-days} before the due date, and continuing
4578 until the entry is marked DONE. An example:
4579
4580 @example
4581 *** TODO write article about the Earth for the Guide
4582 The editor in charge is [[bbdb:Ford Prefect]]
4583 DEADLINE: <2004-02-29 Sun>
4584 @end example
4585
4586 You can specify a different lead time for warnings for a specific
4587 deadlines using the following syntax. Here is an example with a warning
4588 period of 5 days @code{DEADLINE: <2004-02-29 Sun -5d>}.
4589
4590 @item SCHEDULED
4591 @cindex SCHEDULED keyword
4592
4593 Meaning: you are planning to start working on that task on the given
4594 date.
4595
4596 The headline will be listed under the given date@footnote{It will still
4597 be listed on that date after it has been marked DONE. If you don't like
4598 this, set the variable @code{org-agenda-skip-scheduled-if-done}.}. In
4599 addition, a reminder that the scheduled date has passed will be present
4600 in the compilation for @emph{today}, until the entry is marked DONE.
4601 I.e., the task will automatically be forwarded until completed.
4602
4603 @example
4604 *** TODO Call Trillian for a date on New Years Eve.
4605 SCHEDULED: <2004-12-25 Sat>
4606 @end example
4607
4608 @noindent
4609 @b{Important:} Scheduling an item in Org mode should @i{not} be
4610 understood in the same way that we understand @i{scheduling a meeting}.
4611 Setting a date for a meeting is just a simple appointment, you should
4612 mark this entry with a simple plain time stamp, to get this item shown
4613 on the date where it applies. This is a frequent mis-understanding from
4614 Org-users. In Org mode, @i{scheduling} means setting a date when you
4615 want to start working on an action item.
4616 @end table
4617
4618 You may use time stamps with repeaters in scheduling and deadline
4619 entries. Org mode will issue early and late warnings based on the
4620 assumption that the time stamp represents the @i{nearest instance} of
4621 the repeater. However, the use of diary sexp entries like
4622 @c
4623 @code{<%%(diary-float t 42)>}
4624 @c
4625 in scheduling and deadline timestamps is limited. Org mode does not
4626 know enough about the internals of each sexp function to issue early and
4627 late warnings. However, it will show the item on each day where the
4628 sexp entry matches.
4629
4630 @menu
4631 * Inserting deadline/schedule:: Planning items
4632 * Repeated tasks:: Items that show up again and again
4633 @end menu
4634
4635 @node Inserting deadline/schedule, Repeated tasks, Deadlines and scheduling, Deadlines and scheduling
4636 @subsection Inserting deadlines or schedules
4637
4638 The following commands allow to quickly insert a deadline or to schedule
4639 an item:
4640
4641 @table @kbd
4642 @c
4643 @kindex C-c C-d
4644 @item C-c C-d
4645 Insert @samp{DEADLINE} keyword along with a stamp. The insertion will
4646 happen in the line directly following the headline. When called with a
4647 prefix arg, an existing deadline will be removed from the entry.
4648 @c FIXME Any CLOSED timestamp will be removed.????????
4649 @c
4650 @kindex C-c / d
4651 @cindex sparse tree, for deadlines
4652 @item C-c / d
4653 Create a sparse tree with all deadlines that are either past-due, or
4654 which will become due within @code{org-deadline-warning-days}.
4655 With @kbd{C-u} prefix, show all deadlines in the file. With a numeric
4656 prefix, check that many days. For example, @kbd{C-1 C-c / d} shows
4657 all deadlines due tomorrow.
4658 @c
4659 @kindex C-c C-s
4660 @item C-c C-s
4661 Insert @samp{SCHEDULED} keyword along with a stamp. The insertion will
4662 happen in the line directly following the headline. Any CLOSED
4663 timestamp will be removed. When called with a prefix argument, remove
4664 the scheduling date from the entry.
4665 @c
4666 @kindex C-c C-x C-k
4667 @kindex k a
4668 @kindex k s
4669 @item C-c C-x C-k
4670 Mark the current entry for agenda action. After you have marked the entry
4671 like this, you can open the agenda or the calendar to find an appropriate
4672 date. With the cursor on the selected date, press @kbd{k s} or @kbd{k d} to
4673 schedule the marked item.
4674 @end table
4675
4676 @node Repeated tasks, , Inserting deadline/schedule, Deadlines and scheduling
4677 @subsection Repeated tasks
4678
4679 Some tasks need to be repeated again and again. Org mode helps to
4680 organize such tasks using a so-called repeater in a DEADLINE, SCHEDULED,
4681 or plain time stamp. In the following example
4682 @example
4683 ** TODO Pay the rent
4684 DEADLINE: <2005-10-01 Sat +1m>
4685 @end example
4686 the @code{+1m} is a repeater; the intended interpretation is that the
4687 task has a deadline on <2005-10-01> and repeats itself every (one) month
4688 starting from that time. If you need both a repeater and a special
4689 warning period in a deadline entry, the repeater comes first and the
4690 warning period last: @code{DEADLINE: <2005-10-01 Sat +1m -3d>}.
4691
4692 Deadlines and scheduled items produce entries in the agenda when they
4693 are over-due, so it is important to be able to mark such an entry as
4694 completed once you have done so. When you mark a DEADLINE or a SCHEDULE
4695 with the TODO keyword DONE, it will no longer produce entries in the
4696 agenda. The problem with this is, however, that then also the
4697 @emph{next} instance of the repeated entry will not be active. Org mode
4698 deals with this in the following way: When you try to mark such an entry
4699 DONE (using @kbd{C-c C-t}), it will shift the base date of the repeating
4700 time stamp by the repeater interval, and immediately set the entry state
4701 back to TODO. In the example above, setting the state to DONE would
4702 actually switch the date like this:
4703
4704 @example
4705 ** TODO Pay the rent
4706 DEADLINE: <2005-11-01 Tue +1m>
4707 @end example
4708
4709 A timestamp@footnote{You can change this using the option
4710 @code{org-log-repeat}, or the @code{#+STARTUP} options @code{logrepeat},
4711 @code{lognoterepeat}, and @code{nologrepeat}. With @code{lognoterepeat}, you
4712 will aslo be prompted for a note.} will be added under the deadline, to keep
4713 a record that you actually acted on the previous instance of this deadline.
4714
4715 As a consequence of shifting the base date, this entry will no longer be
4716 visible in the agenda when checking past dates, but all future instances
4717 will be visible.
4718
4719 With the @samp{+1m} cookie, the date shift will always be exactly one
4720 month. So if you have not payed the rent for three months, marking this
4721 entry DONE will still keep it as an overdue deadline. Depending on the
4722 task, this may not be the best way to handle it. For example, if you
4723 forgot to call you father for 3 weeks, it does not make sense to call
4724 him 3 times in a single day to make up for it. Finally, there are tasks
4725 like changing batteries which should always repeat a certain time
4726 @i{after} the last time you did it. For these tasks, Org mode has
4727 special repeaters markers with @samp{++} and @samp{.+}. For example:
4728
4729 @example
4730 ** TODO Call Father
4731 DEADLINE: <2008-02-10 Sun ++1w>
4732 Marking this DONE will shift the date by at least one week,
4733 but also by as many weeks as it takes to get this date into
4734 the future. However, it stays on a Sunday, even if you called
4735 and marked it done on Saturday.
4736 ** TODO Check the batteries in the smoke detectors
4737 DEADLINE: <2005-11-01 Tue .+1m>
4738 Marking this DONE will shift the date to one month after
4739 today.
4740 @end example
4741
4742 You may have both scheduling and deadline information for a specific
4743 task - just make sure that the repeater intervals on both are the same.
4744
4745 @node Clocking work time, Effort estimates, Deadlines and scheduling, Dates and Times
4746 @section Clocking work time
4747
4748 Org mode allows you to clock the time you spent on specific tasks in a
4749 project. When you start working on an item, you can start the clock.
4750 When you stop working on that task, or when you mark the task done, the
4751 clock is stopped and the corresponding time interval is recorded. It
4752 also computes the total time spent on each subtree of a project.
4753
4754 @table @kbd
4755 @kindex C-c C-x C-i
4756 @item C-c C-x C-i
4757 Start the clock on the current item (clock-in). This inserts the CLOCK
4758 keyword together with a timestamp. If this is not the first clocking of
4759 this item, the multiple CLOCK lines will be wrapped into a
4760 @code{:CLOCK:} drawer (see also the variable
4761 @code{org-clock-into-drawer}). When called with a @kbd{C-u} prefix argument,
4762 select the task from a list of recently clocked tasks. With two @kbd{C-u
4763 C-u} prefixes, clock into the task at point and mark it as the default task.
4764 The default task will always be available when selecting a clocking task,
4765 with letter @kbd{d}.
4766 @kindex C-c C-x C-o
4767 @item C-c C-x C-o
4768 Stop the clock (clock-out). The inserts another timestamp at the same
4769 location where the clock was last started. It also directly computes
4770 the resulting time in inserts it after the time range as @samp{=>
4771 HH:MM}. See the variable @code{org-log-note-clock-out} for the
4772 possibility to record an additional note together with the clock-out
4773 time stamp@footnote{The corresponding in-buffer setting is:
4774 @code{#+STARTUP: lognoteclock-out}}.
4775 @kindex C-c C-y
4776 @item C-c C-y
4777 Recompute the time interval after changing one of the time stamps. This
4778 is only necessary if you edit the time stamps directly. If you change
4779 them with @kbd{S-@key{cursor}} keys, the update is automatic.
4780 @kindex C-c C-t
4781 @item C-c C-t
4782 Changing the TODO state of an item to DONE automatically stops the clock
4783 if it is running in this same item.
4784 @kindex C-c C-x C-x
4785 @item C-c C-x C-x
4786 Cancel the current clock. This is useful if a clock was started by
4787 mistake, or if you ended up working on something else.
4788 @kindex C-c C-x C-j
4789 @item C-c C-x C-j
4790 Jump to the entry that contains the currently running clock. With a
4791 @kbd{C-u} prefix arg, select the target task from a list of recently clocked
4792 tasks.
4793 @kindex C-c C-x C-d
4794 @item C-c C-x C-d
4795 Display time summaries for each subtree in the current buffer. This
4796 puts overlays at the end of each headline, showing the total time
4797 recorded under that heading, including the time of any subheadings. You
4798 can use visibility cycling to study the tree, but the overlays disappear
4799 when you change the buffer (see variable
4800 @code{org-remove-highlights-with-change}) or press @kbd{C-c C-c}.
4801 @kindex C-c C-x C-r
4802 @item C-c C-x C-r
4803 Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
4804 report as an Org mode table into the current file. When the cursor is
4805 at an existing clock table, just update it. When called with a prefix
4806 argument, jump to the first clock report in the current document and
4807 update it.
4808 @cindex #+BEGIN: clocktable
4809 @example
4810 #+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
4811 #+END: clocktable
4812 @end example
4813 @noindent
4814 If such a block already exists at point, its content is replaced by the
4815 new table. The @samp{BEGIN} line can specify options:
4816 @example
4817 :maxlevel @r{Maximum level depth to which times are listed in the table.}
4818 :emphasize @r{When @code{t}, emphasize level one and level two items}
4819 :scope @r{The scope to consider. This can be any of the following:}
4820 nil @r{the current buffer or narrowed region}
4821 file @r{the full current buffer}
4822 subtree @r{the subtree where the clocktable is located}
4823 treeN @r{the surrounding level N tree, for example @code{tree3}}
4824 tree @r{the surrounding level 1 tree}
4825 agenda @r{all agenda files}
4826 ("file"..) @r{scan these files}
4827 file-with-archives @r{current file and its archives}
4828 agenda-with-archives @r{all agenda files, including archives}
4829 :block @r{The time block to consider. This block is specified either}
4830 @r{absolute, or relative to the current time and may be any of}
4831 @r{these formats:}
4832 2007-12-31 @r{New year eve 2007}
4833 2007-12 @r{December 2007}
4834 2007-W50 @r{ISO-week 50 in 2007}
4835 2007 @r{the year 2007}
4836 today, yesterday, today-N @r{a relative day}
4837 thisweek, lastweek, thisweek-N @r{a relative week}
4838 thismonth, lastmonth, thismonth-N @r{a relative month}
4839 thisyear, lastyear, thisyear-N @r{a relative year}
4840 @r{Use @kbd{S-@key{left}/@key{right}} keys to shift the time interval.}
4841 :tstart @r{A time string specifying when to start considering times}
4842 :tend @r{A time string specifying when to stop considering times}
4843 :step @r{@code{week} or @code{day}, to split the table into chunks.}
4844 @r{To use this, @code{:block} or @code{:tstart}, @code{:tend} are needed.}
4845 :link @r{Link the item headlines in the table to their origins}
4846 :formula @r{Content of a @code{#+TBLFM} line to be added and evaluated.}
4847 @r{As a special case, @samp{:formula %} adds column with % time.}
4848 @r{If you do not specify a formula here, any existing formula}
4849 @r{below the clock table will survive updates and be evaluated.}
4850 @end example
4851 So to get a clock summary of the current level 1 tree, for the current
4852 day, you could write
4853 @example
4854 #+BEGIN: clocktable :maxlevel 2 :block today :scope tree1 :link t
4855 #+END: clocktable
4856 @end example
4857 and to use a specific time range you could write@footnote{Note that all
4858 parameters must be specified in a single line - the line is broken here
4859 only to fit it onto the manual.}
4860 @example
4861 #+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>"
4862 :tend "<2006-08-10 Thu 12:00>"
4863 #+END: clocktable
4864 @end example
4865 A summary of the current subtree with % times would be
4866 @example
4867 #+BEGIN: clocktable :scope subtree :link t :formula %
4868 #+END: clocktable
4869 @end example
4870 @kindex C-c C-c
4871 @item C-c C-c
4872 @kindex C-c C-x C-u
4873 @itemx C-c C-x C-u
4874 Update dynamical block at point. The cursor needs to be in the
4875 @code{#+BEGIN} line of the dynamic block.
4876 @kindex C-u C-c C-x C-u
4877 @item C-u C-c C-x C-u
4878 Update all dynamic blocks (@pxref{Dynamic blocks}). This is useful if
4879 you have several clock table blocks in a buffer.
4880 @kindex S-@key{left}
4881 @kindex S-@key{right}
4882 @item S-@key{left}
4883 @itemx S-@key{right}
4884 Shift the current @code{:block} interval and update the table. The cursor
4885 needs to be in the @code{#+BEGIN: clocktable} line for this command. If
4886 @code{:block} is @code{today}, it will be shifted to @code{today-1} etc.
4887 @end table
4888
4889 The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
4890 the agenda (@pxref{Weekly/daily agenda}) to show which tasks have been
4891 worked on or closed during a day.
4892
4893 @node Effort estimates, , Clocking work time, Dates and Times
4894 @section Effort estimates
4895 @cindex Effort estimates
4896
4897 If you want to plan your work in a very detailed way, or if you need to
4898 produce offers with quotations of the estimated work effort, you may want to
4899 assign effort estimates to entries. If you are also clocking your work, you
4900 may later want to compare the planned effort with the actual working time, a
4901 great way to improve planning estimates. Effort estimates are stored in a
4902 special property @samp{Effort}@footnote{You may change the property being
4903 used with the variable @code{org-effort-property}.}. Clearly the best way to
4904 work with effort estimates is through column view (@pxref{Column view}). You
4905 should start by setting up discrete values for effort estimates, and a
4906 @code{COLUMNS} format that displays these values together with clock sums (if
4907 you want to clock your time). For a specific buffer you can use
4908
4909 @example
4910 #+PROPERTY: Effort_ALL 0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00 8:00
4911 #+COLUMNS: %40ITEM(Task) %17Effort(Estimated Effort)@{:@} %CLOCKSUM
4912 @end example
4913
4914 @noindent
4915 or, even better, you can set up these values globally by customizing the
4916 variables @code{org-global-properties} and @code{org-columns-default-format}.
4917 In particular if you want to use this setup also in the agenda, a global
4918 setup may be advised.
4919
4920 The way to assign estimates to individual items is then to switch to column
4921 mode, and to use @kbd{S-@key{right}} and @kbd{S-@key{left}} to change the
4922 value. The values you enter will immediately be summed up in the hierarchy.
4923 In the column next to it, any clocked time will be displayed.
4924
4925 If you switch to column view in the daily/weekly agenda, the effort column
4926 will summarize the estimated work effort for each day@footnote{Please note
4927 the pitfalls of summing hierarchical data in a flat list (@pxref{Agenda
4928 column view}).}, and you can use this to find space in your schedule. To get
4929 an overview of the entire part of the day that is committed, you can set the
4930 option @code{org-agenda-columns-add-appointments-to-effort-sum}. The
4931 appointments on a day that take place over a specified time interval will
4932 then also be added to the load estimate of the day.
4933
4934 Effort estimates can be used in secondary agenda filtering that is triggered
4935 with the @kbd{/} key in the agenda (@pxref{Agenda commands}). If you have
4936 these estimates defined consistently, two or three key presses will narrow
4937 down the list to stuff that fits into an available time slot.
4938
4939 @node Capture, Agenda Views, Dates and Times, Top
4940 @chapter Capture
4941 @cindex capture
4942
4943 An important part of any organization system is the ability to quickly
4944 capture new ideas and tasks, and to associate reference material with them.
4945 Org uses the @file{remember} package to create tasks, and stores files
4946 related to a task (@i{attachments}) in a special directory.
4947
4948 @menu
4949 * Remember:: Capture new tasks/ideas with little interruption
4950 * Attachments:: Add files to tasks.
4951 @end menu
4952
4953 @node Remember, Attachments, Capture, Capture
4954 @section Remember
4955 @cindex @file{remember.el}
4956
4957 The @i{Remember} package by John Wiegley lets you store quick notes with
4958 little interruption of your work flow. See
4959 @uref{http://www.emacswiki.org/cgi-bin/wiki/RememberMode} for more
4960 information. It is an excellent way to add new notes and tasks to
4961 Org files. Org significantly expands the possibilities of
4962 @i{remember}: You may define templates for different note types, and
4963 associate target files and headlines with specific templates. It also
4964 allows you to select the location where a note should be stored
4965 interactively, on the fly.
4966
4967 @menu
4968 * Setting up Remember:: Some code for .emacs to get things going
4969 * Remember templates:: Define the outline of different note types
4970 * Storing notes:: Directly get the note to where it belongs
4971 * Refiling notes:: Moving a note or task to a project
4972 @end menu
4973
4974 @node Setting up Remember, Remember templates, Remember, Remember
4975 @subsection Setting up Remember
4976
4977 The following customization will tell @i{remember} to use org files as
4978 target, and to create annotations compatible with Org links.
4979
4980 @example
4981 (org-remember-insinuate)
4982 (setq org-directory "~/path/to/my/orgfiles/")
4983 (setq org-default-notes-file (concat org-directory "/notes.org"))
4984 (define-key global-map "\C-cr" 'org-remember)
4985 @end example
4986
4987 The last line binds the command @code{org-remember} to a global
4988 key@footnote{Please select your own key, @kbd{C-c r} is only a
4989 suggestion.}. @code{org-remember} basically just calls @code{remember},
4990 but it makes a few things easier: If there is an active region, it will
4991 automatically copy the region into the remember buffer. It also allows
4992 to jump to the buffer and location where remember notes are being
4993 stored: Just call @code{org-remember} with a prefix argument. If you
4994 use two prefix arguments, Org jumps to the location where the last
4995 remember note was stored.
4996
4997 The remember buffer will actually use @code{org-mode} as its major mode, so
4998 that all editing features of Org-mode are available. In addition to this, a
4999 minor mode @code{org-remember-mode} is turned on, for the single purpose that
5000 you can use its keymap @code{org-remember-mode-map} to overwrite some of
5001 Org-mode's key bindings.
5002
5003 You can also call @code{org-remember} in a special way from the agenda,
5004 using the @kbd{k r} key combination. With this access, any time stamps
5005 inserted by the selected remember template (see below) will default to
5006 the cursor date in the agenda, rather than to the current date.
5007
5008 @node Remember templates, Storing notes, Setting up Remember, Remember
5009 @subsection Remember templates
5010 @cindex templates, for remember
5011
5012 In combination with Org, you can use templates to generate
5013 different types of @i{remember} notes. For example, if you would like
5014 to use one template to create general TODO entries, another one for
5015 journal entries, and a third one for collecting random ideas, you could
5016 use:
5017
5018 @example
5019 (setq org-remember-templates
5020 '(("Todo" ?t "* TODO %?\n %i\n %a" "~/org/TODO.org" "Tasks")
5021 ("Journal" ?j "* %U %?\n\n %i\n %a" "~/org/JOURNAL.org")
5022 ("Idea" ?i "* %^@{Title@}\n %i\n %a" "~/org/JOURNAL.org" "New Ideas")))
5023 @end example
5024
5025 @noindent In these entries, the first string is just a name, and the
5026 character specifies how to select the template. It is useful if the
5027 character is also the first letter of the name. The next string specifies
5028 the template. Two more (optional) strings give the file in which, and the
5029 headline under which the new note should be stored. The file (if not present
5030 or @code{nil}) defaults to @code{org-default-notes-file}, the heading to
5031 @code{org-remember-default-headline}. If the file name is not an absolute
5032 path, it will be interpreted relative to @code{org-directory}. The heading
5033 can also be the symbols @code{top} or @code{bottom} to send note as level 1
5034 entries to the beginning or end of the file, respectively.
5035
5036 An optional sixth element specifies the contexts in which the user can select
5037 the template. This element can be a list of major modes or a function.
5038 @code{org-remember} will first check whether the function returns @code{t} or
5039 if we are in any of the listed major mode, and exclude templates fo which
5040 this condition is not fulfilled. Templates that do not specify this element
5041 at all, or that use @code{nil} or @code{t} as a value will always be
5042 selectable.
5043
5044 So for example:
5045
5046 @example
5047 (setq org-remember-templates
5048 '(("Bug" ?b "* BUG %?\n %i\n %a" "~/org/BUGS.org" "Bugs" (emacs-lisp-mode))
5049 ("Journal" ?j "* %U %?\n\n %i\n %a" "~/org/JOURNAL.org" "X" my-check)
5050 ("Idea" ?i "* %^@{Title@}\n %i\n %a" "~/org/JOURNAL.org" "New Ideas")))
5051 @end example
5052
5053 The first template will only be available when invoking @code{org-remember}
5054 from an buffer in @code{emacs-lisp-mode}. The second template will only be
5055 available when the function @code{my-check} returns @code{t}. The third
5056 template will be proposed in any context.
5057
5058 When you call @kbd{M-x org-remember} (or @kbd{M-x remember}) to remember
5059 something, Org will prompt for a key to select the template (if you have
5060 more than one template) and then prepare the buffer like
5061 @example
5062 * TODO
5063 [[file:link to where you called remember]]
5064 @end example
5065
5066 @noindent
5067 During expansion of the template, special @kbd{%}-escapes allow dynamic
5068 insertion of content:
5069 @example
5070 %^@{prompt@} @r{prompt the user for a string and replace this sequence with it.}
5071 @r{You may specify a default value and a completion table with}
5072 @r{%^@{prompt|default|completion2|completion3...@}}
5073 @r{The arrow keys access a prompt-specific history.}
5074 %a @r{annotation, normally the link created with @code{org-store-link}}
5075 %A @r{like @code{%a}, but prompt for the description part}
5076 %i @r{initial content, the region when remember is called with C-u.}
5077 @r{The entire text will be indented like @code{%i} itself.}
5078 %t @r{time stamp, date only}
5079 %T @r{time stamp with date and time}
5080 %u, %U @r{like the above, but inactive time stamps}
5081 %^t @r{like @code{%t}, but prompt for date. Similarly @code{%^T}, @code{%^u}, @code{%^U}}
5082 @r{You may define a prompt like @code{%^@{Birthday@}t}}
5083 %n @r{user name (taken from @code{user-full-name})}
5084 %c @r{Current kill ring head.}
5085 %x @r{Content of the X clipboard.}
5086 %^C @r{Interactive selection of which kill or clip to use.}
5087 %^L @r{Like @code{%^C}, but insert as link.}
5088 %^g @r{prompt for tags, with completion on tags in target file.}
5089 %k @r{title of currently clocked task}
5090 %K @r{link to currently clocked task}
5091 %^G @r{prompt for tags, with completion all tags in all agenda files.}
5092 %^@{prop@}p @r{Prompt the user for a value for property @code{prop}}
5093 %:keyword @r{specific information for certain link types, see below}
5094 %[pathname] @r{insert the contents of the file given by @code{pathname}}
5095 %(sexp) @r{evaluate elisp @code{(sexp)} and replace with the result}
5096 %! @r{immediately store note after completing the template}
5097 @r{(skipping the @kbd{C-c C-c} that normally triggers storing)}
5098 %& @r{jump to target location immediately after storing note}
5099 @end example
5100
5101 @noindent
5102 For specific link types, the following keywords will be
5103 defined@footnote{If you define your own link types (@pxref{Adding
5104 hyperlink types}), any property you store with
5105 @code{org-store-link-props} can be accessed in remember templates in a
5106 similar way.}:
5107
5108 @example
5109 Link type | Available keywords
5110 -------------------+----------------------------------------------
5111 bbdb | %:name %:company
5112 bbdb | %::server %:port %:nick
5113 vm, wl, mh, rmail | %:type %:subject %:message-id
5114 | %:from %:fromname %:fromaddress
5115 | %:to %:toname %:toaddress
5116 | %: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}.}}
5117 gnus | %:group, @r{for messages also all email fields}
5118 w3, w3m | %:url
5119 info | %:file %:node
5120 calendar | %:date"
5121 @end example
5122
5123 @noindent
5124 To place the cursor after template expansion use:
5125
5126 @example
5127 %? @r{After completing the template, position cursor here.}
5128 @end example
5129
5130 @noindent
5131 If you change your mind about which template to use, call
5132 @code{org-remember} in the remember buffer. You may then select a new
5133 template that will be filled with the previous context information.
5134
5135 @node Storing notes, Refiling notes, Remember templates, Remember
5136 @subsection Storing notes
5137
5138 When you are finished preparing a note with @i{remember}, you have to press
5139 @kbd{C-c C-c} to file the note away. If you have started the clock in the
5140 remember buffer, you will first be asked if you want to clock out
5141 now@footnote{To avoid this query, configure the variable
5142 @code{org-remember-clock-out-on-exit}.}. If you answer @kbd{n}, the clock
5143 will continue to run after the note was filed away.
5144
5145 The handler will then store the note in the file and under the headline
5146 specified in the template, or it will use the default file and headlines.
5147 The window configuration will be restored, sending you back to the working
5148 context before the call to @code{remember}. To re-use the location found
5149 during the last call to @code{remember}, exit the remember buffer with
5150 @kbd{C-0 C-c C-c}, i.e. specify a zero prefix argument to @kbd{C-c C-c}.
5151 Another special case is @kbd{C-2 C-c C-c} which files the note as a child of
5152 the currently clocked item.
5153
5154 If you want to store the note directly to a different place, use
5155 @kbd{C-1 C-c C-c} instead to exit remember@footnote{Configure the
5156 variable @code{org-remember-store-without-prompt} to make this behavior
5157 the default.}. The handler will then first prompt for a target file -
5158 if you press @key{RET}, the value specified for the template is used.
5159 Then the command offers the headings tree of the selected file, with the
5160 cursor position at the default headline (if you had specified one in the
5161 template). You can either immediately press @key{RET} to get the note
5162 placed there. Or you can use the following keys to find a different
5163 location:
5164 @example
5165 @key{TAB} @r{Cycle visibility.}
5166 @key{down} / @key{up} @r{Next/previous visible headline.}
5167 n / p @r{Next/previous visible headline.}
5168 f / b @r{Next/previous headline same level.}
5169 u @r{One level up.}
5170 @c 0-9 @r{Digit argument.}
5171 @end example
5172 @noindent
5173 Pressing @key{RET} or @key{left} or @key{right}
5174 then leads to the following result.
5175
5176 @multitable @columnfractions 0.2 0.15 0.65
5177 @item @b{Cursor position} @tab @b{Key} @tab @b{Note gets inserted}
5178 @item on headline @tab @key{RET} @tab as sublevel of the heading at cursor, first or last
5179 @item @tab @tab depending on @code{org-reverse-note-order}.
5180 @item @tab @key{left}/@key{right} @tab as same level, before/after current heading
5181 @item buffer-start @tab @key{RET} @tab as level 2 heading at end of file or level 1 at beginning
5182 @item @tab @tab depending on @code{org-reverse-note-order}.
5183 @item not on headline @tab @key{RET}
5184 @tab at cursor position, level taken from context.
5185 @end multitable
5186
5187 Before inserting the text into a tree, the function ensures that the text has
5188 a headline, i.e. a first line that starts with a @samp{*}. If not, a
5189 headline is constructed from the current date. If you have indented the text
5190 of the note below the headline, the indentation will be adapted if inserting
5191 the note into the tree requires demotion from level 1.
5192
5193 @node Refiling notes, , Storing notes, Remember
5194 @subsection Refiling notes
5195 @cindex refiling notes
5196
5197 Remember is usually used to quickly capture notes and tasks into one or
5198 a few capture lists. When reviewing the captured data, you may want to
5199 refile some of the entries into a different list, for example into a
5200 project. Cutting, finding the right location and then pasting the note
5201 is cumbersome. To simplify this process, you can use the following
5202 special command:
5203
5204 @table @kbd
5205 @kindex C-c C-w
5206 @item C-c C-w
5207 Refile the entry or region at point. This command offers possible locations
5208 for refiling the entry and lets you select one with completion. The item (or
5209 all items in the region) is filed below the target heading as a subitem.
5210 Depending on @code{org-reverse-note-order}, it will be either the first or
5211 last subitem.@*
5212 By default, all level 1 headlines in the current buffer are considered to be
5213 targets, but you can have more complex definitions across a number of files.
5214 See the variable @code{org-refile-targets} for details. If you would like to
5215 select a location via a file-path-like completion along the outline path, see
5216 the variables @code{org-refile-use-outline-path} and
5217 @code{org-outline-path-complete-in-steps}.
5218 @kindex C-u C-c C-w
5219 @item C-u C-c C-w
5220 Use the refile interface to jump to a heading.
5221 @kindex C-u C-u C-c C-w
5222 @item C-u C-u C-c C-w
5223 Jump to the location where @code{org-refile} last moved a tree to.
5224 @end table
5225
5226 @node Attachments, , Remember, Capture
5227 @section Attachments
5228 @cindex attachments
5229
5230 It is often useful to associate reference material with an outline node/task.
5231 Small chunks of plain text can simply be stored in the subtree of a project.
5232 Hyperlinks (@pxref{Hyperlinks}) can be used to establish associations with
5233 files that live elsewhere on your computer or in the cloud, like emails or
5234 source code files belonging to a project. Another method is @i{attachments},
5235 which are files located in a directory belonging to an outline node. Org
5236 uses directories named by the unique ID of each entry. These directories are
5237 located in the @file{data} directory which lives in the same directory where
5238 your org-file lives@footnote{If you move entries or Org-files from one
5239 directory to the next, you may want to configure @code{org-attach-directory}
5240 to contain an absolute path.}. If you initialize this directory with
5241 @code{git-init}, Org will automatically commit changes when it sees them.
5242 The attachment system has been contributed to Org by John Wiegley.
5243
5244 @noindent The following commands deal with attachments.
5245
5246 @table @kbd
5247
5248 @kindex C-c C-a
5249 @item C-c C-a
5250 The dispatcher for commands related to the attachment system. After these
5251 keys, a list of commands is displayed and you need to press an additional key
5252 to select a command:
5253
5254 @table @kbd
5255 @kindex C-c C-a a
5256 @item a
5257 Select a file and move it into the task's attachment directory. The file
5258 will be copied, moved, or linked, depending on @code{org-attach-method}.
5259 Note that hard links are not supported on all systems.
5260
5261 @kindex C-c C-a c
5262 @kindex C-c C-a m
5263 @kindex C-c C-a l
5264 @item c/m/l
5265 Attach a file using the copy/move/link method.
5266 Note that hard links are not supported on all systems.
5267
5268 @kindex C-c C-a n
5269 @item n
5270 Create a new attachment as an Emacs buffer.
5271
5272 @kindex C-c C-a z
5273 @item z
5274 Synchronize the current task with its attachment directory, in case you added
5275 attachments yourself.
5276
5277 @kindex C-c C-a o
5278 @item o
5279 Open current task's attachment. If there are more than one, prompt for a
5280 file name first. Opening will follow the rules set by @code{org-file-apps}.
5281 For more details, see the information on following hyperlings
5282 (@pxref{Handling links}).
5283
5284 @kindex C-c C-a O
5285 @item O
5286 Also open the attachment, but force opening the file in Emacs.
5287
5288 @kindex C-c C-a f
5289 @item f
5290 Open the current task's attachment directory.
5291
5292 @kindex C-c C-a F
5293 @item F
5294 Also open the directory, but force using @code{dired} in Emacs.
5295
5296 @kindex C-c C-a d
5297 @item d
5298 Select and delete a single attachment.
5299
5300 @kindex C-c C-a D
5301 @item D
5302 Delete all of a task's attachments. A safer way is to open the directory in
5303 dired and delete from there.
5304 @end table
5305 @end table
5306
5307 @node Agenda Views, Embedded LaTeX, Capture, Top
5308 @chapter Agenda Views
5309 @cindex agenda views
5310
5311 Due to the way Org works, TODO items, time-stamped items, and
5312 tagged headlines can be scattered throughout a file or even a number of
5313 files. To get an overview of open action items, or of events that are
5314 important for a particular date, this information must be collected,
5315 sorted and displayed in an organized way.
5316
5317 Org can select items based on various criteria, and display them
5318 in a separate buffer. Seven different view types are provided:
5319
5320 @itemize @bullet
5321 @item
5322 an @emph{agenda} that is like a calendar and shows information
5323 for specific dates,
5324 @item
5325 a @emph{TODO list} that covers all unfinished
5326 action items,
5327 @item
5328 a @emph{match view}, showings headlines based on the tags, properties and
5329 TODO state associated with them,
5330 @item
5331 a @emph{timeline view} that shows all events in a single Org file,
5332 in time-sorted view,
5333 @item
5334 a @emph{keyword search view} that shows all entries from multiple files
5335 that contain specified keywords.
5336 @item
5337 a @emph{stuck projects view} showing projects that currently don't move
5338 along, and
5339 @item
5340 @emph{custom views} that are special tag/keyword searches and
5341 combinations of different views.
5342 @end itemize
5343
5344 @noindent
5345 The extracted information is displayed in a special @emph{agenda
5346 buffer}. This buffer is read-only, but provides commands to visit the
5347 corresponding locations in the original Org files, and even to
5348 edit these files remotely.
5349
5350 Two variables control how the agenda buffer is displayed and whether the
5351 window configuration is restored when the agenda exits:
5352 @code{org-agenda-window-setup} and
5353 @code{org-agenda-restore-windows-after-quit}.
5354
5355 @menu
5356 * Agenda files:: Files being searched for agenda information
5357 * Agenda dispatcher:: Keyboard access to agenda views
5358 * Built-in agenda views:: What is available out of the box?
5359 * Presentation and sorting:: How agenda items are prepared for display
5360 * Agenda commands:: Remote editing of Org trees
5361 * Custom agenda views:: Defining special searches and views
5362 * Agenda column view:: Using column view for collected entries
5363 @end menu
5364
5365 @node Agenda files, Agenda dispatcher, Agenda Views, Agenda Views
5366 @section Agenda files
5367 @cindex agenda files
5368 @cindex files for agenda
5369
5370 The information to be shown is normally collected from all @emph{agenda
5371 files}, the files listed in the variable
5372 @code{org-agenda-files}@footnote{If the value of that variable is not a
5373 list, but a single file name, then the list of agenda files will be
5374 maintained in that external file.}. If a directory is part of this list,
5375 all files with the extension @file{.org} in this directory will be part
5376 of the list.
5377
5378 Thus even if you only work with a single Org file, this file should
5379 be put into that list@footnote{When using the dispatcher, pressing
5380 @kbd{<} before selecting a command will actually limit the command to
5381 the current file, and ignore @code{org-agenda-files} until the next
5382 dispatcher command.}. You can customize @code{org-agenda-files}, but
5383 the easiest way to maintain it is through the following commands
5384
5385 @cindex files, adding to agenda list
5386 @table @kbd
5387 @kindex C-c [
5388 @item C-c [
5389 Add current file to the list of agenda files. The file is added to
5390 the front of the list. If it was already in the list, it is moved to
5391 the front. With a prefix argument, file is added/moved to the end.
5392 @kindex C-c ]
5393 @item C-c ]
5394 Remove current file from the list of agenda files.
5395 @kindex C-,
5396 @kindex C-'
5397 @item C-,
5398 @itemx C-'
5399 Cycle through agenda file list, visiting one file after the other.
5400 @kindex M-x org-iswitchb
5401 @item M-x org-iswitchb
5402 Command to use an @code{iswitchb}-like interface to switch to and between Org
5403 buffers.
5404 @end table
5405
5406 @noindent
5407 The Org menu contains the current list of files and can be used
5408 to visit any of them.
5409
5410 If you would like to focus the agenda temporarily onto a file not in
5411 this list, or onto just one file in the list or even only a subtree in a
5412 file, this can be done in different ways. For a single agenda command,
5413 you may press @kbd{<} once or several times in the dispatcher
5414 (@pxref{Agenda dispatcher}). To restrict the agenda scope for an
5415 extended period, use the following commands:
5416
5417 @table @kbd
5418 @kindex C-c C-x <
5419 @item C-c C-x <
5420 Permanently restrict the agenda to the current subtree. When with a
5421 prefix argument, or with the cursor before the first headline in a file,
5422 the agenda scope is set to the entire file. This restriction remains in
5423 effect until removed with @kbd{C-c C-x >}, or by typing either @kbd{<}
5424 or @kbd{>} in the agenda dispatcher. If there is a window displaying an
5425 agenda view, the new restriction takes effect immediately.
5426 @kindex C-c C-x <
5427 @item C-c C-x <
5428 Remove the permanent restriction created by @kbd{C-c C-x <}.
5429 @end table
5430
5431 @noindent
5432 When working with @file{Speedbar}, you can use the following commands in
5433 the Speedbar frame:
5434 @table @kbd
5435 @kindex <
5436 @item < @r{in the speedbar frame}
5437 Permanently restrict the agenda to the item at the cursor in the
5438 Speedbar frame, either an Org file or a subtree in such a file.
5439 If there is a window displaying an agenda view, the new restriction takes
5440 effect immediately.
5441 @kindex <
5442 @item > @r{in the speedbar frame}
5443 Lift the restriction again.
5444 @end table
5445
5446 @node Agenda dispatcher, Built-in agenda views, Agenda files, Agenda Views
5447 @section The agenda dispatcher
5448 @cindex agenda dispatcher
5449 @cindex dispatching agenda commands
5450 The views are created through a dispatcher that should be bound to a
5451 global key, for example @kbd{C-c a} (@pxref{Installation}). In the
5452 following we will assume that @kbd{C-c a} is indeed how the dispatcher
5453 is accessed and list keyboard access to commands accordingly. After
5454 pressing @kbd{C-c a}, an additional letter is required to execute a
5455 command. The dispatcher offers the following default commands:
5456 @table @kbd
5457 @item a
5458 Create the calendar-like agenda (@pxref{Weekly/daily agenda}).
5459 @item t @r{/} T
5460 Create a list of all TODO items (@pxref{Global TODO list}).
5461 @item m @r{/} M
5462 Create a list of headlines matching a TAGS expression (@pxref{Matching
5463 tags and properties}).
5464 @item L
5465 Create the timeline view for the current buffer (@pxref{Timeline}).
5466 @item s
5467 Create a list of entries selected by a boolean expression of keywords
5468 and/or regular expressions that must or must not occur in the entry.
5469 @item /
5470 Search for a regular expression in all agenda files and additionally in
5471 the files listed in @code{org-agenda-multi-occur-extra-files}. This
5472 uses the Emacs command @code{multi-occur}. A prefix argument can be
5473 used to specify the number of context lines for each match, default is
5474 1.
5475 @item # @r{/} !
5476 Create a list of stuck projects (@pxref{Stuck projects}).
5477 @item <
5478 Restrict an agenda command to the current buffer@footnote{For backward
5479 compatibility, you can also press @kbd{1} to restrict to the current
5480 buffer.}. After pressing @kbd{<}, you still need to press the character
5481 selecting the command.
5482 @item < <
5483 If there is an active region, restrict the following agenda command to
5484 the region. Otherwise, restrict it to the current subtree@footnote{For
5485 backward compatibility, you can also press @kbd{0} to restrict to the
5486 current buffer.}. After pressing @kbd{< <}, you still need to press the
5487 character selecting the command.
5488 @end table
5489
5490 You can also define custom commands that will be accessible through the
5491 dispatcher, just like the default commands. This includes the
5492 possibility to create extended agenda buffers that contain several
5493 blocks together, for example the weekly agenda, the global TODO list and
5494 a number of special tags matches. @xref{Custom agenda views}.
5495
5496 @node Built-in agenda views, Presentation and sorting, Agenda dispatcher, Agenda Views
5497 @section The built-in agenda views
5498
5499 In this section we describe the built-in views.
5500
5501 @menu
5502 * Weekly/daily agenda:: The calendar page with current tasks
5503 * Global TODO list:: All unfinished action items
5504 * Matching tags and properties:: Structured information with fine-tuned search
5505 * Timeline:: Time-sorted view for single file
5506 * Keyword search:: Finding entries by keyword
5507 * Stuck projects:: Find projects you need to review
5508 @end menu
5509
5510 @node Weekly/daily agenda, Global TODO list, Built-in agenda views, Built-in agenda views
5511 @subsection The weekly/daily agenda
5512 @cindex agenda
5513 @cindex weekly agenda
5514 @cindex daily agenda
5515
5516 The purpose of the weekly/daily @emph{agenda} is to act like a page of a
5517 paper agenda, showing all the tasks for the current week or day.
5518
5519 @table @kbd
5520 @cindex org-agenda, command
5521 @kindex C-c a a
5522 @item C-c a a
5523 Compile an agenda for the current week from a list of org files. The agenda
5524 shows the entries for each day. With a numeric prefix@footnote{For backward
5525 compatibility, the universal prefix @kbd{C-u} causes all TODO entries to be
5526 listed before the agenda. This feature is deprecated, use the dedicated TODO
5527 list, or a block agenda instead (@pxref{Block agenda}).} (like @kbd{C-u 2 1
5528 C-c a a}) you may set the number of days to be displayed (see also the
5529 variable @code{org-agenda-ndays})
5530 @end table
5531
5532 Remote editing from the agenda buffer means, for example, that you can
5533 change the dates of deadlines and appointments from the agenda buffer.
5534 The commands available in the Agenda buffer are listed in @ref{Agenda
5535 commands}.
5536
5537 @subsubheading Calendar/Diary integration
5538 @cindex calendar integration
5539 @cindex diary integration
5540
5541 Emacs contains the calendar and diary by Edward M. Reingold. The
5542 calendar displays a three-month calendar with holidays from different
5543 countries and cultures. The diary allows you to keep track of
5544 anniversaries, lunar phases, sunrise/set, recurrent appointments
5545 (weekly, monthly) and more. In this way, it is quite complementary to
5546 Org. It can be very useful to combine output from Org with
5547 the diary.
5548
5549 In order to include entries from the Emacs diary into Org mode's
5550 agenda, you only need to customize the variable
5551
5552 @lisp
5553 (setq org-agenda-include-diary t)
5554 @end lisp
5555
5556 @noindent After that, everything will happen automatically. All diary
5557 entries including holidays, anniversaries etc will be included in the
5558 agenda buffer created by Org mode. @key{SPC}, @key{TAB}, and
5559 @key{RET} can be used from the agenda buffer to jump to the diary
5560 file in order to edit existing diary entries. The @kbd{i} command to
5561 insert new entries for the current date works in the agenda buffer, as
5562 well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
5563 Sunrise/Sunset times, show lunar phases and to convert to other
5564 calendars, respectively. @kbd{c} can be used to switch back and forth
5565 between calendar and agenda.
5566
5567 If you are using the diary only for sexp entries and holidays, it is
5568 faster to not use the above setting, but instead to copy or even move
5569 the entries into an Org file. Org mode evaluates diary-style sexp
5570 entries, and does it faster because there is no overhead for first
5571 creating the diary display. Note that the sexp entries must start at
5572 the left margin, no white space is allowed before them. For example,
5573 the following segment of an Org file will be processed and entries
5574 will be made in the agenda:
5575
5576 @example
5577 * Birthdays and similar stuff
5578 #+CATEGORY: Holiday
5579 %%(org-calendar-holiday) ; special function for holiday names
5580 #+CATEGORY: Ann
5581 %%(diary-anniversary 14 5 1956) Arthur Dent is %d years old
5582 %%(diary-anniversary 2 10 1869) Mahatma Gandhi would be %d years old
5583 @end example
5584
5585 @subsubheading Appointment reminders
5586 @cindex @file{appt.el}
5587 @cindex appointment reminders
5588
5589 Org can interact with Emacs appointments notification facility.
5590
5591 To add all the appointments of your agenda files, use the command
5592 @code{org-agenda-to-appt}. This commands also lets you filter through
5593 the list of your appointments and add only those belonging to a specific
5594 category or matching a regular expression. See the docstring for
5595 details.
5596
5597 @node Global TODO list, Matching tags and properties, Weekly/daily agenda, Built-in agenda views
5598 @subsection The global TODO list
5599 @cindex global TODO list
5600 @cindex TODO list, global
5601
5602 The global TODO list contains all unfinished TODO items, formatted and
5603 collected into a single place.
5604
5605 @table @kbd
5606 @kindex C-c a t
5607 @item C-c a t
5608 Show the global TODO list. This collects the TODO items from all
5609 agenda files (@pxref{Agenda Views}) into a single buffer. The buffer is in
5610 @code{agenda-mode}, so there are commands to examine and manipulate
5611 the TODO entries directly from that buffer (@pxref{Agenda commands}).
5612 @kindex C-c a T
5613 @item C-c a T
5614 @cindex TODO keyword matching
5615 Like the above, but allows selection of a specific TODO keyword. You
5616 can also do this by specifying a prefix argument to @kbd{C-c a t}. With
5617 a @kbd{C-u} prefix you are prompted for a keyword, and you may also
5618 specify several keywords by separating them with @samp{|} as boolean OR
5619 operator. With a numeric prefix, the Nth keyword in
5620 @code{org-todo-keywords} is selected.
5621 @kindex r
5622 The @kbd{r} key in the agenda buffer regenerates it, and you can give
5623 a prefix argument to this command to change the selected TODO keyword,
5624 for example @kbd{3 r}. If you often need a search for a specific
5625 keyword, define a custom command for it (@pxref{Agenda dispatcher}).@*
5626 Matching specific TODO keywords can also be done as part of a tags
5627 search (@pxref{Tag searches}).
5628 @end table
5629
5630 Remote editing of TODO items means that you can change the state of a
5631 TODO entry with a single key press. The commands available in the
5632 TODO list are described in @ref{Agenda commands}.
5633
5634 @cindex sublevels, inclusion into TODO list
5635 Normally the global TODO list simply shows all headlines with TODO
5636 keywords. This list can become very long. There are two ways to keep
5637 it more compact:
5638 @itemize @minus
5639 @item
5640 Some people view a TODO item that has been @emph{scheduled} for
5641 execution (@pxref{Timestamps}) as no longer @emph{open}. Configure the
5642 variable @code{org-agenda-todo-ignore-scheduled} to exclude scheduled
5643 items from the global TODO list.
5644 @item
5645 TODO items may have sublevels to break up the task into subtasks. In
5646 such cases it may be enough to list only the highest level TODO headline
5647 and omit the sublevels from the global list. Configure the variable
5648 @code{org-agenda-todo-list-sublevels} to get this behavior.
5649 @end itemize
5650
5651 @node Matching tags and properties, Timeline, Global TODO list, Built-in agenda views
5652 @subsection Matching tags and properties
5653 @cindex matching, of tags
5654 @cindex matching, of properties
5655 @cindex tags view
5656 @cindex match view
5657
5658 If headlines in the agenda files are marked with @emph{tags}
5659 (@pxref{Tags}), you can select headlines based on the tags that apply
5660 to them and collect them into an agenda buffer.
5661
5662 @table @kbd
5663 @kindex C-c a m
5664 @item C-c a m
5665 Produce a list of all headlines that match a given set of tags. The
5666 command prompts for a selection criterion, which is a boolean logic
5667 expression with tags, like @samp{+work+urgent-withboss} or
5668 @samp{work|home} (@pxref{Tags}). If you often need a specific search,
5669 define a custom command for it (@pxref{Agenda dispatcher}).
5670 @kindex C-c a M
5671 @item C-c a M
5672 Like @kbd{C-c a m}, but only select headlines that are also TODO items
5673 and force checking subitems (see variable
5674 @code{org-tags-match-list-sublevels}). Matching specific TODO keywords
5675 together with a tags match is also possible, see @ref{Tag searches}.
5676 @end table
5677
5678 The commands available in the tags list are described in @ref{Agenda
5679 commands}.
5680
5681 @node Timeline, Keyword search, Matching tags and properties, Built-in agenda views
5682 @subsection Timeline for a single file
5683 @cindex timeline, single file
5684 @cindex time-sorted view
5685
5686 The timeline summarizes all time-stamped items from a single Org mode
5687 file in a @emph{time-sorted view}. The main purpose of this command is
5688 to give an overview over events in a project.
5689
5690 @table @kbd
5691 @kindex C-c a L
5692 @item C-c a L
5693 Show a time-sorted view of the org file, with all time-stamped items.
5694 When called with a @kbd{C-u} prefix, all unfinished TODO entries
5695 (scheduled or not) are also listed under the current date.
5696 @end table
5697
5698 @noindent
5699 The commands available in the timeline buffer are listed in
5700 @ref{Agenda commands}.
5701
5702 @node Keyword search, Stuck projects, Timeline, Built-in agenda views
5703 @subsection Keyword search
5704 @cindex keyword search
5705 @cindex searching, for keywords
5706
5707 This agenda view is a general text search facility for Org mode entries.
5708 It is particularly useful to find notes.
5709
5710 @table @kbd
5711 @kindex C-c a s
5712 @item C-c a s
5713 This is a special search that lets you select entries by keywords or
5714 regular expression, using a boolean logic. For example, the search
5715 string
5716
5717 @example
5718 +computer +wifi -ethernet -@{8\.11[bg]@}
5719 @end example
5720
5721 @noindent
5722 will search for note entries that contain the keywords @code{computer}
5723 and @code{wifi}, but not the keyword @code{ethernet}, and which are also
5724 not matched by the regular expression @code{8\.11[bg]}, meaning to
5725 exclude both 8.11b and 8.11g.
5726
5727 Note that in addition to the agenda files, this command will also search
5728 the files listed in @code{org-agenda-text-search-extra-files}.
5729 @end table
5730
5731 @node Stuck projects, , Keyword search, Built-in agenda views
5732 @subsection Stuck projects
5733
5734 If you are following a system like David Allen's GTD to organize your
5735 work, one of the ``duties'' you have is a regular review to make sure
5736 that all projects move along. A @emph{stuck} project is a project that
5737 has no defined next actions, so it will never show up in the TODO lists
5738 Org mode produces. During the review, you need to identify such
5739 projects and define next actions for them.
5740
5741 @table @kbd
5742 @kindex C-c a #
5743 @item C-c a #
5744 List projects that are stuck.
5745 @kindex C-c a !
5746 @item C-c a !
5747 Customize the variable @code{org-stuck-projects} to define what a stuck
5748 project is and how to find it.
5749 @end table
5750
5751 You almost certainly will have to configure this view before it will
5752 work for you. The built-in default assumes that all your projects are
5753 level-2 headlines, and that a project is not stuck if it has at least
5754 one entry marked with a TODO keyword TODO or NEXT or NEXTACTION.
5755
5756 Let's assume that you, in your own way of using Org mode, identify
5757 projects with a tag PROJECT, and that you use a TODO keyword MAYBE to
5758 indicate a project that should not be considered yet. Let's further
5759 assume that the TODO keyword DONE marks finished projects, and that NEXT
5760 and TODO indicate next actions. The tag @@SHOP indicates shopping and
5761 is a next action even without the NEXT tag. Finally, if the project
5762 contains the special word IGNORE anywhere, it should not be listed
5763 either. In this case you would start by identifying eligible projects
5764 with a tags/todo match @samp{+PROJECT/-MAYBE-DONE}, and then check for
5765 TODO, NEXT, @@SHOP, and IGNORE in the subtree to identify projects that
5766 are not stuck. The correct customization for this is
5767
5768 @lisp
5769 (setq org-stuck-projects
5770 '("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP")
5771 "\\<IGNORE\\>"))
5772 @end lisp
5773
5774
5775 @node Presentation and sorting, Agenda commands, Built-in agenda views, Agenda Views
5776 @section Presentation and sorting
5777 @cindex presentation, of agenda items
5778
5779 Before displaying items in an agenda view, Org mode visually prepares
5780 the items and sorts them. Each item occupies a single line. The line
5781 starts with a @emph{prefix} that contains the @emph{category}
5782 (@pxref{Categories}) of the item and other important information. You can
5783 customize the prefix using the option @code{org-agenda-prefix-format}.
5784 The prefix is followed by a cleaned-up version of the outline headline
5785 associated with the item.
5786
5787 @menu
5788 * Categories:: Not all tasks are equal
5789 * Time-of-day specifications:: How the agenda knows the time
5790 * Sorting of agenda items:: The order of things
5791 @end menu
5792
5793 @node Categories, Time-of-day specifications, Presentation and sorting, Presentation and sorting
5794 @subsection Categories
5795
5796 @cindex category
5797 The category is a broad label assigned to each agenda item. By default,
5798 the category is simply derived from the file name, but you can also
5799 specify it with a special line in the buffer, like this@footnote{For
5800 backward compatibility, the following also works: If there are several
5801 such lines in a file, each specifies the category for the text below it.
5802 The first category also applies to any text before the first CATEGORY
5803 line. However, using this method is @emph{strongly} deprecated as it is
5804 incompatible with the outline structure of the document. The correct
5805 method for setting multiple categories in a buffer is using a
5806 property.}:
5807
5808 @example
5809 #+CATEGORY: Thesis
5810 @end example
5811
5812 @noindent
5813 If you would like to have a special CATEGORY for a single entry or a
5814 (sub)tree, give the entry a @code{:CATEGORY:} property with the location
5815 as the value (@pxref{Properties and Columns}).
5816
5817 @noindent
5818 The display in the agenda buffer looks best if the category is not
5819 longer than 10 characters.
5820
5821 @node Time-of-day specifications, Sorting of agenda items, Categories, Presentation and sorting
5822 @subsection Time-of-day specifications
5823 @cindex time-of-day specification
5824
5825 Org mode checks each agenda item for a time-of-day specification. The
5826 time can be part of the time stamp that triggered inclusion into the
5827 agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}. Time
5828 ranges can be specified with two time stamps, like
5829 @c
5830 @w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
5831
5832 In the headline of the entry itself, a time(range) may also appear as
5833 plain text (like @samp{12:45} or a @samp{8:30-1pm}). If the agenda
5834 integrates the Emacs diary (@pxref{Weekly/daily agenda}), time
5835 specifications in diary entries are recognized as well.
5836
5837 For agenda display, Org mode extracts the time and displays it in a
5838 standard 24 hour format as part of the prefix. The example times in
5839 the previous paragraphs would end up in the agenda like this:
5840
5841 @example
5842 8:30-13:00 Arthur Dent lies in front of the bulldozer
5843 12:45...... Ford Prefect arrives and takes Arthur to the pub
5844 19:00...... The Vogon reads his poem
5845 20:30-22:15 Marwin escorts the Hitchhikers to the bridge
5846 @end example
5847
5848 @cindex time grid
5849 If the agenda is in single-day mode, or for the display of today, the
5850 timed entries are embedded in a time grid, like
5851
5852 @example
5853 8:00...... ------------------
5854 8:30-13:00 Arthur Dent lies in front of the bulldozer
5855 10:00...... ------------------
5856 12:00...... ------------------
5857 12:45...... Ford Prefect arrives and takes Arthur to the pub
5858 14:00...... ------------------
5859 16:00...... ------------------
5860 18:00...... ------------------
5861 19:00...... The Vogon reads his poem
5862 20:00...... ------------------
5863 20:30-22:15 Marwin escorts the Hitchhikers to the bridge
5864 @end example
5865
5866 The time grid can be turned on and off with the variable
5867 @code{org-agenda-use-time-grid}, and can be configured with
5868 @code{org-agenda-time-grid}.
5869
5870 @node Sorting of agenda items, , Time-of-day specifications, Presentation and sorting
5871 @subsection Sorting of agenda items
5872 @cindex sorting, of agenda items
5873 @cindex priorities, of agenda items
5874 Before being inserted into a view, the items are sorted. How this is
5875 done depends on the type of view.
5876 @itemize @bullet
5877 @item
5878 For the daily/weekly agenda, the items for each day are sorted. The
5879 default order is to first collect all items containing an explicit
5880 time-of-day specification. These entries will be shown at the beginning
5881 of the list, as a @emph{schedule} for the day. After that, items remain
5882 grouped in categories, in the sequence given by @code{org-agenda-files}.
5883 Within each category, items are sorted by priority (@pxref{Priorities}),
5884 which is composed of the base priority (2000 for priority @samp{A}, 1000
5885 for @samp{B}, and 0 for @samp{C}), plus additional increments for
5886 overdue scheduled or deadline items.
5887 @item
5888 For the TODO list, items remain in the order of categories, but within
5889 each category, sorting takes place according to priority
5890 (@pxref{Priorities}).
5891 @item
5892 For tags matches, items are not sorted at all, but just appear in the
5893 sequence in which they are found in the agenda files.
5894 @end itemize
5895
5896 Sorting can be customized using the variable
5897 @code{org-agenda-sorting-strategy}, and may also include criteria based on
5898 the estimated effort of an entry (@pxref{Effort estimates}).
5899
5900 @node Agenda commands, Custom agenda views, Presentation and sorting, Agenda Views
5901 @section Commands in the agenda buffer
5902 @cindex commands, in agenda buffer
5903
5904 Entries in the agenda buffer are linked back to the org file or diary
5905 file where they originate. You are not allowed to edit the agenda
5906 buffer itself, but commands are provided to show and jump to the
5907 original entry location, and to edit the org-files ``remotely'' from
5908 the agenda buffer. In this way, all information is stored only once,
5909 removing the risk that your agenda and note files may diverge.
5910
5911 Some commands can be executed with mouse clicks on agenda lines. For
5912 the other commands, the cursor needs to be in the desired line.
5913
5914 @table @kbd
5915 @tsubheading{Motion}
5916 @cindex motion commands in agenda
5917 @kindex n
5918 @item n
5919 Next line (same as @key{up} and @kbd{C-p}).
5920 @kindex p
5921 @item p
5922 Previous line (same as @key{down} and @kbd{C-n}).
5923 @tsubheading{View/Go to org file}
5924 @kindex mouse-3
5925 @kindex @key{SPC}
5926 @item mouse-3
5927 @itemx @key{SPC}
5928 Display the original location of the item in another window.
5929 @c
5930 @kindex L
5931 @item L
5932 Display original location and recenter that window.
5933 @c
5934 @kindex mouse-2
5935 @kindex mouse-1
5936 @kindex @key{TAB}
5937 @item mouse-2
5938 @itemx mouse-1
5939 @itemx @key{TAB}
5940 Go to the original location of the item in another window. Under Emacs
5941 22, @kbd{mouse-1} will also works for this.
5942 @c
5943 @kindex @key{RET}
5944 @itemx @key{RET}
5945 Go to the original location of the item and delete other windows.
5946 @c
5947 @kindex f
5948 @item f
5949 Toggle Follow mode. In Follow mode, as you move the cursor through
5950 the agenda buffer, the other window always shows the corresponding
5951 location in the org file. The initial setting for this mode in new
5952 agenda buffers can be set with the variable
5953 @code{org-agenda-start-with-follow-mode}.
5954 @c
5955 @kindex b
5956 @item b
5957 Display the entire subtree of the current item in an indirect buffer. With a
5958 numeric prefix argument N, go up to level N and then take that tree. If N is
5959 negative, go up that many levels. With a @kbd{C-u} prefix, do not remove the
5960 previously used indirect buffer.
5961 @c
5962 @kindex l
5963 @item l
5964 Toggle Logbook mode. In Logbook mode, entries that where marked DONE while
5965 logging was on (variable @code{org-log-done}) are shown in the agenda, as are
5966 entries that have been clocked on that day. You can configure the entry
5967 types that should be included in log mode using the variable
5968 @code{org-agenda-log-mode-items}. When called with a @kbd{C-u} prefix, show
5969 all possible logbook entries, including state changes. When called with two
5970 prefix args @kbd{C-u C-u}, show only logging information, nothing else.
5971 @c
5972 @kindex v
5973 @item v
5974 Toggle Archives mode. In archives mode, trees that are marked are also
5975 scanned when producing the agenda. When you call this command with a
5976 @kbd{C-u} prefix argument, even all archive files are included. To exit
5977 archives mode, press @kbd{v} again.
5978 @c
5979 @kindex R
5980 @item R
5981 Toggle Clockreport mode. In clockreport mode, the daily/weekly agenda will
5982 always show a table with the clocked times for the timespan and file scope
5983 covered by the current agenda view. The initial setting for this mode in new
5984 agenda buffers can be set with the variable
5985 @code{org-agenda-start-with-clockreport-mode}.
5986
5987 @tsubheading{Change display}
5988 @cindex display changing, in agenda
5989 @kindex o
5990 @item o
5991 Delete other windows.
5992 @c
5993 @kindex d
5994 @kindex w
5995 @kindex m
5996 @kindex y
5997 @item d w m y
5998 Switch to day/week/month/year view. When switching to day or week view,
5999 this setting becomes the default for subsequent agenda commands. Since
6000 month and year views are slow to create, they do not become the default.
6001 A numeric prefix argument may be used to jump directly to a specific day
6002 of the year, ISO week, month, or year, respectively. For example,
6003 @kbd{32 d} jumps to February 1st, @kbd{9 w} to ISO week number 9. When
6004 setting day, week, or month view, a year may be encoded in the prefix
6005 argument as well. For example, @kbd{200712 w} will jump to week 12 in
6006 2007. If such a year specification has only one or two digits, it will
6007 be mapped to the interval 1938-2037.
6008 @c
6009 @kindex D
6010 @item D
6011 Toggle the inclusion of diary entries. See @ref{Weekly/daily agenda}.
6012 @c
6013 @kindex G
6014 @item G
6015 Toggle the time grid on and off. See also the variables
6016 @code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
6017 @c
6018 @kindex r
6019 @item r
6020 Recreate the agenda buffer, for example to reflect the changes
6021 after modification of the time stamps of items with S-@key{left} and
6022 S-@key{right}. When the buffer is the global TODO list, a prefix
6023 argument is interpreted to create a selective list for a specific TODO
6024 keyword.
6025 @kindex g
6026 @item g
6027 Same as @kbd{r}.
6028 @c
6029 @kindex s
6030 @kindex C-x C-s
6031 @item s
6032 @itemx C-x C-s
6033 Save all Org buffers in the current Emacs session.
6034 @c
6035 @kindex @key{right}
6036 @item @key{right}
6037 Display the following @code{org-agenda-ndays} days. For example, if
6038 the display covers a week, switch to the following week. With prefix
6039 arg, go forward that many times @code{org-agenda-ndays} days.
6040 @c
6041 @kindex @key{left}
6042 @item @key{left}
6043 Display the previous dates.
6044 @c
6045 @kindex .
6046 @item .
6047 Go to today.
6048 @c
6049 @kindex C-c C-x C-c
6050 @item C-c C-x C-c
6051 Invoke column view (@pxref{Column view}) in the agenda buffer. The column
6052 view format is taken from the entry at point, or (if there is no entry at
6053 point), from the first entry in the agenda view. So whatever the format for
6054 that entry would be in the original buffer (taken from a property, from a
6055 @code{#+COLUMNS} line, or from the default variable
6056 @code{org-columns-default-format}), will be used in the agenda.
6057
6058 @tsubheading{Secondary filtering and query editing}
6059 @cindex filtering, by tag and effort, in agenda
6060 @cindex tag filtering, in agenda
6061 @cindex effort filtering, in agenda
6062 @cindex query editing, in agenda
6063
6064 @kindex /
6065 @item /
6066 Filter the current agenda view with respect to a tag and/or effort estimates.
6067 The difference between this and a custom agenda commands is that filtering is
6068 very fast, so that you can switch quickly between different filters without
6069 having to recreate the agenda.
6070
6071 You will be prompted for a tag selection letter. Pressing @key{TAB} at that
6072 prompt will offer use completion to select a tag (including any tags that do
6073 not have a selection character). The command then hides all entries that do
6074 not contain or inherit this tag. When called with prefix arg, remove the
6075 entries that @emph{do} have the tag. A second @kbd{/} at the prompt will
6076 turn off the filter and unhide any hidden entries. If the first key you
6077 press is either @kbd{+} or @kbd{-}, the previous filter will be narrowed by
6078 requiring or forbidding the selected additional tag. Instead of pressing
6079 @kbd{+} or @kbd{-} after @kbd{/}, you can also immediately use the @kbd{\}
6080 command.
6081
6082 In order to filter for effort estimates, you should set-up allowed
6083 efforts globally, for example
6084 @lisp
6085 (setq org-global-properties
6086 '(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))
6087 @end lisp
6088 You can then filter for an effort by first typing an operator, one of @kbd{<},
6089 @kbd{>}, and @kbd{=}, and then the one-digit index of an effort estimate in
6090 your array of allowed values, where @kbd{0} means the 10th value. The filter
6091 will then restrict to entries with effort smaller-or-equal, equal, or
6092 larger-or-equal than the selected value. If the digits 0-9 are not used as
6093 fast access keys to tags, you can also simply press the index digit directly
6094 without an operator. In this case, @kbd{<} will be assumed.
6095
6096 @kindex \
6097 @item \
6098 Narrow the current agenda filter by an additional condition. When called with
6099 prefix arg, remove the entries that @emph{do} have the tag, or that do match
6100 the effort criterion. You can achieve the same effect by pressing @kbd{+} or
6101 @kbd{-} as the first key after the @kbd{/} command.
6102
6103 @kindex [
6104 @kindex ]
6105 @kindex @{
6106 @kindex @}
6107 @item [ ] @{ @}
6108 In the @i{search view} (@pxref{Keyword search}), these keys add new search
6109 words (@kbd{[} and @kbd{]}) or new regular expressions (@kbd{@{} and
6110 @kbd{@}}) to the query string. The opening bracket/brace will add a positive
6111 search term prefixed by @samp{+}, indicating that this search term @i{must}
6112 occur/match in the entry. The closing bracket/brace will add a negative
6113 search term which @i{must not} occur/match in the entry for it to be
6114 selected.
6115
6116
6117 @tsubheading{Remote editing}
6118 @cindex remote editing, from agenda
6119
6120 @item 0-9
6121 Digit argument.
6122 @c
6123 @cindex undoing remote-editing events
6124 @cindex remote editing, undo
6125 @kindex C-_
6126 @item C-_
6127 Undo a change due to a remote editing command. The change is undone
6128 both in the agenda buffer and in the remote buffer.
6129 @c
6130 @kindex t
6131 @item t
6132 Change the TODO state of the item, both in the agenda and in the
6133 original org file.
6134 @c
6135 @kindex C-k
6136 @item C-k
6137 Delete the current agenda item along with the entire subtree belonging
6138 to it in the original Org file. If the text to be deleted remotely
6139 is longer than one line, the kill needs to be confirmed by the user. See
6140 variable @code{org-agenda-confirm-kill}.
6141 @c
6142 @kindex a
6143 @item a
6144 Toggle the ARCHIVE tag for the current headline.
6145 @c
6146 @kindex A
6147 @item A
6148 Move the subtree corresponding to the current entry to its @emph{Archive
6149 Sibling}.
6150 @c
6151 @kindex $
6152 @item $
6153 Archive the subtree corresponding to the current headline. This means the
6154 entry will be moved to the configured archive location, most likely a
6155 different file.
6156 @c
6157 @kindex T
6158 @item T
6159 Show all tags associated with the current item. Because of
6160 inheritance, this may be more than the tags listed in the line itself.
6161 @c
6162 @kindex :
6163 @item :
6164 Set tags for the current headline. If there is an active region in the
6165 agenda, change a tag for all headings in the region.
6166 @c
6167 @kindex ,
6168 @item ,
6169 Set the priority for the current item. Org mode prompts for the
6170 priority character. If you reply with @key{SPC}, the priority cookie
6171 is removed from the entry.
6172 @c
6173 @kindex P
6174 @item P
6175 Display weighted priority of current item.
6176 @c
6177 @kindex +
6178 @kindex S-@key{up}
6179 @item +
6180 @itemx S-@key{up}
6181 Increase the priority of the current item. The priority is changed in
6182 the original buffer, but the agenda is not resorted. Use the @kbd{r}
6183 key for this.
6184 @c
6185 @kindex -
6186 @kindex S-@key{down}
6187 @item -
6188 @itemx S-@key{down}
6189 Decrease the priority of the current item.
6190 @c
6191 @kindex C-c C-a
6192 @item C-c C-a
6193 Dispatcher for all command related to attachments.
6194 @c
6195 @kindex C-c C-s
6196 @item C-c C-s
6197 Schedule this item
6198 @c
6199 @kindex C-c C-d
6200 @item C-c C-d
6201 Set a deadline for this item.
6202 @c
6203 @kindex k
6204 @item k
6205 Agenda actions, to set dates for selected items to the cursor date.
6206 This command also works in the calendar! The command prompts for an
6207 additonal key:
6208 @example
6209 m @r{Mark the entry at point for action. You can also make entries}
6210 @r{in Org files with @kbd{C-c C-x C-k}.}
6211 d @r{Set the deadline of the marked entry to the date at point.}
6212 s @r{Schedule the marked entry at the date at point.}
6213 r @r{Call @code{org-remember} with the cursor date as default date.}
6214 @end example
6215 Press @kbd{r} afterwards to refresh the agenda and see the effect of the
6216 command.
6217 @c
6218 @kindex S-@key{right}
6219 @item S-@key{right}
6220 Change the time stamp associated with the current line by one day into the
6221 future. With a numeric prefix argument, change it by that many days. For
6222 example, @kbd{3 6 5 S-@key{right}} will change it by a year. The stamp is
6223 changed in the original org file, but the change is not directly reflected in
6224 the agenda buffer. Use the @kbd{r} key to update the buffer.
6225 @c
6226 @kindex S-@key{left}
6227 @item S-@key{left}
6228 Change the time stamp associated with the current line by one day
6229 into the past.
6230 @c
6231 @kindex >
6232 @item >
6233 Change the time stamp associated with the current line to today.
6234 The key @kbd{>} has been chosen, because it is the same as @kbd{S-.}
6235 on my keyboard.
6236 @c
6237 @kindex I
6238 @item I
6239 Start the clock on the current item. If a clock is running already, it
6240 is stopped first.
6241 @c
6242 @kindex O
6243 @item O
6244 Stop the previously started clock.
6245 @c
6246 @kindex X
6247 @item X
6248 Cancel the currently running clock.
6249
6250 @kindex J
6251 @item J
6252 Jump to the running clock in another window.
6253
6254 @tsubheading{Calendar commands}
6255 @cindex calendar commands, from agenda
6256 @kindex c
6257 @item c
6258 Open the Emacs calendar and move to the date at the agenda cursor.
6259 @c
6260 @item c
6261 When in the calendar, compute and show the Org mode agenda for the
6262 date at the cursor.
6263 @c
6264 @cindex diary entries, creating from agenda
6265 @kindex i
6266 @item i
6267 Insert a new entry into the diary. Prompts for the type of entry
6268 (day, weekly, monthly, yearly, anniversary, cyclic) and creates a new
6269 entry in the diary, just as @kbd{i d} etc. would do in the calendar.
6270 The date is taken from the cursor position.
6271 @c
6272 @kindex M
6273 @item M
6274 Show the phases of the moon for the three months around current date.
6275 @c
6276 @kindex S
6277 @item S
6278 Show sunrise and sunset times. The geographical location must be set
6279 with calendar variables, see documentation of the Emacs calendar.
6280 @c
6281 @kindex C
6282 @item C
6283 Convert the date at cursor into many other cultural and historic
6284 calendars.
6285 @c
6286 @kindex H
6287 @item H
6288 Show holidays for three month around the cursor date.
6289
6290 @item M-x org-export-icalendar-combine-agenda-files
6291 Export a single iCalendar file containing entries from all agenda files.
6292 This is a globally available command, and also available in the agenda menu.
6293
6294 @tsubheading{Exporting to a file}
6295 @kindex C-x C-w
6296 @item C-x C-w
6297 @cindex exporting agenda views
6298 @cindex agenda views, exporting
6299 Write the agenda view to a file. Depending on the extension of the
6300 selected file name, the view will be exported as HTML (extension
6301 @file{.html} or @file{.htm}), Postscript (extension @file{.ps}), or
6302 plain text (any other extension). Use the variable
6303 @code{org-agenda-exporter-settings} to set options for @file{ps-print}
6304 and for @file{htmlize} to be used during export.
6305
6306 @tsubheading{Quit and Exit}
6307 @kindex q
6308 @item q
6309 Quit agenda, remove the agenda buffer.
6310 @c
6311 @kindex x
6312 @cindex agenda files, removing buffers
6313 @item x
6314 Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
6315 for the compilation of the agenda. Buffers created by the user to
6316 visit org files will not be removed.
6317 @end table
6318
6319
6320 @node Custom agenda views, Agenda column view, Agenda commands, Agenda Views
6321 @section Custom agenda views
6322 @cindex custom agenda views
6323 @cindex agenda views, custom
6324
6325 Custom agenda commands serve two purposes: to store and quickly access
6326 frequently used TODO and tags searches, and to create special composite
6327 agenda buffers. Custom agenda commands will be accessible through the
6328 dispatcher (@pxref{Agenda dispatcher}), just like the default commands.
6329
6330 @menu
6331 * Storing searches:: Type once, use often
6332 * Block agenda:: All the stuff you need in a single buffer
6333 * Setting Options:: Changing the rules
6334 * Exporting Agenda Views:: Writing agendas to files
6335 * Using the agenda elsewhere:: Using agenda information in other programs
6336 @end menu
6337
6338 @node Storing searches, Block agenda, Custom agenda views, Custom agenda views
6339 @subsection Storing searches
6340
6341 The first application of custom searches is the definition of keyboard
6342 shortcuts for frequently used searches, either creating an agenda
6343 buffer, or a sparse tree (the latter covering of course only the current
6344 buffer).
6345 @kindex C-c a C
6346 Custom commands are configured in the variable
6347 @code{org-agenda-custom-commands}. You can customize this variable, for
6348 example by pressing @kbd{C-c a C}. You can also directly set it with
6349 Emacs Lisp in @file{.emacs}. The following example contains all valid
6350 search types:
6351
6352 @lisp
6353 @group
6354 (setq org-agenda-custom-commands
6355 '(("w" todo "WAITING")
6356 ("W" todo-tree "WAITING")
6357 ("u" tags "+boss-urgent")
6358 ("v" tags-todo "+boss-urgent")
6359 ("U" tags-tree "+boss-urgent")
6360 ("f" occur-tree "\\<FIXME\\>")
6361 ("h" . "HOME+Name tags searches") ; description for "h" prefix
6362 ("hl" tags "+home+Lisa")
6363 ("hp" tags "+home+Peter")
6364 ("hk" tags "+home+Kim")))
6365 @end group
6366 @end lisp
6367
6368 @noindent
6369 The initial string in each entry defines the keys you have to press
6370 after the dispatcher command @kbd{C-c a} in order to access the command.
6371 Usually this will be just a single character, but if you have many
6372 similar commands, you can also define two-letter combinations where the
6373 first character is the same in several combinations and serves as a
6374 prefix key@footnote{You can provide a description for a prefix key by
6375 inserting a cons cell with the prefix and the description.}. The second
6376 parameter is the search type, followed by the string or regular
6377 expression to be used for the matching. The example above will
6378 therefore define:
6379
6380 @table @kbd
6381 @item C-c a w
6382 as a global search for TODO entries with @samp{WAITING} as the TODO
6383 keyword
6384 @item C-c a W
6385 as the same search, but only in the current buffer and displaying the
6386 results as a sparse tree
6387 @item C-c a u
6388 as a global tags search for headlines marked @samp{:boss:} but not
6389 @samp{:urgent:}
6390 @item C-c a v
6391 as the same search as @kbd{C-c a u}, but limiting the search to
6392 headlines that are also TODO items
6393 @item C-c a U
6394 as the same search as @kbd{C-c a u}, but only in the current buffer and
6395 displaying the result as a sparse tree
6396 @item C-c a f
6397 to create a sparse tree (again: current buffer only) with all entries
6398 containing the word @samp{FIXME}
6399 @item C-c a h
6400 as a prefix command for a HOME tags search where you have to press an
6401 additional key (@kbd{l}, @kbd{p} or @kbd{k}) to select a name (Lisa,
6402 Peter, or Kim) as additional tag to match.
6403 @end table
6404
6405 @node Block agenda, Setting Options, Storing searches, Custom agenda views
6406 @subsection Block agenda
6407 @cindex block agenda
6408 @cindex agenda, with block views
6409
6410 Another possibility is the construction of agenda views that comprise
6411 the results of @emph{several} commands, each of which creates a block in
6412 the agenda buffer. The available commands include @code{agenda} for the
6413 daily or weekly agenda (as created with @kbd{C-c a a}), @code{alltodo}
6414 for the global TODO list (as constructed with @kbd{C-c a t}), and the
6415 matching commands discussed above: @code{todo}, @code{tags}, and
6416 @code{tags-todo}. Here are two examples:
6417
6418 @lisp
6419 @group
6420 (setq org-agenda-custom-commands
6421 '(("h" "Agenda and Home-related tasks"
6422 ((agenda "")
6423 (tags-todo "home")
6424 (tags "garden")))
6425 ("o" "Agenda and Office-related tasks"
6426 ((agenda "")
6427 (tags-todo "work")
6428 (tags "office")))))
6429 @end group
6430 @end lisp
6431
6432 @noindent
6433 This will define @kbd{C-c a h} to create a multi-block view for stuff
6434 you need to attend to at home. The resulting agenda buffer will contain
6435 your agenda for the current week, all TODO items that carry the tag
6436 @samp{home}, and also all lines tagged with @samp{garden}. Finally the
6437 command @kbd{C-c a o} provides a similar view for office tasks.
6438
6439 @node Setting Options, Exporting Agenda Views, Block agenda, Custom agenda views
6440 @subsection Setting options for custom commands
6441 @cindex options, for custom agenda views
6442
6443 Org mode contains a number of variables regulating agenda construction
6444 and display. The global variables define the behavior for all agenda
6445 commands, including the custom commands. However, if you want to change
6446 some settings just for a single custom view, you can do so. Setting
6447 options requires inserting a list of variable names and values at the
6448 right spot in @code{org-agenda-custom-commands}. For example:
6449
6450 @lisp
6451 @group
6452 (setq org-agenda-custom-commands
6453 '(("w" todo "WAITING"
6454 ((org-agenda-sorting-strategy '(priority-down))
6455 (org-agenda-prefix-format " Mixed: ")))
6456 ("U" tags-tree "+boss-urgent"
6457 ((org-show-following-heading nil)
6458 (org-show-hierarchy-above nil)))
6459 ("N" search ""
6460 ((org-agenda-files '("~org/notes.org"))
6461 (org-agenda-text-search-extra-files nil)))))
6462 @end group
6463 @end lisp
6464
6465 @noindent
6466 Now the @kbd{C-c a w} command will sort the collected entries only by
6467 priority, and the prefix format is modified to just say @samp{ Mixed: }
6468 instead of giving the category of the entry. The sparse tags tree of
6469 @kbd{C-c a U} will now turn out ultra-compact, because neither the
6470 headline hierarchy above the match, nor the headline following the match
6471 will be shown. The command @kbd{C-c a N} will do a text search limited
6472 to only a single file.
6473
6474 For command sets creating a block agenda,
6475 @code{org-agenda-custom-commands} has two separate spots for setting
6476 options. You can add options that should be valid for just a single
6477 command in the set, and options that should be valid for all commands in
6478 the set. The former are just added to the command entry, the latter
6479 must come after the list of command entries. Going back to the block
6480 agenda example (@pxref{Block agenda}), let's change the sorting strategy
6481 for the @kbd{C-c a h} commands to @code{priority-down}, but let's sort
6482 the results for GARDEN tags query in the opposite order,
6483 @code{priority-up}. This would look like this:
6484
6485 @lisp
6486 @group
6487 (setq org-agenda-custom-commands
6488 '(("h" "Agenda and Home-related tasks"
6489 ((agenda)
6490 (tags-todo "home")
6491 (tags "garden"
6492 ((org-agenda-sorting-strategy '(priority-up)))))
6493 ((org-agenda-sorting-strategy '(priority-down))))
6494 ("o" "Agenda and Office-related tasks"
6495 ((agenda)
6496 (tags-todo "work")
6497 (tags "office")))))
6498 @end group
6499 @end lisp
6500
6501 As you see, the values and parenthesis setting is a little complex.
6502 When in doubt, use the customize interface to set this variable - it
6503 fully supports its structure. Just one caveat: When setting options in
6504 this interface, the @emph{values} are just lisp expressions. So if the
6505 value is a string, you need to add the double quotes around the value
6506 yourself.
6507
6508
6509 @node Exporting Agenda Views, Using the agenda elsewhere, Setting Options, Custom agenda views
6510 @subsection Exporting Agenda Views
6511 @cindex agenda views, exporting
6512
6513 If you are away from your computer, it can be very useful to have a
6514 printed version of some agenda views to carry around. Org mode can
6515 export custom agenda views as plain text, HTML@footnote{You need to
6516 install Hrvoje Niksic' @file{htmlize.el}.} postscript, and iCalendar
6517 files. If you want to do this only occasionally, use the command
6518
6519 @table @kbd
6520 @kindex C-x C-w
6521 @item C-x C-w
6522 @cindex exporting agenda views
6523 @cindex agenda views, exporting
6524 Write the agenda view to a file. Depending on the extension of the
6525 selected file name, the view will be exported as HTML (extension
6526 @file{.html} or @file{.htm}), Postscript (extension @file{.ps}),
6527 iCalendar (extension @file{.ics}), or plain text (any other extension).
6528 Use the variable @code{org-agenda-exporter-settings} to
6529 set options for @file{ps-print} and for @file{htmlize} to be used during
6530 export, for example
6531
6532 @lisp
6533 (setq org-agenda-exporter-settings
6534 '((ps-number-of-columns 2)
6535 (ps-landscape-mode t)
6536 (htmlize-output-type 'css)))
6537 @end lisp
6538 @end table
6539
6540 If you need to export certain agenda views frequently, you can associate
6541 any custom agenda command with a list of output file names
6542 @footnote{If you want to store standard views like the weekly agenda
6543 or the global TODO list as well, you need to define custom commands for
6544 them in order to be able to specify file names.}. Here is an example
6545 that first does define custom commands for the agenda and the global
6546 todo list, together with a number of files to which to export them.
6547 Then we define two block agenda commands and specify file names for them
6548 as well. File names can be relative to the current working directory,
6549 or absolute.
6550
6551 @lisp
6552 @group
6553 (setq org-agenda-custom-commands
6554 '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
6555 ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
6556 ("h" "Agenda and Home-related tasks"
6557 ((agenda "")
6558 (tags-todo "home")
6559 (tags "garden"))
6560 nil
6561 ("~/views/home.html"))
6562 ("o" "Agenda and Office-related tasks"
6563 ((agenda)
6564 (tags-todo "work")
6565 (tags "office"))
6566 nil
6567 ("~/views/office.ps" "~/calendars/office.ics"))))
6568 @end group
6569 @end lisp
6570
6571 The extension of the file name determines the type of export. If it is
6572 @file{.html}, Org mode will use the @file{htmlize.el} package to convert
6573 the buffer to HTML and save it to this file name. If the extension is
6574 @file{.ps}, @code{ps-print-buffer-with-faces} is used to produce
6575 postscript output. If the extension is @file{.ics}, iCalendar export is
6576 run export over all files that were used to construct the agenda, and
6577 limit the export to entries listed in the agenda now. Any other
6578 extension produces a plain ASCII file.
6579
6580 The export files are @emph{not} created when you use one of those
6581 commands interactively because this might use too much overhead.
6582 Instead, there is a special command to produce @emph{all} specified
6583 files in one step:
6584
6585 @table @kbd
6586 @kindex C-c a e
6587 @item C-c a e
6588 Export all agenda views that have export file names associated with
6589 them.
6590 @end table
6591
6592 You can use the options section of the custom agenda commands to also
6593 set options for the export commands. For example:
6594
6595 @lisp
6596 (setq org-agenda-custom-commands
6597 '(("X" agenda ""
6598 ((ps-number-of-columns 2)
6599 (ps-landscape-mode t)
6600 (org-agenda-prefix-format " [ ] ")
6601 (org-agenda-with-colors nil)
6602 (org-agenda-remove-tags t))
6603 ("theagenda.ps"))))
6604 @end lisp
6605
6606 @noindent
6607 This command sets two options for the postscript exporter, to make it
6608 print in two columns in landscape format - the resulting page can be cut
6609 in two and then used in a paper agenda. The remaining settings modify
6610 the agenda prefix to omit category and scheduling information, and
6611 instead include a checkbox to check off items. We also remove the tags
6612 to make the lines compact, and we don't want to use colors for the
6613 black-and-white printer. Settings specified in
6614 @code{org-agenda-exporter-settings} will also apply, but the settings
6615 in @code{org-agenda-custom-commands} take precedence.
6616
6617 @noindent
6618 From the command line you may also use
6619 @example
6620 emacs -f org-batch-store-agenda-views -kill
6621 @end example
6622 @noindent
6623 or, if you need to modify some parameters@footnote{Quoting may depend on the
6624 system you use, please check th FAQ for examples.}
6625 @example
6626 emacs -eval '(org-batch-store-agenda-views \
6627 org-agenda-ndays 30 \
6628 org-agenda-start-day "2007-11-01" \
6629 org-agenda-include-diary nil \
6630 org-agenda-files (quote ("~/org/project.org")))' \
6631 -kill
6632 @end example
6633 @noindent
6634 which will create the agenda views restricted to the file
6635 @file{~/org/project.org}, without diary entries and with 30 days
6636 extent.
6637
6638 @node Using the agenda elsewhere, , Exporting Agenda Views, Custom agenda views
6639 @subsection Using agenda information outside of Org
6640 @cindex agenda, pipe
6641 @cindex Scripts, for agenda processing
6642
6643 Org provides commands to access agenda information for the command
6644 line in emacs batch mode. This extracted information can be sent
6645 directly to a printer, or it can be read by a program that does further
6646 processing of the data. The first of these commands is the function
6647 @code{org-batch-agenda}, that produces an agenda view and sends it as
6648 ASCII text to STDOUT. The command takes a single string as parameter.
6649 If the string has length 1, it is used as a key to one of the commands
6650 you have configured in @code{org-agenda-custom-commands}, basically any
6651 key you can use after @kbd{C-c a}. For example, to directly print the
6652 current TODO list, you could use
6653
6654 @example
6655 emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
6656 @end example
6657
6658 If the parameter is a string with 2 or more characters, it is used as a
6659 tags/todo match string. For example, to print your local shopping list
6660 (all items with the tag @samp{shop}, but excluding the tag
6661 @samp{NewYork}), you could use
6662
6663 @example
6664 emacs -batch -l ~/.emacs \
6665 -eval '(org-batch-agenda "+shop-NewYork")' | lpr
6666 @end example
6667
6668 @noindent
6669 You may also modify parameters on the fly like this:
6670
6671 @example
6672 emacs -batch -l ~/.emacs \
6673 -eval '(org-batch-agenda "a" \
6674 org-agenda-ndays 30 \
6675 org-agenda-include-diary nil \
6676 org-agenda-files (quote ("~/org/project.org")))' \
6677 | lpr
6678 @end example
6679
6680 @noindent
6681 which will produce a 30 day agenda, fully restricted to the Org file
6682 @file{~/org/projects.org}, not even including the diary.
6683
6684 If you want to process the agenda data in more sophisticated ways, you
6685 can use the command @code{org-batch-agenda-csv} to get a comma-separated
6686 list of values for each agenda item. Each line in the output will
6687 contain a number of fields separated by commas. The fields in a line
6688 are:
6689
6690 @example
6691 category @r{The category of the item}
6692 head @r{The headline, without TODO kwd, TAGS and PRIORITY}
6693 type @r{The type of the agenda entry, can be}
6694 todo @r{selected in TODO match}
6695 tagsmatch @r{selected in tags match}
6696 diary @r{imported from diary}
6697 deadline @r{a deadline}
6698 scheduled @r{scheduled}
6699 timestamp @r{appointment, selected by timestamp}
6700 closed @r{entry was closed on date}
6701 upcoming-deadline @r{warning about nearing deadline}
6702 past-scheduled @r{forwarded scheduled item}
6703 block @r{entry has date block including date}
6704 todo @r{The TODO keyword, if any}
6705 tags @r{All tags including inherited ones, separated by colons}
6706 date @r{The relevant date, like 2007-2-14}
6707 time @r{The time, like 15:00-16:50}
6708 extra @r{String with extra planning info}
6709 priority-l @r{The priority letter if any was given}
6710 priority-n @r{The computed numerical priority}
6711 @end example
6712
6713 @noindent
6714 Time and date will only be given if a timestamp (or deadline/scheduled)
6715 lead to the selection of the item.
6716
6717 A CSV list like this is very easy to use in a post processing script.
6718 For example, here is a Perl program that gets the TODO list from
6719 Emacs/Org and prints all the items, preceded by a checkbox:
6720
6721 @example
6722 @group
6723 #!/usr/bin/perl
6724
6725 # define the Emacs command to run
6726 $cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'";
6727
6728 # run it and capture the output
6729 $agenda = qx@{$cmd 2>/dev/null@};
6730
6731 # loop over all lines
6732 foreach $line (split(/\n/,$agenda)) @{
6733
6734 # get the individual values
6735 ($category,$head,$type,$todo,$tags,$date,$time,$extra,
6736 $priority_l,$priority_n) = split(/,/,$line);
6737
6738 # proccess and print
6739 print "[ ] $head\n";
6740 @}
6741 @end group
6742 @end example
6743
6744 @node Agenda column view, , Custom agenda views, Agenda Views
6745 @section Using column view in the agenda
6746 @cindex column view, in agenda
6747 @cindex agenda, column view
6748
6749 Column view (@pxref{Column view}) is normally used to view and edit
6750 properties embedded in the hierarchical structure of an Org file. It can be
6751 quite useful to use column view also from the agenda, where entries are
6752 collected by certain criteria.
6753
6754 @table @kbd
6755 @kindex C-c C-x C-c
6756 @item C-c C-x C-c
6757 Turn on column view in the agenda.
6758 @end table
6759
6760 To understand how to use this properly, it is important to realize that the
6761 entries in the agenda are no longer in their proper outline environment.
6762 This causes the following issues:
6763
6764 @enumerate
6765 @item
6766 Org needs to make a decision which @code{COLUMNS} format to use. Since the
6767 entries in the agenda are collected from different files, and different files
6768 may have different @code{COLUMNS} formats, this is a non-trivial problem.
6769 Org first checks if the variable @code{org-overriding-columns-format} is
6770 currently set, and if yes takes the format from there. Otherwise it takes
6771 the format associated with the first item in the agenda, or, if that item
6772 does not have a specific format (defined in a property, or in it's file), it
6773 uses @code{org-columns-default-format}.
6774 @item
6775 If any of the columns has a summary type defined (@pxref{Column attributes}),
6776 turning on column view in the agenda will visit all relevant agenda files and
6777 make sure that the computations of this property are up to date. This is
6778 also true for the special @code{CLOCKSUM} property. Org will then sum the
6779 values displayed in the agenda. In the daily/weekly agenda, the sums will
6780 cover a single day, in all other views they cover the entire block. It is
6781 vital to realize that the agenda may show the same entry @emph{twice} (for
6782 example as scheduled and as a deadline), and it may show two entries from the
6783 same hierarchy (for example a @emph{parent} and it's @emph{child}). In these
6784 cases, the summation in the agenda will lead to incorrect results because
6785 some values will count double.
6786 @item
6787 When the column view in the agenda shows the @code{CLOCKSUM}, that is always
6788 the entire clocked time for this item. So even in the daily/weekly agenda,
6789 the clocksum listed in column view may originate from times outside the
6790 current view. This has the advantage that you can compare these values with
6791 a column listing the planned total effort for a task - one of the major
6792 applications for column view in the agenda. If you want information about
6793 clocked time in the displayed period use clock table mode (press @kbd{R} in
6794 the agenda).
6795 @end enumerate
6796
6797
6798 @node Embedded LaTeX, Exporting, Agenda Views, Top
6799 @chapter Embedded LaTeX
6800 @cindex @TeX{} interpretation
6801 @cindex La@TeX{} interpretation
6802
6803 Plain ASCII is normally sufficient for almost all note taking. One
6804 exception, however, are scientific notes which need to be able to contain
6805 mathematical symbols and the occasional formula. La@TeX{}@footnote{La@TeX{}
6806 is a macro system based on Donald E. Knuth's @TeX{} system. Many of the
6807 features described here as ``La@TeX{}'' are really from @TeX{}, but for
6808 simplicity I am blurring this distinction.} is widely used to typeset
6809 scientific documents. Org mode supports embedding La@TeX{} code into its
6810 files, because many academics are used to reading La@TeX{} source code, and
6811 because it can be readily processed into images for HTML production.
6812
6813 It is not necessary to mark La@TeX{} macros and code in any special way.
6814 If you observe a few conventions, Org mode knows how to find it and what
6815 to do with it.
6816
6817 @menu
6818 * Math symbols:: TeX macros for symbols and Greek letters
6819 * Subscripts and superscripts:: Simple syntax for raising/lowering text
6820 * LaTeX fragments:: Complex formulas made easy
6821 * Processing LaTeX fragments:: Previewing LaTeX processing
6822 * CDLaTeX mode:: Speed up entering of formulas
6823 @end menu
6824
6825 @node Math symbols, Subscripts and superscripts, Embedded LaTeX, Embedded LaTeX
6826 @section Math symbols
6827 @cindex math symbols
6828 @cindex TeX macros
6829
6830 You can use La@TeX{} macros to insert special symbols like @samp{\alpha}
6831 to indicate the Greek letter, or @samp{\to} to indicate an arrow.
6832 Completion for these macros is available, just type @samp{\} and maybe a
6833 few letters, and press @kbd{M-@key{TAB}} to see possible completions.
6834 Unlike La@TeX{} code, Org mode allows these macros to be present
6835 without surrounding math delimiters, for example:
6836
6837 @example
6838 Angles are written as Greek letters \alpha, \beta and \gamma.
6839 @end example
6840
6841 During HTML export (@pxref{HTML export}), these symbols are translated
6842 into the proper syntax for HTML, for the above examples this is
6843 @samp{&alpha;} and @samp{&rarr;}, respectively. If you need such a symbol
6844 inside a word, terminate it like this: @samp{\Aacute@{@}stor}.
6845
6846 @node Subscripts and superscripts, LaTeX fragments, Math symbols, Embedded LaTeX
6847 @section Subscripts and superscripts
6848 @cindex subscript
6849 @cindex superscript
6850
6851 Just like in La@TeX{}, @samp{^} and @samp{_} are used to indicate super-
6852 and subscripts. Again, these can be used without embedding them in
6853 math-mode delimiters. To increase the readability of ASCII text, it is
6854 not necessary (but OK) to surround multi-character sub- and superscripts
6855 with curly braces. For example
6856
6857 @example
6858 The mass if the sun is M_sun = 1.989 x 10^30 kg. The radius of
6859 the sun is R_@{sun@} = 6.96 x 10^8 m.
6860 @end example
6861
6862 To avoid interpretation as raised or lowered text, you can quote
6863 @samp{^} and @samp{_} with a backslash: @samp{\_} and @samp{\^}.
6864
6865 During HTML export (@pxref{HTML export}), subscript and superscripts
6866 are surrounded with @code{<sub>} and @code{<sup>} tags, respectively.
6867
6868 @node LaTeX fragments, Processing LaTeX fragments, Subscripts and superscripts, Embedded LaTeX
6869 @section LaTeX fragments
6870 @cindex LaTeX fragments
6871
6872 With symbols, sub- and superscripts, HTML is pretty much at its end when
6873 it comes to representing mathematical formulas@footnote{Yes, there is
6874 MathML, but that is not yet fully supported by many browsers, and there
6875 is no decent converter for turning La@TeX{} or ASCII representations of
6876 formulas into MathML. So for the time being, converting formulas into
6877 images seems the way to go.}. More complex expressions need a dedicated
6878 formula processor. To this end, Org mode can contain arbitrary La@TeX{}
6879 fragments. It provides commands to preview the typeset result of these
6880 fragments, and upon export to HTML, all fragments will be converted to
6881 images and inlined into the HTML document@footnote{The La@TeX{} export
6882 will not use images for displaying La@TeX{} fragments but include these
6883 fragments directly into the La@TeX{} code.}. For this to work you
6884 need to be on a system with a working La@TeX{} installation. You also
6885 need the @file{dvipng} program, available at
6886 @url{http://sourceforge.net/projects/dvipng/}. The La@TeX{} header that
6887 will be used when processing a fragment can be configured with the
6888 variable @code{org-format-latex-header}.
6889
6890 La@TeX{} fragments don't need any special marking at all. The following
6891 snippets will be identified as La@TeX{} source code:
6892 @itemize @bullet
6893 @item
6894 Environments of any kind. The only requirement is that the
6895 @code{\begin} statement appears on a new line, preceded by only
6896 whitespace.
6897 @item
6898 Text within the usual La@TeX{} math delimiters. To avoid conflicts with
6899 currency specifications, single @samp{$} characters are only recognized
6900 as math delimiters if the enclosed text contains at most two line breaks,
6901 is directly attached to the @samp{$} characters with no whitespace in
6902 between, and if the closing @samp{$} is followed by whitespace or
6903 punctuation. For the other delimiters, there is no such restriction, so
6904 when in doubt, use @samp{\(...\)} as inline math delimiters.
6905 @end itemize
6906
6907 @noindent For example:
6908
6909 @example
6910 \begin@{equation@} % arbitrary environments,
6911 x=\sqrt@{b@} % even tables, figures
6912 \end@{equation@} % etc
6913
6914 If $a^2=b$ and \( b=2 \), then the solution must be
6915 either $$ a=+\sqrt@{2@} $$ or \[ a=-\sqrt@{2@} \].
6916 @end example
6917
6918 @noindent
6919 If you need any of the delimiter ASCII sequences for other purposes, you
6920 can configure the option @code{org-format-latex-options} to deselect the
6921 ones you do not wish to have interpreted by the La@TeX{} converter.
6922
6923 @node Processing LaTeX fragments, CDLaTeX mode, LaTeX fragments, Embedded LaTeX
6924 @section Processing LaTeX fragments
6925 @cindex LaTeX fragments, preview
6926
6927 La@TeX{} fragments can be processed to produce a preview images of the
6928 typeset expressions:
6929
6930 @table @kbd
6931 @kindex C-c C-x C-l
6932 @item C-c C-x C-l
6933 Produce a preview image of the La@TeX{} fragment at point and overlay it
6934 over the source code. If there is no fragment at point, process all
6935 fragments in the current entry (between two headlines). When called
6936 with a prefix argument, process the entire subtree. When called with
6937 two prefix arguments, or when the cursor is before the first headline,
6938 process the entire buffer.
6939 @kindex C-c C-c
6940 @item C-c C-c
6941 Remove the overlay preview images.
6942 @end table
6943
6944 During HTML export (@pxref{HTML export}), all La@TeX{} fragments are
6945 converted into images and inlined into the document if the following
6946 setting is active:
6947
6948 @lisp
6949 (setq org-export-with-LaTeX-fragments t)
6950 @end lisp
6951
6952 @node CDLaTeX mode, , Processing LaTeX fragments, Embedded LaTeX
6953 @section Using CDLaTeX to enter math
6954 @cindex CDLaTeX
6955
6956 CDLaTeX mode is a minor mode that is normally used in combination with a
6957 major La@TeX{} mode like AUCTeX in order to speed-up insertion of
6958 environments and math templates. Inside Org mode, you can make use of
6959 some of the features of CDLaTeX mode. You need to install
6960 @file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
6961 AUCTeX) from @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
6962 Don't use CDLaTeX mode itself under Org mode, but use the light
6963 version @code{org-cdlatex-mode} that comes as part of Org mode. Turn it
6964 on for the current buffer with @code{M-x org-cdlatex-mode}, or for all
6965 Org files with
6966
6967 @lisp
6968 (add-hook 'org-mode-hook 'turn-on-org-cdlatex)
6969 @end lisp
6970
6971 When this mode is enabled, the following features are present (for more
6972 details see the documentation of CDLaTeX mode):
6973 @itemize @bullet
6974 @kindex C-c @{
6975 @item
6976 Environment templates can be inserted with @kbd{C-c @{}.
6977 @item
6978 @kindex @key{TAB}
6979 The @key{TAB} key will do template expansion if the cursor is inside a
6980 La@TeX{} fragment@footnote{Org mode has a method to test if the cursor is
6981 inside such a fragment, see the documentation of the function
6982 @code{org-inside-LaTeX-fragment-p}.}. For example, @key{TAB} will
6983 expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
6984 correctly inside the first brace. Another @key{TAB} will get you into
6985 the second brace. Even outside fragments, @key{TAB} will expand
6986 environment abbreviations at the beginning of a line. For example, if
6987 you write @samp{equ} at the beginning of a line and press @key{TAB},
6988 this abbreviation will be expanded to an @code{equation} environment.
6989 To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help}.
6990 @item
6991 @kindex _
6992 @kindex ^
6993 Pressing @kbd{_} and @kbd{^} inside a La@TeX{} fragment will insert these
6994 characters together with a pair of braces. If you use @key{TAB} to move
6995 out of the braces, and if the braces surround only a single character or
6996 macro, they are removed again (depending on the variable
6997 @code{cdlatex-simplify-sub-super-scripts}).
6998 @item
6999 @kindex `
7000 Pressing the backquote @kbd{`} followed by a character inserts math
7001 macros, also outside La@TeX{} fragments. If you wait more than 1.5 seconds
7002 after the backquote, a help window will pop up.
7003 @item
7004 @kindex '
7005 Pressing the normal quote @kbd{'} followed by another character modifies
7006 the symbol before point with an accent or a font. If you wait more than
7007 1.5 seconds after the backquote, a help window will pop up. Character
7008 modification will work only inside La@TeX{} fragments, outside the quote
7009 is normal.
7010 @end itemize
7011
7012 @node Exporting, Publishing, Embedded LaTeX, Top
7013 @chapter Exporting
7014 @cindex exporting
7015
7016 Org mode documents can be exported into a variety of other formats. For
7017 printing and sharing of notes, ASCII export produces a readable and
7018 simple version of an Org file. HTML export allows you to publish a
7019 notes file on the web, while the XOXO format provides a solid base for
7020 exchange with a broad range of other applications. La@TeX{} export lets
7021 you use Org mode and its structured editing functions to easily create
7022 La@TeX{} files. To incorporate entries with associated times like
7023 deadlines or appointments into a desktop calendar program like iCal,
7024 Org mode can also produce extracts in the iCalendar format. Currently
7025 Org mode only supports export, not import of these different formats.
7026
7027 @menu
7028 * Markup rules:: Which structures are recognized?
7029 * Selective export:: Using tags to select and exclude trees
7030 * Export options:: Per-file export settings
7031 * The export dispatcher:: How to access exporter commands
7032 * ASCII export:: Exporting to plain ASCII
7033 * HTML export:: Exporting to HTML
7034 * LaTeX and PDF export:: Exporting to LaTeX, and processing to PDF
7035 * XOXO export:: Exporting to XOXO
7036 * iCalendar export:: Exporting in iCalendar format
7037 @end menu
7038
7039 @node Markup rules, Selective export, Exporting, Exporting
7040 @section Markup rules
7041
7042 When exporting Org mode documents, the exporter tries to reflect the
7043 structure of the document as accurately as possible in the back-end. Since
7044 export targets like HTML or La@TeX{} allow much richer formatting, Org mode
7045 has rules how to prepare text for rich export. This section summarizes the
7046 markup rule used in an Org mode buffer.
7047
7048 @menu
7049 * Document title:: How the document title is determined
7050 * Headings and sections:: The main structure of the exported document
7051 * Table of contents:: If, where, how to create a table of contents
7052 * Initial text:: Text before the first headline
7053 * Lists:: Plain lists are exported
7054 * Paragraphs:: What determines beginning and ending
7055 * Literal examples:: Source code and other examples
7056 * Include files:: Include the contents of a file during export
7057 * Tables exported:: Tables are exported richly
7058 * Footnotes:: Numbers like [1]
7059 * Emphasis and monospace:: To bold or not to bold
7060 * TeX macros and LaTeX fragments:: Create special, rich export.
7061 * Horizontal rules:: A line across the page
7062 * Comment lines:: Some lines will not be exported
7063 @end menu
7064
7065 @node Document title, Headings and sections, Markup rules, Markup rules
7066 @subheading Document title
7067 @cindex document title, markup rules
7068
7069 @noindent
7070 The title of the exported document is taken from the special line
7071
7072 @example
7073 #+TITLE: This is the title of the document
7074 @end example
7075
7076 @noindent
7077 If this line does not exist, the title is derived from the first non-empty,
7078 non-comment line in the buffer. If no such line exists, or if you have
7079 turned off exporting of the text before the first headline (see below), the
7080 title will be the file name without extension.
7081
7082 If you are exporting only a subtree by marking is as the region, the heading
7083 of the subtree will become the title of the document. If the subtree has a
7084 property @code{EXPORT_TITLE}, that will take precedence.
7085
7086 @node Headings and sections, Table of contents, Document title, Markup rules
7087 @subheading Headings and sections
7088 @cindex headings and sections, markup rules
7089
7090 The outline structure of the document as described in @ref{Document
7091 Structure} forms the basis for defining sections of the exported document.
7092 However, since the outline structure is also used for (for example) lists of
7093 tasks, only the first three outline levels will be used as headings. Deeper
7094 levels will become itemized lists. You can change the location of this
7095 switch, globally by setting the variable @code{org-headline-levels}, or on a
7096 per file basis with a line
7097
7098 @example
7099 #+OPTIONS: H:4
7100 @end example
7101
7102 @node Table of contents, Initial text, Headings and sections, Markup rules
7103 @subheading Table of contents
7104 @cindex table of contents, markup rules
7105
7106 The table of contents is normally inserted directly before the first headline
7107 of the file. If you would like to get it to a different location, insert the
7108 string @code{[TABLE-OF-CONTENTS]} on a line by itself at the desired
7109 location. The depth of the table of contents is by default the same as the
7110 number of headline levels, but you can choose a smaller number or turn off
7111 the table of contents entirely by configuring the variable
7112 @code{org-export-with-toc}, or on a per-file basis with a line like
7113
7114 @example
7115 #+OPTIONS: toc:2 (only to two levels in TOC)
7116 #+OPTIONS: toc:nil (no TOC at all)
7117 @end example
7118
7119 @node Initial text, Lists, Table of contents, Markup rules
7120 @subheading Text before the first headline
7121 @cindex text before first headline, markup rules
7122 @cindex #+TEXT
7123
7124 Org mode normally exports the text before the first headline, and even uses
7125 the first line as the document title. The text will be fully marked up. If
7126 you need to include literal HTML or La@TeX{} code, use the special constructs
7127 described below in the sections for the individual exporters.
7128
7129 Some people like to use the space before the first headline for setup and
7130 internal links and therefore would like to control the exported text before
7131 the first headline in a different way. You can do so by setting the variable
7132 @code{org-export-skip-text-before-1st-heading} to @code{t}. On a per-file
7133 basis, you can get the same effect with @samp{#+OPTIONS: skip:t}.
7134
7135 @noindent
7136 If you still want to have some text before the first headline, use the
7137 @code{#+TEXT} construct:
7138
7139 @example
7140 #+OPTIONS: skip:t
7141 #+TEXT: This text will go before the *first* headline.
7142 #+TEXT: [TABLE-OF-CONTENTS]
7143 #+TEXT: This goes between the table of contents and the first headline
7144 @end example
7145
7146 @node Lists, Paragraphs, Initial text, Markup rules
7147 @subheading Lists
7148 @cindex lists, markup rules
7149
7150 Plain lists as described in @ref{Plain lists} are translated to the back-ends
7151 syntax for such lists. Most back-ends support unordered, ordered, and
7152 description lists.
7153
7154 @node Paragraphs, Literal examples, Lists, Markup rules
7155 @subheading Paragraphs, line breaks, and quoting
7156 @cindex paragraphs, markup rules
7157
7158 Paragraphs are separated by at least one empty line. If you need to enforce
7159 a line break within a paragraph, use @samp{\\} at the end of a line.
7160
7161 To keep the line breaks in a region, but otherwise use normal formatting, you
7162 can use this construct, which can also be used to format poetry.
7163
7164 @example
7165 #+BEGIN_VERSE
7166 Great clouds overhead
7167 Tiny black birds rise and fall
7168 Snow covers Emacs
7169
7170 -- AlexSchroeder
7171 #+END_VERSE
7172 @end example
7173
7174 When quoting a passage from another document, it is customary to format this
7175 as a paragraph that is indented on both the left and the right margin. You
7176 can include quotations in Org mode documents like this:
7177
7178 @example
7179 #+BEGIN_QUOTE
7180 Everything should be made as simple as possible,
7181 but not any simpler -- Albert Einstein
7182 #+END_QUOTE
7183 @end example
7184
7185
7186 @node Literal examples, Include files, Paragraphs, Markup rules
7187 @subheading Literal examples
7188 @cindex literal examples, markup rules
7189
7190 You can include literal examples that should not be subjected to
7191 markup. Such examples will be typeset in monospace, so this is well suited
7192 for source code and similar examples.
7193 @cindex #+BEGIN_EXAMPLE
7194
7195 @example
7196 #+BEGIN_EXAMPLE
7197 Some example from a text file.
7198 #+END_EXAMPLE
7199 @end example
7200
7201 For simplicity when using small examples, you can also start the example
7202 lines with a colon:
7203
7204 @example
7205 : Some example from a text file.
7206 @end example
7207
7208 @cindex formatting source code, markup rules
7209 If the example is source code from a programming language, or any other text
7210 that can be marked up by font-lock in Emacs, you can ask for the example to
7211 look like the fontified Emacs buffer@footnote{Currently this works only for
7212 the HTML back-end, and requires the @file{htmlize.el} package version 1.34 or
7213 later.}. This is done with the @samp{src} block, where you also need to
7214 specify the name of the major mode that should be used to fontify the
7215 example:
7216 @cindex #+BEGIN_SRC
7217
7218 @example
7219 #+BEGIN_SRC emacs-lisp
7220 (defun org-xor (a b)
7221 "Exclusive or."
7222 (if a (not b) b))
7223 #+END_SRC
7224 @end example
7225
7226 @table @kbd
7227 @kindex C-c '
7228 @item C-c '
7229 Edit the source code example at point in its native mode. This works by
7230 switching to an indirect buffer, narrowing the buffer and switching to the
7231 other mode. You need to exit by pressing @kbd{C-c '} again@footnote{Upon
7232 exit, lines starting with @samp{*} or @samp{#} will get a comma prepended, to
7233 keep them from being interpreted by Org as outline nodes or special
7234 comments. These commas will be striped for editing with @kbd{C-c '}, and
7235 also for export.}. Fixed-width
7236 regions (where each line starts with a colon followed by a space) will be
7237 edited using @code{artist-mode}@footnote{You may select a different-mode with
7238 the variable @code{org-edit-fixed-width-region-mode}.} to allow creating
7239 ASCII drawings easily. Using this command in an empty line will create a new
7240 fixed-width region.
7241 @end table
7242
7243
7244 @node Include files, Tables exported, Literal examples, Markup rules
7245 @subheading Include files
7246 @cindex include files, markup rules
7247
7248 During export, you can include the content of another file. For example, to
7249 include your .emacs file, you could use:
7250 @cindex #+INCLUDE
7251
7252 @example
7253 #+INCLUDE: "~/.emacs" src emacs-lisp
7254 @end example
7255
7256 The optional second and third parameter are the markup (@samp{quote},
7257 @samp{example}, or @samp{src}), and, if the markup is @samp{src}, the
7258 language for formatting the contents. The markup is optional, if it is not
7259 given, the text will be assumed to be in Org mode format and will be
7260 processed normally. The include line will also allow additional keyword
7261 parameters @code{:prefix1} and @code{:prefix} to specify prefixes for the
7262 first line and for each following line. For example, to include a file as an
7263 item, use
7264
7265 @example
7266 #+INCLUDE: "~/snippets/xx" :prefix1 " + " :prefix " "
7267 @end example
7268
7269 @table @kbd
7270 @kindex C-c '
7271 @item C-c '
7272 Visit the include file at point.
7273 @end table
7274
7275 @node Tables exported, Footnotes, Include files, Markup rules
7276 @subheading Tables
7277 @cindex tables, markup rules
7278
7279 Both the native Org mode tables (@pxref{Tables}) and tables formatted with
7280 the @file{table.el} package will be exported properly. For Org mode tables,
7281 the lines before the first horizontal separator line will become table header
7282 lines.
7283
7284 @node Footnotes, Emphasis and monospace, Tables exported, Markup rules
7285 @subheading Footnotes
7286 @cindex footnotes, markup rules
7287 @cindex @file{footnote.el}
7288
7289 @kindex C-c !
7290 Numbers in square brackets are treated as footnote markers, and lines
7291 starting with such a marker are interpreted as the footnote itself. You can
7292 use the Emacs package @file{footnote.el} to create footnotes@footnote{The
7293 @file{footnote} package uses @kbd{C-c !} to invoke its commands. This
7294 binding conflicts with the Org mode command for inserting inactive time
7295 stamps. You could use the variable @code{footnote-prefix} to switch
7296 footnotes commands to another key. Or, if you are too used to this binding,
7297 you could use @code{org-replace-disputed-keys} and @code{org-disputed-keys}
7298 to change the settings in Org.}. For example:
7299
7300 @example
7301 The Org homepage[1] now looks a lot better than it used to.
7302
7303 [1] The link is: http://orgmode.org
7304 @end example
7305
7306 @node Emphasis and monospace, TeX macros and LaTeX fragments, Footnotes, Markup rules
7307 @subheading Emphasis and monospace
7308
7309 @cindex underlined text, markup rules
7310 @cindex bold text, markup rules
7311 @cindex italic text, markup rules
7312 @cindex verbatim text, markup rules
7313 @cindex code text, markup rules
7314 @cindex strike-through text, markup rules
7315 You can make words @b{*bold*}, @i{/italic/}, _underlined_, @code{=code=}
7316 and @code{~verbatim~}, and, if you must, @samp{+strike-through+}. Text
7317 in the code and verbatim string is not processed for Org mode specific
7318 syntax, it is exported verbatim.
7319
7320 @node TeX macros and LaTeX fragments, Horizontal rules, Emphasis and monospace, Markup rules
7321 @subheading @TeX{} macros and La@TeX{} fragments
7322 @cindex LaTeX fragments, markup rules
7323 @cindex TeX macros, markup rules
7324 @cindex HTML entities
7325 @cindex LaTeX entities
7326
7327 A @TeX{}-like syntax is used to specify special characters. Where possible,
7328 these will be transformed into the native format of the exporter back-end.
7329 Strings like @code{\alpha} will be exported as @code{&alpha;} in the HTML
7330 output, and as @code{$\alpha$} in the La@TeX{} output. Similarly,
7331 @code{\nbsp} will become @code{&nbsp;} in HTML and @code{~} in La@TeX{}.
7332 This applies for a large number of entities, with names taken from both HTML
7333 and La@TeX{}, see the variable @code{org-html-entities} for the complete
7334 list. If you are unsure about a name, use @kbd{M-@key{TAB}} for completion
7335 after having types the backslash and maybe a few characters
7336 (@pxref{Completion}).
7337
7338 La@TeX{} fragments are converted into images for HTML export, and they are
7339 written literally into the La@TeX{} export. See also @ref{Embedded LaTeX}.
7340
7341 Finally, @samp{\-} is treated as a shy hyphen, and @samp{--}, @samp{---}, and
7342 @samp{...} are all converted into special commands creating hyphens of
7343 different lengths or a compact set of dots.
7344
7345 @node Horizontal rules, Comment lines, TeX macros and LaTeX fragments, Markup rules
7346 @subheading Horizontal rules
7347 @cindex horizontal rules, markup rules
7348 A line consisting of only dashes, and at least 5 of them, will be
7349 exported as a horizontal line (@samp{<hr/>} in HTML).
7350
7351 @node Comment lines, , Horizontal rules, Markup rules
7352 @subheading Comment lines
7353 @cindex comment lines
7354 @cindex exporting, not
7355
7356 Lines starting with @samp{#} in column zero are treated as comments and will
7357 never be exported. Also entire subtrees starting with the word
7358 @samp{COMMENT} will never be exported. Finally, regions surrounded by
7359 @samp{#+BEGIN_COMMENT} ... @samp{#+END_COMMENT} will not be exported.
7360
7361 @table @kbd
7362 @kindex C-c ;
7363 @item C-c ;
7364 Toggle the COMMENT keyword at the beginning of an entry.
7365 @end table
7366
7367 @node Selective export, Export options, Markup rules, Exporting
7368 @section Selective export
7369 @cindex export, selective by tags
7370
7371 You may use tags to select the parts of a document that should be exported,
7372 or to exclude parts from export. This behavior is governed by two variables:
7373 @code{org-export-select-tags} and @code{org-export-exclude-tags}.
7374
7375 Org first checks if any of the @emph{select} tags is present in the buffer.
7376 If yes, all trees that do not carry one of these tags will be excluded. If a
7377 selected tree is a subtree, the heading hierarchy above it will also be
7378 selected for export, but not the text below those headings.
7379
7380 @noindent
7381 If none of the select tags is found, the whole buffer will be selected for
7382 export.
7383
7384 @noindent
7385 Finally, all subtrees that are marked by any of the @emph{exclude} tags will
7386 be removed from the export buffer.
7387
7388 @node Export options, The export dispatcher, Selective export, Exporting
7389 @section Export options
7390 @cindex options, for export
7391
7392 @cindex completion, of option keywords
7393 The exporter recognizes special lines in the buffer which provide
7394 additional information. These lines may be put anywhere in the file.
7395 The whole set of lines can be inserted into the buffer with @kbd{C-c
7396 C-e t}. For individual lines, a good way to make sure the keyword is
7397 correct is to type @samp{#+} and then use @kbd{M-@key{TAB}} completion
7398 (@pxref{Completion}).
7399
7400 @table @kbd
7401 @kindex C-c C-e t
7402 @item C-c C-e t
7403 Insert template with export options, see example below.
7404 @end table
7405
7406 @cindex #+TITLE:
7407 @cindex #+AUTHOR:
7408 @cindex #+DATE:
7409 @cindex #+EMAIL:
7410 @cindex #+LANGUAGE:
7411 @cindex #+TEXT:
7412 @cindex #+OPTIONS:
7413 @cindex #+LINK_UP:
7414 @cindex #+LINK_HOME:
7415 @cindex #+EXPORT_SELECT_TAGS:
7416 @cindex #+EXPORT_EXCLUDE_TAGS:
7417 @example
7418 #+TITLE: the title to be shown (default is the buffer name)
7419 #+AUTHOR: the author (default taken from @code{user-full-name})
7420 #+DATE: A date, fixed, of a format string for @code{format-time-string}
7421 #+EMAIL: his/her email address (default from @code{user-mail-address})
7422 #+LANGUAGE: language for HTML, e.g. @samp{en} (@code{org-export-default-language})
7423 #+TEXT: Some descriptive text to be inserted at the beginning.
7424 #+TEXT: Several lines may be given.
7425 #+OPTIONS: H:2 num:t toc:t \n:nil @@:t ::t |:t ^:t f:t TeX:t ...
7426 #+LINK_UP: the ``up'' link of an exported page
7427 #+LINK_HOME: the ``home'' link of an exported page
7428 #+EXPORT_SELECT_TAGS: Tags that select a tree for export
7429 #+EXPORT_EXCLUDE_TAGS: Tags that exclude a tree from export
7430 @end example
7431
7432 @noindent
7433 The OPTIONS line is a compact@footnote{If you want to configure many options
7434 this way, you can use several OPTIONS lines.} form to specify export settings. Here
7435 you can:
7436 @cindex headline levels
7437 @cindex section-numbers
7438 @cindex table of contents
7439 @cindex line-break preservation
7440 @cindex quoted HTML tags
7441 @cindex fixed-width sections
7442 @cindex tables
7443 @cindex @TeX{}-like syntax for sub- and superscripts
7444 @cindex footnotes
7445 @cindex special strings
7446 @cindex emphasized text
7447 @cindex @TeX{} macros
7448 @cindex La@TeX{} fragments
7449 @cindex author info, in export
7450 @cindex time info, in export
7451 @example
7452 H: @r{set the number of headline levels for export}
7453 num: @r{turn on/off section-numbers}
7454 toc: @r{turn on/off table of contents, or set level limit (integer)}
7455 \n: @r{turn on/off line-break-preservation}
7456 @@: @r{turn on/off quoted HTML tags}
7457 :: @r{turn on/off fixed-width sections}
7458 |: @r{turn on/off tables}
7459 ^: @r{turn on/off @TeX{}-like syntax for sub- and superscripts. If}
7460 @r{you write "^:@{@}", @code{a_@{b@}} will be interpreted, but}
7461 @r{the simple @code{a_b} will be left as it is.}
7462 -: @r{turn on/off conversion of special strings.}
7463 f: @r{turn on/off footnotes like this[1].}
7464 *: @r{turn on/off emphasized text (bold, italic, underlined)}
7465 TeX: @r{turn on/off simple @TeX{} macros in plain text}
7466 LaTeX: @r{turn on/off La@TeX{} fragments}
7467 skip: @r{turn on/off skipping the text before the first heading}
7468 author: @r{turn on/off inclusion of author name/email into exported file}
7469 creator: @r{turn on/off inclusion of creator info into exported file}
7470 timestamp: @r{turn on/off inclusion creation time into exported file}
7471 d: @r{turn on/off inclusion of drawers}
7472 @end example
7473
7474 These options take effect in both the HTML and La@TeX{} export, except
7475 for @code{TeX} and @code{LaTeX}, which are respectively @code{t} and
7476 @code{nil} for the La@TeX{} export.
7477
7478 When exporting only a single subtree by selecting it with @kbd{C-c @@} before
7479 calling an export command, the subtree can overrule some of the file's export
7480 settings with properties @code{EXPORT_FILE_NAME}, @code{EXPORT_TITLE},
7481 @code{EXPORT_TEXT}, and @code{EXPORT_OPTIONS}.
7482
7483 @node The export dispatcher, ASCII export, Export options, Exporting
7484 @section The export dispatcher
7485 @cindex dispatcher, for export commands
7486
7487 All export commands can be reached using the export dispatcher, which is a
7488 prefix key that prompts for an additional key specifying the command.
7489 Normally the entire file is exported, but if there is an active region that
7490 contains one outline tree, the first heading is used as document title and
7491 the subtrees are exported.
7492
7493 @table @kbd
7494 @kindex C-c C-e
7495 @item C-c C-e
7496 Dispatcher for export and publishing commands. Displays a help-window
7497 listing the additional key(s) needed to launch an export or publishing
7498 command. The prefix arg is passed through to the exporter. A double prefix
7499 @kbd{C-u C-u} causes most commands to be executed in the background, in a
7500 separate emacs process@footnote{To make this behavior the default, customize
7501 the variable @code{org-export-run-in-background}.}.
7502 @kindex C-c C-e v
7503 @item C-c C-e v
7504 Like @kbd{C-c C-e}, but only export the text that is currently visible
7505 (i.e. not hidden by outline visibility).
7506 @kindex C-u C-u C-c C-e
7507 @item C-u C-u C-c C-e
7508 Call an the exporter, but reverse the setting of
7509 @code{org-export-run-in-background}, i.e. request background processing if
7510 not set, or force processing in the current Emacs process if st.
7511 @end table
7512
7513 @node ASCII export, HTML export, The export dispatcher, Exporting
7514 @section ASCII export
7515 @cindex ASCII export
7516
7517 ASCII export produces a simple and very readable version of an Org mode
7518 file.
7519
7520 @cindex region, active
7521 @cindex active region
7522 @cindex Transient mark mode
7523 @table @kbd
7524 @kindex C-c C-e a
7525 @item C-c C-e a
7526 Export as ASCII file. For an org file @file{myfile.org}, the ASCII file
7527 will be @file{myfile.txt}. The file will be overwritten without
7528 warning. If there is an active region, only the region will be
7529 exported. If the selected region is a single tree@footnote{To select the
7530 current subtree, use @kbd{C-c @@}.}, the tree head will
7531 become the document title. If the tree head entry has or inherits an
7532 @code{EXPORT_FILE_NAME} property, that name will be used for the
7533 export.
7534 @kindex C-c C-e v a
7535 @item C-c C-e v a
7536 Export only the visible part of the document.
7537 @end table
7538
7539 @cindex headline levels, for exporting
7540 In the exported version, the first 3 outline levels will become
7541 headlines, defining a general document structure. Additional levels
7542 will be exported as itemized lists. If you want that transition to occur
7543 at a different level, specify it with a prefix argument. For example,
7544
7545 @example
7546 @kbd{C-1 C-c C-e a}
7547 @end example
7548
7549 @noindent
7550 creates only top level headlines and does the rest as items. When
7551 headlines are converted to items, the indentation of the text following
7552 the headline is changed to fit nicely under the item. This is done with
7553 the assumption that the first body line indicates the base indentation of
7554 the body text. Any indentation larger than this is adjusted to preserve
7555 the layout relative to the first line. Should there be lines with less
7556 indentation than the first, these are left alone.
7557
7558 @node HTML export, LaTeX and PDF export, ASCII export, Exporting
7559 @section HTML export
7560 @cindex HTML export
7561
7562 Org mode contains an HTML (XHTML 1.0 strict) exporter with extensive
7563 HTML formatting, in ways similar to John Grubers @emph{markdown}
7564 language, but with additional support for tables.
7565
7566 @menu
7567 * HTML Export commands:: How to invoke HTML export
7568 * Quoting HTML tags:: Using direct HTML in Org mode
7569 * Links:: Transformation of links for HTML
7570 * Images:: How to include images
7571 * CSS support:: Changing the appearance of the output
7572 * Javascript support:: Info and Folding in a web browser
7573 @end menu
7574
7575 @node HTML Export commands, Quoting HTML tags, HTML export, HTML export
7576 @subsection HTML export commands
7577
7578 @cindex region, active
7579 @cindex active region
7580 @cindex Transient mark mode
7581 @table @kbd
7582 @kindex C-c C-e h
7583 @item C-c C-e h
7584 Export as HTML file @file{myfile.html}. For an org file @file{myfile.org},
7585 the ASCII file will be @file{myfile.html}. The file will be overwritten
7586 without warning. If there is an active region, only the region will be
7587 exported. If the selected region is a single tree@footnote{To select the
7588 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
7589 title. If the tree head entry has or inherits an @code{EXPORT_FILE_NAME}
7590 property, that name will be used for the export.
7591 @kindex C-c C-e b
7592 @item C-c C-e b
7593 Export as HTML file and immediately open it with a browser.
7594 @kindex C-c C-e H
7595 @item C-c C-e H
7596 Export to a temporary buffer, do not create a file.
7597 @kindex C-c C-e R
7598 @item C-c C-e R
7599 Export the active region to a temporary buffer. With a prefix argument, do
7600 not produce the file header and footer, but just the plain HTML section for
7601 the region. This is good for cut-and-paste operations.
7602 @kindex C-c C-e v h
7603 @kindex C-c C-e v b
7604 @kindex C-c C-e v H
7605 @kindex C-c C-e v R
7606 @item C-c C-e v h
7607 @item C-c C-e v b
7608 @item C-c C-e v H
7609 @item C-c C-e v R
7610 Export only the visible part of the document.
7611 @item M-x org-export-region-as-html
7612 Convert the region to HTML under the assumption that it was Org mode
7613 syntax before. This is a global command that can be invoked in any
7614 buffer.
7615 @item M-x org-replace-region-by-HTML
7616 Replace the active region (assumed to be in Org mode syntax) by HTML
7617 code.
7618 @end table
7619
7620 @cindex headline levels, for exporting
7621 In the exported version, the first 3 outline levels will become headlines,
7622 defining a general document structure. Additional levels will be exported as
7623 itemized lists. If you want that transition to occur at a different level,
7624 specify it with a numeric prefix argument. For example,
7625
7626 @example
7627 @kbd{C-2 C-c C-e b}
7628 @end example
7629
7630 @noindent
7631 creates two levels of headings and does the rest as items.
7632
7633 @node Quoting HTML tags, Links, HTML Export commands, HTML export
7634 @subsection Quoting HTML tags
7635
7636 Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
7637 @samp{&gt;} in HTML export. If you want to include simple HTML tags
7638 which should be interpreted as such, mark them with @samp{@@} as in
7639 @samp{@@<b>bold text@@</b>}. Note that this really works only for
7640 simple tags. For more extensive HTML that should be copied verbatim to
7641 the exported file use either
7642
7643 @example
7644 #+HTML: Literal HTML code for export
7645 @end example
7646
7647 @noindent or
7648 @cindex #+BEGIN_HTML
7649
7650 @example
7651 #+BEGIN_HTML
7652 All lines between these markers are exported literally
7653 #+END_HTML
7654 @end example
7655
7656
7657 @node Links, Images, Quoting HTML tags, HTML export
7658 @subsection Links
7659
7660 @cindex links, in HTML export
7661 @cindex internal links, in HTML export
7662 @cindex external links, in HTML export
7663 Internal links (@pxref{Internal links}) will continue to work in HTML
7664 files only if they match a dedicated @samp{<<target>>}. Automatic links
7665 created by radio targets (@pxref{Radio targets}) will also work in the
7666 HTML file. Links to external files will still work if the HTML file is
7667 in the same directory as the Org file. Links to other @file{.org}
7668 files will be translated into HTML links under the assumption that an
7669 HTML version also exists of the linked file. For information related to
7670 linking files while publishing them to a publishing directory see
7671 @ref{Publishing links}.
7672
7673 If you want to specify attributes for links, you can do so using a special
7674 syntax. Here is an example that sets @code{alt} and @code{title} attributes
7675 for an inlined image:
7676
7677 @example
7678 [[./img/a.jpg@{@{alt="This is image A" title="Image with no action"@}@}]]
7679 @end example
7680
7681 @node Images, CSS support, Links, HTML export
7682 @subsection Images
7683
7684 @cindex images, inline in HTML
7685 @cindex inlining images in HTML
7686 HTML export can inline images given as links in the Org file, and
7687 it can make an image the clickable part of a link. By
7688 default@footnote{but see the variable
7689 @code{org-export-html-inline-images}}, images are inlined if a link does
7690 not have a description. So @samp{[[file:myimg.jpg]]} will be inlined,
7691 while @samp{[[file:myimg.jpg][the image]]} will just produce a link
7692 @samp{the image} that points to the image. If the description part
7693 itself is a @code{file:} link or a @code{http:} URL pointing to an
7694 image, this image will be inlined and activated so that clicking on the
7695 image will activate the link. For example, to include a thumbnail that
7696 will link to a high resolution version of the image, you could use:
7697
7698 @example
7699 [[file:highres.jpg][file:thumb.jpg]]
7700 @end example
7701
7702 @noindent
7703 and you could use @code{http} addresses just as well.
7704
7705 @node CSS support, Javascript support, Images, HTML export
7706 @subsection CSS support
7707 @cindex CSS, for HTML export
7708 @cindex HTML export, CSS
7709
7710 You can also give style information for the exported file. The HTML
7711 exporter assigns the following CSS classes to appropriate parts of the
7712 document - your style specifications may change these:
7713 @example
7714 .todo @r{TODO keywords}
7715 .done @r{the DONE keyword}
7716 .timestamp @r{time stamp}
7717 .timestamp-kwd @r{keyword associated with a time stamp, like SCHEDULED}
7718 .tag @r{tag in a headline}
7719 .target @r{target for links}
7720 @end example
7721
7722 Each exported files contains a compact default style that defines these
7723 classes in a basic way@footnote{This style is defined in the constant
7724 @code{org-export-html-style-default}, which you should not modify. To turn
7725 inclusion of these defaults off, customize
7726 @code{org-export-html-style-include-default}}. You may overwrite these
7727 settings, or add to them by using the variables @code{org-export-html-style}
7728 (for Org-wide settings) and @code{org-export-html-style-extra} (for more
7729 granular settings, like file-local settings). To set the latter variable
7730 individually for each file, you can use
7731
7732 @example
7733 #+STYLE: <link rel="stylesheet" type="text/css" href="stylesheet.css" />
7734 @end example
7735
7736 @noindent
7737 For longer style definitions, you can use several such lines. You could also
7738 directly write a @code{<style>} @code{</style>} section in this way, without
7739 referring to an external file.
7740
7741 @c FIXME: More about header and footer styles
7742 @c FIXME: Talk about links and targets.
7743
7744 @node Javascript support, , CSS support, HTML export
7745 @subsection Javascript supported display of web pages
7746
7747 @emph{Sebastian Rose} has written a JavaScript program especially designed to
7748 enhance the web viewing experience of HTML files created with Org. This
7749 program allows to view large files in two different ways. The first one is
7750 an @emph{Info}-like mode where each section is displayed separately and
7751 navigation can be done with the @kbd{n} and @kbd{p} keys (and some other keys
7752 as well, press @kbd{?} for an overview of the available keys). The second
7753 view type is a @emph{folding} view much like Org provides it inside Emacs.
7754 The script is available at @url{http://orgmode.org/org-info.js} and you can
7755 find the documentation for it at
7756 @url{http://orgmode.org/worg/code/org-info-js/org-info.js.html}. We are
7757 serving the script from our site, but if you use it a lot, you might not want
7758 to be dependent on @url{orgmode.org} and prefer to install a local copy on
7759 your own web server.
7760
7761 To use the script, you need to make sure that the @file{org-jsinfo.el} module
7762 gets loaded. It should be loaded by default, try @kbd{M-x customize-variable
7763 @key{RET} org-modules @key{RET}} to convince yourself that this is indeed the
7764 case. All it then takes to make use of the program is adding a single line
7765 to the Org file:
7766
7767 @example
7768 #+INFOJS_OPT: view:info toc:nil
7769 @end example
7770
7771 @noindent
7772 If this line is found, the HTML header will automatically contain the code
7773 needed to invoke the script. Using the line above, you can set the following
7774 viewing options:
7775
7776 @example
7777 path: @r{The path to the script. The default is to grab the script from}
7778 @r{@url{http://orgmode.org/org-info.js}, but you might want to have}
7779 @r{a local copy and use a path like @samp{../scripts/org-info.js}.}
7780 view: @r{Initial view when website is first shown. Possible values are:}
7781 info @r{Info-like interface with one section per page.}
7782 overview @r{Folding interface, initially showing only top-level.}
7783 content @r{Folding interface, starting with all headlines visible.}
7784 showall @r{Folding interface, all headlines and text visible.}
7785 sdepth: @r{Maximum headline level that will still become an independent}
7786 @r{section for info and folding modes. The default is taken from}
7787 @r{@code{org-headline-levels} (= the @code{H} switch in @code{#+OPTIONS}).}
7788 @r{If this is smaller than in @code{org-headline-levels}, each}
7789 @r{info/folding section can still contain children headlines.}
7790 toc: @r{Should the table of content @emph{initially} be visible?}
7791 @r{Even when @code{nil}, you can always get to the toc with @kbd{i}.}
7792 tdepth: @r{The depth of the table of contents. The defaults are taken from}
7793 @r{the variables @code{org-headline-levels} and @code{org-export-with-toc}.}
7794 ftoc: @r{Does the css of the page specify a fixed position for the toc?}
7795 @r{If yes, the toc will never be displayed as a section.}
7796 ltoc: @r{Should there be short contents (children) in each section?}
7797 mouse: @r{Headings are highlighted when the mouse is over them. Should be}
7798 @r{@samp{underline} (default) or a background color like @samp{#cccccc}.}
7799 buttons: @r{Should view-toggle buttons be everywhere? When @code{nil} (the}
7800 @r{default), only one such button will be present.}
7801 @end example
7802
7803 You can choose default values for these options by customizing the variable
7804 @code{org-infojs-options}. If you always want to apply the script to your
7805 pages, configure the variable @code{org-export-html-use-infojs}.
7806
7807 @node LaTeX and PDF export, XOXO export, HTML export, Exporting
7808 @section LaTeX and PDF export
7809 @cindex LaTeX export
7810 @cindex PDF export
7811
7812 Org mode contains a La@TeX{} exporter written by Bastien Guerry. With
7813 further processing, this backend is also used to produce PDF output. Since
7814 the LaTeX output uses @file{hyperref} to implement links and cross
7815 references, the PDF output file will be fully linked.
7816
7817 @menu
7818 * LaTeX/PDF export commands::
7819 * Quoting LaTeX code:: Incorporating literal LaTeX code
7820 * Sectioning structure:: Changing sectioning in LaTeX output
7821 @end menu
7822
7823 @node LaTeX/PDF export commands, Quoting LaTeX code, LaTeX and PDF export, LaTeX and PDF export
7824 @subsection LaTeX export commands
7825
7826 @table @kbd
7827 @kindex C-c C-e l
7828 @item C-c C-e l
7829 Export as La@TeX{} file @file{myfile.tex}. For an org file
7830 @file{myfile.org}, the ASCII file will be @file{myfile.tex}. The file will
7831 be overwritten without warning. If there is an active region, only the
7832 region will be exported. If the selected region is a single tree@footnote{To
7833 select the current subtree, use @kbd{C-c @@}.}, the tree head will become the
7834 document title. If the tree head entry has or inherits an
7835 @code{EXPORT_FILE_NAME} property, that name will be used for the export.
7836 @kindex C-c C-e L
7837 @item C-c C-e L
7838 Export to a temporary buffer, do not create a file.
7839 @kindex C-c C-e v l
7840 @kindex C-c C-e v L
7841 @item C-c C-e v l
7842 @item C-c C-e v L
7843 Export only the visible part of the document.
7844 @item M-x org-export-region-as-latex
7845 Convert the region to La@TeX{} under the assumption that it was Org mode
7846 syntax before. This is a global command that can be invoked in any
7847 buffer.
7848 @item M-x org-replace-region-by-latex
7849 Replace the active region (assumed to be in Org mode syntax) by La@TeX{}
7850 code.
7851 @kindex C-c C-e p
7852 @item C-c C-e p
7853 Export as LaTeX and then process to PDF.
7854 @kindex C-c C-e d
7855 @item C-c C-e d
7856 Export as LaTeX and then process to PDF, then open the resulting PDF file.
7857 @end table
7858
7859 @cindex headline levels, for exporting
7860 In the exported version, the first 3 outline levels will become
7861 headlines, defining a general document structure. Additional levels
7862 will be exported as description lists. The exporter can ignore them or
7863 convert them to a custom string depending on
7864 @code{org-latex-low-levels}.
7865
7866 If you want that transition to occur at a different level, specify it
7867 with a numeric prefix argument. For example,
7868
7869 @example
7870 @kbd{C-2 C-c C-e l}
7871 @end example
7872
7873 @noindent
7874 creates two levels of headings and does the rest as items.
7875
7876 @node Quoting LaTeX code, Sectioning structure, LaTeX/PDF export commands, LaTeX and PDF export
7877 @subsection Quoting LaTeX code
7878
7879 Embedded La@TeX{} as described in @ref{Embedded LaTeX} will be correctly
7880 inserted into the La@TeX{} file. Furthermore, you can add special code
7881 that should only be present in La@TeX{} export with the following
7882 constructs:
7883
7884 @example
7885 #+LaTeX: Literal LaTeX code for export
7886 @end example
7887
7888 @noindent or
7889 @cindex #+BEGIN_LaTeX
7890
7891 @example
7892 #+BEGIN_LaTeX
7893 All lines between these markers are exported literally
7894 #+END_LaTeX
7895 @end example
7896
7897 @node Sectioning structure, , Quoting LaTeX code, LaTeX and PDF export
7898 @subsection Sectioning structure
7899 @cindex LaTeX class
7900 @cindex LaTeX sectioning structure
7901
7902 By default, the La@TeX{} output uses the class @code{article}.
7903
7904 You can change this globally by setting a different value for
7905 @code{org-export-latex-default-class} or locally by adding an option like
7906 @code{#+LaTeX_CLASS: myclass} in your file. The class should be listed in
7907 @code{org-export-latex-classes}, where you can also define the sectioning
7908 structure for each class, as well as defining additonal classes.
7909
7910
7911 @node XOXO export, iCalendar export, LaTeX and PDF export, Exporting
7912 @section XOXO export
7913 @cindex XOXO export
7914
7915 Org mode contains an exporter that produces XOXO-style output.
7916 Currently, this exporter only handles the general outline structure and
7917 does not interpret any additional Org mode features.
7918
7919 @table @kbd
7920 @kindex C-c C-e x
7921 @item C-c C-e x
7922 Export as XOXO file @file{myfile.html}.
7923 @kindex C-c C-e v
7924 @item C-c C-e v x
7925 Export only the visible part of the document.
7926 @end table
7927
7928 @node iCalendar export, , XOXO export, Exporting
7929 @section iCalendar export
7930 @cindex iCalendar export
7931
7932 Some people like to use Org mode for keeping track of projects, but still
7933 prefer a standard calendar application for anniversaries and appointments.
7934 In this case it can be useful to have deadlines and other time-stamped items
7935 in Org files show up in the calendar application. Org mode can export
7936 calendar information in the standard iCalendar format. If you also want to
7937 have TODO entries included in the export, configure the variable
7938 @code{org-icalendar-include-todo}. iCalendar export will export plain time
7939 stamps as VEVENT, and TODO items as VTODO. It will also create events from
7940 deadlines that are in non-TODO items. Deadlines and scheduling dates in TODO
7941 items will be used to set the start and due dates for the todo
7942 entry@footnote{See the variables @code{org-icalendar-use-deadline} and
7943 @code{org-icalendar-use-scheduled}.}. As categories, it will use the tags
7944 locally defined in the heading, and the file/tree category@footnote{To add
7945 inherited tags or the TODO state, configure the variable
7946 @code{org-icalendar-categories}.}.
7947
7948 The iCalendar standard requires each entry to have a globally unique
7949 identifier (UID). Org creates these identifiers during export. If you set
7950 the variable @code{org-icalendar-store-UID}, the UID will be stored in the
7951 @code{:ID:} property of the entry and re-used next time you report this
7952 entry. Since a single entry can give rise to multiple iCalendar entries (as
7953 a timestamp, a deadline, a scheduled item, and as a TODO item), Org adds
7954 prefixes to the UID, depending on what triggered the inclusion of the entry.
7955 In this way the UID remains unique, but a synchronization program can still
7956 figure out from which entry all the different instances originate.
7957
7958 @table @kbd
7959 @kindex C-c C-e i
7960 @item C-c C-e i
7961 Create iCalendar entries for the current file and store them in the same
7962 directory, using a file extension @file{.ics}.
7963 @kindex C-c C-e I
7964 @item C-c C-e I
7965 Like @kbd{C-c C-e i}, but do this for all files in
7966 @code{org-agenda-files}. For each of these files, a separate iCalendar
7967 file will be written.
7968 @kindex C-c C-e c
7969 @item C-c C-e c
7970 Create a single large iCalendar file from all files in
7971 @code{org-agenda-files} and write it to the file given by
7972 @code{org-combined-agenda-icalendar-file}.
7973 @end table
7974
7975 The export will honor SUMMARY, DESCRIPTION and LOCATION properties if
7976 the selected entries have them. If not, the summary will be derived
7977 from the headline, and the description from the body (limited to
7978 @code{org-icalendar-include-body} characters).
7979
7980 How this calendar is best read and updated, that depends on the application
7981 you are using. The FAQ covers this issue.
7982
7983 @node Publishing, Miscellaneous, Exporting, Top
7984 @chapter Publishing
7985 @cindex publishing
7986
7987 Org includes@footnote{@file{org-publish.el} is not distributed with
7988 Emacs 21, if you are still using Emacs 21, you need you need to download
7989 this file separately.} a publishing management system that allows you to
7990 configure automatic HTML conversion of @emph{projects} composed of
7991 interlinked org files. This system is called @emph{org-publish}. You can
7992 also configure org-publish to automatically upload your exported HTML
7993 pages and related attachments, such as images and source code files, to
7994 a web server. Org-publish turns Org into a web-site authoring tool.
7995
7996 You can also use Org-publish to convert files into La@TeX{}, or even
7997 combine HTML and La@TeX{} conversion so that files are available in both
7998 formats on the server@footnote{Since La@TeX{} files on a server are not
7999 that helpful, you surely want to perform further conversion on them --
8000 e.g. convert them to @code{PDF} format.}.
8001
8002 Org-publish has been contributed to Org by David O'Toole.
8003
8004 @menu
8005 * Configuration:: Defining projects
8006 * Sample configuration:: Example projects
8007 * Triggering publication:: Publication commands
8008 @end menu
8009
8010 @node Configuration, Sample configuration, Publishing, Publishing
8011 @section Configuration
8012
8013 Publishing needs significant configuration to specify files, destination
8014 and many other properties of a project.
8015
8016 @menu
8017 * Project alist:: The central configuration variable
8018 * Sources and destinations:: From here to there
8019 * Selecting files:: What files are part of the project?
8020 * Publishing action:: Setting the function doing the publishing
8021 * Publishing options:: Tweaking HTML export
8022 * Publishing links:: Which links keep working after publishing?
8023 * Project page index:: Publishing a list of project files
8024 @end menu
8025
8026 @node Project alist, Sources and destinations, Configuration, Configuration
8027 @subsection The variable @code{org-publish-project-alist}
8028 @cindex org-publish-project-alist
8029 @cindex projects, for publishing
8030
8031 Org-publish is configured almost entirely through setting the value of
8032 one variable, called @code{org-publish-project-alist}.
8033 Each element of the list configures one project, and may be in one of
8034 the two following forms:
8035
8036 @lisp
8037 ("project-name" :property value :property value ...)
8038
8039 @r{or}
8040
8041 ("project-name" :components ("project-name" "project-name" ...))
8042
8043 @end lisp
8044
8045 In both cases, projects are configured by specifying property values.
8046 A project defines the set of files that will be published, as well as
8047 the publishing configuration to use when publishing those files. When
8048 a project takes the second form listed above, the individual members
8049 of the ``components'' property are taken to be components of the
8050 project, which group together files requiring different publishing
8051 options. When you publish such a ``meta-project'' all the components
8052 will also publish.
8053
8054 @node Sources and destinations, Selecting files, Project alist, Configuration
8055 @subsection Sources and destinations for files
8056 @cindex directories, for publishing
8057
8058 Most properties are optional, but some should always be set. In
8059 particular, org-publish needs to know where to look for source files,
8060 and where to put published files.
8061
8062 @multitable @columnfractions 0.3 0.7
8063 @item @code{:base-directory}
8064 @tab Directory containing publishing source files
8065 @item @code{:publishing-directory}
8066 @tab Directory (possibly remote) where output files will be published.
8067 @item @code{:preparation-function}
8068 @tab Function called before starting the publishing process, for example to
8069 run @code{make} for updating files to be published.
8070 @item @code{:completion-function}
8071 @tab Function called after finishing the publishing process, for example to
8072 change permissions of the resulting files.
8073 @end multitable
8074 @noindent
8075
8076 @node Selecting files, Publishing action, Sources and destinations, Configuration
8077 @subsection Selecting files
8078 @cindex files, selecting for publishing
8079
8080 By default, all files with extension @file{.org} in the base directory
8081 are considered part of the project. This can be modified by setting the
8082 properties
8083 @multitable @columnfractions 0.25 0.75
8084 @item @code{:base-extension}
8085 @tab Extension (without the dot!) of source files. This actually is a
8086 regular expression.
8087
8088 @item @code{:exclude}
8089 @tab Regular expression to match file names that should not be
8090 published, even though they have been selected on the basis of their
8091 extension.
8092
8093 @item @code{:include}
8094 @tab List of files to be included regardless of @code{:base-extension}
8095 and @code{:exclude}.
8096 @end multitable
8097
8098 @node Publishing action, Publishing options, Selecting files, Configuration
8099 @subsection Publishing action
8100 @cindex action, for publishing
8101
8102 Publishing means that a file is copied to the destination directory and
8103 possibly transformed in the process. The default transformation is to export
8104 Org files as HTML files, and this is done by the function
8105 @code{org-publish-org-to-html} which calls the HTML exporter (@pxref{HTML
8106 export}). But you also can publish your files in La@TeX{} by using the
8107 function @code{org-publish-org-to-latex} instead, or as PDF files using
8108 @code{org-publish-org-to-pdf}. Other files like images only need to be
8109 copied to the publishing destination. For non-Org files, you need to provide
8110 your own publishing function:
8111
8112 @multitable @columnfractions 0.3 0.7
8113 @item @code{:publishing-function}
8114 @tab Function executing the publication of a file. This may also be a
8115 list of functions, which will all be called in turn.
8116 @end multitable
8117
8118 The function must accept two arguments: a property list containing at
8119 least a @code{:publishing-directory} property, and the name of the file
8120 to be published. It should take the specified file, make the necessary
8121 transformation (if any) and place the result into the destination folder.
8122 You can write your own publishing function, but @code{org-publish}
8123 provides one for attachments (files that only need to be copied):
8124 @code{org-publish-attachment}.
8125
8126 @node Publishing options, Publishing links, Publishing action, Configuration
8127 @subsection Options for the HTML/LaTeX exporters
8128 @cindex options, for publishing
8129
8130 The property list can be used to set many export options for the HTML
8131 and La@TeX{} exporters. In most cases, these properties correspond to user
8132 variables in Org. The table below lists these properties along
8133 with the variable they belong to. See the documentation string for the
8134 respective variable for details.
8135
8136 @multitable @columnfractions 0.3 0.7
8137 @item @code{:language} @tab @code{org-export-default-language}
8138 @item @code{:headline-levels} @tab @code{org-export-headline-levels}
8139 @item @code{:section-numbers} @tab @code{org-export-with-section-numbers}
8140 @item @code{:table-of-contents} @tab @code{org-export-with-toc}
8141 @item @code{:archived-trees} @tab @code{org-export-with-archived-trees}
8142 @item @code{:emphasize} @tab @code{org-export-with-emphasize}
8143 @item @code{:sub-superscript} @tab @code{org-export-with-sub-superscripts}
8144 @item @code{:special-strings} @tab @code{org-export-with-special-strings}
8145 @item @code{:TeX-macros} @tab @code{org-export-with-TeX-macros}
8146 @item @code{:LaTeX-fragments} @tab @code{org-export-with-LaTeX-fragments}
8147 @item @code{:fixed-width} @tab @code{org-export-with-fixed-width}
8148 @item @code{:timestamps} @tab @code{org-export-with-timestamps}
8149 @item @code{:author-info} @tab @code{org-export-author-info}
8150 @item @code{:creator-info} @tab @code{org-export-creator-info}
8151 @item @code{:tags} @tab @code{org-export-with-tags}
8152 @item @code{:tables} @tab @code{org-export-with-tables}
8153 @item @code{:table-auto-headline} @tab @code{org-export-highlight-first-table-line}
8154 @item @code{:style-include-default} @tab @code{org-export-html-style-include-default}
8155 @item @code{:style} @tab @code{org-export-html-style}
8156 @item @code{:style-extra} @tab @code{org-export-html-style-extra}
8157 @item @code{:convert-org-links} @tab @code{org-export-html-link-org-files-as-html}
8158 @item @code{:inline-images} @tab @code{org-export-html-inline-images}
8159 @item @code{:expand-quoted-html} @tab @code{org-export-html-expand}
8160 @item @code{:timestamp} @tab @code{org-export-html-with-timestamp}
8161 @item @code{:publishing-directory} @tab @code{org-export-publishing-directory}
8162 @item @code{:preamble} @tab @code{org-export-html-preamble}
8163 @item @code{:postamble} @tab @code{org-export-html-postamble}
8164 @item @code{:auto-preamble} @tab @code{org-export-html-auto-preamble}
8165 @item @code{:auto-postamble} @tab @code{org-export-html-auto-postamble}
8166 @item @code{:author} @tab @code{user-full-name}
8167 @item @code{:email} @tab @code{user-mail-address}
8168 @item @code{:select-tags} @tab @code{org-export-select-tags}
8169 @item @code{:exclude-tags} @tab @code{org-export-exclude-tags}
8170 @end multitable
8171
8172 If you use several email addresses, separate them by a semi-column.
8173
8174 Most of the @code{org-export-with-*} variables have the same effect in
8175 both HTML and La@TeX{} exporters, except for @code{:TeX-macros} and
8176 @code{:LaTeX-fragments}, respectively @code{nil} and @code{t} in the
8177 La@TeX{} export.
8178
8179 When a property is given a value in @code{org-publish-project-alist},
8180 its setting overrides the value of the corresponding user variable (if
8181 any) during publishing. Options set within a file (@pxref{Export
8182 options}), however, override everything.
8183
8184 @node Publishing links, Project page index, Publishing options, Configuration
8185 @subsection Links between published files
8186 @cindex links, publishing
8187
8188 To create a link from one Org file to another, you would use
8189 something like @samp{[[file:foo.org][The foo]]} or simply
8190 @samp{file:foo.org.} (@pxref{Hyperlinks}). Upon publishing this link
8191 becomes a link to @file{foo.html}. In this way, you can interlink the
8192 pages of your "org web" project and the links will work as expected when
8193 you publish them to HTML.
8194
8195 You may also link to related files, such as images. Provided you are
8196 careful with relative pathnames, and provided you have also configured
8197 @code{org-publish} to upload the related files, these links will work
8198 too. @ref{Complex example} for an example of this usage.
8199
8200 Sometime an Org file to be published may contain links that are
8201 only valid in your production environment, but not in the publishing
8202 location. In this case, use the property
8203
8204 @multitable @columnfractions 0.4 0.6
8205 @item @code{:link-validation-function}
8206 @tab Function to validate links
8207 @end multitable
8208
8209 @noindent
8210 to define a function for checking link validity. This function must
8211 accept two arguments, the file name and a directory relative to which
8212 the file name is interpreted in the production environment. If this
8213 function returns @code{nil}, then the HTML generator will only insert a
8214 description into the HTML file, but no link. One option for this
8215 function is @code{org-publish-validate-link} which checks if the given
8216 file is part of any project in @code{org-publish-project-alist}.
8217
8218 @node Project page index, , Publishing links, Configuration
8219 @subsection Project page index
8220 @cindex index, of published pages
8221
8222 The following properties may be used to control publishing of an
8223 index of files or summary page for a given project.
8224
8225 @multitable @columnfractions 0.25 0.75
8226 @item @code{:auto-index}
8227 @tab When non-nil, publish an index during org-publish-current-project or
8228 org-publish-all.
8229
8230 @item @code{:index-filename}
8231 @tab Filename for output of index. Defaults to @file{index.org} (which
8232 becomes @file{index.html}).
8233
8234 @item @code{:index-title}
8235 @tab Title of index page. Defaults to name of file.
8236
8237 @item @code{:index-function}
8238 @tab Plug-in function to use for generation of index.
8239 Defaults to @code{org-publish-org-index}, which generates a plain list
8240 of links to all files in the project.
8241 @end multitable
8242
8243 @node Sample configuration, Triggering publication, Configuration, Publishing
8244 @section Sample configuration
8245
8246 Below we provide two example configurations. The first one is a simple
8247 project publishing only a set of Org files. The second example is
8248 more complex, with a multi-component project.
8249
8250 @menu
8251 * Simple example:: One-component publishing
8252 * Complex example:: A multi-component publishing example
8253 @end menu
8254
8255 @node Simple example, Complex example, Sample configuration, Sample configuration
8256 @subsection Example: simple publishing configuration
8257
8258 This example publishes a set of Org files to the @file{public_html}
8259 directory on the local machine.
8260
8261 @lisp
8262 (setq org-publish-project-alist
8263 '(("org"
8264 :base-directory "~/org/"
8265 :publishing-directory "~/public_html"
8266 :section-numbers nil
8267 :table-of-contents nil
8268 :style "<link rel=\"stylesheet\"
8269 href=\"../other/mystyle.css\"
8270 type=\"text/css\">")))
8271 @end lisp
8272
8273 @node Complex example, , Simple example, Sample configuration
8274 @subsection Example: complex publishing configuration
8275
8276 This more complicated example publishes an entire website, including
8277 org files converted to HTML, image files, emacs lisp source code, and
8278 style sheets. The publishing-directory is remote and private files are
8279 excluded.
8280
8281 To ensure that links are preserved, care should be taken to replicate
8282 your directory structure on the web server, and to use relative file
8283 paths. For example, if your org files are kept in @file{~/org} and your
8284 publishable images in @file{~/images}, you'd link to an image with
8285 @c
8286 @example
8287 file:../images/myimage.png
8288 @end example
8289 @c
8290 On the web server, the relative path to the image should be the
8291 same. You can accomplish this by setting up an "images" folder in the
8292 right place on the web server, and publishing images to it.
8293
8294 @lisp
8295 (setq org-publish-project-alist
8296 '(("orgfiles"
8297 :base-directory "~/org/"
8298 :base-extension "org"
8299 :publishing-directory "/ssh:user@@host:~/html/notebook/"
8300 :publishing-function org-publish-org-to-html
8301 :exclude "PrivatePage.org" ;; regexp
8302 :headline-levels 3
8303 :section-numbers nil
8304 :table-of-contents nil
8305 :style "<link rel=\"stylesheet\"
8306 href=\"../other/mystyle.css\" type=\"text/css\">"
8307 :auto-preamble t
8308 :auto-postamble nil)
8309
8310 ("images"
8311 :base-directory "~/images/"
8312 :base-extension "jpg\\|gif\\|png"
8313 :publishing-directory "/ssh:user@@host:~/html/images/"
8314 :publishing-function org-publish-attachment)
8315
8316 ("other"
8317 :base-directory "~/other/"
8318 :base-extension "css\\|el"
8319 :publishing-directory "/ssh:user@@host:~/html/other/"
8320 :publishing-function org-publish-attachment)
8321 ("website" :components ("orgfiles" "images" "other"))))
8322 @end lisp
8323
8324 @node Triggering publication, , Sample configuration, Publishing
8325 @section Triggering publication
8326
8327 Once org-publish is properly configured, you can publish with the
8328 following functions:
8329
8330 @table @kbd
8331 @item C-c C-e C
8332 Prompt for a specific project and publish all files that belong to it.
8333 @item C-c C-e P
8334 Publish the project containing the current file.
8335 @item C-c C-e F
8336 Publish only the current file.
8337 @item C-c C-e A
8338 Publish all projects.
8339 @end table
8340
8341 Org uses timestamps to track when a file has changed. The above
8342 functions normally only publish changed files. You can override this and
8343 force publishing of all files by giving a prefix argument.
8344
8345 @node Miscellaneous, Extensions, Publishing, Top
8346 @chapter Miscellaneous
8347
8348 @menu
8349 * Completion:: M-TAB knows what you need
8350 * Customization:: Adapting Org to your taste
8351 * In-buffer settings:: Overview of the #+KEYWORDS
8352 * The very busy C-c C-c key:: When in doubt, press C-c C-c
8353 * Clean view:: Getting rid of leading stars in the outline
8354 * TTY keys:: Using Org on a tty
8355 * Interaction:: Other Emacs packages
8356 * Bugs:: Things which do not work perfectly
8357 @end menu
8358
8359 @node Completion, Customization, Miscellaneous, Miscellaneous
8360 @section Completion
8361 @cindex completion, of @TeX{} symbols
8362 @cindex completion, of TODO keywords
8363 @cindex completion, of dictionary words
8364 @cindex completion, of option keywords
8365 @cindex completion, of tags
8366 @cindex completion, of property keys
8367 @cindex completion, of link abbreviations
8368 @cindex @TeX{} symbol completion
8369 @cindex TODO keywords completion
8370 @cindex dictionary word completion
8371 @cindex option keyword completion
8372 @cindex tag completion
8373 @cindex link abbreviations, completion of
8374
8375 Org supports in-buffer completion. This type of completion does
8376 not make use of the minibuffer. You simply type a few letters into
8377 the buffer and use the key to complete text right there.
8378
8379 @table @kbd
8380 @kindex M-@key{TAB}
8381 @item M-@key{TAB}
8382 Complete word at point
8383 @itemize @bullet
8384 @item
8385 At the beginning of a headline, complete TODO keywords.
8386 @item
8387 After @samp{\}, complete @TeX{} symbols supported by the exporter.
8388 @item
8389 After @samp{*}, complete headlines in the current buffer so that they
8390 can be used in search links like @samp{[[*find this headline]]}.
8391 @item
8392 After @samp{:} in a headline, complete tags. The list of tags is taken
8393 from the variable @code{org-tag-alist} (possibly set through the
8394 @samp{#+TAGS} in-buffer option, @pxref{Setting tags}), or it is created
8395 dynamically from all tags used in the current buffer.
8396 @item
8397 After @samp{:} and not in a headline, complete property keys. The list
8398 of keys is constructed dynamically from all keys used in the current
8399 buffer.
8400 @item
8401 After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
8402 @item
8403 After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
8404 @samp{OPTIONS} which set file-specific options for Org mode. When the
8405 option keyword is already complete, pressing @kbd{M-@key{TAB}} again
8406 will insert example settings for this keyword.
8407 @item
8408 In the line after @samp{#+STARTUP: }, complete startup keywords,
8409 i.e. valid keys for this line.
8410 @item
8411 Elsewhere, complete dictionary words using Ispell.
8412 @end itemize
8413 @end table
8414
8415 @node Customization, In-buffer settings, Completion, Miscellaneous
8416 @section Customization
8417 @cindex customization
8418 @cindex options, for customization
8419 @cindex variables, for customization
8420
8421 There are more than 180 variables that can be used to customize
8422 Org. For the sake of compactness of the manual, I am not
8423 describing the variables here. A structured overview of customization
8424 variables is available with @kbd{M-x org-customize}. Or select
8425 @code{Browse Org Group} from the @code{Org->Customization} menu. Many
8426 settings can also be activated on a per-file basis, by putting special
8427 lines into the buffer (@pxref{In-buffer settings}).
8428
8429 @node In-buffer settings, The very busy C-c C-c key, Customization, Miscellaneous
8430 @section Summary of in-buffer settings
8431 @cindex in-buffer settings
8432 @cindex special keywords
8433
8434 Org mode uses special lines in the buffer to define settings on a
8435 per-file basis. These lines start with a @samp{#+} followed by a
8436 keyword, a colon, and then individual words defining a setting. Several
8437 setting words can be in the same line, but you can also have multiple
8438 lines for the keyword. While these settings are described throughout
8439 the manual, here is a summary. After changing any of those lines in the
8440 buffer, press @kbd{C-c C-c} with the cursor still in the line to
8441 activate the changes immediately. Otherwise they become effective only
8442 when the file is visited again in a new Emacs session.
8443
8444 @table @kbd
8445 @item #+ARCHIVE: %s_done::
8446 This line sets the archive location for the agenda file. It applies for
8447 all subsequent lines until the next @samp{#+ARCHIVE} line, or the end
8448 of the file. The first such line also applies to any entries before it.
8449 The corresponding variable is @code{org-archive-location}.
8450 @item #+CATEGORY:
8451 This line sets the category for the agenda file. The category applies
8452 for all subsequent lines until the next @samp{#+CATEGORY} line, or the
8453 end of the file. The first such line also applies to any entries before it.
8454 @item #+COLUMNS: %25ITEM .....
8455 Set the default format for columns view. This format applies when
8456 columns view is invoked in location where no @code{COLUMNS} property
8457 applies.
8458 @item #+CONSTANTS: name1=value1 ...
8459 Set file-local values for constants to be used in table formulas. This
8460 line set the local variable @code{org-table-formula-constants-local}.
8461 The global version of this variable is
8462 @code{org-table-formula-constants}.
8463 @item #+FILETAGS: :tag1:tag2:tag3:
8464 Set tags that can be inherited by any entry in the file, including the
8465 top-level entries.
8466 @item #+DRAWERS: NAME1 .....
8467 Set the file-local set of drawers. The corresponding global variable is
8468 @code{org-drawers}.
8469 @item #+LINK: linkword replace
8470 These lines (several are allowed) specify link abbreviations.
8471 @xref{Link abbreviations}. The corresponding variable is
8472 @code{org-link-abbrev-alist}.
8473 @item #+PRIORITIES: highest lowest default
8474 This line sets the limits and the default for the priorities. All three
8475 must be either letters A-Z or numbers 0-9. The highest priority must
8476 have a lower ASCII number that the lowest priority.
8477 @item #+PROPERTY: Property_Name Value
8478 This line sets a default inheritance value for entries in the current
8479 buffer, most useful for specifying the allowed values of a property.
8480 @item #+SETUPFILE: file
8481 This line defines a file that holds more in-buffer setup. Normally this is
8482 entirely ignored. Only when the buffer is parsed for option-setting lines
8483 (i.e. when starting Org mode for a file, when pressing @kbd{C-c C-c} in a
8484 settings line, or when exporting), then the contents of this file are parsed
8485 as if they had been included in the buffer. In particlar, the file can be
8486 any other Org mode file with internal setup. You can visit the file the
8487 cursor is in the line with @kbd{C-c '}.
8488 @item #+STARTUP:
8489 This line sets options to be used at startup of Org mode, when an
8490 Org file is being visited. The first set of options deals with the
8491 initial visibility of the outline tree. The corresponding variable for
8492 global default settings is @code{org-startup-folded}, with a default
8493 value @code{t}, which means @code{overview}.
8494 @cindex @code{overview}, STARTUP keyword
8495 @cindex @code{content}, STARTUP keyword
8496 @cindex @code{showall}, STARTUP keyword
8497 @example
8498 overview @r{top-level headlines only}
8499 content @r{all headlines}
8500 showall @r{no folding at all, show everything}
8501 @end example
8502 Then there are options for aligning tables upon visiting a file. This
8503 is useful in files containing narrowed table columns. The corresponding
8504 variable is @code{org-startup-align-all-tables}, with a default value
8505 @code{nil}.
8506 @cindex @code{align}, STARTUP keyword
8507 @cindex @code{noalign}, STARTUP keyword
8508 @example
8509 align @r{align all tables}
8510 noalign @r{don't align tables on startup}
8511 @end example
8512 Logging closing and reinstating TODO items, and clock intervals
8513 (variables @code{org-log-done}, @code{org-log-note-clock-out}, and
8514 @code{org-log-repeat}) can be configured using these options.
8515 @cindex @code{logdone}, STARTUP keyword
8516 @cindex @code{lognotedone}, STARTUP keyword
8517 @cindex @code{nologdone}, STARTUP keyword
8518 @cindex @code{lognoteclock-out}, STARTUP keyword
8519 @cindex @code{nolognoteclock-out}, STARTUP keyword
8520 @cindex @code{logrepeat}, STARTUP keyword
8521 @cindex @code{lognoterepeat}, STARTUP keyword
8522 @cindex @code{nologrepeat}, STARTUP keyword
8523 @example
8524 logdone @r{record a timestamp when an item is marked DONE}
8525 lognotedone @r{record timestamp and a note when DONE}
8526 nologdone @r{don't record when items are marked DONE}
8527 logrepeat @r{record a time when reinstating a repeating item}
8528 lognoterepeat @r{record a note when reinstating a repeating item}
8529 nologrepeat @r{do not record when reinstating repeating item}
8530 lognoteclock-out @r{record a note when clocking out}
8531 nolognoteclock-out @r{don't record a note when clocking out}
8532 @end example
8533 Here are the options for hiding leading stars in outline headings, and for
8534 indenting outlines. The corresponding variables are
8535 @code{org-hide-leading-stars} and @code{org-odd-levels-only}, both with a
8536 default setting @code{nil} (meaning @code{showstars} and @code{oddeven}).
8537 @cindex @code{hidestars}, STARTUP keyword
8538 @cindex @code{showstars}, STARTUP keyword
8539 @cindex @code{odd}, STARTUP keyword
8540 @cindex @code{even}, STARTUP keyword
8541 @example
8542 hidestars @r{make all but one of the stars starting a headline invisible.}
8543 showstars @r{show all stars starting a headline}
8544 indent @r{virtual indentation according to outline level}
8545 noindent @r{no virtual indentation according to outline level}
8546 odd @r{allow only odd outline levels (1,3,...)}
8547 oddeven @r{allow all outline levels}
8548 @end example
8549 To turn on custom format overlays over time stamps (variables
8550 @code{org-put-time-stamp-overlays} and
8551 @code{org-time-stamp-overlay-formats}), use
8552 @cindex @code{customtime}, STARTUP keyword
8553 @example
8554 customtime @r{overlay custom time format}
8555 @end example
8556 The following options influence the table spreadsheet (variable
8557 @code{constants-unit-system}).
8558 @cindex @code{constcgs}, STARTUP keyword
8559 @cindex @code{constSI}, STARTUP keyword
8560 @example
8561 constcgs @r{@file{constants.el} should use the c-g-s unit system}
8562 constSI @r{@file{constants.el} should use the SI unit system}
8563 @end example
8564 @item #+TAGS: TAG1(c1) TAG2(c2)
8565 These lines (several such lines are allowed) specify the valid tags in
8566 this file, and (potentially) the corresponding @emph{fast tag selection}
8567 keys. The corresponding variable is @code{org-tag-alist}.
8568 @item #+TBLFM:
8569 This line contains the formulas for the table directly above the line.
8570 @item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS, #+DATE:
8571 These lines provide settings for exporting files. For more details see
8572 @ref{Export options}.
8573 @item #+SEQ_TODO: #+TYP_TODO:
8574 These lines set the TODO keywords and their interpretation in the
8575 current file. The corresponding variables are @code{org-todo-keywords}
8576 and @code{org-todo-interpretation}.
8577 @end table
8578
8579 @node The very busy C-c C-c key, Clean view, In-buffer settings, Miscellaneous
8580 @section The very busy C-c C-c key
8581 @kindex C-c C-c
8582 @cindex C-c C-c, overview
8583
8584 The key @kbd{C-c C-c} has many purposes in Org, which are all
8585 mentioned scattered throughout this manual. One specific function of
8586 this key is to add @emph{tags} to a headline (@pxref{Tags}). In many
8587 other circumstances it means something like @emph{Hey Org, look
8588 here and update according to what you see here}. Here is a summary of
8589 what this means in different contexts.
8590
8591 @itemize @minus
8592 @item
8593 If there are highlights in the buffer from the creation of a sparse
8594 tree, or from clock display, remove these highlights.
8595 @item
8596 If the cursor is in one of the special @code{#+KEYWORD} lines, this
8597 triggers scanning the buffer for these lines and updating the
8598 information.
8599 @item
8600 If the cursor is inside a table, realign the table. This command
8601 works even if the automatic table editor has been turned off.
8602 @item
8603 If the cursor is on a @code{#+TBLFM} line, re-apply the formulas to
8604 the entire table.
8605 @item
8606 If the cursor is inside a table created by the @file{table.el} package,
8607 activate that table.
8608 @item
8609 If the current buffer is a remember buffer, close the note and file it.
8610 With a prefix argument, file it, without further interaction, to the
8611 default location.
8612 @item
8613 If the cursor is on a @code{<<<target>>>}, update radio targets and
8614 corresponding links in this buffer.
8615 @item
8616 If the cursor is in a property line or at the start or end of a property
8617 drawer, offer property commands.
8618 @item
8619 If the cursor is in a plain list item with a checkbox, toggle the status
8620 of the checkbox.
8621 @item
8622 If the cursor is on a numbered item in a plain list, renumber the
8623 ordered list.
8624 @item
8625 If the cursor is on the @code{#+BEGIN} line of a dynamical block, the
8626 block is updated.
8627 @end itemize
8628
8629 @node Clean view, TTY keys, The very busy C-c C-c key, Miscellaneous
8630 @section A cleaner outline view
8631 @cindex hiding leading stars
8632 @cindex dynamic indentation
8633 @cindex odd-levels-only outlines
8634 @cindex clean outline view
8635
8636 Some people find it noisy and distracting that the Org headlines are starting
8637 with a potentially large number of stars, and that text below the headlines
8638 is not indented. This is not really a problem when you are writing a book
8639 where the outline headings are really section headlines. However, in a more
8640 list-oriented outline, it is clear that an indented structure is a lot
8641 cleaner, as can be seen by comparing the two columns in the following
8642 example:
8643
8644 @example
8645 @group
8646 * Top level headline | * Top level headline
8647 ** Second level | * Second level
8648 *** 3rd level | * 3rd level
8649 some text | some text
8650 *** 3rd level | * 3rd level
8651 more text | more text
8652 * Another top level headline | * Another top level headline
8653 @end group
8654 @end example
8655
8656 @noindent
8657 It is non-trivial to make such a look work in Emacs, but Org contains three
8658 separate features that, combined, achieve just that.
8659
8660 @enumerate
8661 @item
8662 @emph{Indentation of text below headlines}@*
8663 You may indent text below each headline to make the left boundary line up
8664 with the headline, like
8665
8666 @example
8667 *** 3rd level
8668 more text, now indented
8669 @end example
8670
8671 A good way to get this indentation is by hand, and Org supports this with
8672 paragraph filling, line wrapping, and structure editing@footnote{See also the
8673 variable @code{org-adapt-indentation}.} preserving or adapting the
8674 indentation appropriate. A different approach would be to have a way to
8675 automatically indent lines according to outline structure by adding overlays
8676 or text properties. But I have not yet found a robust and efficient way to
8677 do this in large files.
8678
8679 @item
8680 @emph{Hiding leading stars}@* You can modify the display in such a way that
8681 all leading stars become invisible. To do this in a global way, configure
8682 the variable @code{org-hide-leading-stars} or change this on a per-file basis
8683 with
8684
8685 @example
8686 #+STARTUP: hidestars
8687 @end example
8688
8689 @noindent
8690 Note that the opposite behavior is selected with @code{showstars}.
8691
8692 With hidden stars, the tree becomes:
8693
8694 @example
8695 @group
8696 * Top level headline
8697 * Second level
8698 * 3rd level
8699 ...
8700 @end group
8701 @end example
8702
8703 @noindent
8704 Note that the leading stars are not truly replaced by whitespace, they
8705 are only fontified with the face @code{org-hide} that uses the
8706 background color as font color. If you are not using either white or
8707 black background, you may have to customize this face to get the wanted
8708 effect. Another possibility is to set this font such that the extra
8709 stars are @i{almost} invisible, for example using the color
8710 @code{grey90} on a white background.
8711
8712 @item
8713 Things become cleaner still if you skip all the even levels and use only odd
8714 levels 1, 3, 5..., effectively adding two stars to go from one outline level
8715 to the next. In this way we get the outline view shown at the beginning of
8716 this section. In order to make the structure editing and export commands
8717 handle this convention correctly, configure the variable
8718 @code{org-odd-levels-only}, or set this on a per-file basis with one of the
8719 following lines:
8720
8721 @example
8722 #+STARTUP: odd
8723 #+STARTUP: oddeven
8724 @end example
8725
8726 You can convert an Org file from single-star-per-level to the
8727 double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
8728 RET} in that file. The reverse operation is @kbd{M-x
8729 org-convert-to-oddeven-levels}.
8730 @end enumerate
8731
8732 @node TTY keys, Interaction, Clean view, Miscellaneous
8733 @section Using Org on a tty
8734 @cindex tty key bindings
8735
8736 Because Org contains a large number of commands, by default much of
8737 Org's core commands are bound to keys that are generally not
8738 accessible on a tty, such as the cursor keys (@key{left}, @key{right},
8739 @key{up}, @key{down}), @key{TAB} and @key{RET}, in particular when used
8740 together with modifiers like @key{Meta} and/or @key{Shift}. To access
8741 these commands on a tty when special keys are unavailable, the following
8742 alternative bindings can be used. The tty bindings below will likely be
8743 more cumbersome; you may find for some of the bindings below that a
8744 customized work-around suits you better. For example, changing a time
8745 stamp is really only fun with @kbd{S-@key{cursor}} keys, whereas on a
8746 tty you would rather use @kbd{C-c .} to re-insert the timestamp.
8747
8748 @multitable @columnfractions 0.15 0.2 0.2
8749 @item @b{Default} @tab @b{Alternative 1} @tab @b{Alternative 2}
8750 @item @kbd{S-@key{TAB}} @tab @kbd{C-u @key{TAB}} @tab
8751 @item @kbd{M-@key{left}} @tab @kbd{C-c C-x l} @tab @kbd{@key{Esc} @key{left}}
8752 @item @kbd{M-S-@key{left}} @tab @kbd{C-c C-x L} @tab
8753 @item @kbd{M-@key{right}} @tab @kbd{C-c C-x i} @tab @kbd{@key{Esc} @key{right}}
8754 @item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R} @tab
8755 @item @kbd{M-@key{up}} @tab @kbd{C-c C-x u} @tab @kbd{@key{Esc} @key{up}}
8756 @item @kbd{M-S-@key{up}} @tab @kbd{C-c C-x U} @tab
8757 @item @kbd{M-@key{down}} @tab @kbd{C-c C-x d} @tab @kbd{@key{Esc} @key{down}}
8758 @item @kbd{M-S-@key{down}} @tab @kbd{C-c C-x D} @tab
8759 @item @kbd{S-@key{RET}} @tab @kbd{C-c C-x c} @tab
8760 @item @kbd{M-@key{RET}} @tab @kbd{C-c C-x m} @tab @kbd{@key{Esc} @key{RET}}
8761 @item @kbd{M-S-@key{RET}} @tab @kbd{C-c C-x M} @tab
8762 @item @kbd{S-@key{left}} @tab @kbd{C-c @key{left}} @tab
8763 @item @kbd{S-@key{right}} @tab @kbd{C-c @key{right}} @tab
8764 @item @kbd{S-@key{up}} @tab @kbd{C-c @key{up}} @tab
8765 @item @kbd{S-@key{down}} @tab @kbd{C-c @key{down}} @tab
8766 @item @kbd{C-S-@key{left}} @tab @kbd{C-c C-x @key{left}} @tab
8767 @item @kbd{C-S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab
8768 @end multitable
8769
8770 @node Interaction, Bugs, TTY keys, Miscellaneous
8771 @section Interaction with other packages
8772 @cindex packages, interaction with other
8773 Org lives in the world of GNU Emacs and interacts in various ways
8774 with other code out there.
8775
8776 @menu
8777 * Cooperation:: Packages Org cooperates with
8778 * Conflicts:: Packages that lead to conflicts
8779 @end menu
8780
8781 @node Cooperation, Conflicts, Interaction, Interaction
8782 @subsection Packages that Org cooperates with
8783
8784 @table @asis
8785 @cindex @file{calc.el}
8786 @item @file{calc.el} by Dave Gillespie
8787 Org uses the Calc package for implementing spreadsheet
8788 functionality in its tables (@pxref{The spreadsheet}). Org
8789 checks for the availability of Calc by looking for the function
8790 @code{calc-eval} which should be autoloaded in your setup if Calc has
8791 been installed properly. As of Emacs 22, Calc is part of the Emacs
8792 distribution. Another possibility for interaction between the two
8793 packages is using Calc for embedded calculations. @xref{Embedded Mode,
8794 , Embedded Mode, Calc, GNU Emacs Calc Manual}.
8795 @cindex @file{constants.el}
8796 @item @file{constants.el} by Carsten Dominik
8797 In a table formula (@pxref{The spreadsheet}), it is possible to use
8798 names for natural constants or units. Instead of defining your own
8799 constants in the variable @code{org-table-formula-constants}, install
8800 the @file{constants} package which defines a large number of constants
8801 and units, and lets you use unit prefixes like @samp{M} for
8802 @samp{Mega} etc. You will need version 2.0 of this package, available
8803 at @url{http://www.astro.uva.nl/~dominik/Tools}. Org checks for
8804 the function @code{constants-get}, which has to be autoloaded in your
8805 setup. See the installation instructions in the file
8806 @file{constants.el}.
8807 @item @file{cdlatex.el} by Carsten Dominik
8808 @cindex @file{cdlatex.el}
8809 Org mode can make use of the CDLaTeX package to efficiently enter
8810 La@TeX{} fragments into Org files. See @ref{CDLaTeX mode}.
8811 @item @file{imenu.el} by Ake Stenhoff and Lars Lindberg
8812 @cindex @file{imenu.el}
8813 Imenu allows menu access to an index of items in a file. Org mode
8814 supports Imenu - all you need to do to get the index is the following:
8815 @lisp
8816 (add-hook 'org-mode-hook
8817 (lambda () (imenu-add-to-menubar "Imenu")))
8818 @end lisp
8819 By default the index is two levels deep - you can modify the depth using
8820 the option @code{org-imenu-depth}.
8821 @item @file{remember.el} by John Wiegley
8822 @cindex @file{remember.el}
8823 Org cooperates with remember, see @ref{Remember}.
8824 @file{Remember.el} is not part of Emacs, find it on the web.
8825 @item @file{speedbar.el} by Eric M. Ludlam
8826 @cindex @file{speedbar.el}
8827 Speedbar is a package that creates a special frame displaying files and
8828 index items in files. Org mode supports Speedbar and allows you to
8829 drill into Org files directly from the Speedbar. It also allows to
8830 restrict the scope of agenda commands to a file or a subtree by using
8831 the command @kbd{<} in the Speedbar frame.
8832 @cindex @file{table.el}
8833 @item @file{table.el} by Takaaki Ota
8834 @kindex C-c C-c
8835 @cindex table editor, @file{table.el}
8836 @cindex @file{table.el}
8837
8838 Complex ASCII tables with automatic line wrapping, column- and
8839 row-spanning, and alignment can be created using the Emacs table
8840 package by Takaaki Ota (@uref{http://sourceforge.net/projects/table},
8841 and also part of Emacs 22).
8842 When @key{TAB} or @kbd{C-c C-c} is pressed in such a table, Org mode
8843 will call @command{table-recognize-table} and move the cursor into the
8844 table. Inside a table, the keymap of Org mode is inactive. In order
8845 to execute Org mode-related commands, leave the table.
8846
8847 @table @kbd
8848 @kindex C-c C-c
8849 @item C-c C-c
8850 Recognize @file{table.el} table. Works when the cursor is in a
8851 table.el table.
8852 @c
8853 @kindex C-c ~
8854 @item C-c ~
8855 Insert a table.el table. If there is already a table at point, this
8856 command converts it between the table.el format and the Org mode
8857 format. See the documentation string of the command
8858 @code{org-convert-table} for the restrictions under which this is
8859 possible.
8860 @end table
8861 @file{table.el} is part of Emacs 22.
8862 @cindex @file{footnote.el}
8863 @item @file{footnote.el} by Steven L. Baur
8864 Org mode recognizes numerical footnotes as provided by this package
8865 (@pxref{Footnotes}).
8866 @end table
8867
8868 @node Conflicts, , Cooperation, Interaction
8869 @subsection Packages that lead to conflicts with Org mode
8870
8871 @table @asis
8872
8873 @cindex @file{allout.el}
8874 @item @file{allout.el} by Ken Manheimer
8875 Startup of Org may fail with the error message
8876 @code{(wrong-type-argument keymapp nil)} when there is an outdated
8877 version @file{allout.el} on the load path, for example the version
8878 distributed with Emacs 21.x. Upgrade to Emacs 22 and this problem will
8879 disappear. If for some reason you cannot do this, make sure that org.el
8880 is loaded @emph{before} @file{allout.el}, for example by putting
8881 @code{(require 'org)} early enough into your @file{.emacs} file.
8882
8883 @cindex @file{CUA.el}
8884 @item @file{CUA.el} by Kim. F. Storm
8885 Key bindings in Org conflict with the @kbd{S-<cursor>} keys used by
8886 CUA mode (as well as pc-select-mode and s-region-mode) to select and
8887 extend the region. If you want to use one of these packages along with
8888 Org, configure the variable @code{org-replace-disputed-keys}. When
8889 set, Org will move the following key bindings in Org files, and
8890 in the agenda buffer (but not during date selection).
8891
8892 @example
8893 S-UP -> M-p S-DOWN -> M-n
8894 S-LEFT -> M-- S-RIGHT -> M-+
8895 @end example
8896
8897 Yes, these are unfortunately more difficult to remember. If you want
8898 to have other replacement keys, look at the variable
8899 @code{org-disputed-keys}.
8900 @item @file{windmove.el} by Hovav Shacham
8901 @cindex @file{windmove.el}
8902 Also this package uses the @kbd{S-<cursor>} keys, so everything written
8903 in the paragraph above about CUA mode also applies here.
8904
8905 @cindex @file{footnote.el}
8906 @item @file{footnote.el} by Steven L. Baur
8907 Org supports the syntax of the footnote package, but only the
8908 numerical footnote markers. Also, the default key for footnote
8909 commands, @kbd{C-c !} is already used by Org. You could use the
8910 variable @code{footnote-prefix} to switch footnotes commands to another
8911 key. Or, you could use @code{org-replace-disputed-keys} and
8912 @code{org-disputed-keys} to change the settings in Org.
8913
8914 @end table
8915
8916
8917 @node Bugs, , Interaction, Miscellaneous
8918 @section Bugs
8919 @cindex bugs
8920
8921 Here is a list of things that should work differently, but which I
8922 have found too hard to fix.
8923
8924 @itemize @bullet
8925 @item
8926 If a table field starts with a link, and if the corresponding table
8927 column is narrowed (@pxref{Narrow columns}) to a width too small to
8928 display the link, the field would look entirely empty even though it is
8929 not. To prevent this, Org throws an error. The work-around is to
8930 make the column wide enough to fit the link, or to add some text (at
8931 least 2 characters) before the link in the same field.
8932 @item
8933 Narrowing table columns does not work on XEmacs, because the
8934 @code{format} function does not transport text properties.
8935 @item
8936 Text in an entry protected with the @samp{QUOTE} keyword should not
8937 autowrap.
8938 @item
8939 When the application called by @kbd{C-c C-o} to open a file link fails
8940 (for example because the application does not exist or refuses to open
8941 the file), it does so silently. No error message is displayed.
8942 @item
8943 Recalculating a table line applies the formulas from left to right.
8944 If a formula uses @emph{calculated} fields further down the row,
8945 multiple recalculation may be needed to get all fields consistent. You
8946 may use the command @code{org-table-iterate} (@kbd{C-u C-c *}) to
8947 recalculate until convergence.
8948 @item
8949 The exporters work well, but could be made more efficient.
8950 @end itemize
8951
8952
8953 @node Extensions, Hacking, Miscellaneous, Top
8954 @appendix Extensions
8955
8956 This appendix lists the extension modules that have been written for Org.
8957 Many of these extensions live in the @file{contrib} directory of the Org
8958 distribution, others are available somewhere on the web.
8959
8960 @menu
8961 * Extensions in the contrib directory:: These come with the Org distro
8962 * Other extensions:: These you have to find on the web.
8963 @end menu
8964
8965 @node Extensions in the contrib directory, Other extensions, Extensions, Extensions
8966 @section Extensions in the @file{contrib} directory
8967
8968 A number of extension are distributed with Org when you download it from its
8969 homepage. Please note that these extensions are @emph{not} distributed as
8970 part of Emacs, so if you use Org as delivered with Emacs, you still need to
8971 go to @url{http://orgmode.org} to get access to these modules.
8972
8973 @table @asis
8974 @item @file{org-annotate-file.el} by @i{Philip Jackson}
8975 Annotate a file with org syntax, in a separate file, with links back to
8976 the annotated file.
8977 @item @file{org-annotation-helper.el} by @i{Bastien Guerry and Daniel E. German}
8978 Call @i{remember} directly from Firefox/Opera, or from Adobe Reader.
8979 When activating a special link or bookmark, Emacs receives a trigger to
8980 create a note with a link back to the website. Requires some setup, a
8981 detailes description is in
8982 @file{contrib/packages/org-annotation-helper}.
8983 @item @file{org-bookmark.el} by @i{Tokuya Kameshima}
8984 Support for links to Emacs bookmarks.
8985 @item @file{org-depend.el} by @i{Carsten Dominik}
8986 TODO dependencies for Org-mode. Make TODO state changes in one entry
8987 trigger changes in another, or be blocked by the state of another
8988 entry. Also, easily create chains of TODO items with exactly one
8989 active item at any time.
8990 @item @file{org-elisp-symbol.el} by @i{Bastien Guerry}
8991 Org links to emacs-lisp symbols. This can create annotated links that
8992 exactly point to the definition location of a variable of function.
8993 @item @file{org-eval.el} by @i{Carsten Dominik}
8994 The @code{<lisp>} tag, adapted from Emacs Wiki and Emacs Muse, allows
8995 text to be included in a document that is the result of evaluating some
8996 code. Other scripting languages like @code{perl} can be supported with
8997 this package as well.
8998 @item @file{org-eval-light.el} by @i{Eric Schulte}
8999 User-controlled evaluation of code in an Org buffer.
9000 @item @file{org-exp-blocks.el} by @i{Eric Schulte}
9001 Preprocess user-defined blocks for export.
9002 @item @file{org-expiry.el} by @i{Bastien Guerry}
9003 Expiry mechanism for Org entries.
9004 @item @file{org-indent.el} by @i{Carsten Dominik}
9005 Dynamic indentation of Org outlines. The plan is to indent an outline
9006 according to level, but so far this is too hard for a proper and stable
9007 implementation. Still, it works somewhat.
9008 @item @file{org-interactive-query.el} by @i{Christopher League}
9009 Interactive modification of tags queries. After running a general
9010 query in Org, this package allows to narrow down the results by adding
9011 more tags or keywords.
9012 @item @file{org-mairix.el} by @i{Georg C. F. Greve}
9013 Hook mairix search into Org for different MUAs.
9014 @item @file{org-man.el} by @i{Carsten Dominik}
9015 Support for links to manpages in Org-mode.
9016 @item @file{org-mtags.el} by @i{Carsten Dominik}
9017 Support for some Muse-like tags in Org-mode. This package allows you
9018 to write @code{<example>} and @code{<src>} and other syntax copied from
9019 Emacs Muse, right inside an Org file. The goal here is to make it easy
9020 to publish the same file using either org-publish or Muse.
9021 @item @file{org-panel.el} by @i{Lennard Borgman}
9022 Simplified and display-aided access to some Org commands.
9023 @item @file{org-registry.el} by @i{Bastien Guerry}
9024 A registry for Org links, to find out from where links point to a given
9025 file or location.
9026 @item @file{org2rem.el} by @i{Bastien Guerry}
9027 Convert org appointments into reminders for the @file{remind} program.
9028 @item @file{org-screen.el} by @i{Andrew Hyatt}
9029 Visit screen sessions through Org-mode links.
9030 @item @file{org-toc.el} by @i{Bastien Guerry}
9031 Table of contents in a separate buffer, with fast access to sections
9032 and easy visibility cycling.
9033 @item @file{orgtbl-sqlinsert.el} by @i{Jason Riedy}
9034 Convert Org-mode tables to SQL insertions. Documentation for this can
9035 be found on the Worg pages.
9036 @end table
9037
9038 @node Other extensions, , Extensions in the contrib directory, Extensions
9039 @section Other extensions
9040
9041 @i{TO BE DONE}
9042
9043 @node Hacking, History and Acknowledgments, Extensions, Top
9044 @appendix Hacking
9045
9046 This appendix covers some aspects where users can extend the functionality of
9047 Org.
9048
9049 @menu
9050 * Adding hyperlink types:: New custom link types
9051 * Tables in arbitrary syntax:: Orgtbl for LaTeX and other programs
9052 * Dynamic blocks:: Automatically filled blocks
9053 * Special agenda views:: Customized views
9054 * Using the property API:: Writing programs that use entry properties
9055 * Using the mapping API:: Mapping over all or selected entries
9056 @end menu
9057
9058 @node Adding hyperlink types, Tables in arbitrary syntax, Hacking, Hacking
9059 @section Adding hyperlink types
9060 @cindex hyperlinks, adding new types
9061
9062 Org has a large number of hyperlink types built-in
9063 (@pxref{Hyperlinks}). If you would like to add new link types, it
9064 provides an interface for doing so. Let's look at an example file
9065 @file{org-man.el} that will add support for creating links like
9066 @samp{[[man:printf][The printf manpage]]} to show Unix manual pages inside
9067 emacs:
9068
9069 @lisp
9070 ;;; org-man.el - Support for links to manpages in Org
9071
9072 (require 'org)
9073
9074 (org-add-link-type "man" 'org-man-open)
9075 (add-hook 'org-store-link-functions 'org-man-store-link)
9076
9077 (defcustom org-man-command 'man
9078 "The Emacs command to be used to display a man page."
9079 :group 'org-link
9080 :type '(choice (const man) (const woman)))
9081
9082 (defun org-man-open (path)
9083 "Visit the manpage on PATH.
9084 PATH should be a topic that can be thrown at the man command."
9085 (funcall org-man-command path))
9086
9087 (defun org-man-store-link ()
9088 "Store a link to a manpage."
9089 (when (memq major-mode '(Man-mode woman-mode))
9090 ;; This is a man page, we do make this link
9091 (let* ((page (org-man-get-page-name))
9092 (link (concat "man:" page))
9093 (description (format "Manpage for %s" page)))
9094 (org-store-link-props
9095 :type "man"
9096 :link link
9097 :description description))))
9098
9099 (defun org-man-get-page-name ()
9100 "Extract the page name from the buffer name."
9101 ;; This works for both `Man-mode' and `woman-mode'.
9102 (if (string-match " \\(\\S-+\\)\\*" (buffer-name))
9103 (match-string 1 (buffer-name))
9104 (error "Cannot create link to this man page")))
9105
9106 (provide 'org-man)
9107
9108 ;;; org-man.el ends here
9109 @end lisp
9110
9111 @noindent
9112 You would activate this new link type in @file{.emacs} with
9113
9114 @lisp
9115 (require 'org-man)
9116 @end lisp
9117
9118 @noindent
9119 Let's go through the file and see what it does.
9120 @enumerate
9121 @item
9122 It does @code{(require 'org)} to make sure that @file{org.el} has been
9123 loaded.
9124 @item
9125 The next line calls @code{org-add-link-type} to define a new link type
9126 with prefix @samp{man}. The call also contains the name of a function
9127 that will be called to follow such a link.
9128 @item
9129 The next line adds a function to @code{org-store-link-functions}, in
9130 order to allow the command @kbd{C-c l} to record a useful link in a
9131 buffer displaying a man page.
9132 @end enumerate
9133
9134 The rest of the file defines the necessary variables and functions.
9135 First there is a customization variable that determines which emacs
9136 command should be used to display man pages. There are two options,
9137 @code{man} and @code{woman}. Then the function to follow a link is
9138 defined. It gets the link path as an argument - in this case the link
9139 path is just a topic for the manual command. The function calls the
9140 value of @code{org-man-command} to display the man page.
9141
9142 Finally the function @code{org-man-store-link} is defined. When you try
9143 to store a link with @kbd{C-c l}, also this function will be called to
9144 try to make a link. The function must first decide if it is supposed to
9145 create the link for this buffer type, we do this by checking the value
9146 of the variable @code{major-mode}. If not, the function must exit and
9147 return the value @code{nil}. If yes, the link is created by getting the
9148 manual topic from the buffer name and prefixing it with the string
9149 @samp{man:}. Then it must call the command @code{org-store-link-props}
9150 and set the @code{:type} and @code{:link} properties. Optionally you
9151 can also set the @code{:description} property to provide a default for
9152 the link description when the link is later inserted into an Org
9153 buffer with @kbd{C-c C-l}.
9154
9155 @node Tables in arbitrary syntax, Dynamic blocks, Adding hyperlink types, Hacking
9156 @section Tables and lists in arbitrary syntax
9157 @cindex tables, in other modes
9158 @cindex lists, in other modes
9159 @cindex Orgtbl mode
9160
9161 Since Orgtbl mode can be used as a minor mode in arbitrary buffers, a
9162 frequent feature request has been to make it work with native tables in
9163 specific languages, for example La@TeX{}. However, this is extremely
9164 hard to do in a general way, would lead to a customization nightmare,
9165 and would take away much of the simplicity of the Orgtbl mode table
9166 editor.
9167
9168
9169 This appendix describes a different approach. We keep the Orgtbl mode
9170 table in its native format (the @i{source table}), and use a custom
9171 function to @i{translate} the table to the correct syntax, and to
9172 @i{install} it in the right location (the @i{target table}). This puts
9173 the burden of writing conversion functions on the user, but it allows
9174 for a very flexible system.
9175
9176 Bastien added the ability to do the same with lists. You can use Org's
9177 facilities to edit and structure lists by turning @code{orgstruct-mode}
9178 on, then locally exporting such lists in another format (HTML, La@TeX{}
9179 or Texinfo.)
9180
9181
9182 @menu
9183 * Radio tables:: Sending and receiving
9184 * A LaTeX example:: Step by step, almost a tutorial
9185 * Translator functions:: Copy and modify
9186 * Radio lists:: Doing the same for lists
9187 @end menu
9188
9189 @node Radio tables, A LaTeX example, Tables in arbitrary syntax, Tables in arbitrary syntax
9190 @subsection Radio tables
9191 @cindex radio tables
9192
9193 To define the location of the target table, you first need to create two
9194 lines that are comments in the current mode, but contain magic words for
9195 Orgtbl mode to find. Orgtbl mode will insert the translated table
9196 between these lines, replacing whatever was there before. For example:
9197
9198 @example
9199 /* BEGIN RECEIVE ORGTBL table_name */
9200 /* END RECEIVE ORGTBL table_name */
9201 @end example
9202
9203 @noindent
9204 Just above the source table, we put a special line that tells
9205 Orgtbl mode how to translate this table and where to install it. For
9206 example:
9207 @example
9208 #+ORGTBL: SEND table_name translation_function arguments....
9209 @end example
9210
9211 @noindent
9212 @code{table_name} is the reference name for the table that is also used
9213 in the receiver lines. @code{translation_function} is the Lisp function
9214 that does the translation. Furthermore, the line can contain a list of
9215 arguments (alternating key and value) at the end. The arguments will be
9216 passed as a property list to the translation function for
9217 interpretation. A few standard parameters are already recognized and
9218 acted upon before the translation function is called:
9219
9220 @table @code
9221 @item :skip N
9222 Skip the first N lines of the table. Hlines do count as separate lines for
9223 this parameter!
9224
9225 @item :skipcols (n1 n2 ...)
9226 List of columns that should be skipped. If the table has a column with
9227 calculation marks, that column is automatically discarded as well.
9228 Please note that the translator function sees the table @emph{after} the
9229 removal of these columns, the function never knows that there have been
9230 additional columns.
9231 @end table
9232
9233 @noindent
9234 The one problem remaining is how to keep the source table in the buffer
9235 without disturbing the normal workings of the file, for example during
9236 compilation of a C file or processing of a La@TeX{} file. There are a
9237 number of different solutions:
9238
9239 @itemize @bullet
9240 @item
9241 The table could be placed in a block comment if that is supported by the
9242 language. For example, in C mode you could wrap the table between
9243 @samp{/*} and @samp{*/} lines.
9244 @item
9245 Sometimes it is possible to put the table after some kind of @i{END}
9246 statement, for example @samp{\bye} in TeX and @samp{\end@{document@}}
9247 in La@TeX{}.
9248 @item
9249 You can just comment the table line by line whenever you want to process
9250 the file, and uncomment it whenever you need to edit the table. This
9251 only sounds tedious - the command @kbd{M-x orgtbl-toggle-comment} does
9252 make this comment-toggling very easy, in particular if you bind it to a
9253 key.
9254 @end itemize
9255
9256 @node A LaTeX example, Translator functions, Radio tables, Tables in arbitrary syntax
9257 @subsection A LaTeX example of radio tables
9258 @cindex LaTeX, and Orgtbl mode
9259
9260 The best way to wrap the source table in La@TeX{} is to use the
9261 @code{comment} environment provided by @file{comment.sty}. It has to be
9262 activated by placing @code{\usepackage@{comment@}} into the document
9263 header. Orgtbl mode can insert a radio table skeleton@footnote{By
9264 default this works only for La@TeX{}, HTML, and Texinfo. Configure the
9265 variable @code{orgtbl-radio-tables} to install templates for other
9266 modes.} with the command @kbd{M-x orgtbl-insert-radio-table}. You will
9267 be prompted for a table name, lets say we use @samp{salesfigures}. You
9268 will then get the following template:
9269
9270 @cindex #+ORGTBL: SEND
9271 @example
9272 % BEGIN RECEIVE ORGTBL salesfigures
9273 % END RECEIVE ORGTBL salesfigures
9274 \begin@{comment@}
9275 #+ORGTBL: SEND salesfigures orgtbl-to-latex
9276 | | |
9277 \end@{comment@}
9278 @end example
9279
9280 @noindent
9281 The @code{#+ORGTBL: SEND} line tells Orgtbl mode to use the function
9282 @code{orgtbl-to-latex} to convert the table into La@TeX{} and to put it
9283 into the receiver location with name @code{salesfigures}. You may now
9284 fill in the table, feel free to use the spreadsheet features@footnote{If
9285 the @samp{#+TBLFM} line contains an odd number of dollar characters,
9286 this may cause problems with font-lock in LaTeX mode. As shown in the
9287 example you can fix this by adding an extra line inside the
9288 @code{comment} environment that is used to balance the dollar
9289 expressions. If you are using AUCTeX with the font-latex library, a
9290 much better solution is to add the @code{comment} environment to the
9291 variable @code{LaTeX-verbatim-environments}.}:
9292
9293 @example
9294 % BEGIN RECEIVE ORGTBL salesfigures
9295 % END RECEIVE ORGTBL salesfigures
9296 \begin@{comment@}
9297 #+ORGTBL: SEND salesfigures orgtbl-to-latex
9298 | Month | Days | Nr sold | per day |
9299 |-------+------+---------+---------|
9300 | Jan | 23 | 55 | 2.4 |
9301 | Feb | 21 | 16 | 0.8 |
9302 | March | 22 | 278 | 12.6 |
9303 #+TBLFM: $4=$3/$2;%.1f
9304 % $ (optional extra dollar to keep font-lock happy, see footnote)
9305 \end@{comment@}
9306 @end example
9307
9308 @noindent
9309 When you are done, press @kbd{C-c C-c} in the table to get the converted
9310 table inserted between the two marker lines.
9311
9312 Now lets assume you want to make the table header by hand, because you
9313 want to control how columns are aligned etc. In this case we make sure
9314 that the table translator does skip the first 2 lines of the source
9315 table, and tell the command to work as a @i{splice}, i.e. to not produce
9316 header and footer commands of the target table:
9317
9318 @example
9319 \begin@{tabular@}@{lrrr@}
9320 Month & \multicolumn@{1@}@{c@}@{Days@} & Nr.\ sold & per day\\
9321 % BEGIN RECEIVE ORGTBL salesfigures
9322 % END RECEIVE ORGTBL salesfigures
9323 \end@{tabular@}
9324 %
9325 \begin@{comment@}
9326 #+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2
9327 | Month | Days | Nr sold | per day |
9328 |-------+------+---------+---------|
9329 | Jan | 23 | 55 | 2.4 |
9330 | Feb | 21 | 16 | 0.8 |
9331 | March | 22 | 278 | 12.6 |
9332 #+TBLFM: $4=$3/$2;%.1f
9333 \end@{comment@}
9334 @end example
9335
9336 The La@TeX{} translator function @code{orgtbl-to-latex} is already part of
9337 Orgtbl mode. It uses a @code{tabular} environment to typeset the table
9338 and marks horizontal lines with @code{\hline}. Furthermore, it
9339 interprets the following parameters (see also @ref{Translator functions}):
9340
9341 @table @code
9342 @item :splice nil/t
9343 When set to t, return only table body lines, don't wrap them into a
9344 tabular environment. Default is nil.
9345
9346 @item :fmt fmt
9347 A format to be used to wrap each field, should contain @code{%s} for the
9348 original field value. For example, to wrap each field value in dollars,
9349 you could use @code{:fmt "$%s$"}. This may also be a property list with
9350 column numbers and formats. for example @code{:fmt (2 "$%s$" 4 "%s\\%%")}.
9351 A function of one argument can be used in place of the strings; the
9352 function must return a formatted string.
9353
9354 @item :efmt efmt
9355 Use this format to print numbers with exponentials. The format should
9356 have @code{%s} twice for inserting mantissa and exponent, for example
9357 @code{"%s\\times10^@{%s@}"}. The default is @code{"%s\\,(%s)"}. This
9358 may also be a property list with column numbers and formats, for example
9359 @code{:efmt (2 "$%s\\times10^@{%s@}$" 4 "$%s\\cdot10^@{%s@}$")}. After
9360 @code{efmt} has been applied to a value, @code{fmt} will also be
9361 applied. Similar to @code{fmt}, functions of two arguments can be
9362 supplied instead of strings.
9363 @end table
9364
9365 @node Translator functions, Radio lists, A LaTeX example, Tables in arbitrary syntax
9366 @subsection Translator functions
9367 @cindex HTML, and Orgtbl mode
9368 @cindex translator function
9369
9370 Orgtbl mode has several translator functions built-in: @code{orgtbl-to-csv}
9371 (comma-separated values), @code{orgtbl-to-tsv} (TAB-separated values)
9372 @code{orgtbl-to-latex}, @code{orgtbl-to-html}, and @code{orgtbl-to-texinfo}.
9373 Except for @code{orgtbl-to-html}@footnote{The HTML translator uses the same
9374 code that produces tables during HTML export.}, these all use a generic
9375 translator, @code{orgtbl-to-generic}. For example, @code{orgtbl-to-latex}
9376 itself is a very short function that computes the column definitions for the
9377 @code{tabular} environment, defines a few field and line separators and then
9378 hands over to the generic translator. Here is the entire code:
9379
9380 @lisp
9381 @group
9382 (defun orgtbl-to-latex (table params)
9383 "Convert the Orgtbl mode TABLE to LaTeX."
9384 (let* ((alignment (mapconcat (lambda (x) (if x "r" "l"))
9385 org-table-last-alignment ""))
9386 (params2
9387 (list
9388 :tstart (concat "\\begin@{tabular@}@{" alignment "@}")
9389 :tend "\\end@{tabular@}"
9390 :lstart "" :lend " \\\\" :sep " & "
9391 :efmt "%s\\,(%s)" :hline "\\hline")))
9392 (orgtbl-to-generic table (org-combine-plists params2 params))))
9393 @end group
9394 @end lisp
9395
9396 As you can see, the properties passed into the function (variable
9397 @var{PARAMS}) are combined with the ones newly defined in the function
9398 (variable @var{PARAMS2}). The ones passed into the function (i.e. the
9399 ones set by the @samp{ORGTBL SEND} line) take precedence. So if you
9400 would like to use the La@TeX{} translator, but wanted the line endings to
9401 be @samp{\\[2mm]} instead of the default @samp{\\}, you could just
9402 overrule the default with
9403
9404 @example
9405 #+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]"
9406 @end example
9407
9408 For a new language, you can either write your own converter function in
9409 analogy with the La@TeX{} translator, or you can use the generic function
9410 directly. For example, if you have a language where a table is started
9411 with @samp{!BTBL!}, ended with @samp{!ETBL!}, and where table lines are
9412 started with @samp{!BL!}, ended with @samp{!EL!} and where the field
9413 separator is a TAB, you could call the generic translator like this (on
9414 a single line!):
9415
9416 @example
9417 #+ORGTBL: SEND test orgtbl-to-generic :tstart "!BTBL!" :tend "!ETBL!"
9418 :lstart "!BL! " :lend " !EL!" :sep "\t"
9419 @end example
9420
9421 @noindent
9422 Please check the documentation string of the function
9423 @code{orgtbl-to-generic} for a full list of parameters understood by
9424 that function and remember that you can pass each of them into
9425 @code{orgtbl-to-latex}, @code{orgtbl-to-texinfo}, and any other function
9426 using the generic function.
9427
9428 Of course you can also write a completely new function doing complicated
9429 things the generic translator cannot do. A translator function takes
9430 two arguments. The first argument is the table, a list of lines, each
9431 line either the symbol @code{hline} or a list of fields. The second
9432 argument is the property list containing all parameters specified in the
9433 @samp{#+ORGTBL: SEND} line. The function must return a single string
9434 containing the formatted table. If you write a generally useful
9435 translator, please post it on @code{emacs-orgmode@@gnu.org} so that
9436 others can benefit from your work.
9437
9438 @node Radio lists, , Translator functions, Tables in arbitrary syntax
9439 @subsection Radio lists
9440 @cindex radio lists
9441 @cindex org-list-insert-radio-list
9442
9443 Sending and receiving radio lists works exactly the same way than
9444 sending and receiving radio tables (@pxref{Radio tables}) @footnote{You
9445 need to load the @code{org-export-latex.el} package to use radio lists
9446 since the relevant code is there for now.}. As for radio tables, you
9447 can insert radio lists templates in HTML, La@TeX{} and Texinfo modes by
9448 calling @code{org-list-insert-radio-list}.
9449
9450 Here are the differences with radio tables:
9451
9452 @itemize @minus
9453 @item
9454 Use @code{ORGLST} instead of @code{ORGTBL}.
9455 @item
9456 The available translation functions for radio lists don't take
9457 parameters.
9458 @item
9459 `C-c C-c' will work when pressed on the first item of the list.
9460 @end itemize
9461
9462 Here is a La@TeX{} example. Let's say that you have this in your
9463 La@TeX{} file:
9464
9465 @example
9466 % BEGIN RECEIVE ORGLST to-buy
9467 % END RECEIVE ORGLST to-buy
9468 \begin@{comment@}
9469 #+ORGLIST: SEND to-buy orgtbl-to-latex
9470 - a new house
9471 - a new computer
9472 + a new keyboard
9473 + a new mouse
9474 - a new life
9475 \end@{comment@}
9476 @end example
9477
9478 Pressing `C-c C-c' on @code{a new house} and will insert the converted
9479 La@TeX{} list between the two marker lines.
9480
9481 @node Dynamic blocks, Special agenda views, Tables in arbitrary syntax, Hacking
9482 @section Dynamic blocks
9483 @cindex dynamic blocks
9484
9485 Org documents can contain @emph{dynamic blocks}. These are
9486 specially marked regions that are updated by some user-written function.
9487 A good example for such a block is the clock table inserted by the
9488 command @kbd{C-c C-x C-r} (@pxref{Clocking work time}).
9489
9490 Dynamic block are enclosed by a BEGIN-END structure that assigns a name
9491 to the block and can also specify parameters for the function producing
9492 the content of the block.
9493
9494 #+BEGIN:dynamic block
9495 @example
9496 #+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
9497
9498 #+END:
9499 @end example
9500
9501 Dynamic blocks are updated with the following commands
9502
9503 @table @kbd
9504 @kindex C-c C-x C-u
9505 @item C-c C-x C-u
9506 Update dynamic block at point.
9507 @kindex C-u C-c C-x C-u
9508 @item C-u C-c C-x C-u
9509 Update all dynamic blocks in the current file.
9510 @end table
9511
9512 Updating a dynamic block means to remove all the text between BEGIN and
9513 END, parse the BEGIN line for parameters and then call the specific
9514 writer function for this block to insert the new content. If you want
9515 to use the original content in the writer function, you can use the
9516 extra parameter @code{:content}.
9517
9518 For a block with name @code{myblock}, the writer function is
9519 @code{org-dblock-write:myblock} with as only parameter a property list
9520 with the parameters given in the begin line. Here is a trivial example
9521 of a block that keeps track of when the block update function was last
9522 run:
9523
9524 @example
9525 #+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M"
9526
9527 #+END:
9528 @end example
9529
9530 @noindent
9531 The corresponding block writer function could look like this:
9532
9533 @lisp
9534 (defun org-dblock-write:block-update-time (params)
9535 (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
9536 (insert "Last block update at: "
9537 (format-time-string fmt (current-time)))))
9538 @end lisp
9539
9540 If you want to make sure that all dynamic blocks are always up-to-date,
9541 you could add the function @code{org-update-all-dblocks} to a hook, for
9542 example @code{before-save-hook}. @code{org-update-all-dblocks} is
9543 written in a way that is does nothing in buffers that are not in
9544 @code{org-mode}.
9545
9546 @node Special agenda views, Using the property API, Dynamic blocks, Hacking
9547 @section Special agenda views
9548 @cindex agenda views, user-defined
9549
9550 Org provides a special hook that can be used to narrow down the
9551 selection made by any of the agenda views. You may specify a function
9552 that is used at each match to verify if the match should indeed be part
9553 of the agenda view, and if not, how much should be skipped.
9554
9555 Let's say you want to produce a list of projects that contain a WAITING
9556 tag anywhere in the project tree. Let's further assume that you have
9557 marked all tree headings that define a project with the TODO keyword
9558 PROJECT. In this case you would run a TODO search for the keyword
9559 PROJECT, but skip the match unless there is a WAITING tag anywhere in
9560 the subtree belonging to the project line.
9561
9562 To achieve this, you must write a function that searches the subtree for
9563 the tag. If the tag is found, the function must return @code{nil} to
9564 indicate that this match should not be skipped. If there is no such
9565 tag, return the location of the end of the subtree, to indicate that
9566 search should continue from there.
9567
9568 @lisp
9569 (defun my-skip-unless-waiting ()
9570 "Skip trees that are not waiting"
9571 (let ((subtree-end (save-excursion (org-end-of-subtree t))))
9572 (if (re-search-forward ":waiting:" subtree-end t)
9573 nil ; tag found, do not skip
9574 subtree-end))) ; tag not found, continue after end of subtree
9575 @end lisp
9576
9577 Now you may use this function in an agenda custom command, for example
9578 like this:
9579
9580 @lisp
9581 (org-add-agenda-custom-command
9582 '("b" todo "PROJECT"
9583 ((org-agenda-skip-function 'my-skip-unless-waiting)
9584 (org-agenda-overriding-header "Projects waiting for something: "))))
9585 @end lisp
9586
9587 Note that this also binds @code{org-agenda-overriding-header} to get a
9588 meaningful header in the agenda view.
9589
9590 A general way to create custom searches is to base them on a search for
9591 entries with a certain level limit. If you want to study all entries with
9592 your custom search function, simply do a search for @samp{LEVEL>0}, and then
9593 use @code{org-agenda-skip-function} to select the entries you really want to
9594 have.
9595
9596 You may also put a Lisp form into @code{org-agenda-skip-function}. In
9597 particular, you may use the functions @code{org-agenda-skip-entry-if}
9598 and @code{org-agenda-skip-subtree-if} in this form, for example:
9599
9600 @table @code
9601 @item '(org-agenda-skip-entry-if 'scheduled)
9602 Skip current entry if it has been scheduled.
9603 @item '(org-agenda-skip-entry-if 'notscheduled)
9604 Skip current entry if it has not been scheduled.
9605 @item '(org-agenda-skip-entry-if 'deadline)
9606 Skip current entry if it has a deadline.
9607 @item '(org-agenda-skip-entry-if 'scheduled 'deadline)
9608 Skip current entry if it has a deadline, or if it is scheduled.
9609 @item '(org-agenda-skip-entry 'regexp "regular expression")
9610 Skip current entry if the regular expression matches in the entry.
9611 @item '(org-agenda-skip-entry 'notregexp "regular expression")
9612 Skip current entry unless the regular expression matches.
9613 @item '(org-agenda-skip-subtree-if 'regexp "regular expression")
9614 Same as above, but check and skip the entire subtree.
9615 @end table
9616
9617 Therefore we could also have written the search for WAITING projects
9618 like this, even without defining a special function:
9619
9620 @lisp
9621 (org-add-agenda-custom-command
9622 '("b" todo "PROJECT"
9623 ((org-agenda-skip-function '(org-agenda-skip-subtree-if
9624 'regexp ":waiting:"))
9625 (org-agenda-overriding-header "Projects waiting for something: "))))
9626 @end lisp
9627
9628 @node Using the property API, Using the mapping API, Special agenda views, Hacking
9629 @section Using the property API
9630 @cindex API, for properties
9631 @cindex properties, API
9632
9633 Here is a description of the functions that can be used to work with
9634 properties.
9635
9636 @defun org-entry-properties &optional pom which
9637 Get all properties of the entry at point-or-marker POM.
9638 This includes the TODO keyword, the tags, time strings for deadline,
9639 scheduled, and clocking, and any additional properties defined in the
9640 entry. The return value is an alist, keys may occur multiple times
9641 if the property key was used several times.
9642 POM may also be nil, in which case the current entry is used.
9643 If WHICH is nil or `all', get all properties. If WHICH is
9644 `special' or `standard', only get that subclass.
9645 @end defun
9646 @defun org-entry-get pom property &optional inherit
9647 Get value of PROPERTY for entry at point-or-marker POM. By default,
9648 this only looks at properties defined locally in the entry. If INHERIT
9649 is non-nil and the entry does not have the property, then also check
9650 higher levels of the hierarchy. If INHERIT is the symbol
9651 @code{selective}, use inheritance if and only if the setting of
9652 @code{org-use-property-inheritance} selects PROPERTY for inheritance.
9653 @end defun
9654
9655 @defun org-entry-delete pom property
9656 Delete the property PROPERTY from entry at point-or-marker POM.
9657 @end defun
9658
9659 @defun org-entry-put pom property value
9660 Set PROPERTY to VALUE for entry at point-or-marker POM.
9661 @end defun
9662
9663 @defun org-buffer-property-keys &optional include-specials
9664 Get all property keys in the current buffer.
9665 @end defun
9666
9667 @defun org-insert-property-drawer
9668 Insert a property drawer at point.
9669 @end defun
9670
9671 @defun org-entry-put-multivalued-property pom property &rest values
9672 Set PROPERTY at point-or-marker POM to VALUES. VALUES should be a list of
9673 strings. They will be concatenated, with spaces as separators.
9674 @end defun
9675
9676 @defun org-entry-get-multivalued-property pom property
9677 Treat the value of the property PROPERTY as a whitespace-separated list of
9678 values and return the values as a list of strings.
9679 @end defun
9680
9681 @defun org-entry-add-to-multivalued-property pom property value
9682 Treat the value of the property PROPERTY as a whitespace-separated list of
9683 values and make sure that VALUE is in this list.
9684 @end defun
9685
9686 @defun org-entry-remove-from-multivalued-property pom property value
9687 Treat the value of the property PROPERTY as a whitespace-separated list of
9688 values and make sure that VALUE is @emph{not} in this list.
9689 @end defun
9690
9691 @defun org-entry-member-in-multivalued-property pom property value
9692 Treat the value of the property PROPERTY as a whitespace-separated list of
9693 values and check if VALUE is in this list.
9694 @end defun
9695
9696 @node Using the mapping API, , Using the property API, Hacking
9697 @section Using the mapping API
9698 @cindex API, for mapping
9699 @cindex mapping entries, API
9700
9701 Org has sophisticated mapping capabilities to find all entries satisfying
9702 certain criteria. Internally, this functionality is used to produce agenda
9703 views, but there is also an API that can be used to execute arbitrary
9704 functions for each or selected entries. The main entry point for this API
9705 is:
9706
9707 @defun org-map-entries func &optional match scope &rest skip
9708 Call FUNC at each headline selected by MATCH in SCOPE.
9709
9710 FUNC is a function or a lisp form. The function will be called without
9711 arguments, with the cursor positioned at the beginning of the headline.
9712 The return values of all calls to the function will be collected and
9713 returned as a list.
9714
9715 MATCH is a tags/property/todo match as it is used in the agenda match view.
9716 Only headlines that are matched by this query will be considered during
9717 the iteration. When MATCH is nil or t, all headlines will be
9718 visited by the iteration.
9719
9720 SCOPE determines the scope of this command. It can be any of:
9721
9722 @example
9723 nil @r{the current buffer, respecting the restriction if any}
9724 tree @r{the subtree started with the entry at point}
9725 file @r{the current buffer, without restriction}
9726 file-with-archives
9727 @r{the current buffer, and any archives associated with it}
9728 agenda @r{all agenda files}
9729 agenda-with-archives
9730 @r{all agenda files with any archive files associated with them}
9731 (file1 file2 ...)
9732 @r{if this is a list, all files in the list will be scanned}
9733 @end example
9734
9735 The remaining args are treated as settings for the skipping facilities of
9736 the scanner. The following items can be given here:
9737
9738 @example
9739 archive @r{skip trees with the archive tag}
9740 comment @r{skip trees with the COMMENT keyword}
9741 function or Lisp form
9742 @r{will be used as value for @code{org-agenda-skip-function},}
9743 @r{so whenever the the function returns t, FUNC}
9744 @r{will not be called for that entry and search will}
9745 @r{continue from the point where the function leaves it}
9746 @end example
9747 @end defun
9748
9749 The function given to that mapping routine can really do anything you like.
9750 It can uce the property API (@pxref{Using the property API}) to gather more
9751 information about the entry, or in order to change metadate in the entry.
9752 Here are a couple of functions that might be handy:
9753
9754 @defun org-todo &optional arg
9755 Change the TODO state of the entry, see the docstring of the functions for
9756 the many possible values for the argument ARG.
9757 @end defun
9758
9759 @defun org-priority &optional action
9760 Change the priority of the entry, see the docstring of this function for the
9761 possible values for ACTION.
9762 @end defun
9763
9764 @defun org-toggle-tag tag &optional onoff
9765 Toggle the tag TAG in the current entry. Setting ONOFF to either @code{on}
9766 or @code{off} will not toggle tag, but ensure that it is either on or off.
9767 @end defun
9768
9769 @defun org-promote
9770 Promote the current entry.
9771 @end defun
9772
9773 @defun org-demote
9774 Demote the current entry.
9775 @end defun
9776
9777 Here is a simple example that will turn all entries in the current file with
9778 a tag @code{TOMORROW} into TODO entries with the keyword @code{UPCOMING}.
9779 Entries in comment trees and in archive trees will be ignored.
9780
9781 @lisp
9782 (org-map-entries
9783 '(org-todo "UPCOMING")
9784 "+TOMORROW" 'file 'archive 'comment)
9785 @end lisp
9786
9787 The following example counts the number of entries with TODO keyword
9788 @code{WAITING}, in all agenda files.
9789
9790 @lisp
9791 (length (org-map-entries t "/+WAITING" nil 'agenda))
9792 @end lisp
9793
9794 @node History and Acknowledgments, Main Index, Hacking, Top
9795 @appendix History and Acknowledgments
9796 @cindex acknowledgments
9797 @cindex history
9798 @cindex thanks
9799
9800 Org was borne in 2003, out of frustration over the user interface
9801 of the Emacs Outline mode. I was trying to organize my notes and
9802 projects, and using Emacs seemed to be the natural way to go. However,
9803 having to remember eleven different commands with two or three keys per
9804 command, only to hide and show parts of the outline tree, that seemed
9805 entirely unacceptable to me. Also, when using outlines to take notes, I
9806 constantly want to restructure the tree, organizing it parallel to my
9807 thoughts and plans. @emph{Visibility cycling} and @emph{structure
9808 editing} were originally implemented in the package
9809 @file{outline-magic.el}, but quickly moved to the more general
9810 @file{org.el}. As this environment became comfortable for project
9811 planning, the next step was adding @emph{TODO entries}, basic @emph{time
9812 stamps}, and @emph{table support}. These areas highlight the two main
9813 goals that Org still has today: To create a new, outline-based,
9814 plain text mode with innovative and intuitive editing features, and to
9815 incorporate project planning functionality directly into a notes file.
9816
9817 A special thanks goes to @i{Bastien Guerry} who has not only writen a large
9818 number of extensions to Org (most of them integrated into the core by now),
9819 but has also helped the development and maintenance of Org so much that he
9820 should be considered co-author of this package.
9821
9822 Since the first release, literally thousands of emails to me or on
9823 @code{emacs-orgmode@@gnu.org} have provided a constant stream of bug
9824 reports, feedback, new ideas, and sometimes patches and add-on code.
9825 Many thanks to everyone who has helped to improve this package. I am
9826 trying to keep here a list of the people who had significant influence
9827 in shaping one or more aspects of Org. The list may not be
9828 complete, if I have forgotten someone, please accept my apologies and
9829 let me know.
9830
9831 @itemize @bullet
9832
9833 @item
9834 @i{Russel Adams} came up with the idea for drawers.
9835 @item
9836 @i{Thomas Baumann} wrote @file{org-bbdb.el} and @file{org-mhe.el}.
9837 @item
9838 @i{Christophe Bataillon} created the great unicorn logo that we use on the
9839 Org-mode website.
9840 @item
9841 @i{Alex Bochannek} provided a patch for rounding time stamps.
9842 @item
9843 @i{Charles Cave}'s suggestion sparked the implementation of templates
9844 for Remember.
9845 @item
9846 @i{Pavel Chalmoviansky} influenced the agenda treatment of items with
9847 specified time.
9848 @item
9849 @i{Gregory Chernov} patched support for lisp forms into table
9850 calculations and improved XEmacs compatibility, in particular by porting
9851 @file{nouline.el} to XEmacs.
9852 @item
9853 @i{Sacha Chua} suggested to copy some linking code from Planner.
9854 @item
9855 @i{Eddward DeVilla} proposed and tested checkbox statistics. He also
9856 came up with the idea of properties, and that there should be an API for
9857 them.
9858 @item
9859 @i{Kees Dullemond} used to edit projects lists directly in HTML and so
9860 inspired some of the early development, including HTML export. He also
9861 asked for a way to narrow wide table columns.
9862 @item
9863 @i{Christian Egli} converted the documentation into Texinfo format,
9864 patched CSS formatting into the HTML exporter, and inspired the agenda.
9865 @item
9866 @i{David Emery} provided a patch for custom CSS support in exported
9867 HTML agendas.
9868 @item
9869 @i{Nic Ferrier} contributed mailcap and XOXO support.
9870 @item
9871 @i{Miguel A. Figueroa-Villanueva} implemented hierarchical checkboxes.
9872 @item
9873 @i{John Foerch} figured out how to make incremental search show context
9874 around a match in a hidden outline tree.
9875 @item
9876 @i{Niels Giesen} had the idea to automatically archive DONE trees.
9877 @item
9878 @i{Bastien Guerry} wrote the La@TeX{} exporter and @file{org-bibtex.el}, and
9879 has been prolific with patches, ideas, and bug reports.
9880 @item
9881 @i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
9882 @item
9883 @i{Bernt Hansen} has driven much of the support for auto-repeating tasks,
9884 task state change logging, and the clocktable. His clear explanations have
9885 been critical when we started to adopt the GIT version control system.
9886 @item
9887 @i{Manuel Hermenegildo} has contributed various ideas, small fixed and
9888 patches.
9889 @item
9890 @i{Phil Jackson} wrote @file{org-irc.el}.
9891 @item
9892 @i{Scott Jaderholm} proposed footnotes, control over whitespace between
9893 folded entries, and column view for properties.
9894 @item
9895 @i{Tokuya Kameshima} wrote @file{org-wl.el} and @file{org-mew.el}.
9896 @item
9897 @i{Shidai Liu} ("Leo") asked for embedded La@TeX{} and tested it. He also
9898 provided frequent feedback and some patches.
9899 @item
9900 @i{Jason F. McBrayer} suggested agenda export to CSV format.
9901 @item
9902 @i{Max Mikhanosha} came up with the idea of refiling.
9903 @item
9904 @i{Dmitri Minaev} sent a patch to set priority limits on a per-file
9905 basis.
9906 @item
9907 @i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
9908 happy.
9909 @item
9910 @i{Rick Moynihan} proposed to allow multiple TODO sequences in a file
9911 and to be able to quickly restrict the agenda to a subtree.
9912 @item
9913 @i{Todd Neal} provided patches for links to Info files and elisp forms.
9914 @item
9915 @i{Tim O'Callaghan} suggested in-file links, search options for general
9916 file links, and TAGS.
9917 @item
9918 @i{Takeshi Okano} translated the manual and David O'Toole's tutorial
9919 into Japanese.
9920 @item
9921 @i{Oliver Oppitz} suggested multi-state TODO items.
9922 @item
9923 @i{Scott Otterson} sparked the introduction of descriptive text for
9924 links, among other things.
9925 @item
9926 @i{Pete Phillips} helped during the development of the TAGS feature, and
9927 provided frequent feedback.
9928 @item
9929 @i{T.V. Raman} reported bugs and suggested improvements.
9930 @item
9931 @i{Matthias Rempe} (Oelde) provided ideas, Windows support, and quality
9932 control.
9933 @item
9934 @i{Kevin Rogers} contributed code to access VM files on remote hosts.
9935 @item
9936 @i{Sebastian Rose} wrote @file{org-info.js}, a Java script for displaying
9937 webpages derived from Org using an Info-like, or a folding interface with
9938 single key navigation.
9939 @item
9940 @i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a
9941 conflict with @file{allout.el}.
9942 @item
9943 @i{Jason Riedy} generalized the send-receive mechanism for orgtbl tables with
9944 extensive patches.
9945 @item
9946 @i{Philip Rooke} created the Org reference card, provided lots
9947 of feedback, developed and applied standards to the Org documentation.
9948 @item
9949 @i{Christian Schlauer} proposed angular brackets around links, among
9950 other things.
9951 @item
9952 @i{Eric Schulte} wrote @file{org-plot.el}.
9953 @item
9954 Linking to VM/BBDB/Gnus was first inspired by @i{Tom Shannon}'s
9955 @file{organizer-mode.el}.
9956 @item
9957 @i{Ilya Shlyakhter} proposed the Archive Sibling.
9958 @item
9959 @i{Stathis Sideris} wrote the @file{ditaa.jar} ASCII to PNG converter that is
9960 now packaged into Org's @file{contrib} directory.
9961 @item
9962 @i{Daniel Sinder} came up with the idea of internal archiving by locking
9963 subtrees.
9964 @item
9965 @i{Dale Smith} proposed link abbreviations.
9966 @item
9967 @i{James TD Smith} has contributed a large number of patches for useful
9968 tweaks and features.
9969 @item
9970 @i{Adam Spiers} asked for global linking commands, inspired the link
9971 extension system, added support for mairix, and proposed the mapping API.
9972 @item
9973 @i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
9974 chapter about publishing.
9975 @item
9976 @i{J@"urgen Vollmer} contributed code generating the table of contents
9977 in HTML output.
9978 @item
9979 @i{Chris Wallace} provided a patch implementing the @samp{QUOTE}
9980 keyword.
9981 @item
9982 @i{David Wainberg} suggested archiving, and improvements to the linking
9983 system.
9984 @item
9985 @i{John Wiegley} wrote @file{emacs-wiki.el}, @file{planner.el}, and
9986 @file{muse.el}, which have similar goals as Org. Initially the
9987 development of Org was fully independent because I was not aware of the
9988 existence of these packages. But with time I have accasionally looked
9989 at John's code and learned a lot from it. John has also contributed a
9990 number of great ideas and patches directly to Org, including the attachment
9991 system (@file{org-attach.el}) and integration with Apple Mail
9992 (@file{org-mac-message.el}).
9993 @item
9994 @i{Carsten Wimmer} suggested some changes and helped fix a bug in
9995 linking to Gnus.
9996 @item
9997 @i{Roland Winkler} requested additional key bindings to make Org
9998 work on a tty.
9999 @item
10000 @i{Piotr Zielinski} wrote @file{org-mouse.el}, proposed agenda blocks
10001 and contributed various ideas and code snippets.
10002 @end itemize
10003
10004
10005 @node Main Index, Key Index, History and Acknowledgments, Top
10006 @unnumbered The Main Index
10007
10008 @printindex cp
10009
10010 @node Key Index, , Main Index, Top
10011 @unnumbered Key Index
10012
10013 @printindex ky
10014
10015 @bye
10016
10017 @ignore
10018 arch-tag: 7893d1Fe-cc57-4d13-b5e5-f494a1CBC7ac
10019 @end ignore
10020
10021 @c Local variables:
10022 @c ispell-local-dictionary: "en_US-w_accents"
10023 @c ispell-local-pdict: "./.aspell.org.pws"
10024 @c fill-column: 77
10025 @c End:
10026