4 @setfilename ../../info/org
5 @settitle The Org Manual
8 @set DATE November 2010
10 @c Use proper quote and backtick for code sections in PDF output
11 @c Cf. Texinfo manual 14.2
12 @set txicodequoteundirected
13 @set txicodequotebacktick
15 @c Version and Contact Info
16 @set MAINTAINERSITE @uref{http://orgmode.org,maintainers webpage}
17 @set AUTHOR Carsten Dominik
18 @set MAINTAINER Carsten Dominik
19 @set MAINTAINEREMAIL @email{carsten at orgmode dot org}
20 @set MAINTAINERCONTACT @uref{mailto:carsten at orgmode dot org,contact the maintainer}
25 @c -----------------------------------------------------------------------------
27 @c Macro definitions for commands and keys
28 @c =======================================
30 @c The behavior of the key/command macros will depend on the flag cmdnames
31 @c When set, commands names are shown. When clear, they are not shown.
35 @c Below we define the following macros for Org key tables:
37 @c orgkey{key} A key item
38 @c orgcmd{key,cmd} Key with command name
39 @c xorgcmd{key,cmmand} Key with command name as @itemx
40 @c orgcmdnki{key,cmd} Like orgcmd, but do not index the key
41 @c orgcmdtkc{text,key,cmd} Like orgcmd,special text instead of key
42 @c orgcmdkkc{key1,key2,cmd} Two keys with one command name, use "or"
43 @c orgcmdkxkc{key1,key2,cmd} Two keys with one command name, but
44 @c different functions, so format as @itemx
45 @c orgcmdkskc{key1,key2,cmd} Same as orgcmdkkc, but use "or short"
46 @c xorgcmdkskc{key1,key2,cmd} Same as previous, but use @itemx
47 @c orgcmdkkcc{key1,key2,cmd1,cmd2} Two keys and two commands
49 @c a key but no command
61 @c one key with a command
62 @c Inserts: @item KEY COMMAND
63 @macro orgcmd{key,command}
68 @item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
71 @item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
80 @c One key with one command, formatted using @itemx
81 @c Inserts: @itemx KEY COMMAND
82 @macro xorgcmd{key,command}
87 @itemx @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
90 @itemx @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
99 @c one key with a command, bit do not index the key
100 @c Inserts: @item KEY COMMAND
101 @macro orgcmdnki{key,command}
105 @item @kbd{\key\} @hskip 0pt plus 1filll @code{\command\}
108 @item @kbd{\key\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
116 @c one key with a command, and special text to replace key in item
117 @c Inserts: @item TEXT COMMAND
118 @macro orgcmdtkc{text,key,command}
123 @item @kbd{\text\} @hskip 0pt plus 1filll @code{\command\}
126 @item @kbd{\text\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
135 @c two keys with one command
136 @c Inserts: @item KEY1 or KEY2 COMMAND
137 @macro orgcmdkkc{key1,key2,command}
143 @item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
146 @item @kbd{\key1\} @ @r{or} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
152 @item @kbd{\key1\} @ @r{or} @ @kbd{\key2\}
156 @c Two keys with one command name, but different functions, so format as
158 @c Inserts: @item KEY1
159 @c @itemx KEY2 COMMAND
160 @macro orgcmdkxkc{key1,key2,command}
167 @itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
171 @itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
182 @c Same as previous, but use "or short"
183 @c Inserts: @item KEY1 or short KEY2 COMMAND
184 @macro orgcmdkskc{key1,key2,command}
190 @item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
193 @item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
199 @item @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
203 @c Same as previous, but use @itemx
204 @c Inserts: @itemx KEY1 or short KEY2 COMMAND
205 @macro xorgcmdkskc{key1,key2,command}
211 @itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @hskip 0pt plus 1filll @code{\command\}
214 @itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command\})
220 @itemx @kbd{\key1\} @ @r{or short} @ @kbd{\key2\}
224 @c two keys with two commands
225 @c Inserts: @item KEY1 COMMAND1
226 @c @itemx KEY2 COMMAND2
227 @macro orgcmdkkcc{key1,key2,command1,command2}
234 @item @kbd{\key1\} @hskip 0pt plus 1filll @code{\command1\}
235 @itemx @kbd{\key2\} @hskip 0pt plus 1filll @code{\command2\}
238 @item @kbd{\key1\} @tie{}@tie{}@tie{}@tie{}(@code{\command1\})
239 @itemx @kbd{\key2\} @tie{}@tie{}@tie{}@tie{}(@code{\command2\})
249 @c -----------------------------------------------------------------------------
252 @c @hyphenation{time-stamp time-stamps time-stamp-ing time-stamp-ed}
255 @c Subheadings inside a table.
256 @macro tsubheading{text}
258 @subsubheading \text\
266 This manual is for Org version @value{VERSION}.
268 Copyright @copyright{} 2004, 2005, 2006, 2007, 2008, 2009, 2010
269 Free Software Foundation, Inc.
272 Permission is granted to copy, distribute and/or modify this document
273 under the terms of the GNU Free Documentation License, Version 1.3 or
274 any later version published by the Free Software Foundation; with no
275 Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
276 and with the Back-Cover Texts as in (a) below. A copy of the license
277 is included in the section entitled ``GNU Free Documentation License.''
279 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
280 modify this GNU manual. Buying copies from the FSF supports it in
281 developing GNU and promoting software freedom.''
283 This document is part of a collection distributed under the GNU Free
284 Documentation License. If you want to distribute this document
285 separately from the collection, you can do so by adding a copy of the
286 license to the document, as described in section 6 of the license.
292 * Org Mode: (org). Outline-based notes management and organizer
296 @title The Org Manual
298 @subtitle Release @value{VERSION}
299 @author by Carsten Dominik
300 with contributions by David O'Toole, Bastien Guerry, Philip Rooke, Dan Davison, Eric Schulte, and Thomas Dye
302 @c The following two commands start the copyright page.
304 @vskip 0pt plus 1filll
308 @c Output the table of contents at the beginning.
312 @node Top, Introduction, (dir), (dir)
319 * Introduction:: Getting started
320 * Document Structure:: A tree works like your brain
321 * Tables:: Pure magic for quick formatting
322 * Hyperlinks:: Notes in context
323 * TODO Items:: Every tree branch can be a TODO item
324 * Tags:: Tagging headlines and matching sets of tags
325 * Properties and Columns:: Storing information about an entry
326 * Dates and Times:: Making items useful for planning
327 * Capture - Refile - Archive:: The ins and outs for projects
328 * Agenda Views:: Collecting information into views
329 * Markup:: Prepare text for rich export
330 * Exporting:: Sharing and publishing of notes
331 * Publishing:: Create a web site of linked Org files
332 * Working With Source Code:: Export, evaluate, and tangle code blocks
333 * Miscellaneous:: All the rest which did not fit elsewhere
334 * Hacking:: How to hack your way around
335 * MobileOrg:: Viewing and capture on a mobile device
336 * History and Acknowledgments:: How Org came into being
337 * Main Index:: An index of Org's concepts and features
338 * Key Index:: Key bindings and where they are described
339 * Command and Function Index:: Command names and some internal functions
340 * Variable Index:: Variables mentioned in the manual
343 --- The Detailed Node Listing ---
347 * Summary:: Brief summary of what Org does
348 * Installation:: How to install a downloaded version of Org
349 * Activation:: How to activate Org for certain buffers
350 * Feedback:: Bug reports, ideas, patches etc.
351 * Conventions:: Type-setting conventions in the manual
355 * Outlines:: Org is based on Outline mode
356 * Headlines:: How to typeset Org tree headlines
357 * Visibility cycling:: Show and hide, much simplified
358 * Motion:: Jumping to other headlines
359 * Structure editing:: Changing sequence and level of headlines
360 * Sparse trees:: Matches embedded in context
361 * Plain lists:: Additional structure within an entry
362 * Drawers:: Tucking stuff away
363 * Blocks:: Folding blocks
364 * Footnotes:: How footnotes are defined in Org's syntax
365 * Orgstruct mode:: Structure editing outside Org
369 * Built-in table editor:: Simple tables
370 * Column width and alignment:: Overrule the automatic settings
371 * Column groups:: Grouping to trigger vertical lines
372 * Orgtbl mode:: The table editor as minor mode
373 * The spreadsheet:: The table editor has spreadsheet capabilities
374 * Org-Plot:: Plotting from org tables
378 * References:: How to refer to another field or range
379 * Formula syntax for Calc:: Using Calc to compute stuff
380 * Formula syntax for Lisp:: Writing formulas in Emacs Lisp
381 * Field formulas:: Formulas valid for a single field
382 * Column formulas:: Formulas valid for an entire column
383 * Editing and debugging formulas:: Fixing formulas
384 * Updating the table:: Recomputing all dependent fields
385 * Advanced features:: Field names, parameters and automatic recalc
389 * Link format:: How links in Org are formatted
390 * Internal links:: Links to other places in the current file
391 * External links:: URL-like links to the world
392 * Handling links:: Creating, inserting and following
393 * Using links outside Org:: Linking from my C source code?
394 * Link abbreviations:: Shortcuts for writing complex links
395 * Search options:: Linking to a specific location
396 * Custom searches:: When the default search is not enough
400 * Radio targets:: Make targets trigger links in plain text
404 * TODO basics:: Marking and displaying TODO entries
405 * TODO extensions:: Workflow and assignments
406 * Progress logging:: Dates and notes for progress
407 * Priorities:: Some things are more important than others
408 * Breaking down tasks:: Splitting a task into manageable pieces
409 * Checkboxes:: Tick-off lists
411 Extended use of TODO keywords
413 * Workflow states:: From TODO to DONE in steps
414 * TODO types:: I do this, Fred does the rest
415 * Multiple sets in one file:: Mixing it all, and still finding your way
416 * Fast access to TODO states:: Single letter selection of a state
417 * Per-file keywords:: Different files, different requirements
418 * Faces for TODO keywords:: Highlighting states
419 * TODO dependencies:: When one task needs to wait for others
423 * Closing items:: When was this entry marked DONE?
424 * Tracking TODO state changes:: When did the status change?
425 * Tracking your habits:: How consistent have you been?
429 * Tag inheritance:: Tags use the tree structure of the outline
430 * Setting tags:: How to assign tags to a headline
431 * Tag searches:: Searching for combinations of tags
433 Properties and columns
435 * Property syntax:: How properties are spelled out
436 * Special properties:: Access to other Org-mode features
437 * Property searches:: Matching property values
438 * Property inheritance:: Passing values down the tree
439 * Column view:: Tabular viewing and editing
440 * Property API:: Properties for Lisp programmers
444 * Defining columns:: The COLUMNS format property
445 * Using column view:: How to create and use column view
446 * Capturing column view:: A dynamic block for column view
450 * Scope of column definitions:: Where defined, where valid?
451 * Column attributes:: Appearance and content of a column
455 * Timestamps:: Assigning a time to a tree entry
456 * Creating timestamps:: Commands which insert timestamps
457 * Deadlines and scheduling:: Planning your work
458 * Clocking work time:: Tracking how long you spend on a task
459 * Effort estimates:: Planning work effort in advance
460 * Relative timer:: Notes with a running timer
461 * Countdown timer:: Starting a countdown timer for a task
465 * The date/time prompt:: How Org-mode helps you entering date and time
466 * Custom time format:: Making dates look different
468 Deadlines and scheduling
470 * Inserting deadline/schedule:: Planning items
471 * Repeated tasks:: Items that show up again and again
475 * Clocking commands:: Starting and stopping a clock
476 * The clock table:: Detailed reports
477 * Resolving idle time:: Resolving time when you've been idle
479 Capture - Refile - Archive
481 * Capture:: Capturing new stuff
482 * Attachments:: Add files to tasks
483 * RSS Feeds:: Getting input from RSS feeds
484 * Protocols:: External (e.g. Browser) access to Emacs and Org
485 * Refiling notes:: Moving a tree from one place to another
486 * Archiving:: What to do with finished projects
490 * Setting up capture:: Where notes will be stored
491 * Using capture:: Commands to invoke and terminate capture
492 * Capture templates:: Define the outline of different note types
496 * Template elements:: What is needed for a complete template entry
497 * Template expansion:: Filling in information about time and context
501 * Moving subtrees:: Moving a tree to an archive file
502 * Internal archiving:: Switch off a tree but keep it in the file
506 * Agenda files:: Files being searched for agenda information
507 * Agenda dispatcher:: Keyboard access to agenda views
508 * Built-in agenda views:: What is available out of the box?
509 * Presentation and sorting:: How agenda items are prepared for display
510 * Agenda commands:: Remote editing of Org trees
511 * Custom agenda views:: Defining special searches and views
512 * Exporting Agenda Views:: Writing a view to a file
513 * Agenda column view:: Using column view for collected entries
515 The built-in agenda views
517 * Weekly/daily agenda:: The calendar page with current tasks
518 * Global TODO list:: All unfinished action items
519 * Matching tags and properties:: Structured information with fine-tuned search
520 * Timeline:: Time-sorted view for single file
521 * Search view:: Find entries by searching for text
522 * Stuck projects:: Find projects you need to review
524 Presentation and sorting
526 * Categories:: Not all tasks are equal
527 * Time-of-day specifications:: How the agenda knows the time
528 * Sorting of agenda items:: The order of things
532 * Storing searches:: Type once, use often
533 * Block agenda:: All the stuff you need in a single buffer
534 * Setting Options:: Changing the rules
536 Markup for rich export
538 * Structural markup elements:: The basic structure as seen by the exporter
539 * Images and tables:: Tables and Images will be included
540 * Literal examples:: Source code examples with special formatting
541 * Include files:: Include additional files into a document
542 * Index entries:: Making an index
543 * Macro replacement:: Use macros to create complex output
544 * Embedded LaTeX:: LaTeX can be freely used inside Org documents
546 Structural markup elements
548 * Document title:: Where the title is taken from
549 * Headings and sections:: The document structure as seen by the exporter
550 * Table of contents:: The if and where of the table of contents
551 * Initial text:: Text before the first heading?
553 * Paragraphs:: Paragraphs
554 * Footnote markup:: Footnotes
555 * Emphasis and monospace:: Bold, italic, etc.
556 * Horizontal rules:: Make a line
557 * Comment lines:: What will *not* be exported
561 * Special symbols:: Greek letters and other symbols
562 * Subscripts and superscripts:: Simple syntax for raising/lowering text
563 * LaTeX fragments:: Complex formulas made easy
564 * Previewing LaTeX fragments:: What will this snippet look like?
565 * CDLaTeX mode:: Speed up entering of formulas
569 * Selective export:: Using tags to select and exclude trees
570 * Export options:: Per-file export settings
571 * The export dispatcher:: How to access exporter commands
572 * ASCII/Latin-1/UTF-8 export:: Exporting to flat files with encoding
573 * HTML export:: Exporting to HTML
574 * LaTeX and PDF export:: Exporting to La@TeX{}, and processing to PDF
575 * DocBook export:: Exporting to DocBook
576 * TaskJuggler export:: Exporting to TaskJuggler
577 * Freemind export:: Exporting to Freemind mind maps
578 * XOXO export:: Exporting to XOXO
579 * iCalendar export:: Exporting in iCalendar format
583 * HTML Export commands:: How to invoke HTML export
584 * Quoting HTML tags:: Using direct HTML in Org-mode
585 * Links in HTML export:: How links will be interpreted and formatted
586 * Tables in HTML export:: How to modify the formatting of tables
587 * Images in HTML export:: How to insert figures into HTML output
588 * Math formatting in HTML export:: Beautiful math also on the web
589 * Text areas in HTML export:: An alternative way to show an example
590 * CSS support:: Changing the appearance of the output
591 * JavaScript support:: Info and Folding in a web browser
593 La@TeX{} and PDF export
595 * LaTeX/PDF export commands:: Which key invokes which commands
596 * Header and sectioning:: Setting up the export file structure
597 * Quoting LaTeX code:: Incorporating literal La@TeX{} code
598 * Tables in LaTeX export:: Options for exporting tables to La@TeX{}
599 * Images in LaTeX export:: How to insert figures into La@TeX{} output
600 * Beamer class export:: Turning the file into a presentation
604 * DocBook export commands:: How to invoke DocBook export
605 * Quoting DocBook code:: Incorporating DocBook code in Org files
606 * Recursive sections:: Recursive sections in DocBook
607 * Tables in DocBook export:: Tables are exported as HTML tables
608 * Images in DocBook export:: How to insert figures into DocBook output
609 * Special characters:: How to handle special characters
613 * Configuration:: Defining projects
614 * Uploading files:: How to get files up on the server
615 * Sample configuration:: Example projects
616 * Triggering publication:: Publication commands
620 * Project alist:: The central configuration variable
621 * Sources and destinations:: From here to there
622 * Selecting files:: What files are part of the project?
623 * Publishing action:: Setting the function doing the publishing
624 * Publishing options:: Tweaking HTML export
625 * Publishing links:: Which links keep working after publishing?
626 * Sitemap:: Generating a list of all pages
627 * Generating an index:: An index that reaches across pages
631 * Simple example:: One-component publishing
632 * Complex example:: A multi-component publishing example
634 Working with source code
636 * Structure of code blocks:: Code block syntax described
637 * Editing source code:: Language major-mode editing
638 * Exporting code blocks:: Export contents and/or results
639 * Extracting source code:: Create pure source code files
640 * Evaluating code blocks:: Place results of evaluation in the Org-mode buffer
641 * Library of Babel:: Use and contribute to a library of useful code blocks
642 * Languages:: List of supported code block languages
643 * Header arguments:: Configure code block functionality
644 * Results of evaluation:: How evaluation results are handled
645 * Noweb reference syntax:: Literate programming in Org-mode
646 * Key bindings and useful functions:: Work quickly with code blocks
647 * Batch execution:: Call functions from the command line
651 * Using header arguments:: Different ways to set header arguments
652 * Specific header arguments:: List of header arguments
654 Using header arguments
656 * System-wide header arguments:: Set global default values
657 * Language-specific header arguments:: Set default values by language
658 * Buffer-wide header arguments:: Set default values for a specific buffer
659 * Header arguments in Org-mode properties:: Set default values for a buffer or heading
660 * Code block specific header arguments:: The most common way to set values
661 * Header arguments in function calls:: The most specific level
663 Specific header arguments
665 * var:: Pass arguments to code blocks
666 * results:: Specify the type of results and how they will
667 be collected and handled
668 * file:: Specify a path for file output
669 * dir:: Specify the default (possibly remote)
670 directory for code block execution
671 * exports:: Export code and/or results
672 * tangle:: Toggle tangling and specify file name
673 * comments:: Toggle insertion of comments in tangled
675 * no-expand:: Turn off variable assignment and noweb
676 expansion during tangling
677 * session:: Preserve the state of code evaluation
678 * noweb:: Toggle expansion of noweb references
679 * cache:: Avoid re-evaluating unchanged code blocks
680 * hlines:: Handle horizontal lines in tables
681 * colnames:: Handle column names in tables
682 * rownames:: Handle row names in tables
683 * shebang:: Make tangled files executable
684 * eval:: Limit evaluation of specific code blocks
688 * Completion:: M-TAB knows what you need
689 * Easy Templates:: Quick insertion of structural elements
690 * Speed keys:: Electric commands at the beginning of a headline
691 * Code evaluation security:: Org mode files evaluate inline code
692 * Customization:: Adapting Org to your taste
693 * In-buffer settings:: Overview of the #+KEYWORDS
694 * The very busy C-c C-c key:: When in doubt, press C-c C-c
695 * Clean view:: Getting rid of leading stars in the outline
696 * TTY keys:: Using Org on a tty
697 * Interaction:: Other Emacs packages
699 Interaction with other packages
701 * Cooperation:: Packages Org cooperates with
702 * Conflicts:: Packages that lead to conflicts
706 * Hooks:: Who to reach into Org's internals
707 * Add-on packages:: Available extensions
708 * Adding hyperlink types:: New custom link types
709 * Context-sensitive commands:: How to add functionality to such commands
710 * Tables in arbitrary syntax:: Orgtbl for La@TeX{} and other programs
711 * Dynamic blocks:: Automatically filled blocks
712 * Special agenda views:: Customized views
713 * Extracting agenda information:: Postprocessing of agenda information
714 * Using the property API:: Writing programs that use entry properties
715 * Using the mapping API:: Mapping over all or selected entries
717 Tables and lists in arbitrary syntax
719 * Radio tables:: Sending and receiving radio tables
720 * A LaTeX example:: Step by step, almost a tutorial
721 * Translator functions:: Copy and modify
722 * Radio lists:: Doing the same for lists
726 * Setting up the staging area:: Where to interact with the mobile device
727 * Pushing to MobileOrg:: Uploading Org files and agendas
728 * Pulling from MobileOrg:: Integrating captured and flagged items
733 @node Introduction, Document Structure, Top, Top
734 @chapter Introduction
738 * Summary:: Brief summary of what Org does
739 * Installation:: How to install a downloaded version of Org
740 * Activation:: How to activate Org for certain buffers
741 * Feedback:: Bug reports, ideas, patches etc.
742 * Conventions:: Type-setting conventions in the manual
745 @node Summary, Installation, Introduction, Introduction
749 Org is a mode for keeping notes, maintaining TODO lists, and doing
750 project planning with a fast and effective plain-text system.
752 Org develops organizational tasks around NOTES files that contain
753 lists or information about projects as plain text. Org is
754 implemented on top of Outline mode, which makes it possible to keep the
755 content of large files well structured. Visibility cycling and
756 structure editing help to work with the tree. Tables are easily created
757 with a built-in table editor. Org supports TODO items, deadlines,
758 timestamps, and scheduling. It dynamically compiles entries into an
759 agenda that utilizes and smoothly integrates much of the Emacs calendar
760 and diary. Plain text URL-like links connect to websites, emails,
761 Usenet messages, BBDB entries, and any files related to the projects.
762 For printing and sharing of notes, an Org file can be exported as a
763 structured ASCII file, as HTML, or (TODO and agenda items only) as an
764 iCalendar file. It can also serve as a publishing tool for a set of
767 As a project planning environment, Org works by adding metadata to outline
768 nodes. Based on this data, specific entries can be extracted in queries and
769 create dynamic @i{agenda views}.
771 Org mode contains the Org Babel environment which allows to work with
772 embedded source code block in a file, to facilitate code evaluation,
773 documentation, and tangling.
775 Org's automatic, context-sensitive table editor with spreadsheet
776 capabilities can be integrated into any major mode by activating the
777 minor Orgtbl mode. Using a translation step, it can be used to maintain
778 tables in arbitrary file types, for example in La@TeX{}. The structure
779 editing and list creation capabilities can be used outside Org with
780 the minor Orgstruct mode.
782 Org keeps simple things simple. When first fired up, it should
783 feel like a straightforward, easy to use outliner. Complexity is not
784 imposed, but a large amount of functionality is available when you need
785 it. Org is a toolbox and can be used in different ways and for different
789 @r{@bullet{} an outline extension with visibility cycling and structure editing}
790 @r{@bullet{} an ASCII system and table editor for taking structured notes}
791 @r{@bullet{} a TODO list editor}
792 @r{@bullet{} a full agenda and planner with deadlines and work scheduling}
793 @pindex GTD, Getting Things Done
794 @r{@bullet{} an environment in which to implement David Allen's GTD system}
795 @r{@bullet{} a simple hypertext system, with HTML and La@TeX{} export}
796 @r{@bullet{} a publishing tool to create a set of interlinked webpages}
797 @r{@bullet{} an environment for literate programming}
802 There is a website for Org which provides links to the newest
803 version of Org, as well as additional information, frequently asked
804 questions (FAQ), links to tutorials, etc@. This page is located at
805 @uref{http://orgmode.org}.
810 @node Installation, Activation, Summary, Introduction
811 @section Installation
815 @b{Important:} @i{If you are using a version of Org that is part of the Emacs
816 distribution or an XEmacs package, please skip this section and go directly
817 to @ref{Activation}.}
819 If you have downloaded Org from the Web, either as a distribution @file{.zip}
820 or @file{.tar} file, or as a Git archive, you must take the following steps
821 to install it: go into the unpacked Org distribution directory and edit the
822 top section of the file @file{Makefile}. You must set the name of the Emacs
823 binary (likely either @file{emacs} or @file{xemacs}), and the paths to the
824 directories where local Lisp and Info files are kept. If you don't have
825 access to the system-wide directories, you can simply run Org directly from
826 the distribution directory by adding the @file{lisp} subdirectory to the
827 Emacs load path. To do this, add the following line to @file{.emacs}:
830 (setq load-path (cons "~/path/to/orgdir/lisp" load-path))
834 If you plan to use code from the @file{contrib} subdirectory, do a similar
835 step for this directory:
838 (setq load-path (cons "~/path/to/orgdir/contrib/lisp" load-path))
841 @noindent Now byte-compile the Lisp files with the shell command:
847 @noindent If you are running Org from the distribution directory, this is
848 all. If you want to install Org into the system directories, use (as
855 Installing Info files is system dependent, because of differences in the
856 @file{install-info} program. In Debian it copies the info files into the
857 correct directory and modifies the info directory file. In many other
858 systems, the files need to be copied to the correct directory separately, and
859 @file{install-info} then only modifies the directory file. Check your system
860 documentation to find out which of the following commands you need:
864 make install-info-debian
867 Then add the following line to @file{.emacs}. It is needed so that
868 Emacs can autoload functions that are located in files not immediately loaded
869 when Org-mode starts.
871 (require 'org-install)
874 Do not forget to activate Org as described in the following section.
877 @node Activation, Feedback, Installation, Introduction
881 @cindex global key bindings
882 @cindex key bindings, global
884 Add the following lines to your @file{.emacs} file. The last three lines
885 define @emph{global} keys for the commands @command{org-store-link},
886 @command{org-agenda}, and @command{org-iswitchb}---please choose suitable
890 ;; The following lines are always needed. Choose your own keys.
891 (add-to-list 'auto-mode-alist '("\\.org\\'" . org-mode))
892 (global-set-key "\C-cl" 'org-store-link)
893 (global-set-key "\C-ca" 'org-agenda)
894 (global-set-key "\C-cb" 'org-iswitchb)
897 Furthermore, you must activate @code{font-lock-mode} in Org
898 buffers, because significant functionality depends on font-locking being
899 active. You can do this with either one of the following two lines
900 (XEmacs users must use the second option):
902 (global-font-lock-mode 1) ; for all buffers
903 (add-hook 'org-mode-hook 'turn-on-font-lock) ; Org buffers only
906 @cindex Org-mode, turning on
907 With this setup, all files with extension @samp{.org} will be put
908 into Org-mode. As an alternative, make the first line of a file look
912 MY PROJECTS -*- mode: org; -*-
915 @vindex org-insert-mode-line-in-empty-file
916 @noindent which will select Org-mode for this buffer no matter what
917 the file's name is. See also the variable
918 @code{org-insert-mode-line-in-empty-file}.
920 Many commands in Org work on the region if the region is @i{active}. To make
921 use of this, you need to have @code{transient-mark-mode}
922 (@code{zmacs-regions} in XEmacs) turned on. In Emacs 23 this is the default,
923 in Emacs 22 you need to do this yourself with
925 (transient-mark-mode 1)
927 @noindent If you do not like @code{transient-mark-mode}, you can create an
928 active region by using the mouse to select a region, or pressing
929 @kbd{C-@key{SPC}} twice before moving the cursor.
931 @node Feedback, Conventions, Activation, Introduction
938 If you find problems with Org, or if you have questions, remarks, or ideas
939 about it, please mail to the Org mailing list @email{emacs-orgmode@@gnu.org}.
940 If you are not a member of the mailing list, your mail will be passed to the
941 list after a moderator has approved it@footnote{Please consider subscribing
942 to the mailing list, in order to minimize the work the mailing list
943 moderators have to do.}.
945 For bug reports, please first try to reproduce the bug with the latest
946 version of Org available - if you are running an outdated version, it is
947 quite possible that the bug has been fixed already. If the bug persists,
948 prepare a report and provide as much information as possible, including the
949 version information of Emacs (@kbd{M-x emacs-version @key{RET}}) and Org
950 (@kbd{M-x org-version @key{RET}}), as well as the Org related setup in
951 @file{.emacs}. The easiest way to do this is to use the command
953 @kbd{M-x org-submit-bug-report}
955 @noindent which will put all this information into an Emacs mail buffer so
956 that you only need to add your description. If you re not sending the Email
957 from within Emacs, please copy and paste the content into your Email program.
959 If an error occurs, a backtrace can be very useful (see below on how to
960 create one). Often a small example file helps, along with clear information
964 @item What exactly did you do?
965 @item What did you expect to happen?
966 @item What happened instead?
968 @noindent Thank you for helping to improve this program.
970 @subsubheading How to create a useful backtrace
972 @cindex backtrace of an error
973 If working with Org produces an error with a message you don't
974 understand, you may have hit a bug. The best way to report this is by
975 providing, in addition to what was mentioned above, a @emph{backtrace}.
976 This is information from the built-in debugger about where and how the
977 error occurred. Here is how to produce a useful backtrace:
981 Reload uncompiled versions of all Org-mode Lisp files. The backtrace
982 contains much more information if it is produced with uncompiled code.
985 C-u M-x org-reload RET
988 or select @code{Org -> Refresh/Reload -> Reload Org uncompiled} from the
991 Go to the @code{Options} menu and select @code{Enter Debugger on Error}
992 (XEmacs has this option in the @code{Troubleshooting} sub-menu).
994 Do whatever you have to do to hit the error. Don't forget to
995 document the steps you take.
997 When you hit the error, a @file{*Backtrace*} buffer will appear on the
998 screen. Save this buffer to a file (for example using @kbd{C-x C-w}) and
999 attach it to your bug report.
1002 @node Conventions, , Feedback, Introduction
1003 @section Typesetting conventions used in this manual
1005 Org uses three types of keywords: TODO keywords, tags, and property
1006 names. In this manual we use the following conventions:
1011 TODO keywords are written with all capitals, even if they are
1015 User-defined tags are written in lowercase; built-in tags with special
1016 meaning are written with all capitals.
1019 User-defined properties are capitalized; built-in properties with
1020 special meaning are written with all capitals.
1023 @node Document Structure, Tables, Introduction, Top
1024 @chapter Document structure
1025 @cindex document structure
1026 @cindex structure of document
1028 Org is based on Outline mode and provides flexible commands to
1029 edit the structure of the document.
1032 * Outlines:: Org is based on Outline mode
1033 * Headlines:: How to typeset Org tree headlines
1034 * Visibility cycling:: Show and hide, much simplified
1035 * Motion:: Jumping to other headlines
1036 * Structure editing:: Changing sequence and level of headlines
1037 * Sparse trees:: Matches embedded in context
1038 * Plain lists:: Additional structure within an entry
1039 * Drawers:: Tucking stuff away
1040 * Blocks:: Folding blocks
1041 * Footnotes:: How footnotes are defined in Org's syntax
1042 * Orgstruct mode:: Structure editing outside Org
1045 @node Outlines, Headlines, Document Structure, Document Structure
1048 @cindex Outline mode
1050 Org is implemented on top of Outline mode. Outlines allow a
1051 document to be organized in a hierarchical structure, which (at least
1052 for me) is the best representation of notes and thoughts. An overview
1053 of this structure is achieved by folding (hiding) large parts of the
1054 document to show only the general document structure and the parts
1055 currently being worked on. Org greatly simplifies the use of
1056 outlines by compressing the entire show/hide functionality into a single
1057 command, @command{org-cycle}, which is bound to the @key{TAB} key.
1059 @node Headlines, Visibility cycling, Outlines, Document Structure
1062 @cindex outline tree
1063 @vindex org-special-ctrl-a/e
1064 @vindex org-special-ctrl-k
1065 @vindex org-ctrl-k-protect-subtree
1067 Headlines define the structure of an outline tree. The headlines in Org
1068 start with one or more stars, on the left margin@footnote{See the variables
1069 @code{org-special-ctrl-a/e}, @code{org-special-ctrl-k}, and
1070 @code{org-ctrl-k-protect-subtree} to configure special behavior of @kbd{C-a},
1071 @kbd{C-e}, and @kbd{C-k} in headlines.}. For example:
1074 * Top level headline
1081 * Another top level headline
1084 @noindent Some people find the many stars too noisy and would prefer an
1085 outline that has whitespace followed by a single star as headline
1086 starters. @ref{Clean view}, describes a setup to realize this.
1088 @vindex org-cycle-separator-lines
1089 An empty line after the end of a subtree is considered part of it and
1090 will be hidden when the subtree is folded. However, if you leave at
1091 least two empty lines, one empty line will remain visible after folding
1092 the subtree, in order to structure the collapsed view. See the
1093 variable @code{org-cycle-separator-lines} to modify this behavior.
1095 @node Visibility cycling, Motion, Headlines, Document Structure
1096 @section Visibility cycling
1097 @cindex cycling, visibility
1098 @cindex visibility cycling
1099 @cindex trees, visibility
1100 @cindex show hidden text
1103 Outlines make it possible to hide parts of the text in the buffer.
1104 Org uses just two commands, bound to @key{TAB} and
1105 @kbd{S-@key{TAB}} to change the visibility in the buffer.
1107 @cindex subtree visibility states
1108 @cindex subtree cycling
1109 @cindex folded, subtree visibility state
1110 @cindex children, subtree visibility state
1111 @cindex subtree, subtree visibility state
1113 @orgcmd{@key{TAB},org-cycle}
1114 @emph{Subtree cycling}: Rotate current subtree among the states
1117 ,-> FOLDED -> CHILDREN -> SUBTREE --.
1118 '-----------------------------------'
1121 @vindex org-cycle-emulate-tab
1122 @vindex org-cycle-global-at-bob
1123 The cursor must be on a headline for this to work@footnote{see, however,
1124 the option @code{org-cycle-emulate-tab}.}. When the cursor is at the
1125 beginning of the buffer and the first line is not a headline, then
1126 @key{TAB} actually runs global cycling (see below)@footnote{see the
1127 option @code{org-cycle-global-at-bob}.}. Also when called with a prefix
1128 argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
1130 @cindex global visibility states
1131 @cindex global cycling
1132 @cindex overview, global visibility state
1133 @cindex contents, global visibility state
1134 @cindex show all, global visibility state
1135 @orgcmd{S-@key{TAB},org-global-cycle}
1136 @itemx C-u @key{TAB}
1137 @emph{Global cycling}: Rotate the entire buffer among the states
1140 ,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
1141 '--------------------------------------'
1144 When @kbd{S-@key{TAB}} is called with a numeric prefix argument N, the
1145 CONTENTS view up to headlines of level N will be shown. Note that inside
1146 tables, @kbd{S-@key{TAB}} jumps to the previous field.
1148 @cindex show all, command
1149 @orgcmd{C-u C-u C-u @key{TAB},show-all}
1150 Show all, including drawers.
1151 @orgcmd{C-c C-r,org-reveal}
1152 Reveal context around point, showing the current entry, the following heading
1153 and the hierarchy above. Useful for working near a location that has been
1154 exposed by a sparse tree command (@pxref{Sparse trees}) or an agenda command
1155 (@pxref{Agenda commands}). With a prefix argument show, on each
1156 level, all sibling headings. With double prefix arg, also show the entire
1157 subtree of the parent.
1158 @orgcmd{C-c C-k,show-branches}
1159 Expose all the headings of the subtree, CONTENT view for just one subtree.
1160 @orgcmd{C-c C-x b,org-tree-to-indirect-buffer}
1161 Show the current subtree in an indirect buffer@footnote{The indirect
1164 (@pxref{Indirect Buffers,,,emacs,GNU Emacs Manual})
1167 (see the Emacs manual for more information about indirect buffers)
1169 will contain the entire buffer, but will be narrowed to the current
1170 tree. Editing the indirect buffer will also change the original buffer,
1171 but without affecting visibility in that buffer.}. With a numeric
1172 prefix argument N, go up to level N and then take that tree. If N is
1173 negative then go up that many levels. With a @kbd{C-u} prefix, do not remove
1174 the previously used indirect buffer.
1177 @vindex org-startup-folded
1178 @cindex @code{overview}, STARTUP keyword
1179 @cindex @code{content}, STARTUP keyword
1180 @cindex @code{showall}, STARTUP keyword
1181 @cindex @code{showeverything}, STARTUP keyword
1183 When Emacs first visits an Org file, the global state is set to
1184 OVERVIEW, i.e. only the top level headlines are visible. This can be
1185 configured through the variable @code{org-startup-folded}, or on a
1186 per-file basis by adding one of the following lines anywhere in the
1193 #+STARTUP: showeverything
1196 @cindex property, VISIBILITY
1198 Furthermore, any entries with a @samp{VISIBILITY} property (@pxref{Properties
1199 and Columns}) will get their visibility adapted accordingly. Allowed values
1200 for this property are @code{folded}, @code{children}, @code{content}, and
1203 @orgcmd{C-u C-u @key{TAB},org-set-startup-visibility}
1204 Switch back to the startup visibility of the buffer, i.e. whatever is
1205 requested by startup options and @samp{VISIBILITY} properties in individual
1209 @node Motion, Structure editing, Visibility cycling, Document Structure
1211 @cindex motion, between headlines
1212 @cindex jumping, to headlines
1213 @cindex headline navigation
1214 The following commands jump to other headlines in the buffer.
1217 @orgcmd{C-c C-n,outline-next-visible-heading}
1219 @orgcmd{C-c C-p,outline-previous-visible-heading}
1221 @orgcmd{C-c C-f,org-forward-same-level}
1222 Next heading same level.
1223 @orgcmd{C-c C-b,org-backward-same-level}
1224 Previous heading same level.
1225 @orgcmd{C-c C-u,outline-up-heading}
1226 Backward to higher level heading.
1227 @orgcmd{C-c C-j,org-goto}
1228 Jump to a different place without changing the current outline
1229 visibility. Shows the document structure in a temporary buffer, where
1230 you can use the following keys to find your destination:
1231 @vindex org-goto-auto-isearch
1233 @key{TAB} @r{Cycle visibility.}
1234 @key{down} / @key{up} @r{Next/previous visible headline.}
1235 @key{RET} @r{Select this location.}
1236 @kbd{/} @r{Do a Sparse-tree search}
1237 @r{The following keys work if you turn off @code{org-goto-auto-isearch}}
1238 n / p @r{Next/previous visible headline.}
1239 f / b @r{Next/previous headline same level.}
1241 0-9 @r{Digit argument.}
1244 @vindex org-goto-interface
1246 See also the variable @code{org-goto-interface}.
1249 @node Structure editing, Sparse trees, Motion, Document Structure
1250 @section Structure editing
1251 @cindex structure editing
1252 @cindex headline, promotion and demotion
1253 @cindex promotion, of subtrees
1254 @cindex demotion, of subtrees
1255 @cindex subtree, cut and paste
1256 @cindex pasting, of subtrees
1257 @cindex cutting, of subtrees
1258 @cindex copying, of subtrees
1259 @cindex sorting, of subtrees
1260 @cindex subtrees, cut and paste
1263 @orgcmd{M-@key{RET},org-insert-heading}
1264 @vindex org-M-RET-may-split-line
1265 Insert new heading with same level as current. If the cursor is in a
1266 plain list item, a new item is created (@pxref{Plain lists}). To force
1267 creation of a new headline, use a prefix argument, or first press @key{RET}
1268 to get to the beginning of the next line. When this command is used in
1269 the middle of a line, the line is split and the rest of the line becomes
1270 the new headline@footnote{If you do not want the line to be split,
1271 customize the variable @code{org-M-RET-may-split-line}.}. If the
1272 command is used at the beginning of a headline, the new headline is
1273 created before the current line. If at the beginning of any other line,
1274 the content of that line is made the new heading. If the command is
1275 used at the end of a folded subtree (i.e. behind the ellipses at the end
1276 of a headline), then a headline like the current one will be inserted
1277 after the end of the subtree.
1278 @orgcmd{C-@key{RET},org-insert-heading-respect-content}
1279 Just like @kbd{M-@key{RET}}, except when adding a new heading below the
1280 current heading, the new heading is placed after the body instead of before
1281 it. This command works from anywhere in the entry.
1282 @orgcmd{M-S-@key{RET},org-insert-todo-heading}
1283 @vindex org-treat-insert-todo-heading-as-state-change
1284 Insert new TODO entry with same level as current heading. See also the
1285 variable @code{org-treat-insert-todo-heading-as-state-change}.
1286 @orgcmd{C-S-@key{RET},org-insert-todo-heading-respect-content}
1287 Insert new TODO entry with same level as current heading. Like
1288 @kbd{C-@key{RET}}, the new headline will be inserted after the current
1290 @orgcmd{@key{TAB},org-cycle}
1291 In a new entry with no text yet, the first @key{TAB} demotes the entry to
1292 become a child of the previous one. The next @key{TAB} makes it a parent,
1293 and so on, all the way to top level. Yet another @key{TAB}, and you are back
1294 to the initial level.
1295 @orgcmd{M-@key{left},org-do-promote}
1296 Promote current heading by one level.
1297 @orgcmd{M-@key{right},org-do-demote}
1298 Demote current heading by one level.
1299 @orgcmd{M-S-@key{left},org-promote-subtree}
1300 Promote the current subtree by one level.
1301 @orgcmd{M-S-@key{right},org-demote-subtree}
1302 Demote the current subtree by one level.
1303 @orgcmd{M-S-@key{up},org-move-subtree-up}
1304 Move subtree up (swap with previous subtree of same
1306 @orgcmd{M-S-@key{down},org-move-subtree-down}
1307 Move subtree down (swap with next subtree of same level).
1308 @orgcmd{C-c C-x C-w,org-cut-subtree}
1309 Kill subtree, i.e. remove it from buffer but save in kill ring.
1310 With a numeric prefix argument N, kill N sequential subtrees.
1311 @orgcmd{C-c C-x M-w,org-copy-subtree}
1312 Copy subtree to kill ring. With a numeric prefix argument N, copy the N
1313 sequential subtrees.
1314 @orgcmd{C-c C-x C-y,org-paste-subtree}
1315 Yank subtree from kill ring. This does modify the level of the subtree to
1316 make sure the tree fits in nicely at the yank position. The yank level can
1317 also be specified with a numeric prefix argument, or by yanking after a
1318 headline marker like @samp{****}.
1319 @orgcmd{C-y,org-yank}
1320 @vindex org-yank-adjusted-subtrees
1321 @vindex org-yank-folded-subtrees
1322 Depending on the variables @code{org-yank-adjusted-subtrees} and
1323 @code{org-yank-folded-subtrees}, Org's internal @code{yank} command will
1324 paste subtrees folded and in a clever way, using the same command as @kbd{C-c
1325 C-x C-y}. With the default settings, no level adjustment will take place,
1326 but the yanked tree will be folded unless doing so would swallow text
1327 previously visible. Any prefix argument to this command will force a normal
1328 @code{yank} to be executed, with the prefix passed along. A good way to
1329 force a normal yank is @kbd{C-u C-y}. If you use @code{yank-pop} after a
1330 yank, it will yank previous kill items plainly, without adjustment and
1332 @orgcmd{C-c C-x c,org-clone-subtree-with-time-shift}
1333 Clone a subtree by making a number of sibling copies of it. You will be
1334 prompted for the number of copies to make, and you can also specify if any
1335 timestamps in the entry should be shifted. This can be useful, for example,
1336 to create a number of tasks related to a series of lectures to prepare. For
1337 more details, see the docstring of the command
1338 @code{org-clone-subtree-with-time-shift}.
1339 @orgcmd{C-c C-w,org-refile}
1340 Refile entry or region to a different location. @xref{Refiling notes}.
1341 @orgcmd{C-c ^,org-sort-entries-or-items}
1342 Sort same-level entries. When there is an active region, all entries in the
1343 region will be sorted. Otherwise the children of the current headline are
1344 sorted. The command prompts for the sorting method, which can be
1345 alphabetically, numerically, by time (first timestamp with active preferred,
1346 creation time, scheduled time, deadline time), by priority, by TODO keyword
1347 (in the sequence the keywords have been defined in the setup) or by the value
1348 of a property. Reverse sorting is possible as well. You can also supply
1349 your own function to extract the sorting key. With a @kbd{C-u} prefix,
1350 sorting will be case-sensitive. With two @kbd{C-u C-u} prefixes, duplicate
1351 entries will also be removed.
1352 @orgcmd{C-x n s,org-narrow-to-subtree}
1353 Narrow buffer to current subtree.
1354 @orgcmd{C-x n w,widen}
1355 Widen buffer to remove narrowing.
1356 @orgcmd{C-c *,org-toggle-heading}
1357 Turn a normal line or plain list item into a headline (so that it becomes a
1358 subheading at its location). Also turn a headline into a normal line by
1359 removing the stars. If there is an active region, turn all lines in the
1360 region into headlines. If the first line in the region was an item, turn
1361 only the item lines into headlines. Finally, if the first line is a
1362 headline, remove the stars from all headlines in the region.
1365 @cindex region, active
1366 @cindex active region
1367 @cindex transient mark mode
1368 When there is an active region (Transient Mark mode), promotion and
1369 demotion work on all headlines in the region. To select a region of
1370 headlines, it is best to place both point and mark at the beginning of a
1371 line, mark at the beginning of the first headline, and point at the line
1372 just after the last headline to change. Note that when the cursor is
1373 inside a table (@pxref{Tables}), the Meta-Cursor keys have different
1377 @node Sparse trees, Plain lists, Structure editing, Document Structure
1378 @section Sparse trees
1379 @cindex sparse trees
1380 @cindex trees, sparse
1381 @cindex folding, sparse trees
1382 @cindex occur, command
1384 @vindex org-show-hierarchy-above
1385 @vindex org-show-following-heading
1386 @vindex org-show-siblings
1387 @vindex org-show-entry-below
1388 An important feature of Org-mode is the ability to construct @emph{sparse
1389 trees} for selected information in an outline tree, so that the entire
1390 document is folded as much as possible, but the selected information is made
1391 visible along with the headline structure above it@footnote{See also the
1392 variables @code{org-show-hierarchy-above}, @code{org-show-following-heading},
1393 @code{org-show-siblings}, and @code{org-show-entry-below} for detailed
1394 control on how much context is shown around each match.}. Just try it out
1395 and you will see immediately how it works.
1397 Org-mode contains several commands creating such trees, all these
1398 commands can be accessed through a dispatcher:
1401 @orgcmd{C-c /,org-sparse-tree}
1402 This prompts for an extra key to select a sparse-tree creating command.
1403 @orgcmd{C-c / r,org-occur}
1404 @vindex org-remove-highlights-with-change
1405 Occur. Prompts for a regexp and shows a sparse tree with all matches. If
1406 the match is in a headline, the headline is made visible. If the match is in
1407 the body of an entry, headline and body are made visible. In order to
1408 provide minimal context, also the full hierarchy of headlines above the match
1409 is shown, as well as the headline following the match. Each match is also
1410 highlighted; the highlights disappear when the buffer is changed by an
1411 editing command@footnote{This depends on the option
1412 @code{org-remove-highlights-with-change}}, or by pressing @kbd{C-c C-c}.
1413 When called with a @kbd{C-u} prefix argument, previous highlights are kept,
1414 so several calls to this command can be stacked.
1418 @vindex org-agenda-custom-commands
1419 For frequently used sparse trees of specific search strings, you can
1420 use the variable @code{org-agenda-custom-commands} to define fast
1421 keyboard access to specific sparse trees. These commands will then be
1422 accessible through the agenda dispatcher (@pxref{Agenda dispatcher}).
1426 (setq org-agenda-custom-commands
1427 '(("f" occur-tree "FIXME")))
1430 @noindent will define the key @kbd{C-c a f} as a shortcut for creating
1431 a sparse tree matching the string @samp{FIXME}.
1433 The other sparse tree commands select headings based on TODO keywords,
1434 tags, or properties and will be discussed later in this manual.
1437 @cindex printing sparse trees
1438 @cindex visible text, printing
1439 To print a sparse tree, you can use the Emacs command
1440 @code{ps-print-buffer-with-faces} which does not print invisible parts
1441 of the document @footnote{This does not work under XEmacs, because
1442 XEmacs uses selective display for outlining, not text properties.}.
1443 Or you can use the command @kbd{C-c C-e v} to export only the visible
1444 part of the document and print the resulting file.
1446 @node Plain lists, Drawers, Sparse trees, Document Structure
1447 @section Plain lists
1449 @cindex lists, plain
1450 @cindex lists, ordered
1451 @cindex ordered lists
1453 Within an entry of the outline tree, hand-formatted lists can provide
1454 additional structure. They also provide a way to create lists of checkboxes
1455 (@pxref{Checkboxes}). Org supports editing such lists, and every exporter
1456 (@pxref{Exporting}) can parse and format them.
1458 Org knows ordered lists, unordered lists, and description lists.
1461 @emph{Unordered} list items start with @samp{-}, @samp{+}, or
1462 @samp{*}@footnote{When using @samp{*} as a bullet, lines must be indented or
1463 they will be seen as top-level headlines. Also, when you are hiding leading
1464 stars to get a clean outline view, plain list items starting with a star are
1465 visually indistinguishable from true headlines. In short: even though
1466 @samp{*} is supported, it may be better to not use it for plain list items.}
1469 @vindex org-plain-list-ordered-item-terminator
1470 @emph{Ordered} list items start with a numeral followed by either a period or
1471 a right parenthesis@footnote{You can filter out any of them by configuring
1472 @code{org-plain-list-ordered-item-terminator}.}, such as @samp{1.} or
1473 @samp{1)}. If you want a list to start a different value (e.g. 20), start
1474 the text of the item with @code{[@@20]}@footnote{If there's a checkbox in the
1475 item, the cookie must be put @emph{before} the checkbox.}. Those constructs
1476 can be used in any item of the list in order to enforce a particular
1479 @emph{Description} list items are unordered list items, and contain the
1480 separator @samp{ :: } to separate the description @emph{term} from the
1484 Items belonging to the same list must have the same indentation on the first
1485 line. In particular, if an ordered list reaches number @samp{10.}, then the
1486 2--digit numbers must be written left-aligned with the other numbers in the
1489 @vindex org-list-ending-method
1490 @vindex org-list-end-regexp
1491 @vindex org-empty-line-terminates-plain-lists
1492 Two methods@footnote{To disable either of them, configure
1493 @code{org-list-ending-method}.} are provided to terminate lists. A list ends
1494 before the next line that is indented like the bullet/number or less, or it
1495 ends before two blank lines@footnote{See also
1496 @code{org-empty-line-terminates-plain-lists}.}. In both cases, all levels of
1497 the list are closed@footnote{So you cannot have a sublist, some text and then
1498 another sublist while still in the same top-level list item. This used to be
1499 possible, but it was only supported in the HTML exporter and difficult to
1500 manage with automatic indentation.}. For finer control, you can end lists
1501 with any pattern set in @code{org-list-end-regexp}. Here is an example:
1505 ** Lord of the Rings
1506 My favorite scenes are (in this order)
1507 1. The attack of the Rohirrim
1508 2. Eowyn's fight with the witch king
1509 + this was already my favorite scene in the book
1510 + I really like Miranda Otto.
1511 3. Peter Jackson being shot by Legolas
1512 He makes a really funny face when it happens.
1514 But in the end, no individual scenes matter but the film as a whole.
1515 Important actors in this film are:
1516 - @b{Elijah Wood} :: He plays Frodo
1517 - @b{Sean Austin} :: He plays Sam, Frodo's friend. I still remember
1518 him very well from his role as Mikey Walsh in @i{The Goonies}.
1522 Org supports these lists by tuning filling and wrapping commands to deal with
1523 them correctly@footnote{Org only changes the filling settings for Emacs. For
1524 XEmacs, you should use Kyle E. Jones' @file{filladapt.el}. To turn this on,
1525 put into @file{.emacs}: @code{(require 'filladapt)}}, and by exporting them
1526 properly (@pxref{Exporting}). Since indentation is what governs the
1527 structure of these lists, many structural constructs like @code{#+BEGIN_...}
1528 blocks can be indented to signal that they should be considered of a list
1531 @vindex org-list-demote-modify-bullet
1532 If you find that using a different bullet for a sub-list (than that used for
1533 the current list-level) improves readability, customize the variable
1534 @code{org-list-demote-modify-bullet}.
1536 @vindex org-list-automatic-rules
1537 The following commands act on items when the cursor is in the first line of
1538 an item (the line with the bullet or number). Some of them imply the
1539 application of automatic rules to keep list structure in tact. If some of
1540 these actions get in your way, configure @code{org-list-automatic-rules}
1541 to disable them individually.
1544 @orgcmd{@key{TAB},org-cycle}
1545 @vindex org-cycle-include-plain-lists
1546 Items can be folded just like headline levels. Normally this works only if
1547 the cursor is on a plain list item. For more details, see the variable
1548 @code{org-cycle-include-plain-lists}. to @code{integrate}, plain list items
1549 will be treated like low-level. The level of an item is then given by the
1550 indentation of the bullet/number. Items are always subordinate to real
1551 headlines, however; the hierarchies remain completely separated.
1552 @orgcmd{M-@key{RET},org-insert-heading}
1553 @vindex org-M-RET-may-split-line
1554 @vindex org-list-automatic-rules
1555 Insert new item at current level. With a prefix argument, force a new
1556 heading (@pxref{Structure editing}). If this command is used in the middle
1557 of a line, the line is @emph{split} and the rest of the line becomes the new
1558 item@footnote{If you do not want the line to be split, customize the variable
1559 @code{org-M-RET-may-split-line}.}. If this command is executed @emph{before
1560 item's body}, the new item is created @emph{before} the current item. If the
1561 command is executed in the white space before the text that is part of an
1562 item but does not contain the bullet, a bullet is added to the current line.
1564 As a new item cannot be inserted in a structural construct (like an example
1565 or source code block) within a list, Org will instead insert it right before
1566 the structure, or return an error.
1567 @kindex M-S-@key{RET}
1569 Insert a new item with a checkbox (@pxref{Checkboxes}).
1570 @orgcmd{@key{TAB},org-cycle}
1571 In a new item with no text yet, the first @key{TAB} demotes the item to
1572 become a child of the previous one. Subsequents @key{TAB} move the item to
1573 meaningful levels in the list and eventually get it back to its initial
1575 @kindex S-@key{down}
1578 @cindex shift-selection-mode
1579 @vindex org-support-shift-select
1580 Jump to the previous/next item in the current list, but only if
1581 @code{org-support-shift-select} is off. If not, you can still use paragraph
1582 jumping commands like @kbd{C-@key{up}} and @kbd{C-@key{down}} to quite
1584 @kindex M-S-@key{up}
1585 @kindex M-S-@key{down}
1587 @itemx M-S-@key{down}
1588 Move the item including subitems up/down (swap with previous/next item
1589 of same indentation). If the list is ordered, renumbering is
1591 @kindex M-@key{left}
1592 @kindex M-@key{right}
1594 @itemx M-@key{right}
1595 Decrease/increase the indentation of an item, leaving children alone.
1596 @kindex M-S-@key{left}
1597 @kindex M-S-@key{right}
1598 @item M-S-@key{left}
1599 @itemx M-S-@key{right}
1600 Decrease/increase the indentation of the item, including subitems.
1601 Initially, the item tree is selected based on current indentation. When
1602 these commands are executed several times in direct succession, the initially
1603 selected region is used, even if the new indentation would imply a different
1604 hierarchy. To use the new hierarchy, break the command chain with a cursor
1607 As a special case, using this command on the very first item of a list will
1608 move the whole list. This behavior can be disabled by configuring
1609 @code{org-list-automatic-rules}. The global indentation of a list has no
1610 influence on the text @emph{after} the list.
1613 If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the
1614 state of the checkbox. Also, makes sure that all the
1615 items on this list level use the same bullet and that the numbering of list
1616 items (if applicable) is correct.
1618 @vindex org-plain-list-ordered-item-terminator
1619 @vindex org-list-automatic-rules
1621 Cycle the entire list level through the different itemize/enumerate bullets
1622 (@samp{-}, @samp{+}, @samp{*}, @samp{1.}, @samp{1)}) or a subset of them,
1623 depending on @code{org-plain-list-ordered-item-terminator}, the type of list,
1624 and its position@footnote{See @code{bullet} rule in
1625 @code{org-list-automatic-rules} for more information.}. With a numeric
1626 prefix argument N, select the Nth bullet from this list. If there is an
1627 active region when calling this, all lines will be converted to list items.
1628 If the first line already was a list item, any item markers will be removed
1629 from the list. Finally, even without an active region, a normal line will be
1630 converted into a list item.
1633 Turn a plain list item into a headline (so that it becomes a subheading at
1634 its location). @xref{Structure editing}, for a detailed explanation.
1635 @kindex S-@key{left}
1636 @kindex S-@key{right}
1637 @item S-@key{left}/@key{right}
1638 @vindex org-support-shift-select
1639 This command also cycles bullet styles when the cursor in on the bullet or
1640 anywhere in an item line, details depending on
1641 @code{org-support-shift-select}.
1644 Sort the plain list. You will be prompted for the sorting method:
1645 numerically, alphabetically, by time, or by custom function.
1648 @node Drawers, Blocks, Plain lists, Document Structure
1652 @cindex visibility cycling, drawers
1655 Sometimes you want to keep information associated with an entry, but you
1656 normally don't want to see it. For this, Org-mode has @emph{drawers}.
1657 Drawers need to be configured with the variable
1658 @code{org-drawers}@footnote{You can define drawers on a per-file basis
1659 with a line like @code{#+DRAWERS: HIDDEN PROPERTIES STATE}}. Drawers
1663 ** This is a headline
1664 Still outside the drawer
1666 This is inside the drawer.
1671 Visibility cycling (@pxref{Visibility cycling}) on the headline will hide and
1672 show the entry, but keep the drawer collapsed to a single line. In order to
1673 look inside the drawer, you need to move the cursor to the drawer line and
1674 press @key{TAB} there. Org-mode uses the @code{PROPERTIES} drawer for
1675 storing properties (@pxref{Properties and Columns}), and you can also arrange
1676 for state change notes (@pxref{Tracking TODO state changes}) and clock times
1677 (@pxref{Clocking work time}) to be stored in a drawer @code{LOGBOOK}. If you
1678 want to store a quick note in the LOGBOOK drawer, in a similar way as this is
1679 done by state changes, use
1684 Add a time-stamped note to the LOGBOOK drawer.
1687 @node Blocks, Footnotes, Drawers, Document Structure
1690 @vindex org-hide-block-startup
1691 @cindex blocks, folding
1692 Org-mode uses begin...end blocks for various purposes from including source
1693 code examples (@pxref{Literal examples}) to capturing time logging
1694 information (@pxref{Clocking work time}). These blocks can be folded and
1695 unfolded by pressing TAB in the begin line. You can also get all blocks
1696 folded at startup by configuring the variable @code{org-hide-block-startup}
1697 or on a per-file basis by using
1699 @cindex @code{hideblocks}, STARTUP keyword
1700 @cindex @code{nohideblocks}, STARTUP keyword
1702 #+STARTUP: hideblocks
1703 #+STARTUP: nohideblocks
1706 @node Footnotes, Orgstruct mode, Blocks, Document Structure
1710 Org-mode supports the creation of footnotes. In contrast to the
1711 @file{footnote.el} package, Org-mode's footnotes are designed for work on a
1712 larger document, not only for one-off documents like emails. The basic
1713 syntax is similar to the one used by @file{footnote.el}, i.e. a footnote is
1714 defined in a paragraph that is started by a footnote marker in square
1715 brackets in column 0, no indentation allowed. If you need a paragraph break
1716 inside a footnote, use the La@TeX{} idiom @samp{\par}. The footnote reference
1717 is simply the marker in square brackets, inside text. For example:
1720 The Org homepage[fn:1] now looks a lot better than it used to.
1722 [fn:1] The link is: http://orgmode.org
1725 Org-mode extends the number-based syntax to @emph{named} footnotes and
1726 optional inline definition. Using plain numbers as markers (as
1727 @file{footnote.el} does) is supported for backward compatibility, but not
1728 encouraged because of possible conflicts with La@TeX{} snippets (@pxref{Embedded
1729 LaTeX}). Here are the valid references:
1733 A plain numeric footnote marker. Compatible with @file{footnote.el}, but not
1734 recommended because something like @samp{[1]} could easily be part of a code
1737 A named footnote reference, where @code{name} is a unique label word, or, for
1738 simplicity of automatic creation, a number.
1739 @item [fn:: This is the inline definition of this footnote]
1740 A La@TeX{}-like anonymous footnote where the definition is given directly at the
1742 @item [fn:name: a definition]
1743 An inline definition of a footnote, which also specifies a name for the note.
1744 Since Org allows multiple references to the same note, you can then use
1745 @code{[fn:name]} to create additional references.
1748 @vindex org-footnote-auto-label
1749 Footnote labels can be created automatically, or you can create names yourself.
1750 This is handled by the variable @code{org-footnote-auto-label} and its
1751 corresponding @code{#+STARTUP} keywords, see the docstring of that variable
1754 @noindent The following command handles footnotes:
1759 The footnote action command.
1761 When the cursor is on a footnote reference, jump to the definition. When it
1762 is at a definition, jump to the (first) reference.
1764 @vindex org-footnote-define-inline
1765 @vindex org-footnote-section
1766 @vindex org-footnote-auto-adjust
1767 Otherwise, create a new footnote. Depending on the variable
1768 @code{org-footnote-define-inline}@footnote{The corresponding in-buffer
1769 setting is: @code{#+STARTUP: fninline} or @code{#+STARTUP: nofninline}}, the
1770 definition will be placed right into the text as part of the reference, or
1771 separately into the location determined by the variable
1772 @code{org-footnote-section}.
1774 When this command is called with a prefix argument, a menu of additional
1777 s @r{Sort the footnote definitions by reference sequence. During editing,}
1778 @r{Org makes no effort to sort footnote definitions into a particular}
1779 @r{sequence. If you want them sorted, use this command, which will}
1780 @r{also move entries according to @code{org-footnote-section}. Automatic}
1781 @r{sorting after each insertion/deletion can be configured using the}
1782 @r{variable @code{org-footnote-auto-adjust}.}
1783 r @r{Renumber the simple @code{fn:N} footnotes. Automatic renumbering}
1784 @r{after each insertion/deletion can be configured using the variable}
1785 @r{@code{org-footnote-auto-adjust}.}
1786 S @r{Short for first @code{r}, then @code{s} action.}
1787 n @r{Normalize the footnotes by collecting all definitions (including}
1788 @r{inline definitions) into a special section, and then numbering them}
1789 @r{in sequence. The references will then also be numbers. This is}
1790 @r{meant to be the final step before finishing a document (e.g. sending}
1791 @r{off an email). The exporters do this automatically, and so could}
1792 @r{something like @code{message-send-hook}.}
1793 d @r{Delete the footnote at point, and all definitions of and references}
1796 Depending on the variable @code{org-footnote-auto-adjust}@footnote{the
1797 corresponding in-buffer options are @code{fnadjust} and @code{nofnadjust}.},
1798 renumbering and sorting footnotes can be automatic after each insertion or
1803 If the cursor is on a footnote reference, jump to the definition. If it is a
1804 the definition, jump back to the reference. When called at a footnote
1805 location with a prefix argument, offer the same menu as @kbd{C-c C-x f}.
1809 @item C-c C-o @r{or} mouse-1/2
1810 Footnote labels are also links to the corresponding definition/reference, and
1811 you can use the usual commands to follow these links.
1814 @node Orgstruct mode, , Footnotes, Document Structure
1815 @section The Orgstruct minor mode
1816 @cindex Orgstruct mode
1817 @cindex minor mode for structure editing
1819 If you like the intuitive way the Org-mode structure editing and list
1820 formatting works, you might want to use these commands in other modes like
1821 Text mode or Mail mode as well. The minor mode @code{orgstruct-mode} makes
1822 this possible. Toggle the mode with @kbd{M-x orgstruct-mode}, or
1823 turn it on by default, for example in Mail mode, with one of:
1826 (add-hook 'mail-mode-hook 'turn-on-orgstruct)
1827 (add-hook 'mail-mode-hook 'turn-on-orgstruct++)
1830 When this mode is active and the cursor is on a line that looks to Org like a
1831 headline or the first line of a list item, most structure editing commands
1832 will work, even if the same keys normally have different functionality in the
1833 major mode you are using. If the cursor is not in one of those special
1834 lines, Orgstruct mode lurks silently in the shadow. When you use
1835 @code{orgstruct++-mode}, Org will also export indentation and autofill
1836 settings into that mode, and detect item context after the first line of an
1839 @node Tables, Hyperlinks, Document Structure, Top
1842 @cindex editing tables
1844 Org comes with a fast and intuitive table editor. Spreadsheet-like
1845 calculations are supported in connection with the Emacs @file{calc}
1848 (@pxref{Top,Calc,,Calc,Gnu Emacs Calculator Manual}).
1851 (see the Emacs Calculator manual for more information about the Emacs
1856 * Built-in table editor:: Simple tables
1857 * Column width and alignment:: Overrule the automatic settings
1858 * Column groups:: Grouping to trigger vertical lines
1859 * Orgtbl mode:: The table editor as minor mode
1860 * The spreadsheet:: The table editor has spreadsheet capabilities
1861 * Org-Plot:: Plotting from org tables
1864 @node Built-in table editor, Column width and alignment, Tables, Tables
1865 @section The built-in table editor
1866 @cindex table editor, built-in
1868 Org makes it easy to format tables in plain ASCII. Any line with
1869 @samp{|} as the first non-whitespace character is considered part of a
1870 table. @samp{|} is also the column separator. A table might look like
1874 | Name | Phone | Age |
1875 |-------+-------+-----|
1876 | Peter | 1234 | 17 |
1877 | Anna | 4321 | 25 |
1880 A table is re-aligned automatically each time you press @key{TAB} or
1881 @key{RET} or @kbd{C-c C-c} inside the table. @key{TAB} also moves to
1882 the next field (@key{RET} to the next row) and creates new table rows
1883 at the end of the table or before horizontal lines. The indentation
1884 of the table is set by the first line. Any line starting with
1885 @samp{|-} is considered as a horizontal separator line and will be
1886 expanded on the next re-align to span the whole table width. So, to
1887 create the above table, you would only type
1894 @noindent and then press @key{TAB} to align the table and start filling in
1895 fields. Even faster would be to type @code{|Name|Phone|Age} followed by
1896 @kbd{C-c @key{RET}}.
1898 @vindex org-enable-table-editor
1899 @vindex org-table-auto-blank-field
1900 When typing text into a field, Org treats @key{DEL},
1901 @key{Backspace}, and all character keys in a special way, so that
1902 inserting and deleting avoids shifting other fields. Also, when
1903 typing @emph{immediately after the cursor was moved into a new field
1904 with @kbd{@key{TAB}}, @kbd{S-@key{TAB}} or @kbd{@key{RET}}}, the
1905 field is automatically made blank. If this behavior is too
1906 unpredictable for you, configure the variables
1907 @code{org-enable-table-editor} and @code{org-table-auto-blank-field}.
1910 @tsubheading{Creation and conversion}
1911 @orgcmd{C-c |,org-table-create-or-convert-from-region}
1912 Convert the active region to table. If every line contains at least one
1913 TAB character, the function assumes that the material is tab separated.
1914 If every line contains a comma, comma-separated values (CSV) are assumed.
1915 If not, lines are split at whitespace into fields. You can use a prefix
1916 argument to force a specific separator: @kbd{C-u} forces CSV, @kbd{C-u
1917 C-u} forces TAB, and a numeric argument N indicates that at least N
1918 consecutive spaces, or alternatively a TAB will be the separator.
1920 If there is no active region, this command creates an empty Org
1921 table. But it's easier just to start typing, like
1922 @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
1924 @tsubheading{Re-aligning and field motion}
1925 @orgcmd{C-c C-c,org-table-align}
1926 Re-align the table without moving the cursor.
1928 @orgcmd{<TAB>,org-table-next-field}
1929 Re-align the table, move to the next field. Creates a new row if
1932 @orgcmd{S-@key{TAB},org-table-previous-field}
1933 Re-align, move to previous field.
1935 @orgcmd{@key{RET},org-table-next-row}
1936 Re-align the table and move down to next row. Creates a new row if
1937 necessary. At the beginning or end of a line, @key{RET} still does
1938 NEWLINE, so it can be used to split a table.
1940 @orgcmd{M-a,org-table-beginning-of-field}
1941 Move to beginning of the current table field, or on to the previous field.
1942 @orgcmd{M-e,org-table-end-of-field}
1943 Move to end of the current table field, or on to the next field.
1945 @tsubheading{Column and row editing}
1946 @orgcmdkkcc{M-@key{left},M-@key{right},org-table-move-column-left,org-table-move-column-right}
1947 Move the current column left/right.
1949 @orgcmd{M-S-@key{left},org-table-delete-column}
1950 Kill the current column.
1952 @orgcmd{M-S-@key{right},org-table-insert-column}
1953 Insert a new column to the left of the cursor position.
1955 @orgcmdkkcc{M-@key{up},M-@key{down},org-table-move-row-up,org-table-move-row-down}
1956 Move the current row up/down.
1958 @orgcmd{M-S-@key{up},org-table-kill-row}
1959 Kill the current row or horizontal line.
1961 @orgcmd{M-S-@key{down},org-table-insert-row}
1962 Insert a new row above the current row. With a prefix argument, the line is
1963 created below the current one.
1965 @orgcmd{C-c -,org-table-insert-hline}
1966 Insert a horizontal line below current row. With a prefix argument, the line
1967 is created above the current line.
1969 @orgcmd{C-c @key{RET},org-table-hline-and-move}
1970 Insert a horizontal line below current row, and move the cursor into the row
1973 @orgcmd{C-c ^,org-table-sort-lines}
1974 Sort the table lines in the region. The position of point indicates the
1975 column to be used for sorting, and the range of lines is the range
1976 between the nearest horizontal separator lines, or the entire table. If
1977 point is before the first column, you will be prompted for the sorting
1978 column. If there is an active region, the mark specifies the first line
1979 and the sorting column, while point should be in the last line to be
1980 included into the sorting. The command prompts for the sorting type
1981 (alphabetically, numerically, or by time). When called with a prefix
1982 argument, alphabetic sorting will be case-sensitive.
1984 @tsubheading{Regions}
1985 @orgcmd{C-c C-x M-w,org-table-copy-region}
1986 Copy a rectangular region from a table to a special clipboard. Point and
1987 mark determine edge fields of the rectangle. If there is no active region,
1988 copy just the current field. The process ignores horizontal separator lines.
1990 @orgcmd{C-c C-x C-w,org-table-cut-region}
1991 Copy a rectangular region from a table to a special clipboard, and
1992 blank all fields in the rectangle. So this is the ``cut'' operation.
1994 @orgcmd{C-c C-x C-y,org-table-paste-rectangle}
1995 Paste a rectangular region into a table.
1996 The upper left corner ends up in the current field. All involved fields
1997 will be overwritten. If the rectangle does not fit into the present table,
1998 the table is enlarged as needed. The process ignores horizontal separator
2001 @orgcmd{M-@key{RET},org-table-wrap-region}
2002 Split the current field at the cursor position and move the rest to the line
2003 below. If there is an active region, and both point and mark are in the same
2004 column, the text in the column is wrapped to minimum width for the given
2005 number of lines. A numeric prefix argument may be used to change the number
2006 of desired lines. If there is no region, but you specify a prefix argument,
2007 the current field is made blank, and the content is appended to the field
2010 @tsubheading{Calculations}
2011 @cindex formula, in tables
2012 @cindex calculations, in tables
2013 @cindex region, active
2014 @cindex active region
2015 @cindex transient mark mode
2016 @orgcmd{C-c +,org-table-sum}
2017 Sum the numbers in the current column, or in the rectangle defined by
2018 the active region. The result is shown in the echo area and can
2019 be inserted with @kbd{C-y}.
2021 @orgcmd{S-@key{RET},org-table-copy-down}
2022 @vindex org-table-copy-increment
2023 When current field is empty, copy from first non-empty field above. When not
2024 empty, copy current field down to next row and move cursor along with it.
2025 Depending on the variable @code{org-table-copy-increment}, integer field
2026 values will be incremented during copy. Integers that are too large will not
2027 be incremented. Also, a @code{0} prefix argument temporarily disables the
2028 increment. This key is also used by shift-selection and related modes
2029 (@pxref{Conflicts}).
2031 @tsubheading{Miscellaneous}
2032 @orgcmd{C-c `,org-table-edit-field}
2033 Edit the current field in a separate window. This is useful for fields that
2034 are not fully visible (@pxref{Column width and alignment}). When called with
2035 a @kbd{C-u} prefix, just make the full field visible, so that it can be
2038 @item M-x org-table-import
2039 Import a file as a table. The table should be TAB or whitespace
2040 separated. Use, for example, to import a spreadsheet table or data
2041 from a database, because these programs generally can write
2042 TAB-separated text files. This command works by inserting the file into
2043 the buffer and then converting the region to a table. Any prefix
2044 argument is passed on to the converter, which uses it to determine the
2046 @orgcmd{C-c |,org-table-create-or-convert-from-region}
2047 Tables can also be imported by pasting tabular text into the Org
2048 buffer, selecting the pasted text with @kbd{C-x C-x} and then using the
2049 @kbd{C-c |} command (see above under @i{Creation and conversion}).
2051 @item M-x org-table-export
2052 @findex org-table-export
2053 @vindex org-table-export-default-format
2054 Export the table, by default as a TAB-separated file. Use for data
2055 exchange with, for example, spreadsheet or database programs. The format
2056 used to export the file can be configured in the variable
2057 @code{org-table-export-default-format}. You may also use properties
2058 @code{TABLE_EXPORT_FILE} and @code{TABLE_EXPORT_FORMAT} to specify the file
2059 name and the format for table export in a subtree. Org supports quite
2060 general formats for exported tables. The exporter format is the same as the
2061 format used by Orgtbl radio tables, see @ref{Translator functions}, for a
2062 detailed description.
2065 If you don't like the automatic table editor because it gets in your
2066 way on lines which you would like to start with @samp{|}, you can turn
2070 (setq org-enable-table-editor nil)
2073 @noindent Then the only table command that still works is
2074 @kbd{C-c C-c} to do a manual re-align.
2076 @node Column width and alignment, Column groups, Built-in table editor, Tables
2077 @section Column width and alignment
2078 @cindex narrow columns in tables
2079 @cindex alignment in tables
2081 The width of columns is automatically determined by the table editor. And
2082 also the alignment of a column is determined automatically from the fraction
2083 of number-like versus non-number fields in the column.
2085 Sometimes a single field or a few fields need to carry more text, leading to
2086 inconveniently wide columns. Or maybe you want to make a table with several
2087 columns having a fixed width, regardless of content. To set@footnote{This
2088 feature does not work on XEmacs.} the width of a column, one field anywhere
2089 in the column may contain just the string @samp{<N>} where @samp{N} is an
2090 integer specifying the width of the column in characters. The next re-align
2091 will then set the width of this column to this value.
2095 |---+------------------------------| |---+--------|
2097 | 1 | one | | 1 | one |
2098 | 2 | two | ----\ | 2 | two |
2099 | 3 | This is a long chunk of text | ----/ | 3 | This=> |
2100 | 4 | four | | 4 | four |
2101 |---+------------------------------| |---+--------|
2106 Fields that are wider become clipped and end in the string @samp{=>}.
2107 Note that the full text is still in the buffer, it is only invisible.
2108 To see the full text, hold the mouse over the field---a tool-tip window
2109 will show the full content. To edit such a field, use the command
2110 @kbd{C-c `} (that is @kbd{C-c} followed by the backquote). This will
2111 open a new window with the full field. Edit it and finish with @kbd{C-c
2114 @vindex org-startup-align-all-tables
2115 When visiting a file containing a table with narrowed columns, the
2116 necessary character hiding has not yet happened, and the table needs to
2117 be aligned before it looks nice. Setting the option
2118 @code{org-startup-align-all-tables} will realign all tables in a file
2119 upon visiting, but also slow down startup. You can also set this option
2120 on a per-file basis with:
2127 If you would like to overrule the automatic alignment of number-rich columns
2128 to the right and of string-rich column to the left, you and use @samp{<r>},
2129 @samp{c}@footnote{Centering does not work inside Emacs, but it does have an
2130 effect when exporting to HTML.} or @samp{<l>} in a similar fashion. You may
2131 also combine alignment and field width like this: @samp{<l10>}.
2133 Lines which only contain these formatting cookies will be removed
2134 automatically when exporting the document.
2136 @node Column groups, Orgtbl mode, Column width and alignment, Tables
2137 @section Column groups
2138 @cindex grouping columns in tables
2140 When Org exports tables, it does so by default without vertical
2141 lines because that is visually more satisfying in general. Occasionally
2142 however, vertical lines can be useful to structure a table into groups
2143 of columns, much like horizontal lines can do for groups of rows. In
2144 order to specify column groups, you can use a special row where the
2145 first field contains only @samp{/}. The further fields can either
2146 contain @samp{<} to indicate that this column should start a group,
2147 @samp{>} to indicate the end of a column, or @samp{<>} to make a column
2148 a group of its own. Boundaries between column groups will upon export be
2149 marked with vertical lines. Here is an example:
2152 | N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
2153 |---+-----+-----+-----+---------+------------|
2154 | / | < | | > | < | > |
2155 | 1 | 1 | 1 | 1 | 1 | 1 |
2156 | 2 | 4 | 8 | 16 | 1.4142 | 1.1892 |
2157 | 3 | 9 | 27 | 81 | 1.7321 | 1.3161 |
2158 |---+-----+-----+-----+---------+------------|
2159 #+TBLFM: $2=$1^2::$3=$1^3::$4=$1^4::$5=sqrt($1)::$6=sqrt(sqrt(($1)))
2162 It is also sufficient to just insert the column group starters after
2163 every vertical line you would like to have:
2166 | N | N^2 | N^3 | N^4 | sqrt(n) | sqrt[4](N) |
2167 |----+-----+-----+-----+---------+------------|
2171 @node Orgtbl mode, The spreadsheet, Column groups, Tables
2172 @section The Orgtbl minor mode
2174 @cindex minor mode for tables
2176 If you like the intuitive way the Org table editor works, you
2177 might also want to use it in other modes like Text mode or Mail mode.
2178 The minor mode Orgtbl mode makes this possible. You can always toggle
2179 the mode with @kbd{M-x orgtbl-mode}. To turn it on by default, for
2180 example in mail mode, use
2183 (add-hook 'mail-mode-hook 'turn-on-orgtbl)
2186 Furthermore, with some special setup, it is possible to maintain tables
2187 in arbitrary syntax with Orgtbl mode. For example, it is possible to
2188 construct La@TeX{} tables with the underlying ease and power of
2189 Orgtbl mode, including spreadsheet capabilities. For details, see
2190 @ref{Tables in arbitrary syntax}.
2192 @node The spreadsheet, Org-Plot, Orgtbl mode, Tables
2193 @section The spreadsheet
2194 @cindex calculations, in tables
2195 @cindex spreadsheet capabilities
2196 @cindex @file{calc} package
2198 The table editor makes use of the Emacs @file{calc} package to implement
2199 spreadsheet-like capabilities. It can also evaluate Emacs Lisp forms to
2200 derive fields from other fields. While fully featured, Org's implementation
2201 is not identical to other spreadsheets. For example, Org knows the concept
2202 of a @emph{column formula} that will be applied to all non-header fields in a
2203 column without having to copy the formula to each relevant field. There is
2204 also a formula debugger, and a formula editor with features for highlighting
2205 fields in the table corresponding to the references at the point in the
2206 formula, moving these references by arrow keys
2209 * References:: How to refer to another field or range
2210 * Formula syntax for Calc:: Using Calc to compute stuff
2211 * Formula syntax for Lisp:: Writing formulas in Emacs Lisp
2212 * Field formulas:: Formulas valid for a single field
2213 * Column formulas:: Formulas valid for an entire column
2214 * Editing and debugging formulas:: Fixing formulas
2215 * Updating the table:: Recomputing all dependent fields
2216 * Advanced features:: Field names, parameters and automatic recalc
2219 @node References, Formula syntax for Calc, The spreadsheet, The spreadsheet
2220 @subsection References
2223 To compute fields in the table from other fields, formulas must
2224 reference other fields or ranges. In Org, fields can be referenced
2225 by name, by absolute coordinates, and by relative coordinates. To find
2226 out what the coordinates of a field are, press @kbd{C-c ?} in that
2227 field, or press @kbd{C-c @}} to toggle the display of a grid.
2229 @subsubheading Field references
2230 @cindex field references
2231 @cindex references, to fields
2233 Formulas can reference the value of another field in two ways. Like in
2234 any other spreadsheet, you may reference fields with a letter/number
2235 combination like @code{B3}, meaning the 2nd field in the 3rd row.
2236 @c Such references are always fixed to that field, they don't change
2237 @c when you copy and paste a formula to a different field. So
2238 @c Org's @code{B3} behaves like @code{$B$3} in other spreadsheets.
2241 Org also uses another, more general operator that looks like this:
2243 @@@var{row}$@var{column}
2247 Column references can be absolute like @samp{1}, @samp{2},...@samp{@var{N}},
2248 or relative to the current column like @samp{+1} or @samp{-2}.
2250 The row specification only counts data lines and ignores horizontal
2251 separator lines (hlines). You can use absolute row numbers
2252 @samp{1}...@samp{@var{N}}, and row numbers relative to the current row like
2253 @samp{+3} or @samp{-1}. Or specify the row relative to one of the
2254 hlines: @samp{I} refers to the first hline@footnote{Note that only
2255 hlines are counted that @emph{separate} table lines. If the table
2256 starts with a hline above the header, it does not count.}, @samp{II} to
2257 the second, etc@. @samp{-I} refers to the first such line above the
2258 current line, @samp{+I} to the first such line below the current line.
2259 You can also write @samp{III+2} which is the second data line after the
2260 third hline in the table.
2262 @samp{0} refers to the current row and column. Also, if you omit
2263 either the column or the row part of the reference, the current
2264 row/column is implied.
2266 Org's references with @emph{unsigned} numbers are fixed references
2267 in the sense that if you use the same reference in the formula for two
2268 different fields, the same field will be referenced each time.
2269 Org's references with @emph{signed} numbers are floating
2270 references because the same reference operator can reference different
2271 fields depending on the field being calculated by the formula.
2273 As a special case, references like @samp{$LR5} and @samp{$LR12} can be used
2274 to refer in a stable way to the 5th and 12th field in the last row of the
2277 Here are a few examples:
2280 @@2$3 @r{2nd row, 3rd column}
2281 C2 @r{same as previous}
2282 $5 @r{column 5 in the current row}
2283 E& @r{same as previous}
2284 @@2 @r{current column, row 2}
2285 @@-1$-3 @r{the field one row up, three columns to the left}
2286 @@-I$2 @r{field just under hline above current row, column 2}
2289 @subsubheading Range references
2290 @cindex range references
2291 @cindex references, to ranges
2293 You may reference a rectangular range of fields by specifying two field
2294 references connected by two dots @samp{..}. If both fields are in the
2295 current row, you may simply use @samp{$2..$7}, but if at least one field
2296 is in a different row, you need to use the general @code{@@row$column}
2297 format at least for the first field (i.e the reference must start with
2298 @samp{@@} in order to be interpreted correctly). Examples:
2301 $1..$3 @r{First three fields in the current row.}
2302 $P..$Q @r{Range, using column names (see under Advanced)}
2303 @@2$1..@@4$3 @r{6 fields between these two fields.}
2304 A2..C4 @r{Same as above.}
2305 @@-1$-2..@@-1 @r{3 numbers from the column to the left, 2 up to current row}
2308 @noindent Range references return a vector of values that can be fed
2309 into Calc vector functions. Empty fields in ranges are normally
2310 suppressed, so that the vector contains only the non-empty fields (but
2311 see the @samp{E} mode switch below). If there are no non-empty fields,
2312 @samp{[0]} is returned to avoid syntax errors in formulas.
2314 @subsubheading Field coordinates in formulas
2315 @cindex field coordinates
2316 @cindex coordinates, of field
2317 @cindex row, of field coordinates
2318 @cindex column, of field coordinates
2320 For Calc formulas and Lisp formulas @code{@@#} and @code{$#} can be used to
2321 get the row or column number of the field where the formula result goes.
2322 The traditional Lisp formula equivalents are @code{org-table-current-dline}
2323 and @code{org-table-current-column}. Examples:
2326 if(@@# % 2, $#, string("")) @r{column number on odd lines only}
2327 $3 = remote(FOO, @@@@#$2) @r{copy column 2 from table FOO into}
2328 @r{column 3 of the current table}
2331 @noindent For the second example, table FOO must have at least as many rows
2332 as the current table. Inefficient@footnote{The computation time scales as
2333 O(N^2) because table FOO is parsed for each field to be copied.} for large
2336 @subsubheading Named references
2337 @cindex named references
2338 @cindex references, named
2339 @cindex name, of column or field
2340 @cindex constants, in calculations
2343 @vindex org-table-formula-constants
2344 @samp{$name} is interpreted as the name of a column, parameter or
2345 constant. Constants are defined globally through the variable
2346 @code{org-table-formula-constants}, and locally (for the file) through a
2350 #+CONSTANTS: c=299792458. pi=3.14 eps=2.4e-6
2354 @vindex constants-unit-system
2355 @pindex constants.el
2356 Also properties (@pxref{Properties and Columns}) can be used as
2357 constants in table formulas: for a property @samp{:Xyz:} use the name
2358 @samp{$PROP_Xyz}, and the property will be searched in the current
2359 outline entry and in the hierarchy above it. If you have the
2360 @file{constants.el} package, it will also be used to resolve constants,
2361 including natural constants like @samp{$h} for Planck's constant, and
2362 units like @samp{$km} for kilometers@footnote{@file{constants.el} can
2363 supply the values of constants in two different unit systems, @code{SI}
2364 and @code{cgs}. Which one is used depends on the value of the variable
2365 @code{constants-unit-system}. You can use the @code{#+STARTUP} options
2366 @code{constSI} and @code{constcgs} to set this value for the current
2367 buffer.}. Column names and parameters can be specified in special table
2368 lines. These are described below, see @ref{Advanced features}. All
2369 names must start with a letter, and further consist of letters and
2372 @subsubheading Remote references
2373 @cindex remote references
2374 @cindex references, remote
2375 @cindex references, to a different table
2376 @cindex name, of column or field
2377 @cindex constants, in calculations
2380 You may also reference constants, fields and ranges from a different table,
2381 either in the current file or even in a different file. The syntax is
2384 remote(NAME-OR-ID,REF)
2388 where NAME can be the name of a table in the current file as set by a
2389 @code{#+TBLNAME: NAME} line before the table. It can also be the ID of an
2390 entry, even in a different file, and the reference then refers to the first
2391 table in that entry. REF is an absolute field or range reference as
2392 described above for example @code{@@3$3} or @code{$somename}, valid in the
2395 @node Formula syntax for Calc, Formula syntax for Lisp, References, The spreadsheet
2396 @subsection Formula syntax for Calc
2397 @cindex formula syntax, Calc
2398 @cindex syntax, of formulas
2400 A formula can be any algebraic expression understood by the Emacs
2401 @file{Calc} package. @b{Note that @file{calc} has the
2402 non-standard convention that @samp{/} has lower precedence than
2403 @samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}.} Before
2404 evaluation by @code{calc-eval} (@pxref{Calling Calc from
2405 Your Programs,calc-eval,Calling Calc from Your Lisp Programs,Calc,GNU
2406 Emacs Calc Manual}),
2407 @c FIXME: The link to the Calc manual in HTML does not work.
2408 variable substitution takes place according to the rules described above.
2409 @cindex vectors, in table calculations
2410 The range vectors can be directly fed into the Calc vector functions
2411 like @samp{vmean} and @samp{vsum}.
2413 @cindex format specifier
2414 @cindex mode, for @file{calc}
2415 @vindex org-calc-default-modes
2416 A formula can contain an optional mode string after a semicolon. This
2417 string consists of flags to influence Calc and other modes during
2418 execution. By default, Org uses the standard Calc modes (precision
2419 12, angular units degrees, fraction and symbolic modes off). The display
2420 format, however, has been changed to @code{(float 8)} to keep tables
2421 compact. The default settings can be configured using the variable
2422 @code{org-calc-default-modes}.
2425 p20 @r{set the internal Calc calculation precision to 20 digits}
2426 n3 s3 e2 f4 @r{Normal, scientific, engineering, or fixed}
2427 @r{format of the result of Calc passed back to Org.}
2428 @r{Calc formatting is unlimited in precision as}
2429 @r{long as the Calc calculation precision is greater.}
2430 D R @r{angle modes: degrees, radians}
2431 F S @r{fraction and symbolic modes}
2432 N @r{interpret all fields as numbers, use 0 for non-numbers}
2433 T @r{force text interpretation}
2434 E @r{keep empty fields in ranges}
2439 Unless you use large integer numbers or high-precision-calculation
2440 and -display for floating point numbers you may alternatively provide a
2441 @code{printf} format specifier to reformat the Calc result after it has been
2442 passed back to Org instead of letting Calc already do the
2443 formatting@footnote{The @code{printf} reformatting is limited in precision
2444 because the value passed to it is converted into an @code{integer} or
2445 @code{double}. The @code{integer} is limited in size by truncating the
2446 signed value to 32 bits. The @code{double} is limited in precision to 64
2447 bits overall which leaves approximately 16 significant decimal digits.}.
2451 $1+$2 @r{Sum of first and second field}
2452 $1+$2;%.2f @r{Same, format result to two decimals}
2453 exp($2)+exp($1) @r{Math functions can be used}
2454 $0;%.1f @r{Reformat current cell to 1 decimal}
2455 ($3-32)*5/9 @r{Degrees F -> C conversion}
2456 $c/$1/$cm @r{Hz -> cm conversion, using @file{constants.el}}
2457 tan($1);Dp3s1 @r{Compute in degrees, precision 3, display SCI 1}
2458 sin($1);Dp3%.1e @r{Same, but use printf specifier for display}
2459 vmean($2..$7) @r{Compute column range mean, using vector function}
2460 vmean($2..$7);EN @r{Same, but treat empty fields as 0}
2461 taylor($3,x=7,2) @r{taylor series of $3, at x=7, second degree}
2464 Calc also contains a complete set of logical operations. For example
2467 if($1<20,teen,string("")) @r{``teen'' if age $1 less than 20, else empty}
2470 @node Formula syntax for Lisp, Field formulas, Formula syntax for Calc, The spreadsheet
2471 @subsection Emacs Lisp forms as formulas
2472 @cindex Lisp forms, as table formulas
2474 It is also possible to write a formula in Emacs Lisp; this can be useful
2475 for string manipulation and control structures, if Calc's
2476 functionality is not enough. If a formula starts with a single-quote
2477 followed by an opening parenthesis, then it is evaluated as a Lisp form.
2478 The evaluation should return either a string or a number. Just as with
2479 @file{calc} formulas, you can specify modes and a printf format after a
2480 semicolon. With Emacs Lisp forms, you need to be conscious about the way
2481 field references are interpolated into the form. By default, a
2482 reference will be interpolated as a Lisp string (in double-quotes)
2483 containing the field. If you provide the @samp{N} mode switch, all
2484 referenced elements will be numbers (non-number fields will be zero) and
2485 interpolated as Lisp numbers, without quotes. If you provide the
2486 @samp{L} flag, all fields will be interpolated literally, without quotes.
2487 I.e., if you want a reference to be interpreted as a string by the Lisp
2488 form, enclose the reference operator itself in double-quotes, like
2489 @code{"$3"}. Ranges are inserted as space-separated fields, so you can
2490 embed them in list or vector syntax. A few examples, note how the
2491 @samp{N} mode is used when we do computations in Lisp.
2494 @r{Swap the first two characters of the content of column 1}
2495 '(concat (substring $1 1 2) (substring $1 0 1) (substring $1 2))
2496 @r{Add columns 1 and 2, equivalent to Calc's @code{$1+$2}}
2498 @r{Compute the sum of columns 1-4, like Calc's @code{vsum($1..$4)}}
2499 '(apply '+ '($1..$4));N
2502 @node Field formulas, Column formulas, Formula syntax for Lisp, The spreadsheet
2503 @subsection Field formulas
2504 @cindex field formula
2505 @cindex formula, for individual table field
2507 To assign a formula to a particular field, type it directly into the
2508 field, preceded by @samp{:=}, for example @samp{:=$1+$2}. When you
2509 press @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in
2510 the field, the formula will be stored as the formula for this field,
2511 evaluated, and the current field replaced with the result.
2514 Formulas are stored in a special line starting with @samp{#+TBLFM:}
2515 directly below the table. If you typed the equation in the 4th field of
2516 the 3rd data line in the table, the formula will look like
2517 @samp{@@3$4=$1+$2}. When inserting/deleting/swapping column and rows
2518 with the appropriate commands, @i{absolute references} (but not relative
2519 ones) in stored formulas are modified in order to still reference the
2520 same field. Of course this is not true if you edit the table structure
2521 with normal editing commands---then you must fix the equations yourself.
2522 The left-hand side of a formula may also be a named field (@pxref{Advanced
2523 features}), or a last-row reference like @samp{$LR3}.
2525 Instead of typing an equation into the field, you may also use the
2529 @orgcmd{C-u C-c =,org-table-eval-formula}
2530 Install a new formula for the current field. The command prompts for a
2531 formula with default taken from the @samp{#+TBLFM:} line, applies
2532 it to the current field, and stores it.
2535 @node Column formulas, Editing and debugging formulas, Field formulas, The spreadsheet
2536 @subsection Column formulas
2537 @cindex column formula
2538 @cindex formula, for table column
2540 Often in a table, the same formula should be used for all fields in a
2541 particular column. Instead of having to copy the formula to all fields
2542 in that column, Org allows you to assign a single formula to an entire
2543 column. If the table contains horizontal separator hlines, everything
2544 before the first such line is considered part of the table @emph{header}
2545 and will not be modified by column formulas.
2547 To assign a formula to a column, type it directly into any field in the
2548 column, preceded by an equal sign, like @samp{=$1+$2}. When you press
2549 @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the field,
2550 the formula will be stored as the formula for the current column, evaluated
2551 and the current field replaced with the result. If the field contains only
2552 @samp{=}, the previously stored formula for this column is used. For each
2553 column, Org will only remember the most recently used formula. In the
2554 @samp{#+TBLFM:} line, column formulas will look like @samp{$4=$1+$2}. The left-hand
2555 side of a column formula cannot currently be the name of column, it
2556 must be the numeric column reference.
2558 Instead of typing an equation into the field, you may also use the
2562 @orgcmd{C-c =,org-table-eval-formula}
2563 Install a new formula for the current column and replace current field with
2564 the result of the formula. The command prompts for a formula, with default
2565 taken from the @samp{#+TBLFM} line, applies it to the current field and
2566 stores it. With a numeric prefix argument(e.g. @kbd{C-5 C-c =}) the command
2567 will apply it to that many consecutive fields in the current column.
2570 @node Editing and debugging formulas, Updating the table, Column formulas, The spreadsheet
2571 @subsection Editing and debugging formulas
2572 @cindex formula editing
2573 @cindex editing, of table formulas
2575 @vindex org-table-use-standard-references
2576 You can edit individual formulas in the minibuffer or directly in the
2577 field. Org can also prepare a special buffer with all active
2578 formulas of a table. When offering a formula for editing, Org
2579 converts references to the standard format (like @code{B3} or @code{D&})
2580 if possible. If you prefer to only work with the internal format (like
2581 @code{@@3$2} or @code{$4}), configure the variable
2582 @code{org-table-use-standard-references}.
2585 @orgcmdkkc{C-c =,C-u C-c =,org-table-eval-formula}
2586 Edit the formula associated with the current column/field in the
2587 minibuffer. See @ref{Column formulas}, and @ref{Field formulas}.
2588 @orgcmd{C-u C-u C-c =,org-table-eval-formula}
2589 Re-insert the active formula (either a
2590 field formula, or a column formula) into the current field, so that you
2591 can edit it directly in the field. The advantage over editing in the
2592 minibuffer is that you can use the command @kbd{C-c ?}.
2593 @orgcmd{C-c ?,org-table-field-info}
2594 While editing a formula in a table field, highlight the field(s)
2595 referenced by the reference at the cursor position in the formula.
2597 @findex org-table-toggle-coordinate-overlays
2599 Toggle the display of row and column numbers for a table, using overlays
2600 (@command{org-table-toggle-coordinate-overlays}). These are updated each
2601 time the table is aligned; you can force it with @kbd{C-c C-c}.
2603 @findex org-table-toggle-formula-debugger
2605 Toggle the formula debugger on and off
2606 (@command{org-table-toggle-formula-debugger}). See below.
2607 @orgcmd{C-c ',org-table-edit-formulas}
2608 Edit all formulas for the current table in a special buffer, where the
2609 formulas will be displayed one per line. If the current field has an
2610 active formula, the cursor in the formula editor will mark it.
2611 While inside the special buffer, Org will automatically highlight
2612 any field or range reference at the cursor position. You may edit,
2613 remove and add formulas, and use the following commands:
2615 @orgcmdkkc{C-c C-c,C-x C-s,org-table-fedit-finish}
2616 Exit the formula editor and store the modified formulas. With @kbd{C-u}
2617 prefix, also apply the new formulas to the entire table.
2618 @orgcmd{C-c C-q,org-table-fedit-abort}
2619 Exit the formula editor without installing changes.
2620 @orgcmd{C-c C-r,org-table-fedit-toggle-ref-type}
2621 Toggle all references in the formula editor between standard (like
2622 @code{B3}) and internal (like @code{@@3$2}).
2623 @orgcmd{@key{TAB},org-table-fedit-lisp-indent}
2624 Pretty-print or indent Lisp formula at point. When in a line containing
2625 a Lisp formula, format the formula according to Emacs Lisp rules.
2626 Another @key{TAB} collapses the formula back again. In the open
2627 formula, @key{TAB} re-indents just like in Emacs Lisp mode.
2628 @orgcmd{M-@key{TAB},lisp-complete-symbol}
2629 Complete Lisp symbols, just like in Emacs Lisp mode.
2631 @kindex S-@key{down}
2632 @kindex S-@key{left}
2633 @kindex S-@key{right}
2634 @findex org-table-fedit-ref-up
2635 @findex org-table-fedit-ref-down
2636 @findex org-table-fedit-ref-left
2637 @findex org-table-fedit-ref-right
2638 @item S-@key{up}/@key{down}/@key{left}/@key{right}
2639 Shift the reference at point. For example, if the reference is
2640 @code{B3} and you press @kbd{S-@key{right}}, it will become @code{C3}.
2641 This also works for relative references and for hline references.
2642 @orgcmdkkcc{M-S-@key{up},M-S-@key{down},org-table-fedit-line-up,org-table-fedit-line-down}
2643 Move the test line for column formulas in the Org buffer up and
2645 @orgcmdkkcc{M-@key{up},M-@key{down},org-table-fedit-scroll-down,org-table-fedit-scroll-up}
2646 Scroll the window displaying the table.
2648 @findex org-table-toggle-coordinate-overlays
2650 Turn the coordinate grid in the table on and off.
2654 Making a table field blank does not remove the formula associated with
2655 the field, because that is stored in a different line (the @samp{#+TBLFM}
2656 line)---during the next recalculation the field will be filled again.
2657 To remove a formula from a field, you have to give an empty reply when
2658 prompted for the formula, or to edit the @samp{#+TBLFM} line.
2661 You may edit the @samp{#+TBLFM} directly and re-apply the changed
2662 equations with @kbd{C-c C-c} in that line or with the normal
2663 recalculation commands in the table.
2665 @subsubheading Debugging formulas
2666 @cindex formula debugging
2667 @cindex debugging, of table formulas
2668 When the evaluation of a formula leads to an error, the field content
2669 becomes the string @samp{#ERROR}. If you would like see what is going
2670 on during variable substitution and calculation in order to find a bug,
2671 turn on formula debugging in the @code{Tbl} menu and repeat the
2672 calculation, for example by pressing @kbd{C-u C-u C-c = @key{RET}} in a
2673 field. Detailed information will be displayed.
2675 @node Updating the table, Advanced features, Editing and debugging formulas, The spreadsheet
2676 @subsection Updating the table
2677 @cindex recomputing table fields
2678 @cindex updating, table
2680 Recalculation of a table is normally not automatic, but needs to be
2681 triggered by a command. See @ref{Advanced features}, for a way to make
2682 recalculation at least semi-automatic.
2684 In order to recalculate a line of a table or the entire table, use the
2688 @orgcmd{C-c *,org-table-recalculate}
2689 Recalculate the current row by first applying the stored column formulas
2690 from left to right, and all field formulas in the current row.
2696 Recompute the entire table, line by line. Any lines before the first
2697 hline are left alone, assuming that these are part of the table header.
2699 @orgcmdkkc{C-u C-u C-c *,C-u C-u C-c C-c,org-table-iterate}
2700 Iterate the table by recomputing it until no further changes occur.
2701 This may be necessary if some computed fields use the value of other
2702 fields that are computed @i{later} in the calculation sequence.
2703 @item M-x org-table-recalculate-buffer-tables
2704 @findex org-table-recalculate-buffer-tables
2705 Recompute all tables in the current buffer.
2706 @item M-x org-table-iterate-buffer-tables
2707 @findex org-table-iterate-buffer-tables
2708 Iterate all tables in the current buffer, in order to converge table-to-table
2712 @node Advanced features, , Updating the table, The spreadsheet
2713 @subsection Advanced features
2715 If you want the recalculation of fields to happen automatically, or if
2716 you want to be able to assign @i{names} to fields and columns, you need
2717 to reserve the first column of the table for special marking characters.
2719 @orgcmd{C-#,org-table-rotate-recalc-marks}
2720 Rotate the calculation mark in first column through the states @samp{ },
2721 @samp{#}, @samp{*}, @samp{!}, @samp{$}. When there is an active region,
2722 change all marks in the region.
2725 Here is an example of a table that collects exam results of students and
2726 makes use of these features:
2730 |---+---------+--------+--------+--------+-------+------|
2731 | | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
2732 |---+---------+--------+--------+--------+-------+------|
2733 | ! | | P1 | P2 | P3 | Tot | |
2734 | # | Maximum | 10 | 15 | 25 | 50 | 10.0 |
2735 | ^ | | m1 | m2 | m3 | mt | |
2736 |---+---------+--------+--------+--------+-------+------|
2737 | # | Peter | 10 | 8 | 23 | 41 | 8.2 |
2738 | # | Sam | 2 | 4 | 3 | 9 | 1.8 |
2739 |---+---------+--------+--------+--------+-------+------|
2740 | | Average | | | | 29.7 | |
2741 | ^ | | | | | at | |
2742 | $ | max=50 | | | | | |
2743 |---+---------+--------+--------+--------+-------+------|
2744 #+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(@@-II..@@-I);%.1f
2748 @noindent @b{Important}: please note that for these special tables,
2749 recalculating the table with @kbd{C-u C-c *} will only affect rows that
2750 are marked @samp{#} or @samp{*}, and fields that have a formula assigned
2751 to the field itself. The column formulas are not applied in rows with
2754 @cindex marking characters, tables
2755 The marking characters have the following meaning:
2758 The fields in this line define names for the columns, so that you may
2759 refer to a column as @samp{$Tot} instead of @samp{$6}.
2761 This row defines names for the fields @emph{above} the row. With such
2762 a definition, any formula in the table may use @samp{$m1} to refer to
2763 the value @samp{10}. Also, if you assign a formula to a names field, it
2764 will be stored as @samp{$name=...}.
2766 Similar to @samp{^}, but defines names for the fields in the row
2769 Fields in this row can define @emph{parameters} for formulas. For
2770 example, if a field in a @samp{$} row contains @samp{max=50}, then
2771 formulas in this table can refer to the value 50 using @samp{$max}.
2772 Parameters work exactly like constants, only that they can be defined on
2775 Fields in this row are automatically recalculated when pressing
2776 @key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row. Also, this row
2777 is selected for a global recalculation with @kbd{C-u C-c *}. Unmarked
2778 lines will be left alone by this command.
2780 Selects this line for global recalculation with @kbd{C-u C-c *}, but
2781 not for automatic recalculation. Use this when automatic
2782 recalculation slows down editing too much.
2784 Unmarked lines are exempt from recalculation with @kbd{C-u C-c *}.
2785 All lines that should be recalculated should be marked with @samp{#}
2788 Do not export this line. Useful for lines that contain the narrowing
2789 @samp{<N>} markers or column group markers.
2792 Finally, just to whet your appetite for what can be done with the
2793 fantastic @file{calc.el} package, here is a table that computes the Taylor
2794 series of degree @code{n} at location @code{x} for a couple of
2799 |---+-------------+---+-----+--------------------------------------|
2800 | | Func | n | x | Result |
2801 |---+-------------+---+-----+--------------------------------------|
2802 | # | exp(x) | 1 | x | 1 + x |
2803 | # | exp(x) | 2 | x | 1 + x + x^2 / 2 |
2804 | # | exp(x) | 3 | x | 1 + x + x^2 / 2 + x^3 / 6 |
2805 | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
2806 | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2 |
2807 | * | tan(x) | 3 | x | 0.0175 x + 1.77e-6 x^3 |
2808 |---+-------------+---+-----+--------------------------------------|
2809 #+TBLFM: $5=taylor($2,$4,$3);n3
2813 @node Org-Plot, , The spreadsheet, Tables
2815 @cindex graph, in tables
2816 @cindex plot tables using Gnuplot
2819 Org-Plot can produce 2D and 3D graphs of information stored in org tables
2820 using @file{Gnuplot} @uref{http://www.gnuplot.info/} and @file{gnuplot-mode}
2821 @uref{http://cars9.uchicago.edu/~ravel/software/gnuplot-mode.html}. To see
2822 this in action, ensure that you have both Gnuplot and Gnuplot mode installed
2823 on your system, then call @code{org-plot/gnuplot} on the following table.
2827 #+PLOT: title:"Citas" ind:1 deps:(3) type:2d with:histograms set:"yrange [0:]"
2828 | Sede | Max cites | H-index |
2829 |-----------+-----------+---------|
2830 | Chile | 257.72 | 21.39 |
2831 | Leeds | 165.77 | 19.68 |
2832 | Sao Paolo | 71.00 | 11.50 |
2833 | Stockholm | 134.19 | 14.33 |
2834 | Morelia | 257.56 | 17.67 |
2838 Notice that Org Plot is smart enough to apply the table's headers as labels.
2839 Further control over the labels, type, content, and appearance of plots can
2840 be exercised through the @code{#+PLOT:} lines preceding a table. See below
2841 for a complete list of Org-plot options. For more information and examples
2842 see the Org-plot tutorial at
2843 @uref{http://orgmode.org/worg/org-tutorials/org-plot.php}.
2845 @subsubheading Plot Options
2849 Specify any @command{gnuplot} option to be set when graphing.
2852 Specify the title of the plot.
2855 Specify which column of the table to use as the @code{x} axis.
2858 Specify the columns to graph as a Lisp style list, surrounded by parentheses
2859 and separated by spaces for example @code{dep:(3 4)} to graph the third and
2860 fourth columns (defaults to graphing all other columns aside from the @code{ind}
2864 Specify whether the plot will be @code{2d}, @code{3d}, or @code{grid}.
2867 Specify a @code{with} option to be inserted for every col being plotted
2868 (e.g. @code{lines}, @code{points}, @code{boxes}, @code{impulses}, etc...).
2869 Defaults to @code{lines}.
2872 If you want to plot to a file, specify @code{"@var{path/to/desired/output-file}"}.
2875 List of labels to be used for the deps (defaults to the column headers if
2879 Specify an entire line to be inserted in the Gnuplot script.
2882 When plotting @code{3d} or @code{grid} types, set this to @code{t} to graph a
2883 flat mapping rather than a @code{3d} slope.
2886 Specify format of Org-mode timestamps as they will be parsed by Gnuplot.
2887 Defaults to @samp{%Y-%m-%d-%H:%M:%S}.
2890 If you want total control, you can specify a script file (place the file name
2891 between double-quotes) which will be used to plot. Before plotting, every
2892 instance of @code{$datafile} in the specified script will be replaced with
2893 the path to the generated data file. Note: even if you set this option, you
2894 may still want to specify the plot type, as that can impact the content of
2898 @node Hyperlinks, TODO Items, Tables, Top
2902 Like HTML, Org provides links inside a file, external links to
2903 other files, Usenet articles, emails, and much more.
2906 * Link format:: How links in Org are formatted
2907 * Internal links:: Links to other places in the current file
2908 * External links:: URL-like links to the world
2909 * Handling links:: Creating, inserting and following
2910 * Using links outside Org:: Linking from my C source code?
2911 * Link abbreviations:: Shortcuts for writing complex links
2912 * Search options:: Linking to a specific location
2913 * Custom searches:: When the default search is not enough
2916 @node Link format, Internal links, Hyperlinks, Hyperlinks
2917 @section Link format
2919 @cindex format, of links
2921 Org will recognize plain URL-like links and activate them as
2922 clickable links. The general link format, however, looks like this:
2925 [[link][description]] @r{or alternatively} [[link]]
2929 Once a link in the buffer is complete (all brackets present), Org
2930 will change the display so that @samp{description} is displayed instead
2931 of @samp{[[link][description]]} and @samp{link} is displayed instead of
2932 @samp{[[link]]}. Links will be highlighted in the face @code{org-link},
2933 which by default is an underlined face. You can directly edit the
2934 visible part of a link. Note that this can be either the @samp{link}
2935 part (if there is no description) or the @samp{description} part. To
2936 edit also the invisible @samp{link} part, use @kbd{C-c C-l} with the
2939 If you place the cursor at the beginning or just behind the end of the
2940 displayed text and press @key{BACKSPACE}, you will remove the
2941 (invisible) bracket at that location. This makes the link incomplete
2942 and the internals are again displayed as plain text. Inserting the
2943 missing bracket hides the link internals again. To show the
2944 internal structure of all links, use the menu entry
2945 @code{Org->Hyperlinks->Literal links}.
2947 @node Internal links, External links, Link format, Hyperlinks
2948 @section Internal links
2949 @cindex internal links
2950 @cindex links, internal
2951 @cindex targets, for links
2953 @cindex property, CUSTOM_ID
2954 If the link does not look like a URL, it is considered to be internal in the
2955 current file. The most important case is a link like
2956 @samp{[[#my-custom-id]]} which will link to the entry with the
2957 @code{CUSTOM_ID} property @samp{my-custom-id}. Such custom IDs are very good
2958 for HTML export (@pxref{HTML export}) where they produce pretty section
2959 links. You are responsible yourself to make sure these custom IDs are unique
2962 Links such as @samp{[[My Target]]} or @samp{[[My Target][Find my target]]}
2963 lead to a text search in the current file.
2965 The link can be followed with @kbd{C-c C-o} when the cursor is on the link,
2966 or with a mouse click (@pxref{Handling links}). Links to custom IDs will
2967 point to the corresponding headline. The preferred match for a text link is
2968 a @i{dedicated target}: the same string in double angular brackets. Targets
2969 may be located anywhere; sometimes it is convenient to put them into a
2970 comment line. For example
2976 @noindent In HTML export (@pxref{HTML export}), such targets will become
2977 named anchors for direct access through @samp{http} links@footnote{Note that
2978 text before the first headline is usually not exported, so the first such
2979 target should be after the first headline, or in the line directly before the
2982 If no dedicated target exists, Org will search for a headline that is exactly
2983 the link text but may also include a TODO keyword and tags@footnote{To insert
2984 a link targeting a headline, in-buffer completion can be used. Just type a
2985 star followed by a few optional letters into the buffer and press
2986 @kbd{M-@key{TAB}}. All headlines in the current buffer will be offered as
2987 completions.}. In non-Org files, the search will look for the words in the
2988 link text, in the above example the search would be for @samp{my target}.
2990 Following a link pushes a mark onto Org's own mark ring. You can
2991 return to the previous position with @kbd{C-c &}. Using this command
2992 several times in direct succession goes back to positions recorded
2996 * Radio targets:: Make targets trigger links in plain text
2999 @node Radio targets, , Internal links, Internal links
3000 @subsection Radio targets
3001 @cindex radio targets
3002 @cindex targets, radio
3003 @cindex links, radio targets
3005 Org can automatically turn any occurrences of certain target names
3006 in normal text into a link. So without explicitly creating a link, the
3007 text connects to the target radioing its position. Radio targets are
3008 enclosed by triple angular brackets. For example, a target @samp{<<<My
3009 Target>>>} causes each occurrence of @samp{my target} in normal text to
3010 become activated as a link. The Org file is scanned automatically
3011 for radio targets only when the file is first loaded into Emacs. To
3012 update the target list during editing, press @kbd{C-c C-c} with the
3013 cursor on or at a target.
3015 @node External links, Handling links, Internal links, Hyperlinks
3016 @section External links
3017 @cindex links, external
3018 @cindex external links
3019 @cindex links, external
3027 @cindex WANDERLUST links
3029 @cindex USENET links
3034 Org supports links to files, websites, Usenet and email messages,
3035 BBDB database entries and links to both IRC conversations and their
3036 logs. External links are URL-like locators. They start with a short
3037 identifying string followed by a colon. There can be no space after
3038 the colon. The following list shows examples for each link type.
3041 http://www.astro.uva.nl/~dominik @r{on the web}
3042 doi:10.1000/182 @r{DOI for an electronic resource}
3043 file:/home/dominik/images/jupiter.jpg @r{file, absolute path}
3044 /home/dominik/images/jupiter.jpg @r{same as above}
3045 file:papers/last.pdf @r{file, relative path}
3046 ./papers/last.pdf @r{same as above}
3047 file:/myself@@some.where:papers/last.pdf @r{file, path on remote machine}
3048 /myself@@some.where:papers/last.pdf @r{same as above}
3049 file:sometextfile::NNN @r{file with line number to jump to}
3050 file:projects.org @r{another Org file}
3051 file:projects.org::some words @r{text search in Org file}
3052 file:projects.org::*task title @r{heading search in Org file}
3053 docview:papers/last.pdf::NNN @r{open file in doc-view mode at page NNN}
3054 id:B7423F4D-2E8A-471B-8810-C40F074717E9 @r{Link to heading by ID}
3055 news:comp.emacs @r{Usenet link}
3056 mailto:adent@@galaxy.net @r{Mail link}
3057 vm:folder @r{VM folder link}
3058 vm:folder#id @r{VM message link}
3059 vm://myself@@some.where.org/folder#id @r{VM on remote machine}
3060 wl:folder @r{WANDERLUST folder link}
3061 wl:folder#id @r{WANDERLUST message link}
3062 mhe:folder @r{MH-E folder link}
3063 mhe:folder#id @r{MH-E message link}
3064 rmail:folder @r{RMAIL folder link}
3065 rmail:folder#id @r{RMAIL message link}
3066 gnus:group @r{Gnus group link}
3067 gnus:group#id @r{Gnus article link}
3068 bbdb:R.*Stallman @r{BBDB link (with regexp)}
3069 irc:/irc.com/#emacs/bob @r{IRC link}
3070 info:org:External%20links @r{Info node link (with encoded space)}
3071 shell:ls *.org @r{A shell command}
3072 elisp:org-agenda @r{Interactive Elisp command}
3073 elisp:(find-file-other-frame "Elisp.org") @r{Elisp form to evaluate}
3076 A link should be enclosed in double brackets and may contain a
3077 descriptive text to be displayed instead of the URL (@pxref{Link
3078 format}), for example:
3081 [[http://www.gnu.org/software/emacs/][GNU Emacs]]
3085 If the description is a file name or URL that points to an image, HTML
3086 export (@pxref{HTML export}) will inline the image as a clickable
3087 button. If there is no description at all and the link points to an
3089 that image will be inlined into the exported HTML file.
3091 @cindex square brackets, around links
3092 @cindex plain text external links
3093 Org also finds external links in the normal text and activates them
3094 as links. If spaces must be part of the link (for example in
3095 @samp{bbdb:Richard Stallman}), or if you need to remove ambiguities
3096 about the end of the link, enclose them in square brackets.
3098 @node Handling links, Using links outside Org, External links, Hyperlinks
3099 @section Handling links
3100 @cindex links, handling
3102 Org provides methods to create a link in the correct syntax, to
3103 insert it into an Org file, and to follow the link.
3107 @cindex storing links
3109 Store a link to the current location. This is a @emph{global} command (you
3110 must create the key binding yourself) which can be used in any buffer to
3111 create a link. The link will be stored for later insertion into an Org
3112 buffer (see below). What kind of link will be created depends on the current
3115 @b{Org-mode buffers}@*
3116 For Org files, if there is a @samp{<<target>>} at the cursor, the link points
3117 to the target. Otherwise it points to the current headline, which will also
3120 @vindex org-link-to-org-use-id
3121 @cindex property, CUSTOM_ID
3122 @cindex property, ID
3123 If the headline has a @code{CUSTOM_ID} property, a link to this custom ID
3124 will be stored. In addition or alternatively (depending on the value of
3125 @code{org-link-to-org-use-id}), a globally unique @code{ID} property will be
3126 created and/or used to construct a link. So using this command in Org
3127 buffers will potentially create two links: a human-readable from the custom
3128 ID, and one that is globally unique and works even if the entry is moved from
3129 file to file. Later, when inserting the link, you need to decide which one
3132 @b{Email/News clients: VM, Rmail, Wanderlust, MH-E, Gnus}@*
3133 Pretty much all Emacs mail clients are supported. The link will point to the
3134 current article, or, in some GNUS buffers, to the group. The description is
3135 constructed from the author and the subject.
3137 @b{Web browsers: W3 and W3M}@*
3138 Here the link will be the current URL, with the page title as description.
3140 @b{Contacts: BBDB}@*
3141 Links created in a BBDB buffer will point to the current entry.
3144 @vindex org-irc-link-to-logs
3145 For IRC links, if you set the variable @code{org-irc-link-to-logs} to
3146 @code{t}, a @samp{file:/} style link to the relevant point in the logs for
3147 the current conversation is created. Otherwise an @samp{irc:/} style link to
3148 the user/channel/server under the point will be stored.
3151 For any other files, the link will point to the file, with a search string
3152 (@pxref{Search options}) pointing to the contents of the current line. If
3153 there is an active region, the selected words will form the basis of the
3154 search string. If the automatically created link is not working correctly or
3155 accurately enough, you can write custom functions to select the search string
3156 and to do the search for particular file types---see @ref{Custom searches}.
3157 The key binding @kbd{C-c l} is only a suggestion---see @ref{Installation}.
3160 When the cursor is in an agenda view, the created link points to the
3161 entry referenced by the current line.
3165 @cindex link completion
3166 @cindex completion, of links
3167 @cindex inserting links
3169 @vindex org-keep-stored-link-after-insertion
3170 Insert a link@footnote{ Note that you don't have to use this command to
3171 insert a link. Links in Org are plain text, and you can type or paste them
3172 straight into the buffer. By using this command, the links are automatically
3173 enclosed in double brackets, and you will be asked for the optional
3174 descriptive text.}. This prompts for a link to be inserted into the buffer.
3175 You can just type a link, using text for an internal link, or one of the link
3176 type prefixes mentioned in the examples above. The link will be inserted
3177 into the buffer@footnote{After insertion of a stored link, the link will be
3178 removed from the list of stored links. To keep it in the list later use, use
3179 a triple @kbd{C-u} prefix argument to @kbd{C-c C-l}, or configure the option
3180 @code{org-keep-stored-link-after-insertion}.}, along with a descriptive text.
3181 If some text was selected when this command is called, the selected text
3182 becomes the default description.
3184 @b{Inserting stored links}@*
3185 All links stored during the
3186 current session are part of the history for this prompt, so you can access
3187 them with @key{up} and @key{down} (or @kbd{M-p/n}).
3189 @b{Completion support}@* Completion with @key{TAB} will help you to insert
3190 valid link prefixes like @samp{http:} or @samp{ftp:}, including the prefixes
3191 defined through link abbreviations (@pxref{Link abbreviations}). If you
3192 press @key{RET} after inserting only the @var{prefix}, Org will offer
3193 specific completion support for some link types@footnote{This works by
3194 calling a special function @code{org-PREFIX-complete-link}.} For
3195 example, if you type @kbd{file @key{RET}}, file name completion (alternative
3196 access: @kbd{C-u C-c C-l}, see below) will be offered, and after @kbd{bbdb
3197 @key{RET}} you can complete contact names.
3199 @cindex file name completion
3200 @cindex completion, of file names
3202 When @kbd{C-c C-l} is called with a @kbd{C-u} prefix argument, a link to
3203 a file will be inserted and you may use file name completion to select
3204 the name of the file. The path to the file is inserted relative to the
3205 directory of the current Org file, if the linked file is in the current
3206 directory or in a sub-directory of it, or if the path is written relative
3207 to the current directory using @samp{../}. Otherwise an absolute path
3208 is used, if possible with @samp{~/} for your home directory. You can
3209 force an absolute path with two @kbd{C-u} prefixes.
3211 @item C-c C-l @ @r{(with cursor on existing link)}
3212 When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
3213 link and description parts of the link.
3215 @cindex following links
3218 @item C-c C-o @ @r{(or, if @code{org-return-follows-link} is set, also} @key{RET}
3219 @vindex org-file-apps
3220 Open link at point. This will launch a web browser for URLs (using
3221 @command{browse-url-at-point}), run VM/MH-E/Wanderlust/Rmail/Gnus/BBDB for
3222 the corresponding links, and execute the command in a shell link. When the
3223 cursor is on an internal link, this command runs the corresponding search.
3224 When the cursor is on a TAG list in a headline, it creates the corresponding
3225 TAGS view. If the cursor is on a timestamp, it compiles the agenda for that
3226 date. Furthermore, it will visit text and remote files in @samp{file:} links
3227 with Emacs and select a suitable application for local non-text files.
3228 Classification of files is based on file extension only. See option
3229 @code{org-file-apps}. If you want to override the default application and
3230 visit the file with Emacs, use a @kbd{C-u} prefix. If you want to avoid
3231 opening in Emacs, use a @kbd{C-u C-u} prefix.@*
3232 If the cursor is on a headline, but not on a link, offer all links in the
3233 headline and entry text.
3239 On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o}
3240 would. Under Emacs 22, @kbd{mouse-1} will also follow a link.
3244 @vindex org-display-internal-link-with-indirect-buffer
3245 Like @kbd{mouse-2}, but force file links to be opened with Emacs, and
3246 internal links to be displayed in another window@footnote{See the
3247 variable @code{org-display-internal-link-with-indirect-buffer}}.
3249 @cindex inlining images
3250 @cindex images, inlining
3252 @vindex org-startup-with-inline-images
3253 @cindex @code{inlineimages}, STARTUP keyword
3254 @cindex @code{noinlineimages}, STARTUP keyword
3256 Toggle the inline display of linked images. Normally this will only inline
3257 images that have no description part in the link, i.e. images that will also
3258 be inlined during export. When called with a prefix argument, also display
3259 images that do have a link description. You can ask for inline images to be
3260 displayed at startup by configuring the variable
3261 @code{org-startup-with-inline-images}@footnote{with corresponding
3262 @code{#+STARTUP} keywords @code{inlineimages} and @code{inlineimages}}.
3266 Push the current position onto the mark ring, to be able to return
3267 easily. Commands following an internal link do this automatically.
3269 @cindex links, returning to
3272 Jump back to a recorded position. A position is recorded by the
3273 commands following internal links, and by @kbd{C-c %}. Using this
3274 command several times in direct succession moves through a ring of
3275 previously recorded positions.
3279 @cindex links, finding next/previous
3282 Move forward/backward to the next link in the buffer. At the limit of
3283 the buffer, the search fails once, and then wraps around. The key
3284 bindings for this are really too long, you might want to bind this also
3285 to @kbd{C-n} and @kbd{C-p}
3287 (add-hook 'org-load-hook
3289 (define-key 'org-mode-map "\C-n" 'org-next-link)
3290 (define-key 'org-mode-map "\C-p" 'org-previous-link)))
3294 @node Using links outside Org, Link abbreviations, Handling links, Hyperlinks
3295 @section Using links outside Org
3297 You can insert and follow links that have Org syntax not only in
3298 Org, but in any Emacs buffer. For this, you should create two
3299 global commands, like this (please select suitable global keys
3303 (global-set-key "\C-c L" 'org-insert-link-global)
3304 (global-set-key "\C-c o" 'org-open-at-point-global)
3307 @node Link abbreviations, Search options, Using links outside Org, Hyperlinks
3308 @section Link abbreviations
3309 @cindex link abbreviations
3310 @cindex abbreviation, links
3312 Long URLs can be cumbersome to type, and often many similar links are
3313 needed in a document. For this you can use link abbreviations. An
3314 abbreviated link looks like this
3317 [[linkword:tag][description]]
3321 @vindex org-link-abbrev-alist
3322 where the tag is optional.
3323 The @i{linkword} must be a word, starting with a letter, followed by
3324 letters, numbers, @samp{-}, and @samp{_}. Abbreviations are resolved
3325 according to the information in the variable @code{org-link-abbrev-alist}
3326 that relates the linkwords to replacement text. Here is an example:
3330 (setq org-link-abbrev-alist
3331 '(("bugzilla" . "http://10.1.2.9/bugzilla/show_bug.cgi?id=")
3332 ("google" . "http://www.google.com/search?q=")
3333 ("gmap" . "http://maps.google.com/maps?q=%s")
3334 ("omap" . "http://nominatim.openstreetmap.org/search?q=%s&polygon=1")
3335 ("ads" . "http://adsabs.harvard.edu/cgi-bin/nph-abs_connect?author=%s&db_key=AST")))
3339 If the replacement text contains the string @samp{%s}, it will be
3340 replaced with the tag. Otherwise the tag will be appended to the string
3341 in order to create the link. You may also specify a function that will
3342 be called with the tag as the only argument to create the link.
3344 With the above setting, you could link to a specific bug with
3345 @code{[[bugzilla:129]]}, search the web for @samp{OrgMode} with
3346 @code{[[google:OrgMode]]}, show the map location of the Free Software
3347 Foundation @code{[[gmap:51 Franklin Street, Boston]]} or of Carsten office
3348 @code{[[omap:Science Park 904, Amsterdam, The Netherlands]]} and find out
3349 what the Org author is doing besides Emacs hacking with
3350 @code{[[ads:Dominik,C]]}.
3352 If you need special abbreviations just for a single Org buffer, you
3353 can define them in the file with
3357 #+LINK: bugzilla http://10.1.2.9/bugzilla/show_bug.cgi?id=
3358 #+LINK: google http://www.google.com/search?q=%s
3362 In-buffer completion (@pxref{Completion}) can be used after @samp{[} to
3363 complete link abbreviations. You may also define a function
3364 @code{org-PREFIX-complete-link} that implements special (e.g. completion)
3365 support for inserting such a link with @kbd{C-c C-l}. Such a function should
3366 not accept any arguments, and return the full link with prefix.
3368 @node Search options, Custom searches, Link abbreviations, Hyperlinks
3369 @section Search options in file links
3370 @cindex search option in file links
3371 @cindex file links, searching
3373 File links can contain additional information to make Emacs jump to a
3374 particular location in the file when following a link. This can be a
3375 line number or a search option after a double@footnote{For backward
3376 compatibility, line numbers can also follow a single colon.} colon. For
3377 example, when the command @kbd{C-c l} creates a link (@pxref{Handling
3378 links}) to a file, it encodes the words in the current line as a search
3379 string that can be used to find this line back later when following the
3380 link with @kbd{C-c C-o}.
3382 Here is the syntax of the different ways to attach a search to a file
3383 link, together with an explanation:
3386 [[file:~/code/main.c::255]]
3387 [[file:~/xx.org::My Target]]
3388 [[file:~/xx.org::*My Target]]
3389 [[file:~/xx.org::#my-custom-id]]
3390 [[file:~/xx.org::/regexp/]]
3397 Search for a link target @samp{<<My Target>>}, or do a text search for
3398 @samp{my target}, similar to the search in internal links, see
3399 @ref{Internal links}. In HTML export (@pxref{HTML export}), such a file
3400 link will become an HTML reference to the corresponding named anchor in
3403 In an Org file, restrict search to headlines.
3405 Link to a heading with a @code{CUSTOM_ID} property
3407 Do a regular expression search for @code{regexp}. This uses the Emacs
3408 command @code{occur} to list all matches in a separate window. If the
3409 target file is in Org-mode, @code{org-occur} is used to create a
3410 sparse tree with the matches.
3411 @c If the target file is a directory,
3412 @c @code{grep} will be used to search all files in the directory.
3415 As a degenerate case, a file link with an empty file name can be used
3416 to search the current file. For example, @code{[[file:::find me]]} does
3417 a search for @samp{find me} in the current file, just as
3418 @samp{[[find me]]} would.
3420 @node Custom searches, , Search options, Hyperlinks
3421 @section Custom Searches
3422 @cindex custom search strings
3423 @cindex search strings, custom
3425 The default mechanism for creating search strings and for doing the
3426 actual search related to a file link may not work correctly in all
3427 cases. For example, Bib@TeX{} database files have many entries like
3428 @samp{year="1993"} which would not result in good search strings,
3429 because the only unique identification for a Bib@TeX{} entry is the
3432 @vindex org-create-file-search-functions
3433 @vindex org-execute-file-search-functions
3434 If you come across such a problem, you can write custom functions to set
3435 the right search string for a particular file type, and to do the search
3436 for the string in the file. Using @code{add-hook}, these functions need
3437 to be added to the hook variables
3438 @code{org-create-file-search-functions} and
3439 @code{org-execute-file-search-functions}. See the docstring for these
3440 variables for more information. Org actually uses this mechanism
3441 for Bib@TeX{} database files, and you can use the corresponding code as
3442 an implementation example. See the file @file{org-bibtex.el}.
3444 @node TODO Items, Tags, Hyperlinks, Top
3448 Org-mode does not maintain TODO lists as separate documents@footnote{Of
3449 course, you can make a document that contains only long lists of TODO items,
3450 but this is not required.}. Instead, TODO items are an integral part of the
3451 notes file, because TODO items usually come up while taking notes! With Org
3452 mode, simply mark any entry in a tree as being a TODO item. In this way,
3453 information is not duplicated, and the entire context from which the TODO
3454 item emerged is always present.
3456 Of course, this technique for managing TODO items scatters them
3457 throughout your notes file. Org-mode compensates for this by providing
3458 methods to give you an overview of all the things that you have to do.
3461 * TODO basics:: Marking and displaying TODO entries
3462 * TODO extensions:: Workflow and assignments
3463 * Progress logging:: Dates and notes for progress
3464 * Priorities:: Some things are more important than others
3465 * Breaking down tasks:: Splitting a task into manageable pieces
3466 * Checkboxes:: Tick-off lists
3469 @node TODO basics, TODO extensions, TODO Items, TODO Items
3470 @section Basic TODO functionality
3472 Any headline becomes a TODO item when it starts with the word
3473 @samp{TODO}, for example:
3476 *** TODO Write letter to Sam Fortune
3480 The most important commands to work with TODO entries are:
3484 @cindex cycling, of TODO states
3486 Rotate the TODO state of the current item among
3489 ,-> (unmarked) -> TODO -> DONE --.
3490 '--------------------------------'
3493 The same rotation can also be done ``remotely'' from the timeline and
3494 agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
3498 Select a specific keyword using completion or (if it has been set up)
3499 the fast selection interface. For the latter, you need to assign keys
3500 to TODO states, see @ref{Per-file keywords}, and @ref{Setting tags}, for
3503 @kindex S-@key{right}
3504 @kindex S-@key{left}
3505 @vindex org-treat-S-cursor-todo-selection-as-state-change
3508 Select the following/preceding TODO state, similar to cycling. Useful
3509 mostly if more than two TODO states are possible (@pxref{TODO
3510 extensions}). See also @ref{Conflicts}, for a discussion of the interaction
3511 with @code{shift-selection-mode}. See also the variable
3512 @code{org-treat-S-cursor-todo-selection-as-state-change}.
3514 @cindex sparse tree, for TODO
3516 @vindex org-todo-keywords
3517 View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}). Folds the
3518 entire buffer, but shows all TODO items (with not-DONE state) and the
3519 headings hierarchy above them. With a prefix argument (or by using @kbd{C-c
3520 / T}), search for a specific TODO. You will be prompted for the keyword, and
3521 you can also give a list of keywords like @code{KWD1|KWD2|...} to list
3522 entries that match any one of these keywords. With numeric prefix argument
3523 N, show the tree for the Nth keyword in the variable
3524 @code{org-todo-keywords}. With two prefix arguments, find all TODO states,
3525 both un-done and done.
3528 Show the global TODO list. Collects the TODO items (with not-DONE states)
3529 from all agenda files (@pxref{Agenda Views}) into a single buffer. The new
3530 buffer will be in @code{agenda-mode}, which provides commands to examine and
3531 manipulate the TODO entries from the new buffer (@pxref{Agenda commands}).
3532 @xref{Global TODO list}, for more information.
3533 @kindex S-M-@key{RET}
3535 Insert a new TODO entry below the current one.
3539 @vindex org-todo-state-tags-triggers
3540 Changing a TODO state can also trigger tag changes. See the docstring of the
3541 option @code{org-todo-state-tags-triggers} for details.
3543 @node TODO extensions, Progress logging, TODO basics, TODO Items
3544 @section Extended use of TODO keywords
3545 @cindex extended TODO keywords
3547 @vindex org-todo-keywords
3548 By default, marked TODO entries have one of only two states: TODO and
3549 DONE. Org-mode allows you to classify TODO items in more complex ways
3550 with @emph{TODO keywords} (stored in @code{org-todo-keywords}). With
3551 special setup, the TODO keyword system can work differently in different
3554 Note that @i{tags} are another way to classify headlines in general and
3555 TODO items in particular (@pxref{Tags}).
3558 * Workflow states:: From TODO to DONE in steps
3559 * TODO types:: I do this, Fred does the rest
3560 * Multiple sets in one file:: Mixing it all, and still finding your way
3561 * Fast access to TODO states:: Single letter selection of a state
3562 * Per-file keywords:: Different files, different requirements
3563 * Faces for TODO keywords:: Highlighting states
3564 * TODO dependencies:: When one task needs to wait for others
3567 @node Workflow states, TODO types, TODO extensions, TODO extensions
3568 @subsection TODO keywords as workflow states
3569 @cindex TODO workflow
3570 @cindex workflow states as TODO keywords
3572 You can use TODO keywords to indicate different @emph{sequential} states
3573 in the process of working on an item, for example@footnote{Changing
3574 this variable only becomes effective after restarting Org-mode in a
3578 (setq org-todo-keywords
3579 '((sequence "TODO" "FEEDBACK" "VERIFY" "|" "DONE" "DELEGATED")))
3582 The vertical bar separates the TODO keywords (states that @emph{need
3583 action}) from the DONE states (which need @emph{no further action}). If
3584 you don't provide the separator bar, the last state is used as the DONE
3586 @cindex completion, of TODO keywords
3587 With this setup, the command @kbd{C-c C-t} will cycle an entry from TODO
3588 to FEEDBACK, then to VERIFY, and finally to DONE and DELEGATED. You may
3589 also use a numeric prefix argument to quickly select a specific state. For
3590 example @kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
3591 Or you can use @kbd{S-@key{left}} to go backward through the sequence. If you
3592 define many keywords, you can use in-buffer completion
3593 (@pxref{Completion}) or even a special one-key selection scheme
3594 (@pxref{Fast access to TODO states}) to insert these words into the
3595 buffer. Changing a TODO state can be logged with a timestamp, see
3596 @ref{Tracking TODO state changes}, for more information.
3598 @node TODO types, Multiple sets in one file, Workflow states, TODO extensions
3599 @subsection TODO keywords as types
3601 @cindex names as TODO keywords
3602 @cindex types as TODO keywords
3604 The second possibility is to use TODO keywords to indicate different
3605 @emph{types} of action items. For example, you might want to indicate
3606 that items are for ``work'' or ``home''. Or, when you work with several
3607 people on a single project, you might want to assign action items
3608 directly to persons, by using their names as TODO keywords. This would
3609 be set up like this:
3612 (setq org-todo-keywords '((type "Fred" "Sara" "Lucy" "|" "DONE")))
3615 In this case, different keywords do not indicate a sequence, but rather
3616 different types. So the normal work flow would be to assign a task to a
3617 person, and later to mark it DONE. Org-mode supports this style by adapting
3618 the workings of the command @kbd{C-c C-t}@footnote{This is also true for the
3619 @kbd{t} command in the timeline and agenda buffers.}. When used several
3620 times in succession, it will still cycle through all names, in order to first
3621 select the right type for a task. But when you return to the item after some
3622 time and execute @kbd{C-c C-t} again, it will switch from any name directly
3623 to DONE. Use prefix arguments or completion to quickly select a specific
3624 name. You can also review the items of a specific TODO type in a sparse tree
3625 by using a numeric prefix to @kbd{C-c / t}. For example, to see all things
3626 Lucy has to do, you would use @kbd{C-3 C-c / t}. To collect Lucy's items
3627 from all agenda files into a single buffer, you would use the numeric prefix
3628 argument as well when creating the global TODO list: @kbd{C-3 C-c a t}.
3630 @node Multiple sets in one file, Fast access to TODO states, TODO types, TODO extensions
3631 @subsection Multiple keyword sets in one file
3632 @cindex TODO keyword sets
3634 Sometimes you may want to use different sets of TODO keywords in
3635 parallel. For example, you may want to have the basic
3636 @code{TODO}/@code{DONE}, but also a workflow for bug fixing, and a
3637 separate state indicating that an item has been canceled (so it is not
3638 DONE, but also does not require action). Your setup would then look
3642 (setq org-todo-keywords
3643 '((sequence "TODO" "|" "DONE")
3644 (sequence "REPORT" "BUG" "KNOWNCAUSE" "|" "FIXED")
3645 (sequence "|" "CANCELED")))
3648 The keywords should all be different, this helps Org-mode to keep track
3649 of which subsequence should be used for a given entry. In this setup,
3650 @kbd{C-c C-t} only operates within a subsequence, so it switches from
3651 @code{DONE} to (nothing) to @code{TODO}, and from @code{FIXED} to
3652 (nothing) to @code{REPORT}. Therefore you need a mechanism to initially
3653 select the correct sequence. Besides the obvious ways like typing a
3654 keyword or using completion, you may also apply the following commands:
3657 @kindex C-S-@key{right}
3658 @kindex C-S-@key{left}
3659 @kindex C-u C-u C-c C-t
3660 @item C-u C-u C-c C-t
3661 @itemx C-S-@key{right}
3662 @itemx C-S-@key{left}
3663 These keys jump from one TODO subset to the next. In the above example,
3664 @kbd{C-u C-u C-c C-t} or @kbd{C-S-@key{right}} would jump from @code{TODO} or
3665 @code{DONE} to @code{REPORT}, and any of the words in the second row to
3666 @code{CANCELED}. Note that the @kbd{C-S-} key binding conflict with
3667 @code{shift-selection-mode} (@pxref{Conflicts}).
3668 @kindex S-@key{right}
3669 @kindex S-@key{left}
3672 @kbd{S-@key{<left>}} and @kbd{S-@key{<right>}} and walk through @emph{all}
3673 keywords from all sets, so for example @kbd{S-@key{<right>}} would switch
3674 from @code{DONE} to @code{REPORT} in the example above. See also
3675 @ref{Conflicts}, for a discussion of the interaction with
3676 @code{shift-selection-mode}.
3679 @node Fast access to TODO states, Per-file keywords, Multiple sets in one file, TODO extensions
3680 @subsection Fast access to TODO states
3682 If you would like to quickly change an entry to an arbitrary TODO state
3683 instead of cycling through the states, you can set up keys for
3684 single-letter access to the states. This is done by adding the section
3685 key after each keyword, in parentheses. For example:
3688 (setq org-todo-keywords
3689 '((sequence "TODO(t)" "|" "DONE(d)")
3690 (sequence "REPORT(r)" "BUG(b)" "KNOWNCAUSE(k)" "|" "FIXED(f)")
3691 (sequence "|" "CANCELED(c)")))
3694 @vindex org-fast-tag-selection-include-todo
3695 If you then press @code{C-c C-t} followed by the selection key, the entry
3696 will be switched to this state. @key{SPC} can be used to remove any TODO
3697 keyword from an entry.@footnote{Check also the variable
3698 @code{org-fast-tag-selection-include-todo}, it allows you to change the TODO
3699 state through the tags interface (@pxref{Setting tags}), in case you like to
3700 mingle the two concepts. Note that this means you need to come up with
3701 unique keys across both sets of keywords.}
3703 @node Per-file keywords, Faces for TODO keywords, Fast access to TODO states, TODO extensions
3704 @subsection Setting up keywords for individual files
3705 @cindex keyword options
3706 @cindex per-file keywords
3711 It can be very useful to use different aspects of the TODO mechanism in
3712 different files. For file-local settings, you need to add special lines
3713 to the file which set the keywords and interpretation for that file
3714 only. For example, to set one of the two examples discussed above, you
3715 need one of the following lines, starting in column zero anywhere in the
3719 #+TODO: TODO FEEDBACK VERIFY | DONE CANCELED
3721 @noindent (you may also write @code{#+SEQ_TODO} to be explicit about the
3722 interpretation, but it means the same as @code{#+TODO}), or
3724 #+TYP_TODO: Fred Sara Lucy Mike | DONE
3727 A setup for using several sets in parallel would be:
3731 #+TODO: REPORT BUG KNOWNCAUSE | FIXED
3735 @cindex completion, of option keywords
3737 @noindent To make sure you are using the correct keyword, type
3738 @samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
3740 @cindex DONE, final TODO keyword
3741 Remember that the keywords after the vertical bar (or the last keyword
3742 if no bar is there) must always mean that the item is DONE (although you
3743 may use a different word). After changing one of these lines, use
3744 @kbd{C-c C-c} with the cursor still in the line to make the changes
3745 known to Org-mode@footnote{Org-mode parses these lines only when
3746 Org-mode is activated after visiting a file. @kbd{C-c C-c} with the
3747 cursor in a line starting with @samp{#+} is simply restarting Org-mode
3748 for the current buffer.}.
3750 @node Faces for TODO keywords, TODO dependencies, Per-file keywords, TODO extensions
3751 @subsection Faces for TODO keywords
3752 @cindex faces, for TODO keywords
3754 @vindex org-todo @r{(face)}
3755 @vindex org-done @r{(face)}
3756 @vindex org-todo-keyword-faces
3757 Org-mode highlights TODO keywords with special faces: @code{org-todo}
3758 for keywords indicating that an item still has to be acted upon, and
3759 @code{org-done} for keywords indicating that an item is finished. If
3760 you are using more than 2 different states, you might want to use
3761 special faces for some of them. This can be done using the variable
3762 @code{org-todo-keyword-faces}. For example:
3766 (setq org-todo-keyword-faces
3767 '(("TODO" . org-warning) ("STARTED" . "yellow")
3768 ("CANCELED" . (:foreground "blue" :weight bold))))
3772 While using a list with face properties as shown for CANCELED @emph{should}
3773 work, this does not aways seem to be the case. If necessary, define a
3774 special face and use that. A string is interpreted as a color. The variable
3775 @code{org-faces-easy-properties} determines if that color is interpreted as a
3776 foreground or a background color.
3778 @node TODO dependencies, , Faces for TODO keywords, TODO extensions
3779 @subsection TODO dependencies
3780 @cindex TODO dependencies
3781 @cindex dependencies, of TODO states
3783 @vindex org-enforce-todo-dependencies
3784 @cindex property, ORDERED
3785 The structure of Org files (hierarchy and lists) makes it easy to define TODO
3786 dependencies. Usually, a parent TODO task should not be marked DONE until
3787 all subtasks (defined as children tasks) are marked as DONE. And sometimes
3788 there is a logical sequence to a number of (sub)tasks, so that one task
3789 cannot be acted upon before all siblings above it are done. If you customize
3790 the variable @code{org-enforce-todo-dependencies}, Org will block entries
3791 from changing state to DONE while they have children that are not DONE.
3792 Furthermore, if an entry has a property @code{ORDERED}, each of its children
3793 will be blocked until all earlier siblings are marked DONE. Here is an
3797 * TODO Blocked until (two) is done
3806 ** TODO b, needs to wait for (a)
3807 ** TODO c, needs to wait for (a) and (b)
3813 @vindex org-track-ordered-property-with-tag
3814 @cindex property, ORDERED
3815 Toggle the @code{ORDERED} property of the current entry. A property is used
3816 for this behavior because this should be local to the current entry, not
3817 inherited like a tag. However, if you would like to @i{track} the value of
3818 this property with a tag for better visibility, customize the variable
3819 @code{org-track-ordered-property-with-tag}.
3820 @kindex C-u C-u C-u C-c C-t
3821 @item C-u C-u C-u C-c C-t
3822 Change TODO state, circumventing any state blocking.
3825 @vindex org-agenda-dim-blocked-tasks
3826 If you set the variable @code{org-agenda-dim-blocked-tasks}, TODO entries
3827 that cannot be closed because of such dependencies will be shown in a dimmed
3828 font or even made invisible in agenda views (@pxref{Agenda Views}).
3830 @cindex checkboxes and TODO dependencies
3831 @vindex org-enforce-todo-dependencies
3832 You can also block changes of TODO states by looking at checkboxes
3833 (@pxref{Checkboxes}). If you set the variable
3834 @code{org-enforce-todo-checkbox-dependencies}, an entry that has unchecked
3835 checkboxes will be blocked from switching to DONE.
3837 If you need more complex dependency structures, for example dependencies
3838 between entries in different trees or files, check out the contributed
3839 module @file{org-depend.el}.
3842 @node Progress logging, Priorities, TODO extensions, TODO Items
3843 @section Progress logging
3844 @cindex progress logging
3845 @cindex logging, of progress
3847 Org-mode can automatically record a timestamp and possibly a note when
3848 you mark a TODO item as DONE, or even each time you change the state of
3849 a TODO item. This system is highly configurable, settings can be on a
3850 per-keyword basis and can be localized to a file or even a subtree. For
3851 information on how to clock working time for a task, see @ref{Clocking
3855 * Closing items:: When was this entry marked DONE?
3856 * Tracking TODO state changes:: When did the status change?
3857 * Tracking your habits:: How consistent have you been?
3860 @node Closing items, Tracking TODO state changes, Progress logging, Progress logging
3861 @subsection Closing items
3863 The most basic logging is to keep track of @emph{when} a certain TODO
3864 item was finished. This is achieved with@footnote{The corresponding
3865 in-buffer setting is: @code{#+STARTUP: logdone}}.
3868 (setq org-log-done 'time)
3872 Then each time you turn an entry from a TODO (not-done) state into any
3873 of the DONE states, a line @samp{CLOSED: [timestamp]} will be inserted
3874 just after the headline. If you turn the entry back into a TODO item
3875 through further state cycling, that line will be removed again. If you
3876 want to record a note along with the timestamp, use@footnote{The
3877 corresponding in-buffer setting is: @code{#+STARTUP: lognotedone}}
3880 (setq org-log-done 'note)
3884 You will then be prompted for a note, and that note will be stored below
3885 the entry with a @samp{Closing Note} heading.
3887 In the timeline (@pxref{Timeline}) and in the agenda
3888 (@pxref{Weekly/daily agenda}), you can then use the @kbd{l} key to
3889 display the TODO items with a @samp{CLOSED} timestamp on each day,
3890 giving you an overview of what has been done.
3892 @node Tracking TODO state changes, Tracking your habits, Closing items, Progress logging
3893 @subsection Tracking TODO state changes
3894 @cindex drawer, for state change recording
3896 @vindex org-log-states-order-reversed
3897 @vindex org-log-into-drawer
3898 @cindex property, LOG_INTO_DRAWER
3899 When TODO keywords are used as workflow states (@pxref{Workflow states}), you
3900 might want to keep track of when a state change occurred and maybe take a
3901 note about this change. You can either record just a timestamp, or a
3902 time-stamped note for a change. These records will be inserted after the
3903 headline as an itemized list, newest first@footnote{See the variable
3904 @code{org-log-states-order-reversed}}. When taking a lot of notes, you might
3905 want to get the notes out of the way into a drawer (@pxref{Drawers}).
3906 Customize the variable @code{org-log-into-drawer} to get this
3907 behavior---the recommended drawer for this is called @code{LOGBOOK}. You can
3908 also overrule the setting of this variable for a subtree by setting a
3909 @code{LOG_INTO_DRAWER} property.
3911 Since it is normally too much to record a note for every state, Org-mode
3912 expects configuration on a per-keyword basis for this. This is achieved by
3913 adding special markers @samp{!} (for a timestamp) and @samp{@@} (for a note)
3914 in parentheses after each keyword. For example, with the setting
3917 (setq org-todo-keywords
3918 '((sequence "TODO(t)" "WAIT(w@@/!)" "|" "DONE(d!)" "CANCELED(c@@)")))
3922 @vindex org-log-done
3923 you not only define global TODO keywords and fast access keys, but also
3924 request that a time is recorded when the entry is set to
3925 DONE@footnote{It is possible that Org-mode will record two timestamps
3926 when you are using both @code{org-log-done} and state change logging.
3927 However, it will never prompt for two notes---if you have configured
3928 both, the state change recording note will take precedence and cancel
3929 the @samp{Closing Note}.}, and that a note is recorded when switching to
3930 WAIT or CANCELED. The setting for WAIT is even more special: the
3931 @samp{!} after the slash means that in addition to the note taken when
3932 entering the state, a timestamp should be recorded when @i{leaving} the
3933 WAIT state, if and only if the @i{target} state does not configure
3934 logging for entering it. So it has no effect when switching from WAIT
3935 to DONE, because DONE is configured to record a timestamp only. But
3936 when switching from WAIT back to TODO, the @samp{/!} in the WAIT
3937 setting now triggers a timestamp even though TODO has no logging
3940 You can use the exact same syntax for setting logging preferences local
3943 #+TODO: TODO(t) WAIT(w@@/!) | DONE(d!) CANCELED(c@@)
3946 @cindex property, LOGGING
3947 In order to define logging settings that are local to a subtree or a
3948 single item, define a LOGGING property in this entry. Any non-empty
3949 LOGGING property resets all logging settings to nil. You may then turn
3950 on logging for this specific tree using STARTUP keywords like
3951 @code{lognotedone} or @code{logrepeat}, as well as adding state specific
3952 settings like @code{TODO(!)}. For example
3955 * TODO Log each state with only a time
3957 :LOGGING: TODO(!) WAIT(!) DONE(!) CANCELED(!)
3959 * TODO Only log when switching to WAIT, and when repeating
3961 :LOGGING: WAIT(@@) logrepeat
3963 * TODO No logging at all
3969 @node Tracking your habits, , Tracking TODO state changes, Progress logging
3970 @subsection Tracking your habits
3973 Org has the ability to track the consistency of a special category of TODOs,
3974 called ``habits''. A habit has the following properties:
3978 You have enabled the @code{habits} module by customizing the variable
3981 The habit is a TODO, with a TODO keyword representing an open state.
3983 The property @code{STYLE} is set to the value @code{habit}.
3985 The TODO has a scheduled date, usually with a @code{.+} style repeat
3986 interval. A @code{++} style may be appropriate for habits with time
3987 constraints, e.g., must be done on weekends, or a @code{+} style for an
3988 unusual habit that can have a backlog, e.g., weekly reports.
3990 The TODO may also have minimum and maximum ranges specified by using the
3991 syntax @samp{.+2d/3d}, which says that you want to do the task at least every
3992 three days, but at most every two days.
3994 You must also have state logging for the @code{DONE} state enabled, in order
3995 for historical data to be represented in the consistency graph. If it's not
3996 enabled it's not an error, but the consistency graphs will be largely
4000 To give you an idea of what the above rules look like in action, here's an
4001 actual habit with some history:
4005 SCHEDULED: <2009-10-17 Sat .+2d/4d>
4006 - State "DONE" from "TODO" [2009-10-15 Thu]
4007 - State "DONE" from "TODO" [2009-10-12 Mon]
4008 - State "DONE" from "TODO" [2009-10-10 Sat]
4009 - State "DONE" from "TODO" [2009-10-04 Sun]
4010 - State "DONE" from "TODO" [2009-10-02 Fri]
4011 - State "DONE" from "TODO" [2009-09-29 Tue]
4012 - State "DONE" from "TODO" [2009-09-25 Fri]
4013 - State "DONE" from "TODO" [2009-09-19 Sat]
4014 - State "DONE" from "TODO" [2009-09-16 Wed]
4015 - State "DONE" from "TODO" [2009-09-12 Sat]
4018 :LAST_REPEAT: [2009-10-19 Mon 00:36]
4022 What this habit says is: I want to shave at most every 2 days (given by the
4023 @code{SCHEDULED} date and repeat interval) and at least every 4 days. If
4024 today is the 15th, then the habit first appears in the agenda on Oct 17,
4025 after the minimum of 2 days has elapsed, and will appear overdue on Oct 19,
4026 after four days have elapsed.
4028 What's really useful about habits is that they are displayed along with a
4029 consistency graph, to show how consistent you've been at getting that task
4030 done in the past. This graph shows every day that the task was done over the
4031 past three weeks, with colors for each day. The colors used are:
4035 If the task wasn't to be done yet on that day.
4037 If the task could have been done on that day.
4039 If the task was going to be overdue the next day.
4041 If the task was overdue on that day.
4044 In addition to coloring each day, the day is also marked with an asterisk if
4045 the task was actually done that day, and an exclamation mark to show where
4046 the current day falls in the graph.
4048 There are several configuration variables that can be used to change the way
4049 habits are displayed in the agenda.
4052 @item org-habit-graph-column
4053 The buffer column at which the consistency graph should be drawn. This will
4054 overwrite any text in that column, so it's a good idea to keep your habits'
4055 titles brief and to the point.
4056 @item org-habit-preceding-days
4057 The amount of history, in days before today, to appear in consistency graphs.
4058 @item org-habit-following-days
4059 The number of days after today that will appear in consistency graphs.
4060 @item org-habit-show-habits-only-for-today
4061 If non-nil, only show habits in today's agenda view. This is set to true by
4065 Lastly, pressing @kbd{K} in the agenda buffer will cause habits to
4066 temporarily be disabled and they won't appear at all. Press @kbd{K} again to
4067 bring them back. They are also subject to tag filtering, if you have habits
4068 which should only be done in certain contexts, for example.
4070 @node Priorities, Breaking down tasks, Progress logging, TODO Items
4074 If you use Org-mode extensively, you may end up with enough TODO items that
4075 it starts to make sense to prioritize them. Prioritizing can be done by
4076 placing a @emph{priority cookie} into the headline of a TODO item, like this
4079 *** TODO [#A] Write letter to Sam Fortune
4083 @vindex org-priority-faces
4084 By default, Org-mode supports three priorities: @samp{A}, @samp{B}, and
4085 @samp{C}. @samp{A} is the highest priority. An entry without a cookie is
4086 treated just like priority @samp{B}. Priorities make a difference only for
4087 sorting in the agenda (@pxref{Weekly/daily agenda}); outside the agenda, they
4088 have no inherent meaning to Org-mode. The cookies can be highlighted with
4089 special faces by customizing the variable @code{org-priority-faces}.
4091 Priorities can be attached to any outline node; they do not need to be TODO
4097 Set the priority of the current headline. The command prompts for a
4098 priority character @samp{A}, @samp{B} or @samp{C}. When you press
4099 @key{SPC} instead, the priority cookie is removed from the headline.
4100 The priorities can also be changed ``remotely'' from the timeline and
4101 agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
4104 @kindex S-@key{down}
4107 @vindex org-priority-start-cycle-with-default
4108 Increase/decrease priority of current headline@footnote{See also the option
4109 @code{org-priority-start-cycle-with-default}.}. Note that these keys are
4110 also used to modify timestamps (@pxref{Creating timestamps}). See also
4111 @ref{Conflicts}, for a discussion of the interaction with
4112 @code{shift-selection-mode}.
4115 @vindex org-highest-priority
4116 @vindex org-lowest-priority
4117 @vindex org-default-priority
4118 You can change the range of allowed priorities by setting the variables
4119 @code{org-highest-priority}, @code{org-lowest-priority}, and
4120 @code{org-default-priority}. For an individual buffer, you may set
4121 these values (highest, lowest, default) like this (please make sure that
4122 the highest priority is earlier in the alphabet than the lowest
4125 @cindex #+PRIORITIES
4130 @node Breaking down tasks, Checkboxes, Priorities, TODO Items
4131 @section Breaking tasks down into subtasks
4132 @cindex tasks, breaking down
4133 @cindex statistics, for TODO items
4135 @vindex org-agenda-todo-list-sublevels
4136 It is often advisable to break down large tasks into smaller, manageable
4137 subtasks. You can do this by creating an outline tree below a TODO item,
4138 with detailed subtasks on the tree@footnote{To keep subtasks out of the
4139 global TODO list, see the @code{org-agenda-todo-list-sublevels}.}. To keep
4140 the overview over the fraction of subtasks that are already completed, insert
4141 either @samp{[/]} or @samp{[%]} anywhere in the headline. These cookies will
4142 be updated each time the TODO status of a child changes, or when pressing
4143 @kbd{C-c C-c} on the cookie. For example:
4146 * Organize Party [33%]
4147 ** TODO Call people [1/2]
4151 ** DONE Talk to neighbor
4154 @cindex property, COOKIE_DATA
4155 If a heading has both checkboxes and TODO children below it, the meaning of
4156 the statistics cookie become ambiguous. Set the property
4157 @code{COOKIE_DATA} to either @samp{checkbox} or @samp{todo} to resolve
4160 @vindex org-hierarchical-todo-statistics
4161 If you would like to have the statistics cookie count any TODO entries in the
4162 subtree (not just direct children), configure the variable
4163 @code{org-hierarchical-todo-statistics}. To do this for a single subtree,
4164 include the word @samp{recursive} into the value of the @code{COOKIE_DATA}
4168 * Parent capturing statistics [2/20]
4170 :COOKIE_DATA: todo recursive
4174 If you would like a TODO entry to automatically change to DONE
4175 when all children are done, you can use the following setup:
4178 (defun org-summary-todo (n-done n-not-done)
4179 "Switch entry to DONE when all subentries are done, to TODO otherwise."
4180 (let (org-log-done org-log-states) ; turn off logging
4181 (org-todo (if (= n-not-done 0) "DONE" "TODO"))))
4183 (add-hook 'org-after-todo-statistics-hook 'org-summary-todo)
4187 Another possibility is the use of checkboxes to identify (a hierarchy of) a
4188 large number of subtasks (@pxref{Checkboxes}).
4191 @node Checkboxes, , Breaking down tasks, TODO Items
4195 @vindex org-list-automatic-rules
4196 Every item in a plain list@footnote{With the exception of description
4197 lists. But you can allow it by modifying @code{org-list-automatic-rules}
4198 accordingly.} (@pxref{Plain lists}) can be made into a checkbox by starting
4199 it with the string @samp{[ ]}. This feature is similar to TODO items
4200 (@pxref{TODO Items}), but is more lightweight. Checkboxes are not included
4201 into the global TODO list, so they are often great to split a task into a
4202 number of simple steps. Or you can use them in a shopping list. To toggle a
4203 checkbox, use @kbd{C-c C-c}, or use the mouse (thanks to Piotr Zielinski's
4204 @file{org-mouse.el}).
4206 Here is an example of a checkbox list.
4209 * TODO Organize party [2/4]
4210 - [-] call people [1/3]
4215 - [ ] think about what music to play
4216 - [X] talk to the neighbors
4219 Checkboxes work hierarchically, so if a checkbox item has children that
4220 are checkboxes, toggling one of the children checkboxes will make the
4221 parent checkbox reflect if none, some, or all of the children are
4224 @cindex statistics, for checkboxes
4225 @cindex checkbox statistics
4226 @cindex property, COOKIE_DATA
4227 @vindex org-hierarchical-checkbox-statistics
4228 The @samp{[2/4]} and @samp{[1/3]} in the first and second line are cookies
4229 indicating how many checkboxes present in this entry have been checked off,
4230 and the total number of checkboxes present. This can give you an idea on how
4231 many checkboxes remain, even without opening a folded entry. The cookies can
4232 be placed into a headline or into (the first line of) a plain list item.
4233 Each cookie covers checkboxes of direct children structurally below the
4234 headline/item on which the cookie appears@footnote{Set the variable
4235 @code{org-hierarchical-checkbox-statistics} if you want such cookies to
4236 represent the all checkboxes below the cookie, not just the direct
4237 children.}. You have to insert the cookie yourself by typing either
4238 @samp{[/]} or @samp{[%]}. With @samp{[/]} you get an @samp{n out of m}
4239 result, as in the examples above. With @samp{[%]} you get information about
4240 the percentage of checkboxes checked (in the above example, this would be
4241 @samp{[50%]} and @samp{[33%]}, respectively). In a headline, a cookie can
4242 count either checkboxes below the heading or TODO states of children, and it
4243 will display whatever was changed last. Set the property @code{COOKIE_DATA}
4244 to either @samp{checkbox} or @samp{todo} to resolve this issue.
4246 @cindex blocking, of checkboxes
4247 @cindex checkbox blocking
4248 @cindex property, ORDERED
4249 If the current outline node has an @code{ORDERED} property, checkboxes must
4250 be checked off in sequence, and an error will be thrown if you try to check
4251 off a box while there are unchecked boxes above it.
4253 @noindent The following commands work with checkboxes:
4258 Toggle checkbox status or (with prefix arg) checkbox presence at point. With
4259 double prefix argument, set it to @samp{[-]}, which is considered to be an
4263 Toggle checkbox status or (with prefix arg) checkbox presence at point. With
4264 double prefix argument, set it to @samp{[-]}, which is considered to be an
4268 If there is an active region, toggle the first checkbox in the region
4269 and set all remaining boxes to the same status as the first. With a prefix
4270 arg, add or remove the checkbox for all items in the region.
4272 If the cursor is in a headline, toggle checkboxes in the region between
4273 this headline and the next (so @emph{not} the entire subtree).
4275 If there is no active region, just toggle the checkbox at point.
4277 @kindex M-S-@key{RET}
4279 Insert a new item with a checkbox.
4280 This works only if the cursor is already in a plain list item
4281 (@pxref{Plain lists}).
4284 @vindex org-track-ordered-property-with-tag
4285 @cindex property, ORDERED
4286 Toggle the @code{ORDERED} property of the entry, to toggle if checkboxes must
4287 be checked off in sequence. A property is used for this behavior because
4288 this should be local to the current entry, not inherited like a tag.
4289 However, if you would like to @i{track} the value of this property with a tag
4290 for better visibility, customize the variable
4291 @code{org-track-ordered-property-with-tag}.
4294 Update the statistics cookie in the current outline entry. When called with
4295 a @kbd{C-u} prefix, update the entire file. Checkbox statistic cookies are
4296 updated automatically if you toggle checkboxes with @kbd{C-c C-c} and make
4297 new ones with @kbd{M-S-@key{RET}}. TODO statistics cookies update when
4298 changing TODO states. If you delete boxes/entries or add/change them by
4299 hand, use this command to get things back into sync. Or simply toggle any
4300 entry twice (checkboxes with @kbd{C-c C-c}).
4303 @node Tags, Properties and Columns, TODO Items, Top
4306 @cindex headline tagging
4307 @cindex matching, tags
4308 @cindex sparse tree, tag based
4310 An excellent way to implement labels and contexts for cross-correlating
4311 information is to assign @i{tags} to headlines. Org-mode has extensive
4314 @vindex org-tag-faces
4315 Every headline can contain a list of tags; they occur at the end of the
4316 headline. Tags are normal words containing letters, numbers, @samp{_}, and
4317 @samp{@@}. Tags must be preceded and followed by a single colon, e.g.,
4318 @samp{:work:}. Several tags can be specified, as in @samp{:work:urgent:}.
4319 Tags will by default be in bold face with the same color as the headline.
4320 You may specify special faces for specific tags using the variable
4321 @code{org-tag-faces}, in much the same way as you can for TODO keywords
4322 (@pxref{Faces for TODO keywords}).
4325 * Tag inheritance:: Tags use the tree structure of the outline
4326 * Setting tags:: How to assign tags to a headline
4327 * Tag searches:: Searching for combinations of tags
4330 @node Tag inheritance, Setting tags, Tags, Tags
4331 @section Tag inheritance
4332 @cindex tag inheritance
4333 @cindex inheritance, of tags
4334 @cindex sublevels, inclusion into tags match
4336 @i{Tags} make use of the hierarchical structure of outline trees. If a
4337 heading has a certain tag, all subheadings will inherit the tag as
4338 well. For example, in the list
4341 * Meeting with the French group :work:
4342 ** Summary by Frank :boss:notes:
4343 *** TODO Prepare slides for him :action:
4347 the final heading will have the tags @samp{:work:}, @samp{:boss:},
4348 @samp{:notes:}, and @samp{:action:} even though the final heading is not
4349 explicitly marked with those tags. You can also set tags that all entries in
4350 a file should inherit just as if these tags were defined in a hypothetical
4351 level zero that surrounds the entire file. Use a line like this@footnote{As
4352 with all these in-buffer settings, pressing @kbd{C-c C-c} activates any
4353 changes in the line.}:
4357 #+FILETAGS: :Peter:Boss:Secret:
4361 @vindex org-use-tag-inheritance
4362 @vindex org-tags-exclude-from-inheritance
4363 To limit tag inheritance to specific tags, or to turn it off entirely, use
4364 the variables @code{org-use-tag-inheritance} and
4365 @code{org-tags-exclude-from-inheritance}.
4367 @vindex org-tags-match-list-sublevels
4368 When a headline matches during a tags search while tag inheritance is turned
4369 on, all the sublevels in the same tree will (for a simple match form) match
4370 as well@footnote{This is only true if the search does not involve more
4371 complex tests including properties (@pxref{Property searches}).}. The list
4372 of matches may then become very long. If you only want to see the first tags
4373 match in a subtree, configure the variable
4374 @code{org-tags-match-list-sublevels} (not recommended).
4376 @node Setting tags, Tag searches, Tag inheritance, Tags
4377 @section Setting tags
4378 @cindex setting tags
4379 @cindex tags, setting
4382 Tags can simply be typed into the buffer at the end of a headline.
4383 After a colon, @kbd{M-@key{TAB}} offers completion on tags. There is
4384 also a special command for inserting tags:
4389 @cindex completion, of tags
4390 @vindex org-tags-column
4391 Enter new tags for the current headline. Org-mode will either offer
4392 completion or a special single-key interface for setting tags, see
4393 below. After pressing @key{RET}, the tags will be inserted and aligned
4394 to @code{org-tags-column}. When called with a @kbd{C-u} prefix, all
4395 tags in the current buffer will be aligned to that column, just to make
4396 things look nice. TAGS are automatically realigned after promotion,
4397 demotion, and TODO state changes (@pxref{TODO basics}).
4400 When the cursor is in a headline, this does the same as @kbd{C-c C-q}.
4403 @vindex org-tag-alist
4404 Org will support tag insertion based on a @emph{list of tags}. By
4405 default this list is constructed dynamically, containing all tags
4406 currently used in the buffer. You may also globally specify a hard list
4407 of tags with the variable @code{org-tag-alist}. Finally you can set
4408 the default tags for a given file with lines like
4412 #+TAGS: @@work @@home @@tennisclub
4413 #+TAGS: laptop car pc sailboat
4416 If you have globally defined your preferred set of tags using the
4417 variable @code{org-tag-alist}, but would like to use a dynamic tag list
4418 in a specific file, add an empty TAGS option line to that file:
4424 @vindex org-tag-persistent-alist
4425 If you have a preferred set of tags that you would like to use in every file,
4426 in addition to those defined on a per-file basis by TAGS option lines, then
4427 you may specify a list of tags with the variable
4428 @code{org-tag-persistent-alist}. You may turn this off on a per-file basis
4429 by adding a STARTUP option line to that file:
4435 By default Org-mode uses the standard minibuffer completion facilities for
4436 entering tags. However, it also implements another, quicker, tag selection
4437 method called @emph{fast tag selection}. This allows you to select and
4438 deselect tags with just a single key press. For this to work well you should
4439 assign unique letters to most of your commonly used tags. You can do this
4440 globally by configuring the variable @code{org-tag-alist} in your
4441 @file{.emacs} file. For example, you may find the need to tag many items in
4442 different files with @samp{:@@home:}. In this case you can set something
4446 (setq org-tag-alist '(("@@work" . ?w) ("@@home" . ?h) ("laptop" . ?l)))
4449 @noindent If the tag is only relevant to the file you are working on, then you
4450 can instead set the TAGS option line as:
4453 #+TAGS: @@work(w) @@home(h) @@tennisclub(t) laptop(l) pc(p)
4456 @noindent The tags interface will show the available tags in a splash
4457 window. If you want to start a new line after a specific tag, insert
4458 @samp{\n} into the tag list
4461 #+TAGS: @@work(w) @@home(h) @@tennisclub(t) \n laptop(l) pc(p)
4464 @noindent or write them in two lines:
4467 #+TAGS: @@work(w) @@home(h) @@tennisclub(t)
4468 #+TAGS: laptop(l) pc(p)
4472 You can also group together tags that are mutually exclusive by using
4476 #+TAGS: @{ @@work(w) @@home(h) @@tennisclub(t) @} laptop(l) pc(p)
4479 @noindent you indicate that at most one of @samp{@@work}, @samp{@@home},
4480 and @samp{@@tennisclub} should be selected. Multiple such groups are allowed.
4482 @noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
4483 these lines to activate any changes.
4486 To set these mutually exclusive groups in the variable @code{org-tags-alist},
4487 you must use the dummy tags @code{:startgroup} and @code{:endgroup} instead
4488 of the braces. Similarly, you can use @code{:newline} to indicate a line
4489 break. The previous example would be set globally by the following
4493 (setq org-tag-alist '((:startgroup . nil)
4494 ("@@work" . ?w) ("@@home" . ?h)
4495 ("@@tennisclub" . ?t)
4497 ("laptop" . ?l) ("pc" . ?p)))
4500 If at least one tag has a selection key then pressing @kbd{C-c C-c} will
4501 automatically present you with a special interface, listing inherited tags,
4502 the tags of the current headline, and a list of all valid tags with
4503 corresponding keys@footnote{Keys will automatically be assigned to tags which
4504 have no configured keys.}. In this interface, you can use the following
4509 Pressing keys assigned to tags will add or remove them from the list of
4510 tags in the current line. Selecting a tag in a group of mutually
4511 exclusive tags will turn off any other tags from that group.
4514 Enter a tag in the minibuffer, even if the tag is not in the predefined
4515 list. You will be able to complete on all tags present in the buffer.
4518 Clear all tags for this line.
4521 Accept the modified set.
4523 Abort without installing changes.
4525 If @kbd{q} is not assigned to a tag, it aborts like @kbd{C-g}.
4527 Turn off groups of mutually exclusive tags. Use this to (as an
4528 exception) assign several tags from such a group.
4530 Toggle auto-exit after the next change (see below).
4531 If you are using expert mode, the first @kbd{C-c} will display the
4536 This method lets you assign tags to a headline with very few keys. With
4537 the above setup, you could clear the current tags and set @samp{@@home},
4538 @samp{laptop} and @samp{pc} tags with just the following keys: @kbd{C-c
4539 C-c @key{SPC} h l p @key{RET}}. Switching from @samp{@@home} to
4540 @samp{@@work} would be done with @kbd{C-c C-c w @key{RET}} or
4541 alternatively with @kbd{C-c C-c C-c w}. Adding the non-predefined tag
4542 @samp{Sarah} could be done with @kbd{C-c C-c @key{TAB} S a r a h
4543 @key{RET} @key{RET}}.
4545 @vindex org-fast-tag-selection-single-key
4546 If you find that most of the time you need only a single key press to
4547 modify your list of tags, set the variable
4548 @code{org-fast-tag-selection-single-key}. Then you no longer have to
4549 press @key{RET} to exit fast tag selection---it will immediately exit
4550 after the first change. If you then occasionally need more keys, press
4551 @kbd{C-c} to turn off auto-exit for the current tag selection process
4552 (in effect: start selection with @kbd{C-c C-c C-c} instead of @kbd{C-c
4553 C-c}). If you set the variable to the value @code{expert}, the special
4554 window is not even shown for single-key tag selection, it comes up only
4555 when you press an extra @kbd{C-c}.
4557 @node Tag searches, , Setting tags, Tags
4558 @section Tag searches
4559 @cindex tag searches
4560 @cindex searching for tags
4562 Once a system of tags has been set up, it can be used to collect related
4563 information into special lists.
4570 Create a sparse tree with all headlines matching a tags search. With a
4571 @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
4574 Create a global list of tag matches from all agenda files.
4575 @xref{Matching tags and properties}.
4578 @vindex org-tags-match-list-sublevels
4579 Create a global list of tag matches from all agenda files, but check
4580 only TODO items and force checking subitems (see variable
4581 @code{org-tags-match-list-sublevels}).
4584 These commands all prompt for a match string which allows basic Boolean logic
4585 like @samp{+boss+urgent-project1}, to find entries with tags @samp{boss} and
4586 @samp{urgent}, but not @samp{project1}, or @samp{Kathy|Sally} to find entries
4587 which are tagged, like @samp{Kathy} or @samp{Sally}. The full syntax of the search
4588 string is rich and allows also matching against TODO keywords, entry levels
4589 and properties. For a complete description with many examples, see
4590 @ref{Matching tags and properties}.
4593 @node Properties and Columns, Dates and Times, Tags, Top
4594 @chapter Properties and columns
4597 Properties are a set of key-value pairs associated with an entry. There
4598 are two main applications for properties in Org-mode. First, properties
4599 are like tags, but with a value. Second, you can use properties to
4600 implement (very basic) database capabilities in an Org buffer. For
4601 an example of the first application, imagine maintaining a file where
4602 you document bugs and plan releases for a piece of software. Instead of
4603 using tags like @code{:release_1:}, @code{:release_2:}, one can use a
4604 property, say @code{:Release:}, that in different subtrees has different
4605 values, such as @code{1.0} or @code{2.0}. For an example of the second
4606 application of properties, imagine keeping track of your music CDs,
4607 where properties could be things such as the album, artist, date of
4608 release, number of tracks, and so on.
4610 Properties can be conveniently edited and viewed in column view
4611 (@pxref{Column view}).
4614 * Property syntax:: How properties are spelled out
4615 * Special properties:: Access to other Org-mode features
4616 * Property searches:: Matching property values
4617 * Property inheritance:: Passing values down the tree
4618 * Column view:: Tabular viewing and editing
4619 * Property API:: Properties for Lisp programmers
4622 @node Property syntax, Special properties, Properties and Columns, Properties and Columns
4623 @section Property syntax
4624 @cindex property syntax
4625 @cindex drawer, for properties
4627 Properties are key-value pairs. They need to be inserted into a special
4628 drawer (@pxref{Drawers}) with the name @code{PROPERTIES}. Each property
4629 is specified on a single line, with the key (surrounded by colons)
4630 first, and the value after it. Here is an example:
4635 *** Goldberg Variations
4637 :Title: Goldberg Variations
4638 :Composer: J.S. Bach
4640 :Publisher: Deutsche Grammophon
4645 You may define the allowed values for a particular property @samp{:Xyz:}
4646 by setting a property @samp{:Xyz_ALL:}. This special property is
4647 @emph{inherited}, so if you set it in a level 1 entry, it will apply to
4648 the entire tree. When allowed values are defined, setting the
4649 corresponding property becomes easier and is less prone to typing
4650 errors. For the example with the CD collection, we can predefine
4651 publishers and the number of disks in a box like this:
4656 :NDisks_ALL: 1 2 3 4
4657 :Publisher_ALL: "Deutsche Grammophon" Philips EMI
4661 If you want to set properties that can be inherited by any entry in a
4662 file, use a line like
4663 @cindex property, _ALL
4666 #+PROPERTY: NDisks_ALL 1 2 3 4
4669 @vindex org-global-properties
4670 Property values set with the global variable
4671 @code{org-global-properties} can be inherited by all entries in all
4675 The following commands help to work with properties:
4680 After an initial colon in a line, complete property keys. All keys used
4681 in the current file will be offered as possible completions.
4684 Set a property. This prompts for a property name and a value. If
4685 necessary, the property drawer is created as well.
4686 @item M-x org-insert-property-drawer
4687 Insert a property drawer into the current entry. The drawer will be
4688 inserted early in the entry, but after the lines with planning
4689 information like deadlines.
4692 With the cursor in a property drawer, this executes property commands.
4694 Set a property in the current entry. Both the property and the value
4695 can be inserted using completion.
4696 @kindex S-@key{right}
4697 @kindex S-@key{left}
4698 @item S-@key{left}/@key{right}
4699 Switch property at point to the next/previous allowed value.
4701 Remove a property from the current entry.
4703 Globally remove a property, from all entries in the current file.
4705 Compute the property at point, using the operator and scope from the
4706 nearest column format definition.
4709 @node Special properties, Property searches, Property syntax, Properties and Columns
4710 @section Special properties
4711 @cindex properties, special
4713 Special properties provide an alternative access method to Org-mode
4714 features, like the TODO state or the priority of an entry, discussed in the
4715 previous chapters. This interface exists so that you can include
4716 these states in a column view (@pxref{Column view}), or to use them in
4717 queries. The following property names are special and should not be
4718 used as keys in the properties drawer:
4720 @cindex property, special, TODO
4721 @cindex property, special, TAGS
4722 @cindex property, special, ALLTAGS
4723 @cindex property, special, CATEGORY
4724 @cindex property, special, PRIORITY
4725 @cindex property, special, DEADLINE
4726 @cindex property, special, SCHEDULED
4727 @cindex property, special, CLOSED
4728 @cindex property, special, TIMESTAMP
4729 @cindex property, special, TIMESTAMP_IA
4730 @cindex property, special, CLOCKSUM
4731 @cindex property, special, BLOCKED
4732 @c guessing that ITEM is needed in this area; also, should this list be sorted?
4733 @cindex property, special, ITEM
4735 TODO @r{The TODO keyword of the entry.}
4736 TAGS @r{The tags defined directly in the headline.}
4737 ALLTAGS @r{All tags, including inherited ones.}
4738 CATEGORY @r{The category of an entry.}
4739 PRIORITY @r{The priority of the entry, a string with a single letter.}
4740 DEADLINE @r{The deadline time string, without the angular brackets.}
4741 SCHEDULED @r{The scheduling timestamp, without the angular brackets.}
4742 CLOSED @r{When was this entry closed?}
4743 TIMESTAMP @r{The first keyword-less timestamp in the entry.}
4744 TIMESTAMP_IA @r{The first inactive timestamp in the entry.}
4745 CLOCKSUM @r{The sum of CLOCK intervals in the subtree. @code{org-clock-sum}}
4746 @r{must be run first to compute the values.}
4747 BLOCKED @r{"t" if task is currently blocked by children or siblings}
4748 ITEM @r{The content of the entry.}
4751 @node Property searches, Property inheritance, Special properties, Properties and Columns
4752 @section Property searches
4753 @cindex properties, searching
4754 @cindex searching, of properties
4756 To create sparse trees and special lists with selection based on properties,
4757 the same commands are used as for tag searches (@pxref{Tag searches}).
4763 Create a sparse tree with all matching entries. With a
4764 @kbd{C-u} prefix argument, ignore headlines that are not a TODO line.
4767 Create a global list of tag/property matches from all agenda files.
4768 @xref{Matching tags and properties}.
4771 @vindex org-tags-match-list-sublevels
4772 Create a global list of tag matches from all agenda files, but check
4773 only TODO items and force checking of subitems (see variable
4774 @code{org-tags-match-list-sublevels}).
4777 The syntax for the search string is described in @ref{Matching tags and
4780 There is also a special command for creating sparse trees based on a
4786 Create a sparse tree based on the value of a property. This first
4787 prompts for the name of a property, and then for a value. A sparse tree
4788 is created with all entries that define this property with the given
4789 value. If you enclose the value into curly braces, it is interpreted as
4790 a regular expression and matched against the property values.
4793 @node Property inheritance, Column view, Property searches, Properties and Columns
4794 @section Property Inheritance
4795 @cindex properties, inheritance
4796 @cindex inheritance, of properties
4798 @vindex org-use-property-inheritance
4799 The outline structure of Org-mode documents lends itself for an
4800 inheritance model of properties: if the parent in a tree has a certain
4801 property, the children can inherit this property. Org-mode does not
4802 turn this on by default, because it can slow down property searches
4803 significantly and is often not needed. However, if you find inheritance
4804 useful, you can turn it on by setting the variable
4805 @code{org-use-property-inheritance}. It may be set to @code{t} to make
4806 all properties inherited from the parent, to a list of properties
4807 that should be inherited, or to a regular expression that matches
4808 inherited properties. If a property has the value @samp{nil}, this is
4809 interpreted as an explicit undefine of he property, so that inheritance
4810 search will stop at this value and return @code{nil}.
4812 Org-mode has a few properties for which inheritance is hard-coded, at
4813 least for the special applications for which they are used:
4815 @cindex property, COLUMNS
4818 The @code{:COLUMNS:} property defines the format of column view
4819 (@pxref{Column view}). It is inherited in the sense that the level
4820 where a @code{:COLUMNS:} property is defined is used as the starting
4821 point for a column view table, independently of the location in the
4822 subtree from where columns view is turned on.
4824 @cindex property, CATEGORY
4825 For agenda view, a category set through a @code{:CATEGORY:} property
4826 applies to the entire subtree.
4828 @cindex property, ARCHIVE
4829 For archiving, the @code{:ARCHIVE:} property may define the archive
4830 location for the entire subtree (@pxref{Moving subtrees}).
4832 @cindex property, LOGGING
4833 The LOGGING property may define logging settings for an entry or a
4834 subtree (@pxref{Tracking TODO state changes}).
4837 @node Column view, Property API, Property inheritance, Properties and Columns
4838 @section Column view
4840 A great way to view and edit properties in an outline tree is
4841 @emph{column view}. In column view, each outline node is turned into a
4842 table row. Columns in this table provide access to properties of the
4843 entries. Org-mode implements columns by overlaying a tabular structure
4844 over the headline of each item. While the headlines have been turned
4845 into a table row, you can still change the visibility of the outline
4846 tree. For example, you get a compact table by switching to CONTENTS
4847 view (@kbd{S-@key{TAB} S-@key{TAB}}, or simply @kbd{c} while column view
4848 is active), but you can still open, read, and edit the entry below each
4849 headline. Or, you can switch to column view after executing a sparse
4850 tree command and in this way get a table only for the selected items.
4851 Column view also works in agenda buffers (@pxref{Agenda Views}) where
4852 queries have collected selected items, possibly from a number of files.
4855 * Defining columns:: The COLUMNS format property
4856 * Using column view:: How to create and use column view
4857 * Capturing column view:: A dynamic block for column view
4860 @node Defining columns, Using column view, Column view, Column view
4861 @subsection Defining columns
4862 @cindex column view, for properties
4863 @cindex properties, column view
4865 Setting up a column view first requires defining the columns. This is
4866 done by defining a column format line.
4869 * Scope of column definitions:: Where defined, where valid?
4870 * Column attributes:: Appearance and content of a column
4873 @node Scope of column definitions, Column attributes, Defining columns, Defining columns
4874 @subsubsection Scope of column definitions
4876 To define a column format for an entire file, use a line like
4880 #+COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
4883 To specify a format that only applies to a specific tree, add a
4884 @code{:COLUMNS:} property to the top node of that tree, for example:
4887 ** Top node for columns view
4889 :COLUMNS: %25ITEM %TAGS %PRIORITY %TODO
4893 If a @code{:COLUMNS:} property is present in an entry, it defines columns
4894 for the entry itself, and for the entire subtree below it. Since the
4895 column definition is part of the hierarchical structure of the document,
4896 you can define columns on level 1 that are general enough for all
4897 sublevels, and more specific columns further down, when you edit a
4898 deeper part of the tree.
4900 @node Column attributes, , Scope of column definitions, Defining columns
4901 @subsubsection Column attributes
4902 A column definition sets the attributes of a column. The general
4903 definition looks like this:
4906 %[@var{width}]@var{property}[(@var{title})][@{@var{summary-type}@}]
4910 Except for the percent sign and the property name, all items are
4911 optional. The individual parts have the following meaning:
4914 @var{width} @r{An integer specifying the width of the column in characters.}
4915 @r{If omitted, the width will be determined automatically.}
4916 @var{property} @r{The property that should be edited in this column.}
4917 @r{Special properties representing meta data are allowed here}
4918 @r{as well (@pxref{Special properties})}
4919 @var{title} @r{The header text for the column. If omitted, the property}
4921 @{@var{summary-type}@} @r{The summary type. If specified, the column values for}
4922 @r{parent nodes are computed from the children.}
4923 @r{Supported summary types are:}
4924 @{+@} @r{Sum numbers in this column.}
4925 @{+;%.1f@} @r{Like @samp{+}, but format result with @samp{%.1f}.}
4926 @{$@} @r{Currency, short for @samp{+;%.2f}.}
4927 @{:@} @r{Sum times, HH:MM, plain numbers are hours.}
4928 @{X@} @r{Checkbox status, @samp{[X]} if all children are @samp{[X]}.}
4929 @{X/@} @r{Checkbox status, @samp{[n/m]}.}
4930 @{X%@} @r{Checkbox status, @samp{[n%]}.}
4931 @{min@} @r{Smallest number in column.}
4932 @{max@} @r{Largest number.}
4933 @{mean@} @r{Arithmetic mean of numbers.}
4934 @{:min@} @r{Smallest time value in column.}
4935 @{:max@} @r{Largest time value.}
4936 @{:mean@} @r{Arithmetic mean of time values.}
4937 @{@@min@} @r{Minimum age (in days/hours/mins/seconds).}
4938 @{@@max@} @r{Maximum age (in days/hours/mins/seconds).}
4939 @{@@mean@} @r{Arithmetic mean of ages (in days/hours/mins/seconds).}
4940 @{est+@} @r{Add low-high estimates.}
4944 Be aware that you can only have one summary type for any property you
4945 include. Subsequent columns referencing the same property will all display the
4946 same summary information.
4948 The @code{est+} summary type requires further explanation. It is used for
4949 combining estimates, expressed as low-high ranges. For example, instead
4950 of estimating a particular task will take 5 days, you might estimate it as
4951 5-6 days if you're fairly confident you know how much woark is required, or
4952 1-10 days if you don't really know what needs to be done. Both ranges
4953 average at 5.5 days, but the first represents a more predictable delivery.
4955 When combining a set of such estimates, simply adding the lows and highs
4956 produces an unrealistically wide result. Instead, @code{est+} adds the
4957 statistical mean and variance of the sub-tasks, generating a final estimate
4958 from the sum. For example, suppose you had ten tasks, each of which was
4959 estimated at 0.5 to 2 days of work. Straight addition produces an estimate
4960 of 5 to 20 days, representing what to expect if everything goes either
4961 extremely well or extremely poorly. In contrast, @code{est+} estimates the
4962 full job more realistically, at 10-15 days.
4964 Here is an example for a complete columns definition, along with allowed
4968 :COLUMNS: %25ITEM %9Approved(Approved?)@{X@} %Owner %11Status \@footnote{Please note that the COLUMNS definition must be on a single line---it is wrapped here only because of formatting constraints.}
4969 %10Time_Estimate@{:@} %CLOCKSUM
4970 :Owner_ALL: Tammy Mark Karl Lisa Don
4971 :Status_ALL: "In progress" "Not started yet" "Finished" ""
4972 :Approved_ALL: "[ ]" "[X]"
4976 The first column, @samp{%25ITEM}, means the first 25 characters of the
4977 item itself, i.e. of the headline. You probably always should start the
4978 column definition with the @samp{ITEM} specifier. The other specifiers
4979 create columns @samp{Owner} with a list of names as allowed values, for
4980 @samp{Status} with four different possible values, and for a checkbox
4981 field @samp{Approved}. When no width is given after the @samp{%}
4982 character, the column will be exactly as wide as it needs to be in order
4983 to fully display all values. The @samp{Approved} column does have a
4984 modified title (@samp{Approved?}, with a question mark). Summaries will
4985 be created for the @samp{Time_Estimate} column by adding time duration
4986 expressions like HH:MM, and for the @samp{Approved} column, by providing
4987 an @samp{[X]} status if all children have been checked. The
4988 @samp{CLOCKSUM} column is special, it lists the sum of CLOCK intervals
4991 @node Using column view, Capturing column view, Defining columns, Column view
4992 @subsection Using column view
4995 @tsubheading{Turning column view on and off}
4998 @vindex org-columns-default-format
4999 Turn on column view. If the cursor is before the first headline in the file,
5000 column view is turned on for the entire file, using the @code{#+COLUMNS}
5001 definition. If the cursor is somewhere inside the outline, this command
5002 searches the hierarchy, up from point, for a @code{:COLUMNS:} property that
5003 defines a format. When one is found, the column view table is established
5004 for the tree starting at the entry that contains the @code{:COLUMNS:}
5005 property. If no such property is found, the format is taken from the
5006 @code{#+COLUMNS} line or from the variable @code{org-columns-default-format},
5007 and column view is established for the current entry and its subtree.
5010 Recreate the column view, to include recent changes made in the buffer.
5017 @tsubheading{Editing values}
5018 @item @key{left} @key{right} @key{up} @key{down}
5019 Move through the column view from field to field.
5020 @kindex S-@key{left}
5021 @kindex S-@key{right}
5022 @item S-@key{left}/@key{right}
5023 Switch to the next/previous allowed value of the field. For this, you
5024 have to have specified allowed values for a property.
5026 Directly select the nth allowed value, @kbd{0} selects the 10th value.
5030 Same as @kbd{S-@key{left}/@key{right}}
5033 Edit the property at point. For the special properties, this will
5034 invoke the same interface that you normally use to change that
5035 property. For example, when editing a TAGS property, the tag completion
5036 or fast selection interface will pop up.
5039 When there is a checkbox at point, toggle it.
5042 View the full value of this property. This is useful if the width of
5043 the column is smaller than that of the value.
5046 Edit the list of allowed values for this property. If the list is found
5047 in the hierarchy, the modified values is stored there. If no list is
5048 found, the new value is stored in the first entry that is part of the
5049 current column view.
5050 @tsubheading{Modifying the table structure}
5054 Make the column narrower/wider by one character.
5055 @kindex S-M-@key{right}
5056 @item S-M-@key{right}
5057 Insert a new column, to the left of the current column.
5058 @kindex S-M-@key{left}
5059 @item S-M-@key{left}
5060 Delete the current column.
5063 @node Capturing column view, , Using column view, Column view
5064 @subsection Capturing column view
5066 Since column view is just an overlay over a buffer, it cannot be
5067 exported or printed directly. If you want to capture a column view, use
5068 a @code{columnview} dynamic block (@pxref{Dynamic blocks}). The frame
5069 of this block looks like this:
5071 @cindex #+BEGIN, columnview
5074 #+BEGIN: columnview :hlines 1 :id "label"
5079 @noindent This dynamic block has the following parameters:
5083 This is the most important parameter. Column view is a feature that is
5084 often localized to a certain (sub)tree, and the capture block might be
5085 at a different location in the file. To identify the tree whose view to
5086 capture, you can use 4 values:
5087 @cindex property, ID
5089 local @r{use the tree in which the capture block is located}
5090 global @r{make a global view, including all headings in the file}
5091 "file:@var{path-to-file}"
5092 @r{run column view at the top of this file}
5093 "@var{ID}" @r{call column view in the tree that has an @code{:ID:}}
5094 @r{property with the value @i{label}. You can use}
5095 @r{@kbd{M-x org-id-copy} to create a globally unique ID for}
5096 @r{the current entry and copy it to the kill-ring.}
5099 When @code{t}, insert an hline after every line. When a number @var{N}, insert
5100 an hline before each headline with level @code{<= @var{N}}.
5102 When set to @code{t}, force column groups to get vertical lines.
5104 When set to a number, don't capture entries below this level.
5105 @item :skip-empty-rows
5106 When set to @code{t}, skip rows where the only non-empty specifier of the
5107 column view is @code{ITEM}.
5112 The following commands insert or update the dynamic block:
5117 Insert a dynamic block capturing a column view. You will be prompted
5118 for the scope or ID of the view.
5123 Update dynamic block at point. The cursor needs to be in the
5124 @code{#+BEGIN} line of the dynamic block.
5125 @kindex C-u C-c C-x C-u
5126 @item C-u C-c C-x C-u
5127 Update all dynamic blocks (@pxref{Dynamic blocks}). This is useful if
5128 you have several clock table blocks in a buffer.
5131 You can add formulas to the column view table and you may add plotting
5132 instructions in front of the table---these will survive an update of the
5133 block. If there is a @code{#+TBLFM:} after the table, the table will
5134 actually be recalculated automatically after an update.
5136 An alternative way to capture and process property values into a table is
5137 provided by Eric Schulte's @file{org-collector.el} which is a contributed
5138 package@footnote{Contributed packages are not part of Emacs, but are
5139 distributed with the main distribution of Org (visit
5140 @uref{http://orgmode.org}).}. It provides a general API to collect
5141 properties from entries in a certain scope, and arbitrary Lisp expressions to
5142 process these values before inserting them into a table or a dynamic block.
5144 @node Property API, , Column view, Properties and Columns
5145 @section The Property API
5146 @cindex properties, API
5147 @cindex API, for properties
5149 There is a full API for accessing and changing properties. This API can
5150 be used by Emacs Lisp programs to work with properties and to implement
5151 features based on them. For more information see @ref{Using the
5154 @node Dates and Times, Capture - Refile - Archive, Properties and Columns, Top
5155 @chapter Dates and times
5161 To assist project planning, TODO items can be labeled with a date and/or
5162 a time. The specially formatted string carrying the date and time
5163 information is called a @emph{timestamp} in Org-mode. This may be a
5164 little confusing because timestamp is often used as indicating when
5165 something was created or last changed. However, in Org-mode this term
5166 is used in a much wider sense.
5169 * Timestamps:: Assigning a time to a tree entry
5170 * Creating timestamps:: Commands which insert timestamps
5171 * Deadlines and scheduling:: Planning your work
5172 * Clocking work time:: Tracking how long you spend on a task
5173 * Effort estimates:: Planning work effort in advance
5174 * Relative timer:: Notes with a running timer
5175 * Countdown timer:: Starting a countdown timer for a task
5179 @node Timestamps, Creating timestamps, Dates and Times, Dates and Times
5180 @section Timestamps, deadlines, and scheduling
5182 @cindex ranges, time
5187 A timestamp is a specification of a date (possibly with a time or a range of
5188 times) in a special format, either @samp{<2003-09-16 Tue>} or
5189 @samp{<2003-09-16 Tue 09:39>} or @samp{<2003-09-16 Tue
5190 12:00-12:30>}@footnote{This is inspired by the standard ISO 8601 date/time
5191 format. To use an alternative format, see @ref{Custom time format}.}. A
5192 timestamp can appear anywhere in the headline or body of an Org tree entry.
5193 Its presence causes entries to be shown on specific dates in the agenda
5194 (@pxref{Weekly/daily agenda}). We distinguish:
5197 @item Plain timestamp; Event; Appointment
5199 A simple timestamp just assigns a date/time to an item. This is just
5200 like writing down an appointment or event in a paper agenda. In the
5201 timeline and agenda displays, the headline of an entry associated with a
5202 plain timestamp will be shown exactly on that date.
5205 * Meet Peter at the movies <2006-11-01 Wed 19:15>
5206 * Discussion on climate change <2006-11-02 Thu 20:00-22:00>
5209 @item Timestamp with repeater interval
5210 @cindex timestamp, with repeater interval
5211 A timestamp may contain a @emph{repeater interval}, indicating that it
5212 applies not only on the given date, but again and again after a certain
5213 interval of N days (d), weeks (w), months (m), or years (y). The
5214 following will show up in the agenda every Wednesday:
5217 * Pick up Sam at school <2007-05-16 Wed 12:30 +1w>
5220 @item Diary-style sexp entries
5221 For more complex date specifications, Org-mode supports using the
5222 special sexp diary entries implemented in the Emacs calendar/diary
5223 package. For example
5226 * The nerd meeting on every 2nd Thursday of the month
5227 <%%(diary-float t 4 2)>
5230 @item Time/Date range
5233 Two timestamps connected by @samp{--} denote a range. The headline
5234 will be shown on the first and last day of the range, and on any dates
5235 that are displayed and fall in the range. Here is an example:
5238 ** Meeting in Amsterdam
5239 <2004-08-23 Mon>--<2004-08-26 Thu>
5242 @item Inactive timestamp
5243 @cindex timestamp, inactive
5244 @cindex inactive timestamp
5245 Just like a plain timestamp, but with square brackets instead of
5246 angular ones. These timestamps are inactive in the sense that they do
5247 @emph{not} trigger an entry to show up in the agenda.
5250 * Gillian comes late for the fifth time [2006-11-01 Wed]
5255 @node Creating timestamps, Deadlines and scheduling, Timestamps, Dates and Times
5256 @section Creating timestamps
5257 @cindex creating timestamps
5258 @cindex timestamps, creating
5260 For Org-mode to recognize timestamps, they need to be in the specific
5261 format. All commands listed below produce timestamps in the correct
5265 @orgcmd{C-c .,org-time-stamp}
5266 Prompt for a date and insert a corresponding timestamp. When the cursor is
5267 at an existing timestamp in the buffer, the command is used to modify this
5268 timestamp instead of inserting a new one. When this command is used twice in
5269 succession, a time range is inserted.
5271 @orgcmd{C-c !,org-time-stamp-inactive}
5272 Like @kbd{C-c .}, but insert an inactive timestamp that will not cause
5279 @vindex org-time-stamp-rounding-minutes
5280 Like @kbd{C-c .} and @kbd{C-c !}, but use the alternative format which
5281 contains date and time. The default time can be rounded to multiples of 5
5282 minutes, see the option @code{org-time-stamp-rounding-minutes}.
5284 @orgcmd{C-c <,org-date-from-calendar}
5285 Insert a timestamp corresponding to the cursor date in the Calendar.
5287 @orgcmd{C-c >,org-goto-calendar}
5288 Access the Emacs calendar for the current date. If there is a
5289 timestamp in the current line, go to the corresponding date
5292 @orgcmd{C-c C-o,org-open-at-point}
5293 Access the agenda for the date given by the timestamp or -range at
5294 point (@pxref{Weekly/daily agenda}).
5296 @orgcmdkkcc{S-@key{left},S-@key{right},org-timestamp-down-day,org-timestamp-up-day}
5297 Change date at cursor by one day. These key bindings conflict with
5298 shift-selection and related modes (@pxref{Conflicts}).
5300 @orgcmdkkcc{S-@key{up},S-@key{down},org-timestamp-up,org-timestamp-down-down}
5301 Change the item under the cursor in a timestamp. The cursor can be on a
5302 year, month, day, hour or minute. When the timestamp contains a time range
5303 like @samp{15:30-16:30}, modifying the first time will also shift the second,
5304 shifting the time block with constant length. To change the length, modify
5305 the second time. Note that if the cursor is in a headline and not at a
5306 timestamp, these same keys modify the priority of an item.
5307 (@pxref{Priorities}). The key bindings also conflict with shift-selection and
5308 related modes (@pxref{Conflicts}).
5310 @orgcmd{C-c C-y,org-evaluate-time-range}
5311 @cindex evaluate time range
5312 Evaluate a time range by computing the difference between start and end.
5313 With a prefix argument, insert result after the time range (in a table: into
5314 the following column).
5319 * The date/time prompt:: How Org-mode helps you entering date and time
5320 * Custom time format:: Making dates look different
5323 @node The date/time prompt, Custom time format, Creating timestamps, Creating timestamps
5324 @subsection The date/time prompt
5325 @cindex date, reading in minibuffer
5326 @cindex time, reading in minibuffer
5328 @vindex org-read-date-prefer-future
5329 When Org-mode prompts for a date/time, the default is shown in default
5330 date/time format, and the prompt therefore seems to ask for a specific
5331 format. But it will in fact accept any string containing some date and/or
5332 time information, and it is really smart about interpreting your input. You
5333 can, for example, use @kbd{C-y} to paste a (possibly multi-line) string
5334 copied from an email message. Org-mode will find whatever information is in
5335 there and derive anything you have not specified from the @emph{default date
5336 and time}. The default is usually the current date and time, but when
5337 modifying an existing timestamp, or when entering the second stamp of a
5338 range, it is taken from the stamp in the buffer. When filling in
5339 information, Org-mode assumes that most of the time you will want to enter a
5340 date in the future: if you omit the month/year and the given day/month is
5341 @i{before} today, it will assume that you mean a future date@footnote{See the
5342 variable @code{org-read-date-prefer-future}. You may set that variable to
5343 the symbol @code{time} to even make a time before now shift the date to
5344 tomorrow.}. If the date has been automatically shifted into the future, the
5345 time prompt will show this with @samp{(=>F).}
5347 For example, let's assume that today is @b{June 13, 2006}. Here is how
5348 various inputs will be interpreted, the items filled in by Org-mode are
5352 3-2-5 --> 2003-02-05
5353 2/5/3 --> 2003-02-05
5354 14 --> @b{2006}-@b{06}-14
5355 12 --> @b{2006}-@b{07}-12
5356 2/5 --> @b{2007}-02-05
5357 Fri --> nearest Friday (default date or later)
5358 sep 15 --> @b{2006}-09-15
5359 feb 15 --> @b{2007}-02-15
5360 sep 12 9 --> 2009-09-12
5361 12:45 --> @b{2006}-@b{06}-@b{13} 12:45
5362 22 sept 0:34 --> @b{2006}-09-22 0:34
5363 w4 --> ISO week for of the current year @b{2006}
5364 2012 w4 fri --> Friday of ISO week 4 in 2012
5365 2012-w04-5 --> Same as above
5368 Furthermore you can specify a relative date by giving, as the
5369 @emph{first} thing in the input: a plus/minus sign, a number and a
5370 letter ([dwmy]) to indicate change in days, weeks, months, or years. With a
5371 single plus or minus, the date is always relative to today. With a
5372 double plus or minus, it is relative to the default date. If instead of
5373 a single letter, you use the abbreviation of day name, the date will be
5374 the nth such day. E.g.
5379 +4d --> four days from today
5380 +4 --> same as above
5381 +2w --> two weeks from today
5382 ++5 --> five days from default date
5383 +2tue --> second Tuesday from now.
5386 @vindex parse-time-months
5387 @vindex parse-time-weekdays
5388 The function understands English month and weekday abbreviations. If
5389 you want to use unabbreviated names and/or other languages, configure
5390 the variables @code{parse-time-months} and @code{parse-time-weekdays}.
5392 You can specify a time range by giving start and end times or by giving a
5393 start time and a duration (in HH:MM format). Use '-' or '--' as the separator
5394 in the former case and use '+' as the separator in the latter case. E.g.
5397 11am-1:15pm --> 11:00-13:15
5398 11am--1:15pm --> same as above
5399 11am+2:15 --> same as above
5402 @cindex calendar, for selecting date
5403 @vindex org-popup-calendar-for-date-prompt
5404 Parallel to the minibuffer prompt, a calendar is popped up@footnote{If
5405 you don't need/want the calendar, configure the variable
5406 @code{org-popup-calendar-for-date-prompt}.}. When you exit the date
5407 prompt, either by clicking on a date in the calendar, or by pressing
5408 @key{RET}, the date selected in the calendar will be combined with the
5409 information entered at the prompt. You can control the calendar fully
5410 from the minibuffer:
5417 @kindex S-@key{right}
5418 @kindex S-@key{left}
5419 @kindex S-@key{down}
5421 @kindex M-S-@key{right}
5422 @kindex M-S-@key{left}
5425 @key{RET} @r{Choose date at cursor in calendar.}
5426 mouse-1 @r{Select date by clicking on it.}
5427 S-@key{right}/@key{left} @r{One day forward/backward.}
5428 S-@key{down}/@key{up} @r{One week forward/backward.}
5429 M-S-@key{right}/@key{left} @r{One month forward/backward.}
5430 > / < @r{Scroll calendar forward/backward by one month.}
5431 M-v / C-v @r{Scroll calendar forward/backward by 3 months.}
5434 @vindex org-read-date-display-live
5435 The actions of the date/time prompt may seem complex, but I assure you they
5436 will grow on you, and you will start getting annoyed by pretty much any other
5437 way of entering a date/time out there. To help you understand what is going
5438 on, the current interpretation of your input will be displayed live in the
5439 minibuffer@footnote{If you find this distracting, turn the display of with
5440 @code{org-read-date-display-live}.}.
5442 @node Custom time format, , The date/time prompt, Creating timestamps
5443 @subsection Custom time format
5444 @cindex custom date/time format
5445 @cindex time format, custom
5446 @cindex date format, custom
5448 @vindex org-display-custom-times
5449 @vindex org-time-stamp-custom-formats
5450 Org-mode uses the standard ISO notation for dates and times as it is
5451 defined in ISO 8601. If you cannot get used to this and require another
5452 representation of date and time to keep you happy, you can get it by
5453 customizing the variables @code{org-display-custom-times} and
5454 @code{org-time-stamp-custom-formats}.
5457 @orgcmd{C-c C-x C-t,org-toggle-time-stamp-overlays}
5458 Toggle the display of custom formats for dates and times.
5462 Org-mode needs the default format for scanning, so the custom date/time
5463 format does not @emph{replace} the default format---instead it is put
5464 @emph{over} the default format using text properties. This has the
5465 following consequences:
5468 You cannot place the cursor onto a timestamp anymore, only before or
5471 The @kbd{S-@key{up}/@key{down}} keys can no longer be used to adjust
5472 each component of a timestamp. If the cursor is at the beginning of
5473 the stamp, @kbd{S-@key{up}/@key{down}} will change the stamp by one day,
5474 just like @kbd{S-@key{left}/@key{right}}. At the end of the stamp, the
5475 time will be changed by one minute.
5477 If the timestamp contains a range of clock times or a repeater, these
5478 will not be overlayed, but remain in the buffer as they were.
5480 When you delete a timestamp character-by-character, it will only
5481 disappear from the buffer after @emph{all} (invisible) characters
5482 belonging to the ISO timestamp have been removed.
5484 If the custom timestamp format is longer than the default and you are
5485 using dates in tables, table alignment will be messed up. If the custom
5486 format is shorter, things do work as expected.
5490 @node Deadlines and scheduling, Clocking work time, Creating timestamps, Dates and Times
5491 @section Deadlines and scheduling
5493 A timestamp may be preceded by special keywords to facilitate planning:
5497 @cindex DEADLINE keyword
5499 Meaning: the task (most likely a TODO item, though not necessarily) is supposed
5500 to be finished on that date.
5502 @vindex org-deadline-warning-days
5503 On the deadline date, the task will be listed in the agenda. In
5504 addition, the agenda for @emph{today} will carry a warning about the
5505 approaching or missed deadline, starting
5506 @code{org-deadline-warning-days} before the due date, and continuing
5507 until the entry is marked DONE. An example:
5510 *** TODO write article about the Earth for the Guide
5511 The editor in charge is [[bbdb:Ford Prefect]]
5512 DEADLINE: <2004-02-29 Sun>
5515 You can specify a different lead time for warnings for a specific
5516 deadlines using the following syntax. Here is an example with a warning
5517 period of 5 days @code{DEADLINE: <2004-02-29 Sun -5d>}.
5520 @cindex SCHEDULED keyword
5522 Meaning: you are planning to start working on that task on the given
5525 @vindex org-agenda-skip-scheduled-if-done
5526 The headline will be listed under the given date@footnote{It will still
5527 be listed on that date after it has been marked DONE. If you don't like
5528 this, set the variable @code{org-agenda-skip-scheduled-if-done}.}. In
5529 addition, a reminder that the scheduled date has passed will be present
5530 in the compilation for @emph{today}, until the entry is marked DONE.
5531 I.e. the task will automatically be forwarded until completed.
5534 *** TODO Call Trillian for a date on New Years Eve.
5535 SCHEDULED: <2004-12-25 Sat>
5539 @b{Important:} Scheduling an item in Org-mode should @i{not} be
5540 understood in the same way that we understand @i{scheduling a meeting}.
5541 Setting a date for a meeting is just a simple appointment, you should
5542 mark this entry with a simple plain timestamp, to get this item shown
5543 on the date where it applies. This is a frequent misunderstanding by
5544 Org users. In Org-mode, @i{scheduling} means setting a date when you
5545 want to start working on an action item.
5548 You may use timestamps with repeaters in scheduling and deadline
5549 entries. Org-mode will issue early and late warnings based on the
5550 assumption that the timestamp represents the @i{nearest instance} of
5551 the repeater. However, the use of diary sexp entries like
5553 @code{<%%(diary-float t 42)>}
5555 in scheduling and deadline timestamps is limited. Org-mode does not
5556 know enough about the internals of each sexp function to issue early and
5557 late warnings. However, it will show the item on each day where the
5561 * Inserting deadline/schedule:: Planning items
5562 * Repeated tasks:: Items that show up again and again
5565 @node Inserting deadline/schedule, Repeated tasks, Deadlines and scheduling, Deadlines and scheduling
5566 @subsection Inserting deadlines or schedules
5568 The following commands allow you to quickly insert a deadline or to schedule
5573 @orgcmd{C-c C-d,org-deadline}
5574 Insert @samp{DEADLINE} keyword along with a stamp. The insertion will happen
5575 in the line directly following the headline. When called with a prefix arg,
5576 an existing deadline will be removed from the entry. Depending on the
5577 variable @code{org-log-redeadline}@footnote{with corresponding
5578 @code{#+STARTUP} keywords @code{logredeadline}, @code{lognoteredeadline},
5579 and @code{nologredeadline}}, a note will be taken when changing an existing
5581 @c FIXME Any CLOSED timestamp will be removed.????????
5583 @orgcmd{C-c C-s,org-schedule}
5584 Insert @samp{SCHEDULED} keyword along with a stamp. The insertion will
5585 happen in the line directly following the headline. Any CLOSED timestamp
5586 will be removed. When called with a prefix argument, remove the scheduling
5587 date from the entry. Depending on the variable
5588 @code{org-log-reschedule}@footnote{with corresponding @code{#+STARTUP}
5589 keywords @code{logredeadline}, @code{lognoteredeadline}, and
5590 @code{nologredeadline}}, a note will be taken when changing an existing
5593 @orgcmd{C-c C-x C-k,org-mark-entry-for-agenda-action}
5596 Mark the current entry for agenda action. After you have marked the entry
5597 like this, you can open the agenda or the calendar to find an appropriate
5598 date. With the cursor on the selected date, press @kbd{k s} or @kbd{k d} to
5599 schedule the marked item.
5601 @orgcmd{C-c / d,org-check-deadlines}
5602 @cindex sparse tree, for deadlines
5603 @vindex org-deadline-warning-days
5604 Create a sparse tree with all deadlines that are either past-due, or
5605 which will become due within @code{org-deadline-warning-days}.
5606 With @kbd{C-u} prefix, show all deadlines in the file. With a numeric
5607 prefix, check that many days. For example, @kbd{C-1 C-c / d} shows
5608 all deadlines due tomorrow.
5610 @orgcmd{C-c / b,org-check-before-date}
5611 Sparse tree for deadlines and scheduled items before a given date.
5613 @orgcmd{C-c / a,org-check-after-date}
5614 Sparse tree for deadlines and scheduled items after a given date.
5617 @node Repeated tasks, , Inserting deadline/schedule, Deadlines and scheduling
5618 @subsection Repeated tasks
5619 @cindex tasks, repeated
5620 @cindex repeated tasks
5622 Some tasks need to be repeated again and again. Org-mode helps to
5623 organize such tasks using a so-called repeater in a DEADLINE, SCHEDULED,
5624 or plain timestamp. In the following example
5626 ** TODO Pay the rent
5627 DEADLINE: <2005-10-01 Sat +1m>
5630 the @code{+1m} is a repeater; the intended interpretation is that the task
5631 has a deadline on <2005-10-01> and repeats itself every (one) month starting
5632 from that time. If you need both a repeater and a special warning period in
5633 a deadline entry, the repeater should come first and the warning period last:
5634 @code{DEADLINE: <2005-10-01 Sat +1m -3d>}.
5636 @vindex org-todo-repeat-to-state
5637 Deadlines and scheduled items produce entries in the agenda when they are
5638 over-due, so it is important to be able to mark such an entry as completed
5639 once you have done so. When you mark a DEADLINE or a SCHEDULE with the TODO
5640 keyword DONE, it will no longer produce entries in the agenda. The problem
5641 with this is, however, that then also the @emph{next} instance of the
5642 repeated entry will not be active. Org-mode deals with this in the following
5643 way: When you try to mark such an entry DONE (using @kbd{C-c C-t}), it will
5644 shift the base date of the repeating timestamp by the repeater interval, and
5645 immediately set the entry state back to TODO@footnote{In fact, the target
5646 state is taken from, in this sequence, the @code{REPEAT_TO_STATE} property or
5647 the variable @code{org-todo-repeat-to-state}. If neither of these is
5648 specified, the target state defaults to the first state of the TODO state
5649 sequence.}. In the example above, setting the state to DONE would actually
5650 switch the date like this:
5653 ** TODO Pay the rent
5654 DEADLINE: <2005-11-01 Tue +1m>
5657 @vindex org-log-repeat
5658 A timestamp@footnote{You can change this using the option
5659 @code{org-log-repeat}, or the @code{#+STARTUP} options @code{logrepeat},
5660 @code{lognoterepeat}, and @code{nologrepeat}. With @code{lognoterepeat}, you
5661 will also be prompted for a note.} will be added under the deadline, to keep
5662 a record that you actually acted on the previous instance of this deadline.
5664 As a consequence of shifting the base date, this entry will no longer be
5665 visible in the agenda when checking past dates, but all future instances
5668 With the @samp{+1m} cookie, the date shift will always be exactly one
5669 month. So if you have not paid the rent for three months, marking this
5670 entry DONE will still keep it as an overdue deadline. Depending on the
5671 task, this may not be the best way to handle it. For example, if you
5672 forgot to call you father for 3 weeks, it does not make sense to call
5673 him 3 times in a single day to make up for it. Finally, there are tasks
5674 like changing batteries which should always repeat a certain time
5675 @i{after} the last time you did it. For these tasks, Org-mode has
5676 special repeaters markers with @samp{++} and @samp{.+}. For example:
5680 DEADLINE: <2008-02-10 Sun ++1w>
5681 Marking this DONE will shift the date by at least one week,
5682 but also by as many weeks as it takes to get this date into
5683 the future. However, it stays on a Sunday, even if you called
5684 and marked it done on Saturday.
5685 ** TODO Check the batteries in the smoke detectors
5686 DEADLINE: <2005-11-01 Tue .+1m>
5687 Marking this DONE will shift the date to one month after
5691 You may have both scheduling and deadline information for a specific
5692 task---just make sure that the repeater intervals on both are the same.
5694 An alternative to using a repeater is to create a number of copies of a task
5695 subtree, with dates shifted in each copy. The command @kbd{C-c C-x c} was
5696 created for this purpose, it is described in @ref{Structure editing}.
5699 @node Clocking work time, Effort estimates, Deadlines and scheduling, Dates and Times
5700 @section Clocking work time
5701 @cindex clocking time
5702 @cindex time clocking
5704 Org-mode allows you to clock the time you spend on specific tasks in a
5705 project. When you start working on an item, you can start the clock.
5706 When you stop working on that task, or when you mark the task done, the
5707 clock is stopped and the corresponding time interval is recorded. It
5708 also computes the total time spent on each subtree of a project. And it
5709 remembers a history or tasks recently clocked, to that you can jump quickly
5710 between a number of tasks absorbing your time.
5712 To save the clock history across Emacs sessions, use
5714 (setq org-clock-persist 'history)
5715 (org-clock-persistence-insinuate)
5717 When you clock into a new task after resuming Emacs, the incomplete
5718 clock@footnote{To resume the clock under the assumption that you have worked
5719 on this task while outside Emacs, use @code{(setq org-clock-persist t)}.}
5720 will be found (@pxref{Resolving idle time}) and you will be prompted about
5724 * Clocking commands:: Starting and stopping a clock
5725 * The clock table:: Detailed reports
5726 * Resolving idle time:: Resolving time when you've been idle
5729 @node Clocking commands, The clock table, Clocking work time, Clocking work time
5730 @subsection Clocking commands
5733 @orgcmd{C-c C-x C-i,org-clock-in}
5734 @vindex org-clock-into-drawer
5735 Start the clock on the current item (clock-in). This inserts the CLOCK
5736 keyword together with a timestamp. If this is not the first clocking of
5737 this item, the multiple CLOCK lines will be wrapped into a
5738 @code{:LOGBOOK:} drawer (see also the variable
5739 @code{org-clock-into-drawer}). When called with a @kbd{C-u} prefix argument,
5740 select the task from a list of recently clocked tasks. With two @kbd{C-u
5741 C-u} prefixes, clock into the task at point and mark it as the default task.
5742 The default task will always be available when selecting a clocking task,
5743 with letter @kbd{d}.@*
5744 @cindex property: CLOCK_MODELINE_TOTAL
5745 @cindex property: LAST_REPEAT
5746 @vindex org-clock-modeline-total
5747 While the clock is running, the current clocking time is shown in the mode
5748 line, along with the title of the task. The clock time shown will be all
5749 time ever clocked for this task and its children. If the task has an effort
5750 estimate (@pxref{Effort estimates}), the mode line displays the current
5751 clocking time against it@footnote{To add an effort estimate ``on the fly'',
5752 hook a function doing this to @code{org-clock-in-prepare-hook}.} If the task
5753 is a repeating one (@pxref{Repeated tasks}), only the time since the last
5754 reset of the task @footnote{as recorded by the @code{LAST_REPEAT} property}
5755 will be shown. More control over what time is shown can be exercised with
5756 the @code{CLOCK_MODELINE_TOTAL} property. It may have the values
5757 @code{current} to show only the current clocking instance, @code{today} to
5758 show all time clocked on this tasks today (see also the variable
5759 @code{org-extend-today-until}), @code{all} to include all time, or
5760 @code{auto} which is the default@footnote{See also the variable
5761 @code{org-clock-modeline-total}.}.@* Clicking with @kbd{mouse-1} onto the
5762 mode line entry will pop up a menu with clocking options.
5764 @orgcmd{C-c C-x C-o,org-clock-out}
5765 @vindex org-log-note-clock-out
5766 Stop the clock (clock-out). This inserts another timestamp at the same
5767 location where the clock was last started. It also directly computes
5768 the resulting time in inserts it after the time range as @samp{=>
5769 HH:MM}. See the variable @code{org-log-note-clock-out} for the
5770 possibility to record an additional note together with the clock-out
5771 timestamp@footnote{The corresponding in-buffer setting is:
5772 @code{#+STARTUP: lognoteclock-out}}.
5773 @orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
5774 Update the effort estimate for the current clock task.
5777 @orgcmdkkc{C-c C-c,C-c C-y,org-evaluate-time-range}
5778 Recompute the time interval after changing one of the timestamps. This
5779 is only necessary if you edit the timestamps directly. If you change
5780 them with @kbd{S-@key{cursor}} keys, the update is automatic.
5781 @orgcmd{C-c C-t,org-todo}
5782 Changing the TODO state of an item to DONE automatically stops the clock
5783 if it is running in this same item.
5784 @orgcmd{C-c C-x C-x,org-clock-cancel}
5785 Cancel the current clock. This is useful if a clock was started by
5786 mistake, or if you ended up working on something else.
5787 @orgcmd{C-c C-x C-j,org-clock-goto}
5788 Jump to the headline of the currently clocked in task. With a @kbd{C-u}
5789 prefix arg, select the target task from a list of recently clocked tasks.
5790 @orgcmd{C-c C-x C-d,org-clock-display}
5791 @vindex org-remove-highlights-with-change
5792 Display time summaries for each subtree in the current buffer. This
5793 puts overlays at the end of each headline, showing the total time
5794 recorded under that heading, including the time of any subheadings. You
5795 can use visibility cycling to study the tree, but the overlays disappear
5796 when you change the buffer (see variable
5797 @code{org-remove-highlights-with-change}) or press @kbd{C-c C-c}.
5800 The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
5801 the agenda (@pxref{Weekly/daily agenda}) to show which tasks have been
5802 worked on or closed during a day.
5804 @node The clock table, Resolving idle time, Clocking commands, Clocking work time
5805 @subsection The clock table
5806 @cindex clocktable, dynamic block
5807 @cindex report, of clocked time
5809 Org mode can produce quite complex reports based on the time clocking
5810 inormation. Such a report is called a @emph{clock table}, because it is
5811 formatted as one or several Org tables.
5814 @orgcmd{C-c C-x C-r,org-clock-report}
5815 Insert a dynamic block (@pxref{Dynamic blocks}) containing a clock
5816 report as an Org-mode table into the current file. When the cursor is
5817 at an existing clock table, just update it. When called with a prefix
5818 argument, jump to the first clock report in the current document and
5820 @orgcmdkkc{C-c C-c,C-c C-x C-u,org-dblock-update}
5821 Update dynamic block at point. The cursor needs to be in the
5822 @code{#+BEGIN} line of the dynamic block.
5823 @orgkey{C-u C-c C-x C-u}
5824 Update all dynamic blocks (@pxref{Dynamic blocks}). This is useful if
5825 you have several clock table blocks in a buffer.
5826 @orgcmdkxkc{S-@key{left},S-@key{right},org-clocktable-try-shift}
5827 Shift the current @code{:block} interval and update the table. The cursor
5828 needs to be in the @code{#+BEGIN: clocktable} line for this command. If
5829 @code{:block} is @code{today}, it will be shifted to @code{today-1} etc.
5833 Here is an example of the frame for a clock table as it is inserted into the
5834 buffer with the @kbd{C-c C-x C-r} command:
5836 @cindex #+BEGIN, clocktable
5838 #+BEGIN: clocktable :maxlevel 2 :emphasize nil :scope file
5842 @vindex org-clocktable-defaults
5843 The @samp{BEGIN} line and specify a number of options to define the scope,
5844 structure, and formatting of the report. Defaults for all these options can
5845 be configured in the variable @code{org-clocktable-defaults}.
5847 @noindent First there are options that determine which clock entries are to
5850 :maxlevel @r{Maximum level depth to which times are listed in the table.}
5851 @r{Clocks at deeper levels will be summed into the upper level.}
5852 :scope @r{The scope to consider. This can be any of the following:}
5853 nil @r{the current buffer or narrowed region}
5854 file @r{the full current buffer}
5855 subtree @r{the subtree where the clocktable is located}
5856 tree@var{N} @r{the surrounding level @var{N} tree, for example @code{tree3}}
5857 tree @r{the surrounding level 1 tree}
5858 agenda @r{all agenda files}
5859 ("file"..) @r{scan these files}
5860 file-with-archives @r{current file and its archives}
5861 agenda-with-archives @r{all agenda files, including archives}
5862 :block @r{The time block to consider. This block is specified either}
5863 @r{absolute, or relative to the current time and may be any of}
5865 2007-12-31 @r{New year eve 2007}
5866 2007-12 @r{December 2007}
5867 2007-W50 @r{ISO-week 50 in 2007}
5868 2007 @r{the year 2007}
5869 today, yesterday, today-@var{N} @r{a relative day}
5870 thisweek, lastweek, thisweek-@var{N} @r{a relative week}
5871 thismonth, lastmonth, thismonth-@var{N} @r{a relative month}
5872 thisyear, lastyear, thisyear-@var{N} @r{a relative year}
5873 @r{Use @kbd{S-@key{left}/@key{right}} keys to shift the time interval.}
5874 :tstart @r{A time string specifying when to start considering times.}
5875 :tend @r{A time string specifying when to stop considering times.}
5876 :step @r{@code{week} or @code{day}, to split the table into chunks.}
5877 @r{To use this, @code{:block} or @code{:tstart}, @code{:tend} are needed.}
5878 :stepskip0 @r{Do not show steps that have zero time.}
5879 :fileskip0 @r{Do not show table sections from files which did not contribute.}
5880 :tags @r{A tags match to select entries that should contribute}.
5883 Then there are options which determine the formatting of the table. There
5884 options are interpreted by the function @code{org-clocktable-write-default},
5885 but you can specify your own function using the @code{:formatter} parameter.
5887 :emphasize @r{When @code{t}, emphasize level one and level two items.}
5888 :link @r{Link the item headlines in the table to their origins.}
5889 :narrow @r{An integer to limit the width of the headline column in}
5890 @r{the org table. If you write it like @samp{50!}, then the}
5891 @r{headline will also be shortened in export.}
5892 :indent @r{Indent each headline field according to its level.}
5893 :tcolumns @r{Number of columns to be used for times. If this is smaller}
5894 @r{than @code{:maxlevel}, lower levels will be lumped into one column.}
5895 :level @r{Should a level number column be included?}
5896 :compact @r{Abbreviation for @code{:level nil :indent t :narrow 40! :tcolumns 1}}
5897 @r{All are overwritten except if there is an explicit @code{:narrow}}
5898 :timestamp @r{A timestamp for the entry, when available. Look for SCHEDULED,}
5899 @r{DEADLINE, TIMESTAMP and TIMESTAMP_IA, in this order.}
5900 :formula @r{Content of a @code{#+TBLFM} line to be added and evaluated.}
5901 @r{As a special case, @samp{:formula %} adds a column with % time.}
5902 @r{If you do not specify a formula here, any existing formula.}
5903 @r{below the clock table will survive updates and be evaluated.}
5904 :formatter @r{A function to format clock data and insert it into the buffer.}
5906 To get a clock summary of the current level 1 tree, for the current
5907 day, you could write
5909 #+BEGIN: clocktable :maxlevel 2 :block today :scope tree1 :link t
5913 and to use a specific time range you could write@footnote{Note that all
5914 parameters must be specified in a single line---the line is broken here
5915 only to fit it into the manual.}
5917 #+BEGIN: clocktable :tstart "<2006-08-10 Thu 10:00>"
5918 :tend "<2006-08-10 Thu 12:00>"
5921 A summary of the current subtree with % times would be
5923 #+BEGIN: clocktable :scope subtree :link t :formula %
5926 A horizontally compact representation of everything clocked during last week
5929 #+BEGIN: clocktable :scope agenda :block lastweek :compact t
5933 @node Resolving idle time, , The clock table, Clocking work time
5934 @subsection Resolving idle time
5935 @cindex resolve idle time
5937 @cindex idle, resolve, dangling
5938 If you clock in on a work item, and then walk away from your
5939 computer---perhaps to take a phone call---you often need to ``resolve'' the
5940 time you were away by either subtracting it from the current clock, or
5941 applying it to another one.
5943 @vindex org-clock-idle-time
5944 By customizing the variable @code{org-clock-idle-time} to some integer, such
5945 as 10 or 15, Emacs can alert you when you get back to your computer after
5946 being idle for that many minutes@footnote{On computers using Mac OS X,
5947 idleness is based on actual user idleness, not just Emacs' idle time. For
5948 X11, you can install a utility program @file{x11idle.c}, available in the
5949 UTILITIES directory of the Org git distribution, to get the same general
5950 treatment of idleness. On other systems, idle time refers to Emacs idle time
5951 only.}, and ask what you want to do with the idle time. There will be a
5952 question waiting for you when you get back, indicating how much idle time has
5953 passed (constantly updated with the current amount), as well as a set of
5954 choices to correct the discrepancy:
5958 To keep some or all of the minutes and stay clocked in, press @kbd{k}. Org
5959 will ask how many of the minutes to keep. Press @key{RET} to keep them all,
5960 effectively changing nothing, or enter a number to keep that many minutes.
5962 If you use the shift key and press @kbd{K}, it will keep however many minutes
5963 you request and then immediately clock out of that task. If you keep all of
5964 the minutes, this is the same as just clocking out of the current task.
5966 To keep none of the minutes, use @kbd{s} to subtract all the away time from
5967 the clock, and then check back in from the moment you returned.
5969 To keep none of the minutes and just clock out at the start of the away time,
5970 use the shift key and press @kbd{S}. Remember that using shift will always
5971 leave you clocked out, no matter which option you choose.
5973 To cancel the clock altogether, use @kbd{C}. Note that if instead of
5974 canceling you subtract the away time, and the resulting clock amount is less
5975 than a minute, the clock will still be canceled rather than clutter up the
5976 log with an empty entry.
5979 What if you subtracted those away minutes from the current clock, and now
5980 want to apply them to a new clock? Simply clock in to any task immediately
5981 after the subtraction. Org will notice that you have subtracted time ``on
5982 the books'', so to speak, and will ask if you want to apply those minutes to
5983 the next task you clock in on.
5985 There is one other instance when this clock resolution magic occurs. Say you
5986 were clocked in and hacking away, and suddenly your cat chased a mouse who
5987 scared a hamster that crashed into your UPS's power button! You suddenly
5988 lose all your buffers, but thanks to auto-save you still have your recent Org
5989 mode changes, including your last clock in.
5991 If you restart Emacs and clock into any task, Org will notice that you have a
5992 dangling clock which was never clocked out from your last session. Using
5993 that clock's starting time as the beginning of the unaccounted-for period,
5994 Org will ask how you want to resolve that time. The logic and behavior is
5995 identical to dealing with away time due to idleness, it's just happening due
5996 to a recovery event rather than a set amount of idle time.
5998 You can also check all the files visited by your Org agenda for dangling
5999 clocks at any time using @kbd{M-x org-resolve-clocks}.
6001 @node Effort estimates, Relative timer, Clocking work time, Dates and Times
6002 @section Effort estimates
6003 @cindex effort estimates
6005 @cindex property, Effort
6006 @vindex org-effort-property
6007 If you want to plan your work in a very detailed way, or if you need to
6008 produce offers with quotations of the estimated work effort, you may want to
6009 assign effort estimates to entries. If you are also clocking your work, you
6010 may later want to compare the planned effort with the actual working time, a
6011 great way to improve planning estimates. Effort estimates are stored in a
6012 special property @samp{Effort}@footnote{You may change the property being
6013 used with the variable @code{org-effort-property}.}. You can set the effort
6014 for an entry with the following commands:
6017 @orgcmd{C-c C-x e,org-set-effort}
6018 Set the effort estimate for the current entry. With a numeric prefix
6019 argument, set it to the NTH allowed value (see below). This command is also
6020 accessible from the agenda with the @kbd{e} key.
6021 @orgcmd{C-c C-x C-e,org-clock-modify-effort-estimate}
6022 Modify the effort estimate of the item currently being clocked.
6025 Clearly the best way to work with effort estimates is through column view
6026 (@pxref{Column view}). You should start by setting up discrete values for
6027 effort estimates, and a @code{COLUMNS} format that displays these values
6028 together with clock sums (if you want to clock your time). For a specific
6032 #+PROPERTY: Effort_ALL 0 0:10 0:30 1:00 2:00 3:00 4:00 5:00 6:00 7:00 8:00
6033 #+COLUMNS: %40ITEM(Task) %17Effort(Estimated Effort)@{:@} %CLOCKSUM
6037 @vindex org-global-properties
6038 @vindex org-columns-default-format
6039 or, even better, you can set up these values globally by customizing the
6040 variables @code{org-global-properties} and @code{org-columns-default-format}.
6041 In particular if you want to use this setup also in the agenda, a global
6042 setup may be advised.
6044 The way to assign estimates to individual items is then to switch to column
6045 mode, and to use @kbd{S-@key{right}} and @kbd{S-@key{left}} to change the
6046 value. The values you enter will immediately be summed up in the hierarchy.
6047 In the column next to it, any clocked time will be displayed.
6049 @vindex org-agenda-columns-add-appointments-to-effort-sum
6050 If you switch to column view in the daily/weekly agenda, the effort column
6051 will summarize the estimated work effort for each day@footnote{Please note
6052 the pitfalls of summing hierarchical data in a flat list (@pxref{Agenda
6053 column view}).}, and you can use this to find space in your schedule. To get
6054 an overview of the entire part of the day that is committed, you can set the
6055 option @code{org-agenda-columns-add-appointments-to-effort-sum}. The
6056 appointments on a day that take place over a specified time interval will
6057 then also be added to the load estimate of the day.
6059 Effort estimates can be used in secondary agenda filtering that is triggered
6060 with the @kbd{/} key in the agenda (@pxref{Agenda commands}). If you have
6061 these estimates defined consistently, two or three key presses will narrow
6062 down the list to stuff that fits into an available time slot.
6064 @node Relative timer, Countdown timer, Effort estimates, Dates and Times
6065 @section Taking notes with a relative timer
6066 @cindex relative timer
6068 When taking notes during, for example, a meeting or a video viewing, it can
6069 be useful to have access to times relative to a starting time. Org provides
6070 such a relative timer and make it easy to create timed notes.
6073 @orgcmd{C-c C-x .,org-timer}
6074 Insert a relative time into the buffer. The first time you use this, the
6075 timer will be started. When called with a prefix argument, the timer is
6077 @orgcmd{C-c C-x -,org-timer-item}
6078 Insert a description list item with the current relative time. With a prefix
6079 argument, first reset the timer to 0.
6080 @orgcmd{M-@key{RET},org-insert-heading}
6081 Once the timer list is started, you can also use @kbd{M-@key{RET}} to insert
6083 @c for key sequences with a comma, command name macros fail :(
6086 Pause the timer, or continue it if it is already paused
6087 (@command{org-timer-pause-or-continue}).
6088 @c removed the sentence because it is redundant to the following item
6089 @kindex C-u C-c C-x ,
6091 Stop the timer. After this, you can only start a new timer, not continue the
6092 old one. This command also removes the timer from the mode line.
6093 @orgcmd{C-c C-x 0,org-timer-start}
6094 Reset the timer without inserting anything into the buffer. By default, the
6095 timer is reset to 0. When called with a @kbd{C-u} prefix, reset the timer to
6096 specific starting offset. The user is prompted for the offset, with a
6097 default taken from a timer string at point, if any, So this can be used to
6098 restart taking notes after a break in the process. When called with a double
6099 prefix argument @kbd{C-u C-u}, change all timer strings in the active region
6100 by a certain amount. This can be used to fix timer strings if the timer was
6101 not started at exactly the right moment.
6104 @node Countdown timer, , Relative timer, Dates and Times
6105 @section Countdown timer
6106 @cindex Countdown timer
6110 Calling @code{org-timer-set-timer} from an Org-mode buffer runs a countdown
6111 timer. Use @key{;} from agenda buffers, @key{C-c C-x ;} everwhere else.
6113 @code{org-timer-set-timer} prompts the user for a duration and displays a
6114 countdown timer in the modeline. @code{org-timer-default-timer} sets the
6115 default countdown value. Giving a prefix numeric argument overrides this
6118 @node Capture - Refile - Archive, Agenda Views, Dates and Times, Top
6119 @chapter Capture - Refile - Archive
6122 An important part of any organization system is the ability to quickly
6123 capture new ideas and tasks, and to associate reference material with them.
6124 Org does this using a process called @i{capture}. It also can store files
6125 related to a task (@i{attachments}) in a special directory. Once in the
6126 system, tasks and projects need to be moved around. Moving completed project
6127 trees to an archive file keeps the system compact and fast.
6130 * Capture:: Capturing new stuff
6131 * Attachments:: Add files to tasks
6132 * RSS Feeds:: Getting input from RSS feeds
6133 * Protocols:: External (e.g. Browser) access to Emacs and Org
6134 * Refiling notes:: Moving a tree from one place to another
6135 * Archiving:: What to do with finished projects
6138 @node Capture, Attachments, Capture - Refile - Archive, Capture - Refile - Archive
6142 Org's method for capturing new items is heavily inspired by John Wiegley
6143 excellent remember package. Up to version 6.36 Org used a special setup
6144 for @file{remember.el}. @file{org-remember.el} is still part of Org-mode for
6145 backward compatibility with existing setups. You can find the documentation
6146 for org-remember at @url{http://orgmode.org/org-remember.pdf}.
6148 The new capturing setup described here is preferred and should be used by new
6149 users. To convert your @code{org-remember-templates}, run the command
6151 @kbd{M-x org-capture-import-remember-templates @key{RET}}
6153 @noindent and then customize the new variable with @kbd{M-x
6154 customize-variable org-capture-templates}, check the result, and save the
6155 customization. You can then use both remember and capture until
6156 you are familiar with the new mechanism.
6158 Capture lets you quickly store notes with little interruption of your work
6159 flow. The basic process of capturing is very similar to remember, but Org
6160 does enhance it with templates and more.
6163 * Setting up capture:: Where notes will be stored
6164 * Using capture:: Commands to invoke and terminate capture
6165 * Capture templates:: Define the outline of different note types
6168 @node Setting up capture, Using capture, Capture, Capture
6169 @subsection Setting up capture
6171 The following customization sets a default target file for notes, and defines
6172 a global key@footnote{Please select your own key, @kbd{C-c c} is only a
6173 suggestion.} for capturing new material.
6175 @vindex org-default-notes-file
6177 (setq org-default-notes-file (concat org-directory "/notes.org"))
6178 (define-key global-map "\C-cc" 'org-capture)
6181 @node Using capture, Capture templates, Setting up capture, Capture
6182 @subsection Using capture
6185 @orgcmd{C-c c,org-capture}
6186 Call the command @code{org-capture}. Note that this keybinding is global and
6187 not active by default - you need to install it. If you have templates
6188 defined @pxref{Capture templates}, it will offer these templates for
6189 selection or use a new Org outline node as the default template. It will
6190 insert the template into the target file and switch to an indirect buffer
6191 narrowed to this new node. You may then insert the information you want.
6193 @orgcmd{C-c C-c,org-capture-finalize}
6194 Once you have finished entering information into the capture buffer, @kbd{C-c
6195 C-c} will return you to the window configuration before the capture process,
6196 so that you can resume your work without further distraction.
6198 @orgcmd{C-c C-w,org-capture-refile}
6199 Finalize the capture process by refiling (@pxref{Refiling notes}) the note to
6200 a different place. Please realize that this is a normal refiling command
6201 that will be executed - so the cursor position at the moment you run this
6202 command is important. If you have inserted a tree with a parent and
6203 children, first move the cursor back to the parent.
6205 @orgcmd{C-c C-k,org-capture-kill}
6206 Abort the capture process and return to the previous state.
6209 You can also call @code{org-capture} in a special way from the agenda, using
6210 the @kbd{k c} key combination. With this access, any timestamps inserted by
6211 the selected capture template will default to the cursor date in the agenda,
6212 rather than to the current date.
6214 @node Capture templates, , Using capture, Capture
6215 @subsection Capture templates
6216 @cindex templates, for Capture
6218 You can use templates for different types of capture items, and
6219 for different target locations. The easiest way to create such templates is
6220 through the customize interface.
6224 Customize the variable @code{org-capture-templates}.
6227 Before we give the formal description of template definitions, let's look at
6228 an example. Say you would like to use one template to create general TODO
6229 entries, and you want to put these entries under the heading @samp{Tasks} in
6230 your file @file{~/org/gtd.org}. Also, a date tree in the file
6231 @file{journal.org} should capture journal entries. A possible configuration
6235 (setq org-capture-templates
6236 '(("t" "Todo" entry (file+headline "~/org/gtd.org" "Tasks")
6237 "* TODO %?\n %i\n %a")
6238 ("j" "Journal" entry (file+datetree "~/org/journal.org")
6239 "* %?\nEntered on %U\n %i\n %a")))
6242 @noindent If you then press @kbd{C-c c t}, Org will prepare the template
6246 [[file:@var{link to where you initiated capture}]]
6250 During expansion of the template, @code{%a} has been replaced by a link to
6251 the location from where you called the capture command. This can be
6252 extremely useful for deriving tasks from emails, for example. You fill in
6253 the task definition, press @code{C-c C-c} and Org returns you to the same
6254 place where you started the capture process.
6258 * Template elements:: What is needed for a complete template entry
6259 * Template expansion:: Filling in information about time and context
6262 @node Template elements, Template expansion, Capture templates, Capture templates
6263 @subsubsection Template elements
6265 Now lets look at the elements of a template definition. Each entry in
6266 @code{org-capture-templates} is a list with the following items:
6270 The keys that will select the template, as a string, characters
6271 only, for example @code{"a"} for a template to be selected with a
6272 single key, or @code{"bt"} for selection with two keys. When using
6273 several keys, keys using the same prefix key must be sequential
6274 in the list and preceded by a 2-element entry explaining the
6275 prefix key, for example
6277 ("b" "Templates for marking stuff to buy")
6279 @noindent If you do not define a template for the @kbd{C} key, this key will
6280 be used to open the customize buffer for this complex variable.
6283 A short string describing the template, which will be shown during
6287 The type of entry, a symbol. Valid values are:
6290 An Org-mode node, with a headline. Will be filed as the child of the
6291 target entry or as a top-level entry. The target file should be an Org-mode
6294 A plain list item, placed in the first plain list at the target
6295 location. Again the target file should be an Org file.
6297 A checkbox item. This only differs from the plain list item by the
6300 a new line in the first table at the target location. Where exactly the
6301 line will be inserted depends on the properties @code{:prepend} and
6302 @code{:table-line-pos} (see below).
6304 Text to be inserted as it is.
6308 @vindex org-default-notes-file
6309 Specification of where the captured item should be placed. In Org-mode
6310 files, targets usually define a node. Entries will become children of this
6311 node, other types will be added to the table or list in the body of this
6312 node. Most target specifications contain a file name. If that file name is
6313 the empty string, it defaults to @code{org-default-notes-file}.
6317 @item (file "path/to/file")
6318 Text will be placed at the beginning or end of that file.
6320 @item (id "id of existing org entry")
6321 Filing as child of this entry, or in the body of the entry.
6323 @item (file+headline "path/to/file" "node headline")
6324 Fast configuration if the target heading is unique in the file.
6326 @item (file+olp "path/to/file" "Level 1 heading" "Level 2" ...)
6327 For non-unique headings, the full path is safer.
6329 @item (file+regexp "path/to/file" "regexp to find location")
6330 Use a regular expression to position the cursor.
6332 @item (file+datetree "path/to/file")
6333 Will create a heading in a date tree.
6335 @item (file+function "path/to/file" function-finding-location)
6336 A function to find the right location in the file.
6339 File to the entry that is currently being clocked.
6341 @item (function function-finding-location)
6342 Most general way, write your own function to find both
6347 The template for creating the capture item. If you leave this empty, an
6348 appropriate default template will be used. Otherwise this is a string with
6349 escape codes, which will be replaced depending on time and context of the
6350 capture call. The string with escapes may be loaded from a template file,
6351 using the special syntax @code{(file "path/to/template")}. See below for
6355 The rest of the entry is a property list of additional options.
6356 Recognized properties are:
6359 Normally new captured information will be appended at
6360 the target location (last child, last table line, last list item...).
6361 Setting this property will change that.
6363 @item :immediate-finish
6364 When set, do not offer to edit the information, just
6365 file it away immediately. This makes sense if the template only needs
6366 information that can be added automatically.
6369 Set this to the number of lines to insert
6370 before and after the new item. Default 0, only common other value is 1.
6373 Start the clock in this item.
6376 If starting the capture interrupted a clock, restart that clock when finished
6380 Do not narrow the target buffer, simply show the full buffer. Default is to
6381 narrow it so that you only see the new material.
6384 If the target file was not yet visited when capture was invoked, kill the
6385 buffer again after capture is completed.
6389 @node Template expansion, , Template elements, Capture templates
6390 @subsubsection Template expansion
6392 In the template itself, special @kbd{%}-escapes@footnote{If you need one of
6393 these sequences literally, escape the @kbd{%} with a backslash.} allow
6394 dynamic insertion of content:
6396 @comment SJE: should these sentences terminate in period?
6398 %^@{@var{prompt}@} @r{prompt the user for a string and replace this sequence with it.}
6399 @r{You may specify a default value and a completion table with}
6400 @r{%^@{prompt|default|completion2|completion3...@}}
6401 @r{The arrow keys access a prompt-specific history.}
6402 %a @r{annotation, normally the link created with @code{org-store-link}}
6403 %A @r{like @code{%a}, but prompt for the description part}
6404 %i @r{initial content, the region when capture is called while the}
6405 @r{region is active.}
6406 @r{The entire text will be indented like @code{%i} itself.}
6407 %t @r{timestamp, date only}
6408 %T @r{timestamp with date and time}
6409 %u, %U @r{like the above, but inactive timestamps}
6410 %^t @r{like @code{%t}, but prompt for date. Similarly @code{%^T}, @code{%^u}, @code{%^U}}
6411 @r{You may define a prompt like @code{%^@{Birthday@}t}}
6412 %n @r{user name (taken from @code{user-full-name})}
6413 %c @r{Current kill ring head.}
6414 %x @r{Content of the X clipboard.}
6415 %^C @r{Interactive selection of which kill or clip to use.}
6416 %^L @r{Like @code{%^C}, but insert as link.}
6417 %k @r{title of the currently clocked task}
6418 %K @r{link to the currently clocked task}
6419 %^g @r{prompt for tags, with completion on tags in target file.}
6420 %^G @r{prompt for tags, with completion all tags in all agenda files.}
6421 %^@{@var{prop}@}p @r{Prompt the user for a value for property @var{prop}}
6422 %:keyword @r{specific information for certain link types, see below}
6423 %[@var{file}] @r{insert the contents of the file given by @var{file}}
6424 %(@var{sexp}) @r{evaluate Elisp @var{sexp} and replace with the result}
6428 For specific link types, the following keywords will be
6429 defined@footnote{If you define your own link types (@pxref{Adding
6430 hyperlink types}), any property you store with
6431 @code{org-store-link-props} can be accessed in capture templates in a
6434 @vindex org-from-is-user-regexp
6436 Link type | Available keywords
6437 -------------------+----------------------------------------------
6438 bbdb | %:name %:company
6439 irc | %:server %:port %:nick
6440 vm, wl, mh, mew, rmail | %:type %:subject %:message-id
6441 | %:from %:fromname %:fromaddress
6442 | %:to %:toname %:toaddress
6443 | %:date @r{(message date header field)}
6444 | %:date-timestamp @r{(date as active timestamp)}
6445 | %:date-timestamp-inactive @r{(date as inactive timestamp)}
6446 | %: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}.}}
6447 gnus | %:group, @r{for messages also all email fields}
6449 info | %:file %:node
6454 To place the cursor after template expansion use:
6457 %? @r{After completing the template, position cursor here.}
6461 @node Attachments, RSS Feeds, Capture, Capture - Refile - Archive
6462 @section Attachments
6465 @vindex org-attach-directory
6466 It is often useful to associate reference material with an outline node/task.
6467 Small chunks of plain text can simply be stored in the subtree of a project.
6468 Hyperlinks (@pxref{Hyperlinks}) can establish associations with
6469 files that live elsewhere on your computer or in the cloud, like emails or
6470 source code files belonging to a project. Another method is @i{attachments},
6471 which are files located in a directory belonging to an outline node. Org
6472 uses directories named by the unique ID of each entry. These directories are
6473 located in the @file{data} directory which lives in the same directory where
6474 your Org file lives@footnote{If you move entries or Org files from one
6475 directory to another, you may want to configure @code{org-attach-directory}
6476 to contain an absolute path.}. If you initialize this directory with
6477 @code{git init}, Org will automatically commit changes when it sees them.
6478 The attachment system has been contributed to Org by John Wiegley.
6480 In cases where it seems better to do so, you can also attach a directory of your
6481 choice to an entry. You can also make children inherit the attachment
6482 directory from a parent, so that an entire subtree uses the same attached
6485 @noindent The following commands deal with attachments:
6489 @orgcmd{C-c C-a,org-attach}
6490 The dispatcher for commands related to the attachment system. After these
6491 keys, a list of commands is displayed and you must press an additional key
6492 to select a command:
6495 @orgcmdtkc{a,C-c C-a a,org-attach-attach}
6496 @vindex org-attach-method
6497 Select a file and move it into the task's attachment directory. The file
6498 will be copied, moved, or linked, depending on @code{org-attach-method}.
6499 Note that hard links are not supported on all systems.
6505 Attach a file using the copy/move/link method.
6506 Note that hard links are not supported on all systems.
6508 @orgcmdtkc{n,C-c C-a n,org-attach-new}
6509 Create a new attachment as an Emacs buffer.
6511 @orgcmdtkc{z,C-c C-a z,org-attach-sync}
6512 Synchronize the current task with its attachment directory, in case you added
6513 attachments yourself.
6515 @orgcmdtkc{p,C-c C-a o,org-attach-open}
6516 @vindex org-file-apps
6517 Open current task's attachment. If there is more than one, prompt for a
6518 file name first. Opening will follow the rules set by @code{org-file-apps}.
6519 For more details, see the information on following hyperlinks
6520 (@pxref{Handling links}).
6522 @orgcmdtkc{O,C-c C-a O,org-attach-open-in-emacs}
6523 Also open the attachment, but force opening the file in Emacs.
6525 @orgcmdtkc{f,C-c C-a f,org-attach-reveal}
6526 Open the current task's attachment directory.
6528 @orgcmdtkc{F,C-c C-a F,org-attach-reveal-in-emacs}
6529 Also open the directory, but force using @command{dired} in Emacs.
6531 @orgcmdtkc{d,C-c C-a d,org-attach-delete-one}
6532 Select and delete a single attachment.
6534 @orgcmdtkc{D,C-c C-a D,org-attach-delete-all}
6535 Delete all of a task's attachments. A safer way is to open the directory in
6536 @command{dired} and delete from there.
6538 @orgcmdtkc{s,C-c C-a s,org-attach-set-directory}
6539 @cindex property, ATTACH_DIR
6540 Set a specific directory as the entry's attachment directory. This works by
6541 putting the directory path into the @code{ATTACH_DIR} property.
6543 @orgcmdtkc{i,C-c C-a i,org-attach-set-inherit}
6544 @cindex property, ATTACH_DIR_INHERIT
6545 Set the @code{ATTACH_DIR_INHERIT} property, so that children will use the
6546 same directory for attachments as the parent does.
6550 @node RSS Feeds, Protocols, Attachments, Capture - Refile - Archive
6555 Org can add and change entries based on information found in RSS feeds and
6556 Atom feeds. You could use this to make a task out of each new podcast in a
6557 podcast feed. Or you could use a phone-based note-creating service on the
6558 web to import tasks into Org. To access feeds, configure the variable
6559 @code{org-feed-alist}. The docstring of this variable has detailed
6560 information. Here is just an example:
6563 (setq org-feed-alist
6565 "http://rss.slashdot.org/Slashdot/slashdot"
6566 "~/txt/org/feeds.org" "Slashdot Entries")))
6570 will configure that new items from the feed provided by
6571 @code{rss.slashdot.org} will result in new entries in the file
6572 @file{~/org/feeds.org} under the heading @samp{Slashdot Entries}, whenever
6573 the following command is used:
6576 @orgcmd{C-c C-x g,org-feed-update-all}
6578 Collect items from the feeds configured in @code{org-feed-alist} and act upon
6580 @orgcmd{C-c C-x G,org-feed-goto-inbox}
6581 Prompt for a feed name and go to the inbox configured for this feed.
6584 Under the same headline, Org will create a drawer @samp{FEEDSTATUS} in which
6585 it will store information about the status of items in the feed, to avoid
6586 adding the same item several times. You should add @samp{FEEDSTATUS} to the
6587 list of drawers in that file:
6590 #+DRAWERS: LOGBOOK PROPERTIES FEEDSTATUS
6593 For more information, including how to read atom feeds, see
6594 @file{org-feed.el} and the docstring of @code{org-feed-alist}.
6596 @node Protocols, Refiling notes, RSS Feeds, Capture - Refile - Archive
6597 @section Protocols for external access
6598 @cindex protocols, for external access
6601 You can set up Org for handling protocol calls from outside applications that
6602 are passed to Emacs through the @file{emacsserver}. For example, you can
6603 configure bookmarks in your web browser to send a link to the current page to
6604 Org and create a note from it using capture (@pxref{Capture}). Or you
6605 could create a bookmark that will tell Emacs to open the local source file of
6606 a remote website you are looking at with the browser. See
6607 @uref{http://orgmode.org/worg/org-contrib/org-protocol.php} for detailed
6608 documentation and setup instructions.
6610 @node Refiling notes, Archiving, Protocols, Capture - Refile - Archive
6611 @section Refiling notes
6612 @cindex refiling notes
6614 When reviewing the captured data, you may want to refile some of the entries
6615 into a different list, for example into a project. Cutting, finding the
6616 right location, and then pasting the note is cumbersome. To simplify this
6617 process, you can use the following special command:
6620 @orgcmd{C-c C-w,org-refile}
6621 @vindex org-reverse-note-order
6622 @vindex org-refile-targets
6623 @vindex org-refile-use-outline-path
6624 @vindex org-outline-path-complete-in-steps
6625 @vindex org-refile-allow-creating-parent-nodes
6626 @vindex org-log-refile
6627 @vindex org-refile-use-cache
6628 Refile the entry or region at point. This command offers possible locations
6629 for refiling the entry and lets you select one with completion. The item (or
6630 all items in the region) is filed below the target heading as a subitem.
6631 Depending on @code{org-reverse-note-order}, it will be either the first or
6633 By default, all level 1 headlines in the current buffer are considered to be
6634 targets, but you can have more complex definitions across a number of files.
6635 See the variable @code{org-refile-targets} for details. If you would like to
6636 select a location via a file-path-like completion along the outline path, see
6637 the variables @code{org-refile-use-outline-path} and
6638 @code{org-outline-path-complete-in-steps}. If you would like to be able to
6639 create new nodes as new parents for refiling on the fly, check the
6640 variable @code{org-refile-allow-creating-parent-nodes}.
6641 When the variable @code{org-log-refile}@footnote{with corresponding
6642 @code{#+STARTUP} keywords @code{logrefile}, @code{lognoterefile},
6643 and @code{nologrefile}} is set, a time stamp or a note will be
6644 recorded when an entry has been refiled.
6645 @orgkey{C-u C-c C-w}
6646 Use the refile interface to jump to a heading.
6647 @orgcmd{C-u C-u C-c C-w,org-refile-goto-last-stored}
6648 Jump to the location where @code{org-refile} last moved a tree to.
6650 Refile as the child of the item currently being clocked.
6651 @item C-0 C-c C-w @ @r{or} @ C-u C-u C-u C-c C-w
6653 @orgcmdtkc{C-0 C-c C-w @ @r{or} @ C-u C-u C-u C-c C-w,C-0 C-c C-w,org-refile-cache-clear}
6655 Clear the target cache. Caching of refile targets can be turned on by
6656 setting @code{org-refile-use-cache}. To make the command seen new possible
6657 targets, you have to clear the cache with this command.
6660 @node Archiving, , Refiling notes, Capture - Refile - Archive
6664 When a project represented by a (sub)tree is finished, you may want
6665 to move the tree out of the way and to stop it from contributing to the
6666 agenda. Archiving is important to keep your working files compact and global
6667 searches like the construction of agenda views fast.
6670 @orgcmd{C-c C-x C-a,org-archive-subtree-default}
6671 @vindex org-archive-default-command
6672 Archive the current entry using the command specified in the variable
6673 @code{org-archive-default-command}.
6677 * Moving subtrees:: Moving a tree to an archive file
6678 * Internal archiving:: Switch off a tree but keep it in the file
6681 @node Moving subtrees, Internal archiving, Archiving, Archiving
6682 @subsection Moving a tree to the archive file
6683 @cindex external archiving
6685 The most common archiving action is to move a project tree to another file,
6689 @orgcmdkskc{C-c C-x C-s,C-c $,org-archive-subtree}
6690 @vindex org-archive-location
6691 Archive the subtree starting at the cursor position to the location
6692 given by @code{org-archive-location}.
6693 @orgkey{C-u C-c C-x C-s}
6694 Check if any direct children of the current headline could be moved to
6695 the archive. To do this, each subtree is checked for open TODO entries.
6696 If none are found, the command offers to move it to the archive
6697 location. If the cursor is @emph{not} on a headline when this command
6698 is invoked, the level 1 trees will be checked.
6701 @cindex archive locations
6702 The default archive location is a file in the same directory as the
6703 current file, with the name derived by appending @file{_archive} to the
6704 current file name. For information and examples on how to change this,
6705 see the documentation string of the variable
6706 @code{org-archive-location}. There is also an in-buffer option for
6707 setting this variable, for example@footnote{For backward compatibility,
6708 the following also works: If there are several such lines in a file,
6709 each specifies the archive location for the text below it. The first
6710 such line also applies to any text before its definition. However,
6711 using this method is @emph{strongly} deprecated as it is incompatible
6712 with the outline structure of the document. The correct method for
6713 setting multiple archive locations in a buffer is using properties.}:
6717 #+ARCHIVE: %s_done::
6720 @cindex property, ARCHIVE
6722 If you would like to have a special ARCHIVE location for a single entry
6723 or a (sub)tree, give the entry an @code{:ARCHIVE:} property with the
6724 location as the value (@pxref{Properties and Columns}).
6726 @vindex org-archive-save-context-info
6727 When a subtree is moved, it receives a number of special properties that
6728 record context information like the file from where the entry came, its
6729 outline path the archiving time etc. Configure the variable
6730 @code{org-archive-save-context-info} to adjust the amount of information
6734 @node Internal archiving, , Moving subtrees, Archiving
6735 @subsection Internal archiving
6737 If you want to just switch off (for agenda views) certain subtrees without
6738 moving them to a different file, you can use the @code{ARCHIVE tag}.
6740 A headline that is marked with the ARCHIVE tag (@pxref{Tags}) stays at
6741 its location in the outline tree, but behaves in the following way:
6744 @vindex org-cycle-open-archived-trees
6745 It does not open when you attempt to do so with a visibility cycling
6746 command (@pxref{Visibility cycling}). You can force cycling archived
6747 subtrees with @kbd{C-@key{TAB}}, or by setting the option
6748 @code{org-cycle-open-archived-trees}. Also normal outline commands like
6749 @code{show-all} will open archived subtrees.
6751 @vindex org-sparse-tree-open-archived-trees
6752 During sparse tree construction (@pxref{Sparse trees}), matches in
6753 archived subtrees are not exposed, unless you configure the option
6754 @code{org-sparse-tree-open-archived-trees}.
6756 @vindex org-agenda-skip-archived-trees
6757 During agenda view construction (@pxref{Agenda Views}), the content of
6758 archived trees is ignored unless you configure the option
6759 @code{org-agenda-skip-archived-trees}, in which case these trees will always
6760 be included. In the agenda you can press @kbd{v a} to get archives
6761 temporarily included.
6763 @vindex org-export-with-archived-trees
6764 Archived trees are not exported (@pxref{Exporting}), only the headline
6765 is. Configure the details using the variable
6766 @code{org-export-with-archived-trees}.
6768 @vindex org-columns-skip-archived-trees
6769 Archived trees are excluded from column view unless the variable
6770 @code{org-columns-skip-archived-trees} is configured to @code{nil}.
6773 The following commands help manage the ARCHIVE tag:
6776 @orgcmd{C-c C-x a,org-toggle-archive-tag}
6777 Toggle the ARCHIVE tag for the current headline. When the tag is set,
6778 the headline changes to a shadowed face, and the subtree below it is
6780 @orgkey{C-u C-c C-x a}
6781 Check if any direct children of the current headline should be archived.
6782 To do this, each subtree is checked for open TODO entries. If none are
6783 found, the command offers to set the ARCHIVE tag for the child. If the
6784 cursor is @emph{not} on a headline when this command is invoked, the
6785 level 1 trees will be checked.
6786 @orgcmd{C-@kbd{TAB},org-force-cycle-archived}
6787 Cycle a tree even if it is tagged with ARCHIVE.
6788 @orgcmd{C-c C-x A,org-archive-to-archive-sibling}
6789 Move the current entry to the @emph{Archive Sibling}. This is a sibling of
6790 the entry with the heading @samp{Archive} and the tag @samp{ARCHIVE}. The
6791 entry becomes a child of that sibling and in this way retains a lot of its
6792 original context, including inherited tags and approximate position in the
6797 @node Agenda Views, Markup, Capture - Refile - Archive, Top
6798 @chapter Agenda views
6799 @cindex agenda views
6801 Due to the way Org works, TODO items, time-stamped items, and
6802 tagged headlines can be scattered throughout a file or even a number of
6803 files. To get an overview of open action items, or of events that are
6804 important for a particular date, this information must be collected,
6805 sorted and displayed in an organized way.
6807 Org can select items based on various criteria and display them
6808 in a separate buffer. Seven different view types are provided:
6812 an @emph{agenda} that is like a calendar and shows information
6815 a @emph{TODO list} that covers all unfinished
6818 a @emph{match view}, showings headlines based on the tags, properties, and
6819 TODO state associated with them,
6821 a @emph{timeline view} that shows all events in a single Org file,
6822 in time-sorted view,
6824 a @emph{text search view} that shows all entries from multiple files
6825 that contain specified keywords,
6827 a @emph{stuck projects view} showing projects that currently don't move
6830 @emph{custom views} that are special searches and combinations of different
6835 The extracted information is displayed in a special @emph{agenda
6836 buffer}. This buffer is read-only, but provides commands to visit the
6837 corresponding locations in the original Org files, and even to
6838 edit these files remotely.
6840 @vindex org-agenda-window-setup
6841 @vindex org-agenda-restore-windows-after-quit
6842 Two variables control how the agenda buffer is displayed and whether the
6843 window configuration is restored when the agenda exits:
6844 @code{org-agenda-window-setup} and
6845 @code{org-agenda-restore-windows-after-quit}.
6848 * Agenda files:: Files being searched for agenda information
6849 * Agenda dispatcher:: Keyboard access to agenda views
6850 * Built-in agenda views:: What is available out of the box?
6851 * Presentation and sorting:: How agenda items are prepared for display
6852 * Agenda commands:: Remote editing of Org trees
6853 * Custom agenda views:: Defining special searches and views
6854 * Exporting Agenda Views:: Writing a view to a file
6855 * Agenda column view:: Using column view for collected entries
6858 @node Agenda files, Agenda dispatcher, Agenda Views, Agenda Views
6859 @section Agenda files
6860 @cindex agenda files
6861 @cindex files for agenda
6863 @vindex org-agenda-files
6864 The information to be shown is normally collected from all @emph{agenda
6865 files}, the files listed in the variable
6866 @code{org-agenda-files}@footnote{If the value of that variable is not a
6867 list, but a single file name, then the list of agenda files will be
6868 maintained in that external file.}. If a directory is part of this list,
6869 all files with the extension @file{.org} in this directory will be part
6872 Thus, even if you only work with a single Org file, that file should
6873 be put into the list@footnote{When using the dispatcher, pressing
6874 @kbd{<} before selecting a command will actually limit the command to
6875 the current file, and ignore @code{org-agenda-files} until the next
6876 dispatcher command.}. You can customize @code{org-agenda-files}, but
6877 the easiest way to maintain it is through the following commands
6879 @cindex files, adding to agenda list
6881 @orgcmd{C-c [,org-agenda-to-front}
6882 Add current file to the list of agenda files. The file is added to
6883 the front of the list. If it was already in the list, it is moved to
6884 the front. With a prefix argument, file is added/moved to the end.
6885 @orgcmd{C-c ],org-remove-file}
6886 Remove current file from the list of agenda files.
6888 @orgcmd{C-',org-cycle-agenda-files}
6890 Cycle through agenda file list, visiting one file after the other.
6891 @kindex M-x org-iswitchb
6892 @item M-x org-iswitchb
6893 Command to use an @code{iswitchb}-like interface to switch to and between Org
6898 The Org menu contains the current list of files and can be used
6899 to visit any of them.
6901 If you would like to focus the agenda temporarily on a file not in
6902 this list, or on just one file in the list, or even on only a subtree in a
6903 file, then this can be done in different ways. For a single agenda command,
6904 you may press @kbd{<} once or several times in the dispatcher
6905 (@pxref{Agenda dispatcher}). To restrict the agenda scope for an
6906 extended period, use the following commands:
6909 @orgcmd{C-c C-x <,org-agenda-set-restriction-lock}
6910 Permanently restrict the agenda to the current subtree. When with a
6911 prefix argument, or with the cursor before the first headline in a file,
6912 the agenda scope is set to the entire file. This restriction remains in
6913 effect until removed with @kbd{C-c C-x >}, or by typing either @kbd{<}
6914 or @kbd{>} in the agenda dispatcher. If there is a window displaying an
6915 agenda view, the new restriction takes effect immediately.
6916 @orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
6917 Remove the permanent restriction created by @kbd{C-c C-x <}.
6921 When working with @file{speedbar.el}, you can use the following commands in
6924 @orgcmdtkc{< @r{in the speedbar frame},<,org-speedbar-set-agenda-restriction}
6925 Permanently restrict the agenda to the item---either an Org file or a subtree
6926 in such a file---at the cursor in the Speedbar frame.
6927 If there is a window displaying an agenda view, the new restriction takes
6929 @orgcmdtkc{> @r{in the speedbar frame},>,org-agenda-remove-restriction-lock}
6930 Lift the restriction.
6933 @node Agenda dispatcher, Built-in agenda views, Agenda files, Agenda Views
6934 @section The agenda dispatcher
6935 @cindex agenda dispatcher
6936 @cindex dispatching agenda commands
6937 The views are created through a dispatcher, which should be bound to a
6938 global key---for example @kbd{C-c a} (@pxref{Installation}). In the
6939 following we will assume that @kbd{C-c a} is indeed how the dispatcher
6940 is accessed and list keyboard access to commands accordingly. After
6941 pressing @kbd{C-c a}, an additional letter is required to execute a
6942 command. The dispatcher offers the following default commands:
6945 Create the calendar-like agenda (@pxref{Weekly/daily agenda}).
6947 Create a list of all TODO items (@pxref{Global TODO list}).
6949 Create a list of headlines matching a TAGS expression (@pxref{Matching
6950 tags and properties}).
6952 Create the timeline view for the current buffer (@pxref{Timeline}).
6954 Create a list of entries selected by a boolean expression of keywords
6955 and/or regular expressions that must or must not occur in the entry.
6957 @vindex org-agenda-text-search-extra-files
6958 Search for a regular expression in all agenda files and additionally in
6959 the files listed in @code{org-agenda-text-search-extra-files}. This
6960 uses the Emacs command @code{multi-occur}. A prefix argument can be
6961 used to specify the number of context lines for each match, default is
6964 Create a list of stuck projects (@pxref{Stuck projects}).
6966 Restrict an agenda command to the current buffer@footnote{For backward
6967 compatibility, you can also press @kbd{1} to restrict to the current
6968 buffer.}. After pressing @kbd{<}, you still need to press the character
6969 selecting the command.
6971 If there is an active region, restrict the following agenda command to
6972 the region. Otherwise, restrict it to the current subtree@footnote{For
6973 backward compatibility, you can also press @kbd{0} to restrict to the
6974 current region/subtree.}. After pressing @kbd{< <}, you still need to press the
6975 character selecting the command.
6978 You can also define custom commands that will be accessible through the
6979 dispatcher, just like the default commands. This includes the
6980 possibility to create extended agenda buffers that contain several
6981 blocks together, for example the weekly agenda, the global TODO list and
6982 a number of special tags matches. @xref{Custom agenda views}.
6984 @node Built-in agenda views, Presentation and sorting, Agenda dispatcher, Agenda Views
6985 @section The built-in agenda views
6987 In this section we describe the built-in views.
6990 * Weekly/daily agenda:: The calendar page with current tasks
6991 * Global TODO list:: All unfinished action items
6992 * Matching tags and properties:: Structured information with fine-tuned search
6993 * Timeline:: Time-sorted view for single file
6994 * Search view:: Find entries by searching for text
6995 * Stuck projects:: Find projects you need to review
6998 @node Weekly/daily agenda, Global TODO list, Built-in agenda views, Built-in agenda views
6999 @subsection The weekly/daily agenda
7001 @cindex weekly agenda
7002 @cindex daily agenda
7004 The purpose of the weekly/daily @emph{agenda} is to act like a page of a
7005 paper agenda, showing all the tasks for the current week or day.
7008 @cindex org-agenda, command
7009 @orgcmd{C-c a a,org-agenda-list}
7010 @vindex org-agenda-ndays
7011 Compile an agenda for the current week from a list of Org files. The agenda
7012 shows the entries for each day. With a numeric prefix@footnote{For backward
7013 compatibility, the universal prefix @kbd{C-u} causes all TODO entries to be
7014 listed before the agenda. This feature is deprecated, use the dedicated TODO
7015 list, or a block agenda instead (@pxref{Block agenda}).} (like @kbd{C-u 2 1
7016 C-c a a}) you may set the number of days to be displayed (see also the
7017 variable @code{org-agenda-ndays})
7020 Remote editing from the agenda buffer means, for example, that you can
7021 change the dates of deadlines and appointments from the agenda buffer.
7022 The commands available in the Agenda buffer are listed in @ref{Agenda
7025 @subsubheading Calendar/Diary integration
7026 @cindex calendar integration
7027 @cindex diary integration
7029 Emacs contains the calendar and diary by Edward M. Reingold. The
7030 calendar displays a three-month calendar with holidays from different
7031 countries and cultures. The diary allows you to keep track of
7032 anniversaries, lunar phases, sunrise/set, recurrent appointments
7033 (weekly, monthly) and more. In this way, it is quite complementary to
7034 Org. It can be very useful to combine output from Org with
7037 In order to include entries from the Emacs diary into Org-mode's
7038 agenda, you only need to customize the variable
7041 (setq org-agenda-include-diary t)
7044 @noindent After that, everything will happen automatically. All diary
7045 entries including holidays, anniversaries, etc., will be included in the
7046 agenda buffer created by Org-mode. @key{SPC}, @key{TAB}, and
7047 @key{RET} can be used from the agenda buffer to jump to the diary
7048 file in order to edit existing diary entries. The @kbd{i} command to
7049 insert new entries for the current date works in the agenda buffer, as
7050 well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
7051 Sunrise/Sunset times, show lunar phases and to convert to other
7052 calendars, respectively. @kbd{c} can be used to switch back and forth
7053 between calendar and agenda.
7055 If you are using the diary only for sexp entries and holidays, it is
7056 faster to not use the above setting, but instead to copy or even move
7057 the entries into an Org file. Org-mode evaluates diary-style sexp
7058 entries, and does it faster because there is no overhead for first
7059 creating the diary display. Note that the sexp entries must start at
7060 the left margin, no whitespace is allowed before them. For example,
7061 the following segment of an Org file will be processed and entries
7062 will be made in the agenda:
7065 * Birthdays and similar stuff
7067 %%(org-calendar-holiday) ; special function for holiday names
7069 %%(diary-anniversary 5 14 1956)@footnote{Note that the order of the arguments (month, day, year) depends on the setting of @code{calendar-date-style}.} Arthur Dent is %d years old
7070 %%(diary-anniversary 10 2 1869) Mahatma Gandhi would be %d years old
7073 @subsubheading Anniversaries from BBDB
7074 @cindex BBDB, anniversaries
7075 @cindex anniversaries, from BBDB
7077 If you are using the Big Brothers Database to store your contacts, you will
7078 very likely prefer to store anniversaries in BBDB rather than in a
7079 separate Org or diary file. Org supports this and will show BBDB
7080 anniversaries as part of the agenda. All you need to do is to add the
7081 following to one your your agenda files:
7088 %%(org-bbdb-anniversaries)
7091 You can then go ahead and define anniversaries for a BBDB record. Basically,
7092 you need to press @kbd{C-o anniversary @key{RET}} with the cursor in a BBDB
7093 record and then add the date in the format @code{YYYY-MM-DD}, followed by a
7094 space and the class of the anniversary (@samp{birthday} or @samp{wedding}, or
7095 a format string). If you omit the class, it will default to @samp{birthday}.
7096 Here are a few examples, the header for the file @file{org-bbdb.el} contains
7097 more detailed information.
7102 2008-04-14 %s released version 6.01 of org-mode, %d years ago
7105 After a change to BBDB, or for the first agenda display during an Emacs
7106 session, the agenda display will suffer a short delay as Org updates its
7107 hash with anniversaries. However, from then on things will be very fast---much
7108 faster in fact than a long list of @samp{%%(diary-anniversary)} entries
7109 in an Org or Diary file.
7111 @subsubheading Appointment reminders
7112 @cindex @file{appt.el}
7113 @cindex appointment reminders
7115 Org can interact with Emacs appointments notification facility. To add all
7116 the appointments of your agenda files, use the command
7117 @code{org-agenda-to-appt}. This command also lets you filter through the
7118 list of your appointments and add only those belonging to a specific category
7119 or matching a regular expression. See the docstring for details.
7121 @node Global TODO list, Matching tags and properties, Weekly/daily agenda, Built-in agenda views
7122 @subsection The global TODO list
7123 @cindex global TODO list
7124 @cindex TODO list, global
7126 The global TODO list contains all unfinished TODO items formatted and
7127 collected into a single place.
7130 @orgcmd{C-c a t,org-todo-list}
7131 Show the global TODO list. This collects the TODO items from all agenda
7132 files (@pxref{Agenda Views}) into a single buffer. By default, this lists
7133 items with a state the is not a DONE state. The buffer is in
7134 @code{agenda-mode}, so there are commands to examine and manipulate the TODO
7135 entries directly from that buffer (@pxref{Agenda commands}).
7136 @orgcmd{C-c a T,org-todo-list}
7137 @cindex TODO keyword matching
7138 @vindex org-todo-keywords
7139 Like the above, but allows selection of a specific TODO keyword. You can
7140 also do this by specifying a prefix argument to @kbd{C-c a t}. You are
7141 prompted for a keyword, and you may also specify several keywords by
7142 separating them with @samp{|} as the boolean OR operator. With a numeric
7143 prefix, the nth keyword in @code{org-todo-keywords} is selected.
7145 The @kbd{r} key in the agenda buffer regenerates it, and you can give
7146 a prefix argument to this command to change the selected TODO keyword,
7147 for example @kbd{3 r}. If you often need a search for a specific
7148 keyword, define a custom command for it (@pxref{Agenda dispatcher}).@*
7149 Matching specific TODO keywords can also be done as part of a tags
7150 search (@pxref{Tag searches}).
7153 Remote editing of TODO items means that you can change the state of a
7154 TODO entry with a single key press. The commands available in the
7155 TODO list are described in @ref{Agenda commands}.
7157 @cindex sublevels, inclusion into TODO list
7158 Normally the global TODO list simply shows all headlines with TODO
7159 keywords. This list can become very long. There are two ways to keep
7163 @vindex org-agenda-todo-ignore-scheduled
7164 @vindex org-agenda-todo-ignore-deadlines
7165 @vindex org-agenda-todo-ignore-with-date
7166 Some people view a TODO item that has been @emph{scheduled} for execution or
7167 have a @emph{deadline} (@pxref{Timestamps}) as no longer @emph{open}.
7168 Configure the variables @code{org-agenda-todo-ignore-scheduled},
7169 @code{org-agenda-todo-ignore-deadlines}, and/or
7170 @code{org-agenda-todo-ignore-with-date} to exclude such items from the
7173 @vindex org-agenda-todo-list-sublevels
7174 TODO items may have sublevels to break up the task into subtasks. In
7175 such cases it may be enough to list only the highest level TODO headline
7176 and omit the sublevels from the global list. Configure the variable
7177 @code{org-agenda-todo-list-sublevels} to get this behavior.
7180 @node Matching tags and properties, Timeline, Global TODO list, Built-in agenda views
7181 @subsection Matching tags and properties
7182 @cindex matching, of tags
7183 @cindex matching, of properties
7187 If headlines in the agenda files are marked with @emph{tags} (@pxref{Tags}),
7188 or have properties (@pxref{Properties and Columns}), you can select headlines
7189 based on this metadata and collect them into an agenda buffer. The match
7190 syntax described here also applies when creating sparse trees with @kbd{C-c /
7194 @orgcmd{C-c a m,org-tags-view}
7195 Produce a list of all headlines that match a given set of tags. The
7196 command prompts for a selection criterion, which is a boolean logic
7197 expression with tags, like @samp{+work+urgent-withboss} or
7198 @samp{work|home} (@pxref{Tags}). If you often need a specific search,
7199 define a custom command for it (@pxref{Agenda dispatcher}).
7200 @orgcmd{C-c a M,org-tags-view}
7201 @vindex org-tags-match-list-sublevels
7202 @vindex org-agenda-tags-todo-honor-ignore-options
7203 Like @kbd{C-c a m}, but only select headlines that are also TODO items in a
7204 not-DONE state and force checking subitems (see variable
7205 @code{org-tags-match-list-sublevels}). To exclude scheduled/deadline items,
7206 see the variable @code{org-agenda-tags-todo-honor-ignore-options}. Matching
7207 specific TODO keywords together with a tags match is also possible, see
7211 The commands available in the tags list are described in @ref{Agenda
7214 @subsubheading Match syntax
7216 @cindex Boolean logic, for tag/property searches
7217 A search string can use Boolean operators @samp{&} for AND and @samp{|} for
7218 OR. @samp{&} binds more strongly than @samp{|}. Parentheses are currently
7219 not implemented. Each element in the search is either a tag, a regular
7220 expression matching tags, or an expression like @code{PROPERTY OPERATOR
7221 VALUE} with a comparison operator, accessing a property value. Each element
7222 may be preceded by @samp{-}, to select against it, and @samp{+} is syntactic
7223 sugar for positive selection. The AND operator @samp{&} is optional when
7224 @samp{+} or @samp{-} is present. Here are some examples, using only tags.
7228 Select headlines tagged @samp{:work:}, but discard those also tagged
7231 Selects lines tagged @samp{:work:} or @samp{:laptop:}.
7232 @item work|laptop+night
7233 Like before, but require the @samp{:laptop:} lines to be tagged also
7237 @cindex regular expressions, with tags search
7238 Instead of a tag, you may also specify a regular expression enclosed in curly
7239 braces. For example,
7240 @samp{work+@{^boss.*@}} matches headlines that contain the tag
7241 @samp{:work:} and any tag @i{starting} with @samp{boss}.
7243 @cindex TODO keyword matching, with tags search
7244 @cindex level, require for tags/property match
7245 @cindex category, require for tags/property match
7246 @vindex org-odd-levels-only
7247 You may also test for properties (@pxref{Properties and Columns}) at the same
7248 time as matching tags. The properties may be real properties, or special
7249 properties that represent other metadata (@pxref{Special properties}). For
7250 example, the ``property'' @code{TODO} represents the TODO keyword of the
7251 entry. Or, the ``property'' @code{LEVEL} represents the level of an entry.
7252 So a search @samp{+LEVEL=3+boss-TODO="DONE"} lists all level three headlines
7253 that have the tag @samp{boss} and are @emph{not} marked with the TODO keyword
7254 DONE. In buffers with @code{org-odd-levels-only} set, @samp{LEVEL} does not
7255 count the number of stars, but @samp{LEVEL=2} will correspond to 3 stars etc.
7257 Here are more examples:
7259 @item work+TODO="WAITING"
7260 Select @samp{:work:}-tagged TODO lines with the specific TODO
7261 keyword @samp{WAITING}.
7262 @item work+TODO="WAITING"|home+TODO="WAITING"
7263 Waiting tasks both at work and at home.
7266 When matching properties, a number of different operators can be used to test
7267 the value of a property. Here is a complex example:
7270 +work-boss+PRIORITY="A"+Coffee="unlimited"+Effort<2 \
7271 +With=@{Sarah\|Denny@}+SCHEDULED>="<2008-10-11>"
7275 The type of comparison will depend on how the comparison value is written:
7278 If the comparison value is a plain number, a numerical comparison is done,
7279 and the allowed operators are @samp{<}, @samp{=}, @samp{>}, @samp{<=},
7280 @samp{>=}, and @samp{<>}.
7282 If the comparison value is enclosed in double-quotes,
7283 a string comparison is done, and the same operators are allowed.
7285 If the comparison value is enclosed in double-quotes @emph{and} angular
7286 brackets (like @samp{DEADLINE<="<2008-12-24 18:30>"}), both values are
7287 assumed to be date/time specifications in the standard Org way, and the
7288 comparison will be done accordingly. Special values that will be recognized
7289 are @code{"<now>"} for now (including time), and @code{"<today>"}, and
7290 @code{"<tomorrow>"} for these days at 0:00 hours, i.e. without a time
7291 specification. Also strings like @code{"<+5d>"} or @code{"<-2m>"} with units
7292 @code{d}, @code{w}, @code{m}, and @code{y} for day, week, month, and year,
7293 respectively, can be used.
7295 If the comparison value is enclosed
7296 in curly braces, a regexp match is performed, with @samp{=} meaning that the
7297 regexp matches the property value, and @samp{<>} meaning that it does not
7301 So the search string in the example finds entries tagged @samp{:work:} but
7302 not @samp{:boss:}, which also have a priority value @samp{A}, a
7303 @samp{:Coffee:} property with the value @samp{unlimited}, an @samp{Effort}
7304 property that is numerically smaller than 2, a @samp{:With:} property that is
7305 matched by the regular expression @samp{Sarah\|Denny}, and that are scheduled
7306 on or after October 11, 2008.
7308 Accessing TODO, LEVEL, and CATEGORY during a search is fast. Accessing any
7309 other properties will slow down the search. However, once you have paid the
7310 price by accessing one property, testing additional properties is cheap
7313 You can configure Org-mode to use property inheritance during a search, but
7314 beware that this can slow down searches considerably. See @ref{Property
7315 inheritance}, for details.
7317 For backward compatibility, and also for typing speed, there is also a
7318 different way to test TODO states in a search. For this, terminate the
7319 tags/property part of the search string (which may include several terms
7320 connected with @samp{|}) with a @samp{/} and then specify a Boolean
7321 expression just for TODO keywords. The syntax is then similar to that for
7322 tags, but should be applied with care: for example, a positive selection on
7323 several TODO keywords cannot meaningfully be combined with boolean AND.
7324 However, @emph{negative selection} combined with AND can be meaningful. To
7325 make sure that only lines are checked that actually have any TODO keyword
7326 (resulting in a speed-up), use @kbd{C-c a M}, or equivalently start the TODO
7327 part after the slash with @samp{!}. Using @kbd{C-c a M} or @samp{/!} will
7328 not match TODO keywords in a DONE state. Examples:
7332 Same as @samp{work+TODO="WAITING"}
7333 @item work/!-WAITING-NEXT
7334 Select @samp{:work:}-tagged TODO lines that are neither @samp{WAITING}
7336 @item work/!+WAITING|+NEXT
7337 Select @samp{:work:}-tagged TODO lines that are either @samp{WAITING} or
7341 @node Timeline, Search view, Matching tags and properties, Built-in agenda views
7342 @subsection Timeline for a single file
7343 @cindex timeline, single file
7344 @cindex time-sorted view
7346 The timeline summarizes all time-stamped items from a single Org-mode
7347 file in a @emph{time-sorted view}. The main purpose of this command is
7348 to give an overview over events in a project.
7351 @orgcmd{C-c a L,org-timeline}
7352 Show a time-sorted view of the Org file, with all time-stamped items.
7353 When called with a @kbd{C-u} prefix, all unfinished TODO entries
7354 (scheduled or not) are also listed under the current date.
7358 The commands available in the timeline buffer are listed in
7359 @ref{Agenda commands}.
7361 @node Search view, Stuck projects, Timeline, Built-in agenda views
7362 @subsection Search view
7365 @cindex searching, for text
7367 This agenda view is a general text search facility for Org-mode entries.
7368 It is particularly useful to find notes.
7371 @orgcmd{C-c a s,org-search-view}
7372 This is a special search that lets you select entries by matching a substring
7373 or specific words using a boolean logic.
7375 For example, the search string @samp{computer equipment} will find entries
7376 that contain @samp{computer equipment} as a substring. If the two words are
7377 separated by more space or a line break, the search will still match.
7378 Search view can also search for specific keywords in the entry, using Boolean
7379 logic. The search string @samp{+computer +wifi -ethernet -@{8\.11[bg]@}}
7380 will search for note entries that contain the keywords @code{computer}
7381 and @code{wifi}, but not the keyword @code{ethernet}, and which are also
7382 not matched by the regular expression @code{8\.11[bg]}, meaning to
7383 exclude both 8.11b and 8.11g. The first @samp{+} is necessary to turn on
7384 word search, other @samp{+} characters are optional. For more details, see
7385 the docstring of the command @code{org-search-view}.
7387 @vindex org-agenda-text-search-extra-files
7388 Note that in addition to the agenda files, this command will also search
7389 the files listed in @code{org-agenda-text-search-extra-files}.
7391 @node Stuck projects, , Search view, Built-in agenda views
7392 @subsection Stuck projects
7394 If you are following a system like David Allen's GTD to organize your
7395 work, one of the ``duties'' you have is a regular review to make sure
7396 that all projects move along. A @emph{stuck} project is a project that
7397 has no defined next actions, so it will never show up in the TODO lists
7398 Org-mode produces. During the review, you need to identify such
7399 projects and define next actions for them.
7402 @orgcmd{C-c a #,org-agenda-list-stuck-projects}
7403 List projects that are stuck.
7406 @vindex org-stuck-projects
7407 Customize the variable @code{org-stuck-projects} to define what a stuck
7408 project is and how to find it.
7411 You almost certainly will have to configure this view before it will
7412 work for you. The built-in default assumes that all your projects are
7413 level-2 headlines, and that a project is not stuck if it has at least
7414 one entry marked with a TODO keyword TODO or NEXT or NEXTACTION.
7416 Let's assume that you, in your own way of using Org-mode, identify
7417 projects with a tag PROJECT, and that you use a TODO keyword MAYBE to
7418 indicate a project that should not be considered yet. Let's further
7419 assume that the TODO keyword DONE marks finished projects, and that NEXT
7420 and TODO indicate next actions. The tag @@SHOP indicates shopping and
7421 is a next action even without the NEXT tag. Finally, if the project
7422 contains the special word IGNORE anywhere, it should not be listed
7423 either. In this case you would start by identifying eligible projects
7424 with a tags/todo match@footnote{@xref{Tag searches}.}
7425 @samp{+PROJECT/-MAYBE-DONE}, and then check for TODO, NEXT, @@SHOP, and
7426 IGNORE in the subtree to identify projects that are not stuck. The
7427 correct customization for this is
7430 (setq org-stuck-projects
7431 '("+PROJECT/-MAYBE-DONE" ("NEXT" "TODO") ("@@SHOP")
7435 Note that if a project is identified as non-stuck, the subtree of this entry
7436 will still be searched for stuck projects.
7438 @node Presentation and sorting, Agenda commands, Built-in agenda views, Agenda Views
7439 @section Presentation and sorting
7440 @cindex presentation, of agenda items
7442 @vindex org-agenda-prefix-format
7443 Before displaying items in an agenda view, Org-mode visually prepares
7444 the items and sorts them. Each item occupies a single line. The line
7445 starts with a @emph{prefix} that contains the @emph{category}
7446 (@pxref{Categories}) of the item and other important information. You can
7447 customize the prefix using the option @code{org-agenda-prefix-format}.
7448 The prefix is followed by a cleaned-up version of the outline headline
7449 associated with the item.
7452 * Categories:: Not all tasks are equal
7453 * Time-of-day specifications:: How the agenda knows the time
7454 * Sorting of agenda items:: The order of things
7457 @node Categories, Time-of-day specifications, Presentation and sorting, Presentation and sorting
7458 @subsection Categories
7462 The category is a broad label assigned to each agenda item. By default,
7463 the category is simply derived from the file name, but you can also
7464 specify it with a special line in the buffer, like this@footnote{For
7465 backward compatibility, the following also works: if there are several
7466 such lines in a file, each specifies the category for the text below it.
7467 The first category also applies to any text before the first CATEGORY
7468 line. However, using this method is @emph{strongly} deprecated as it is
7469 incompatible with the outline structure of the document. The correct
7470 method for setting multiple categories in a buffer is using a
7478 @cindex property, CATEGORY
7479 If you would like to have a special CATEGORY for a single entry or a
7480 (sub)tree, give the entry a @code{:CATEGORY:} property with the
7481 special category you want to apply as the value.
7484 The display in the agenda buffer looks best if the category is not
7485 longer than 10 characters.
7488 You can set up icons for category by customizing the
7489 @code{org-agenda-category-icon-alist} variable.
7491 @node Time-of-day specifications, Sorting of agenda items, Categories, Presentation and sorting
7492 @subsection Time-of-day specifications
7493 @cindex time-of-day specification
7495 Org-mode checks each agenda item for a time-of-day specification. The
7496 time can be part of the timestamp that triggered inclusion into the
7497 agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}. Time
7498 ranges can be specified with two timestamps, like
7500 @w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
7502 In the headline of the entry itself, a time(range) may also appear as
7503 plain text (like @samp{12:45} or a @samp{8:30-1pm}). If the agenda
7504 integrates the Emacs diary (@pxref{Weekly/daily agenda}), time
7505 specifications in diary entries are recognized as well.
7507 For agenda display, Org-mode extracts the time and displays it in a
7508 standard 24 hour format as part of the prefix. The example times in
7509 the previous paragraphs would end up in the agenda like this:
7512 8:30-13:00 Arthur Dent lies in front of the bulldozer
7513 12:45...... Ford Prefect arrives and takes Arthur to the pub
7514 19:00...... The Vogon reads his poem
7515 20:30-22:15 Marvin escorts the Hitchhikers to the bridge
7519 If the agenda is in single-day mode, or for the display of today, the
7520 timed entries are embedded in a time grid, like
7523 8:00...... ------------------
7524 8:30-13:00 Arthur Dent lies in front of the bulldozer
7525 10:00...... ------------------
7526 12:00...... ------------------
7527 12:45...... Ford Prefect arrives and takes Arthur to the pub
7528 14:00...... ------------------
7529 16:00...... ------------------
7530 18:00...... ------------------
7531 19:00...... The Vogon reads his poem
7532 20:00...... ------------------
7533 20:30-22:15 Marvin escorts the Hitchhikers to the bridge
7536 @vindex org-agenda-use-time-grid
7537 @vindex org-agenda-time-grid
7538 The time grid can be turned on and off with the variable
7539 @code{org-agenda-use-time-grid}, and can be configured with
7540 @code{org-agenda-time-grid}.
7542 @node Sorting of agenda items, , Time-of-day specifications, Presentation and sorting
7543 @subsection Sorting of agenda items
7544 @cindex sorting, of agenda items
7545 @cindex priorities, of agenda items
7546 Before being inserted into a view, the items are sorted. How this is
7547 done depends on the type of view.
7550 @vindex org-agenda-files
7551 For the daily/weekly agenda, the items for each day are sorted. The
7552 default order is to first collect all items containing an explicit
7553 time-of-day specification. These entries will be shown at the beginning
7554 of the list, as a @emph{schedule} for the day. After that, items remain
7555 grouped in categories, in the sequence given by @code{org-agenda-files}.
7556 Within each category, items are sorted by priority (@pxref{Priorities}),
7557 which is composed of the base priority (2000 for priority @samp{A}, 1000
7558 for @samp{B}, and 0 for @samp{C}), plus additional increments for
7559 overdue scheduled or deadline items.
7561 For the TODO list, items remain in the order of categories, but within
7562 each category, sorting takes place according to priority
7563 (@pxref{Priorities}). The priority used for sorting derives from the
7564 priority cookie, with additions depending on how close an item is to its due
7567 For tags matches, items are not sorted at all, but just appear in the
7568 sequence in which they are found in the agenda files.
7571 @vindex org-agenda-sorting-strategy
7572 Sorting can be customized using the variable
7573 @code{org-agenda-sorting-strategy}, and may also include criteria based on
7574 the estimated effort of an entry (@pxref{Effort estimates}).
7576 @node Agenda commands, Custom agenda views, Presentation and sorting, Agenda Views
7577 @section Commands in the agenda buffer
7578 @cindex commands, in agenda buffer
7580 Entries in the agenda buffer are linked back to the Org file or diary
7581 file where they originate. You are not allowed to edit the agenda
7582 buffer itself, but commands are provided to show and jump to the
7583 original entry location, and to edit the Org files ``remotely'' from
7584 the agenda buffer. In this way, all information is stored only once,
7585 removing the risk that your agenda and note files may diverge.
7587 Some commands can be executed with mouse clicks on agenda lines. For
7588 the other commands, the cursor needs to be in the desired line.
7591 @tsubheading{Motion}
7592 @cindex motion commands in agenda
7593 @orgcmd{n,org-agenda-next-line}
7594 Next line (same as @key{up} and @kbd{C-p}).
7595 @orgcmd{p,org-agenda-previous-line}
7596 Previous line (same as @key{down} and @kbd{C-n}).
7597 @tsubheading{View/Go to Org file}
7598 @orgcmdkkc{@key{SPC},mouse-3,org-agenda-show-and-scroll-up}
7599 Display the original location of the item in another window.
7600 With prefix arg, make sure that the entire entry is made visible in the
7601 outline, not only the heading.
7603 @orgcmd{L,org-agenda-recenter}
7604 Display original location and recenter that window.
7606 @orgcmdkkc{@key{TAB},mouse-2,org-agenda-goto}
7607 Go to the original location of the item in another window.
7609 @orgcmd{@key{RET},org-agenda-switch-to}
7610 Go to the original location of the item and delete other windows.
7612 @orgcmd{F,org-agenda-follow-mode}
7613 @vindex org-agenda-start-with-follow-mode
7614 Toggle Follow mode. In Follow mode, as you move the cursor through
7615 the agenda buffer, the other window always shows the corresponding
7616 location in the Org file. The initial setting for this mode in new
7617 agenda buffers can be set with the variable
7618 @code{org-agenda-start-with-follow-mode}.
7620 @orgcmd{C-c C-x b,org-agenda-tree-to-indirect-buffer}
7621 Display the entire subtree of the current item in an indirect buffer. With a
7622 numeric prefix argument N, go up to level N and then take that tree. If N is
7623 negative, go up that many levels. With a @kbd{C-u} prefix, do not remove the
7624 previously used indirect buffer.
7626 @orgcmd{C-c C-o,org-agenda-open-link}
7627 Follow a link in the entry. This will offer a selection of any links in the
7628 text belonging to the referenced Org node. If there is only one link, it
7629 will be followed without a selection prompt.
7631 @tsubheading{Change display}
7632 @cindex display changing, in agenda
7635 Delete other windows.
7643 @c @item v d @ @r{or short} @ d
7644 @c @itemx v w @ @r{or short} @ w
7647 @orgcmdkskc{v d,d,org-aganda-day-view}
7648 @xorgcmdkskc{v w,w,org-aganda-day-view}
7649 @xorgcmd{v m,org-agenda-month-view}
7650 @xorgcmd{v y,org-agenda-month-year}
7651 Switch to day/week/month/year view. When switching to day or week view,
7652 this setting becomes the default for subsequent agenda commands. Since
7653 month and year views are slow to create, they do not become the default.
7654 A numeric prefix argument may be used to jump directly to a specific day
7655 of the year, ISO week, month, or year, respectively. For example,
7656 @kbd{32 d} jumps to February 1st, @kbd{9 w} to ISO week number 9. When
7657 setting day, week, or month view, a year may be encoded in the prefix
7658 argument as well. For example, @kbd{200712 w} will jump to week 12 in
7659 2007. If such a year specification has only one or two digits, it will
7660 be mapped to the interval 1938-2037.
7662 @orgcmd{f,org-agenda-later}
7663 @vindex org-agenda-ndays
7664 Go forward in time to display the following @code{org-agenda-ndays} days.
7665 For example, if the display covers a week, switch to the following week.
7666 With prefix arg, go forward that many times @code{org-agenda-ndays} days.
7668 @orgcmd{b,org-agenda-earlier}
7669 Go backward in time to display earlier dates.
7671 @orgcmd{.,org-agenda-goto-today}
7674 @orgcmd{j,org-agenda-goto-date}
7675 Prompt for a date and go there.
7677 @orgcmd{J,org-agenda-clock-goto}
7678 Go to the currently clocked-in task @i{in the agenda buffer}.
7680 @orgcmd{D,org-agenda-toggle-diary}
7681 Toggle the inclusion of diary entries. See @ref{Weekly/daily agenda}.
7683 @orgcmdkskc{v l,l,org-agenda-log-mode}
7685 @vindex org-log-done
7686 @vindex org-agenda-log-mode-items
7687 Toggle Logbook mode. In Logbook mode, entries that were marked DONE while
7688 logging was on (variable @code{org-log-done}) are shown in the agenda, as are
7689 entries that have been clocked on that day. You can configure the entry
7690 types that should be included in log mode using the variable
7691 @code{org-agenda-log-mode-items}. When called with a @kbd{C-u} prefix, show
7692 all possible logbook entries, including state changes. When called with two
7693 prefix args @kbd{C-u C-u}, show only logging information, nothing else.
7694 @kbd{v L} is equivalent to @kbd{C-u v l}.
7696 @orgcmdkskc{v [,[,org-agenda-manipulate-query-add}
7697 Include inactive timestamps into the current view. Only for weekly/daily
7698 agenda and timeline views.
7700 @orgcmd{v a,org-agenda-archives-mode}
7701 @xorgcmd{v A,org-agenda-archives-mode 'files}
7702 Toggle Archives mode. In Archives mode, trees that are marked
7703 @code{ARCHIVED} are also scanned when producing the agenda. When you use the
7704 capital @kbd{A}, even all archive files are included. To exit archives mode,
7705 press @kbd{v a} again.
7707 @orgcmdkskc{v R,R,org-agenda-clockreport-mode}
7708 @vindex org-agenda-start-with-clockreport-mode
7709 Toggle Clockreport mode. In Clockreport mode, the daily/weekly agenda will
7710 always show a table with the clocked times for the timespan and file scope
7711 covered by the current agenda view. The initial setting for this mode in new
7712 agenda buffers can be set with the variable
7713 @code{org-agenda-start-with-clockreport-mode}. By using a prefix argument
7714 when toggling this mode (i.e. @kbd{C-u R}), the clock table will not show
7715 contributions from entries that are hidden by agenda filtering@footnote{Only
7716 tags filtering will be respected here, effort filtering is ignored.}.
7718 @orgcmdkskc{v E,E,org-agenda-entry-text-mode}
7719 @vindex org-agenda-start-with-entry-text-mode
7720 @vindex org-agenda-entry-text-maxlines
7721 Toggle entry text mode. In entry text mode, a number of lines from the Org
7722 outline node referenced by an agenda line will be displayed below the line.
7723 The maximum number of lines is given by the variable
7724 @code{org-agenda-entry-text-maxlines}. Calling this command with a numeric
7725 prefix argument will temporarily modify that number to the prefix value.
7727 @orgcmd{G,org-agenda-toggle-time-grid}
7728 @vindex org-agenda-use-time-grid
7729 @vindex org-agenda-time-grid
7730 Toggle the time grid on and off. See also the variables
7731 @code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
7733 @orgcmd{r,org-agenda-rodo}
7734 Recreate the agenda buffer, for example to reflect the changes after
7735 modification of the timestamps of items with @kbd{S-@key{left}} and
7736 @kbd{S-@key{right}}. When the buffer is the global TODO list, a prefix
7737 argument is interpreted to create a selective list for a specific TODO
7739 @orgcmd{g,org-agenda-rodo}
7742 @orgcmdkskc{C-x C-s,s,org-save-all-org-buffers}
7743 Save all Org buffers in the current Emacs session, and also the locations of
7746 @orgcmd{C-c C-x C-c,org-agenda-columns}
7747 @vindex org-columns-default-format
7748 Invoke column view (@pxref{Column view}) in the agenda buffer. The column
7749 view format is taken from the entry at point, or (if there is no entry at
7750 point), from the first entry in the agenda view. So whatever the format for
7751 that entry would be in the original buffer (taken from a property, from a
7752 @code{#+COLUMNS} line, or from the default variable
7753 @code{org-columns-default-format}), will be used in the agenda.
7755 @orgcmd{C-c C-x >,org-agenda-remove-restriction-lock}
7756 Remove the restriction lock on the agenda, if it is currently restricted to a
7757 file or subtree (@pxref{Agenda files}).
7759 @tsubheading{Secondary filtering and query editing}
7760 @cindex filtering, by tag and effort, in agenda
7761 @cindex tag filtering, in agenda
7762 @cindex effort filtering, in agenda
7763 @cindex query editing, in agenda
7765 @orgcmd{/,org-agenda-filter-by-tag}
7766 @vindex org-agenda-filter-preset
7767 Filter the current agenda view with respect to a tag and/or effort estimates.
7768 The difference between this and a custom agenda command is that filtering is
7769 very fast, so that you can switch quickly between different filters without
7770 having to recreate the agenda@footnote{Custom commands can preset a filter by
7771 binding the variable @code{org-agenda-filter-preset} as an option. This
7772 filter will then be applied to the view and persist as a basic filter through
7773 refreshes and more secondary filtering. The filter is a global property of
7774 the entire agenda view - in a block agenda, you should only set this in the
7775 global options section, not in the section of an individual block.}
7777 You will be prompted for a tag selection letter, SPC will mean any tag at
7778 all. Pressing @key{TAB} at that prompt will offer use completion to select a
7779 tag (including any tags that do not have a selection character). The command
7780 then hides all entries that do not contain or inherit this tag. When called
7781 with prefix arg, remove the entries that @emph{do} have the tag. A second
7782 @kbd{/} at the prompt will turn off the filter and unhide any hidden entries.
7783 If the first key you press is either @kbd{+} or @kbd{-}, the previous filter
7784 will be narrowed by requiring or forbidding the selected additional tag.
7785 Instead of pressing @kbd{+} or @kbd{-} after @kbd{/}, you can also
7786 immediately use the @kbd{\} command.
7788 @vindex org-sort-agenda-noeffort-is-high
7789 In order to filter for effort estimates, you should set-up allowed
7790 efforts globally, for example
7792 (setq org-global-properties
7793 '(("Effort_ALL". "0 0:10 0:30 1:00 2:00 3:00 4:00")))
7795 You can then filter for an effort by first typing an operator, one of
7796 @kbd{<}, @kbd{>}, and @kbd{=}, and then the one-digit index of an effort
7797 estimate in your array of allowed values, where @kbd{0} means the 10th value.
7798 The filter will then restrict to entries with effort smaller-or-equal, equal,
7799 or larger-or-equal than the selected value. If the digits 0-9 are not used
7800 as fast access keys to tags, you can also simply press the index digit
7801 directly without an operator. In this case, @kbd{<} will be assumed. For
7802 application of the operator, entries without a defined effort will be treated
7803 according to the value of @code{org-sort-agenda-noeffort-is-high}. To filter
7804 for tasks without effort definition, press @kbd{?} as the operator.
7806 Org also supports automatic, context-aware tag filtering. If the variable
7807 @code{org-agenda-auto-exclude-function} is set to a user-defined function,
7808 that function can decide which tags should be excluded from the agenda
7809 automatically. Once this is set, the @kbd{/} command then accepts @kbd{RET}
7810 as a sub-option key and runs the auto exclusion logic. For example, let's
7811 say you use a @code{Net} tag to identify tasks which need network access, an
7812 @code{Errand} tag for errands in town, and a @code{Call} tag for making phone
7813 calls. You could auto-exclude these tags based on the availability of the
7814 Internet, and outside of business hours, with something like this:
7818 (defun org-my-auto-exclude-function (tag)
7820 ((string= tag "Net")
7821 (/= 0 (call-process "/sbin/ping" nil nil nil
7822 "-c1" "-q" "-t1" "mail.gnu.org")))
7823 ((or (string= tag "Errand") (string= tag "Call"))
7824 (let ((hour (nth 2 (decode-time))))
7825 (or (< hour 8) (> hour 21)))))
7828 (setq org-agenda-auto-exclude-function 'org-my-auto-exclude-function)
7832 @orgcmd{\,org-agenda-filter-by-tag-refine}
7833 Narrow the current agenda filter by an additional condition. When called with
7834 prefix arg, remove the entries that @emph{do} have the tag, or that do match
7835 the effort criterion. You can achieve the same effect by pressing @kbd{+} or
7836 @kbd{-} as the first key after the @kbd{/} command.
7845 @item @r{in} search view
7846 add new search words (@kbd{[} and @kbd{]}) or new regular expressions
7847 (@kbd{@{} and @kbd{@}}) to the query string. The opening bracket/brace will
7848 add a positive search term prefixed by @samp{+}, indicating that this search
7849 term @i{must} occur/match in the entry. The closing bracket/brace will add a
7850 negative search term which @i{must not} occur/match in the entry for it to be
7854 @tsubheading{Remote editing}
7855 @cindex remote editing, from agenda
7860 @cindex undoing remote-editing events
7861 @cindex remote editing, undo
7862 @orgcmd{C-_,org-agenda-undo}
7863 Undo a change due to a remote editing command. The change is undone
7864 both in the agenda buffer and in the remote buffer.
7866 @orgcmd{t,org-agenda-todo}
7867 Change the TODO state of the item, both in the agenda and in the
7870 @orgcmd{C-S-@key{right},org-agenda-todo-nextset}
7871 @orgcmd{C-S-@key{left},org-agenda-todo-previousset}
7872 Switch to the next/previous set of TODO keywords.
7874 @orgcmd{C-k,org-agenda-kill}
7875 @vindex org-agenda-confirm-kill
7876 Delete the current agenda item along with the entire subtree belonging
7877 to it in the original Org file. If the text to be deleted remotely
7878 is longer than one line, the kill needs to be confirmed by the user. See
7879 variable @code{org-agenda-confirm-kill}.
7881 @orgcmd{C-c C-w,org-agenda-refile}
7882 Refile the entry at point.
7884 @orgcmdkskc{C-c C-x C-a,a,org-agenda-archive-default-with-confirmation}
7885 @vindex org-archive-default-command
7886 Archive the subtree corresponding to the entry at point using the default
7887 archiving command set in @code{org-archive-default-command}. When using the
7888 @code{a} key, confirmation will be required.
7890 @orgcmd{C-c C-x a,org-agenda-toggle-archive-tag}
7891 Toggle the ARCHIVE tag for the current headline.
7893 @orgcmd{C-c C-x A,org-agenda-archive-to-archive-sibling}
7894 Move the subtree corresponding to the current entry to its @emph{archive
7897 @orgcmdkskc{C-c C-x C-s,$,org-agenda-archive}
7898 Archive the subtree corresponding to the current headline. This means the
7899 entry will be moved to the configured archive location, most likely a
7902 @orgcmd{T,org-agenda-show-tags}
7903 @vindex org-agenda-show-inherited-tags
7904 Show all tags associated with the current item. This is useful if you have
7905 turned off @code{org-agenda-show-inherited-tags}, but still want to see all
7906 tags of a headline occasionally.
7908 @orgcmd{:,org-agenda-set-tags}
7909 Set tags for the current headline. If there is an active region in the
7910 agenda, change a tag for all headings in the region.
7914 Set the priority for the current item (@command{org-agenda-priority}).
7915 Org-mode prompts for the priority character. If you reply with @key{SPC}, the
7916 priority cookie is removed from the entry.
7918 @orgcmd{P,org-agenda-show-priority}
7919 Display weighted priority of current item.
7921 @orgcmdkkc{+,S-@key{up},org-agenda-priority-up}
7922 Increase the priority of the current item. The priority is changed in
7923 the original buffer, but the agenda is not resorted. Use the @kbd{r}
7926 @orgcmdkkc{-,S-@key{down},org-agenda-priority-down}
7927 Decrease the priority of the current item.
7929 @orgcmdkkc{z,C-c C-z,org-agenda-add-note}
7930 @vindex org-log-into-drawer
7931 Add a note to the entry. This note will be recorded, and then files to the
7932 same location where state change notes are put. Depending on
7933 @code{org-log-into-drawer}, this maybe inside a drawer.
7935 @orgcmd{C-c C-a,org-attach}
7936 Dispatcher for all command related to attachments.
7938 @orgcmd{C-c C-s,org-agenda-schedule}
7939 Schedule this item, with prefix arg remove the scheduling timestamp
7941 @orgcmd{C-c C-d,org-agenda-deadline}
7942 Set a deadline for this item, with prefix arg remove the deadline.
7944 @orgcmd{k,org-agenda-action}
7945 Agenda actions, to set dates for selected items to the cursor date.
7946 This command also works in the calendar! The command prompts for an
7949 m @r{Mark the entry at point for action. You can also make entries}
7950 @r{in Org files with @kbd{C-c C-x C-k}.}
7951 d @r{Set the deadline of the marked entry to the date at point.}
7952 s @r{Schedule the marked entry at the date at point.}
7953 r @r{Call @code{org-capture} with the cursor date as default date.}
7956 Press @kbd{r} afterward to refresh the agenda and see the effect of the
7959 @orgcmd{S-@key{right},org-agenda-do-date-later}
7960 Change the timestamp associated with the current line by one day into the
7961 future. With a numeric prefix argument, change it by that many days. For
7962 example, @kbd{3 6 5 S-@key{right}} will change it by a year. With a
7963 @kbd{C-u} prefix, change the time by one hour. If you immediately repeat the
7964 command, it will continue to change hours even without the prefix arg. With
7965 a double @kbd{C-u C-u} prefix, do the same for changing minutes. The stamp
7966 is changed in the original Org file, but the change is not directly reflected
7967 in the agenda buffer. Use @kbd{r} or @kbd{g} to update the buffer.
7969 @orgcmd{S-@key{left},org-agenda-do-date-earlier}
7970 Change the timestamp associated with the current line by one day
7973 @orgcmd{>,org-agenda-date-prompt}
7974 Change the timestamp associated with the current line. The key @kbd{>} has
7975 been chosen, because it is the same as @kbd{S-.} on my keyboard.
7977 @orgcmd{I,org-agenda-clock-in}
7978 Start the clock on the current item. If a clock is running already, it
7981 @orgcmd{O,org-agenda-clock-out}
7982 Stop the previously started clock.
7984 @orgcmd{X,org-agenda-clock-cancel}
7985 Cancel the currently running clock.
7987 @orgcmd{J,org-agenda-clock-goto}
7988 Jump to the running clock in another window.
7990 @tsubheading{Bulk remote editing selected entries}
7991 @cindex remote editing, bulk, from agenda
7993 @orgcmd{m,org-agenda-bulk-mark}
7994 Mark the entry at point for bulk action.
7996 @orgcmd{u,org-agenda-bulk-unmark}
7997 Unmark entry for bulk action.
7999 @orgcmd{U,org-agenda-bulk-remove-all-marks}
8000 Unmark all marked entries for bulk action.
8002 @orgcmd{B,org-agenda-bulk-action}
8003 Bulk action: act on all marked entries in the agenda. This will prompt for
8004 another key to select the action to be applied. The prefix arg to @kbd{B}
8005 will be passed through to the @kbd{s} and @kbd{d} commands, to bulk-remove
8006 these special timestamps.
8008 r @r{Prompt for a single refile target and move all entries. The entries}
8009 @r{will no longer be in the agenda, refresh (@kbd{g}) to bring them back.}
8010 $ @r{Archive all selected entries.}
8011 A @r{Archive entries by moving them to their respective archive siblings.}
8012 t @r{Change TODO state. This prompts for a single TODO keyword and}
8013 @r{changes the state of all selected entries, bypassing blocking and}
8014 @r{suppressing logging notes (but not time stamps).}
8015 + @r{Add a tag to all selected entries.}
8016 - @r{Remove a tag from all selected entries.}
8017 s @r{Schedule all items to a new date. To shift existing schedule dates}
8018 @r{by a fixed number of days, use something starting with double plus}
8019 @r{at the prompt, for example @samp{++8d} or @samp{++2w}.}
8020 d @r{Set deadline to a specific date.}
8024 @tsubheading{Calendar commands}
8025 @cindex calendar commands, from agenda
8027 @orgcmd{c,org-agenda-goto-calendar}
8028 Open the Emacs calendar and move to the date at the agenda cursor.
8030 @orgcmd{c,org-calendar-goto-agenda}
8031 When in the calendar, compute and show the Org-mode agenda for the
8034 @cindex diary entries, creating from agenda
8035 @orgcmd{i,org-agenda-diary-entry}
8036 @vindex org-agenda-diary-file
8037 Insert a new entry into the diary, using the date at the cursor and (for
8038 block entries) the date at the mark. This will add to the Emacs diary
8039 file@footnote{This file is parsed for the agenda when
8040 @code{org-agenda-include-diary} is set.}, in a way similar to the @kbd{i}
8041 command in the calendar. The diary file will pop up in another window, where
8042 you can add the entry.
8044 If you configure @code{org-agenda-diary-file} to point to an Org-mode file,
8045 Org will create entries (in org-mode syntax) in that file instead. Most
8046 entries will be stored in a date-based outline tree that will later make it
8047 easy to archive appointments from previous months/years. The tree will be
8048 built under an entry with a @code{DATE_TREE} property, or else with years as
8049 top-level entries. Emacs will prompt you for the entry text - if you specify
8050 it, the entry will be created in @code{org-agenda-diary-file} without further
8051 interaction. If you directly press @key{RET} at the prompt without typing
8052 text, the target file will be shown in another window for you to finish the
8053 entry there. See also the @kbd{k r} command.
8055 @orgcmd{M,org-agenda-phases-of-moon}
8056 Show the phases of the moon for the three months around current date.
8058 @orgcmd{S,org-agenda-sunrise-sunset}
8059 Show sunrise and sunset times. The geographical location must be set
8060 with calendar variables, see the documentation for the Emacs calendar.
8062 @orgcmd{C,org-agenda-convert-date}
8063 Convert the date at cursor into many other cultural and historic
8066 @orgcmd{H,org-agenda-holidays}
8067 Show holidays for three months around the cursor date.
8069 @item M-x org-export-icalendar-combine-agenda-files
8070 Export a single iCalendar file containing entries from all agenda files.
8071 This is a globally available command, and also available in the agenda menu.
8073 @tsubheading{Exporting to a file}
8074 @orgcmd{C-x C-w,org-write-agenda}
8075 @cindex exporting agenda views
8076 @cindex agenda views, exporting
8077 @vindex org-agenda-exporter-settings
8078 Write the agenda view to a file. Depending on the extension of the selected
8079 file name, the view will be exported as HTML (extension @file{.html} or
8080 @file{.htm}), Postscript (extension @file{.ps}), PDF (extension @file{.pdf}),
8081 and plain text (any other extension). When called with a @kbd{C-u} prefix
8082 argument, immediately open the newly created file. Use the variable
8083 @code{org-agenda-exporter-settings} to set options for @file{ps-print} and
8084 for @file{htmlize} to be used during export.
8086 @tsubheading{Quit and Exit}
8087 @orgcmd{q,org-agenda-quit}
8088 Quit agenda, remove the agenda buffer.
8090 @cindex agenda files, removing buffers
8091 @orgcmd{x,org-agenda-exit}
8092 Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
8093 for the compilation of the agenda. Buffers created by the user to
8094 visit Org files will not be removed.
8098 @node Custom agenda views, Exporting Agenda Views, Agenda commands, Agenda Views
8099 @section Custom agenda views
8100 @cindex custom agenda views
8101 @cindex agenda views, custom
8103 Custom agenda commands serve two purposes: to store and quickly access
8104 frequently used TODO and tags searches, and to create special composite
8105 agenda buffers. Custom agenda commands will be accessible through the
8106 dispatcher (@pxref{Agenda dispatcher}), just like the default commands.
8109 * Storing searches:: Type once, use often
8110 * Block agenda:: All the stuff you need in a single buffer
8111 * Setting Options:: Changing the rules
8114 @node Storing searches, Block agenda, Custom agenda views, Custom agenda views
8115 @subsection Storing searches
8117 The first application of custom searches is the definition of keyboard
8118 shortcuts for frequently used searches, either creating an agenda
8119 buffer, or a sparse tree (the latter covering of course only the current
8122 @vindex org-agenda-custom-commands
8123 Custom commands are configured in the variable
8124 @code{org-agenda-custom-commands}. You can customize this variable, for
8125 example by pressing @kbd{C-c a C}. You can also directly set it with
8126 Emacs Lisp in @file{.emacs}. The following example contains all valid
8131 (setq org-agenda-custom-commands
8132 '(("w" todo "WAITING")
8133 ("W" todo-tree "WAITING")
8134 ("u" tags "+boss-urgent")
8135 ("v" tags-todo "+boss-urgent")
8136 ("U" tags-tree "+boss-urgent")
8137 ("f" occur-tree "\\<FIXME\\>")
8138 ("h" . "HOME+Name tags searches") ; description for "h" prefix
8139 ("hl" tags "+home+Lisa")
8140 ("hp" tags "+home+Peter")
8141 ("hk" tags "+home+Kim")))
8146 The initial string in each entry defines the keys you have to press
8147 after the dispatcher command @kbd{C-c a} in order to access the command.
8148 Usually this will be just a single character, but if you have many
8149 similar commands, you can also define two-letter combinations where the
8150 first character is the same in several combinations and serves as a
8151 prefix key@footnote{You can provide a description for a prefix key by
8152 inserting a cons cell with the prefix and the description.}. The second
8153 parameter is the search type, followed by the string or regular
8154 expression to be used for the matching. The example above will
8159 as a global search for TODO entries with @samp{WAITING} as the TODO
8162 as the same search, but only in the current buffer and displaying the
8163 results as a sparse tree
8165 as a global tags search for headlines marked @samp{:boss:} but not
8168 as the same search as @kbd{C-c a u}, but limiting the search to
8169 headlines that are also TODO items
8171 as the same search as @kbd{C-c a u}, but only in the current buffer and
8172 displaying the result as a sparse tree
8174 to create a sparse tree (again: current buffer only) with all entries
8175 containing the word @samp{FIXME}
8177 as a prefix command for a HOME tags search where you have to press an
8178 additional key (@kbd{l}, @kbd{p} or @kbd{k}) to select a name (Lisa,
8179 Peter, or Kim) as additional tag to match.
8182 @node Block agenda, Setting Options, Storing searches, Custom agenda views
8183 @subsection Block agenda
8184 @cindex block agenda
8185 @cindex agenda, with block views
8187 Another possibility is the construction of agenda views that comprise
8188 the results of @emph{several} commands, each of which creates a block in
8189 the agenda buffer. The available commands include @code{agenda} for the
8190 daily or weekly agenda (as created with @kbd{C-c a a}), @code{alltodo}
8191 for the global TODO list (as constructed with @kbd{C-c a t}), and the
8192 matching commands discussed above: @code{todo}, @code{tags}, and
8193 @code{tags-todo}. Here are two examples:
8197 (setq org-agenda-custom-commands
8198 '(("h" "Agenda and Home-related tasks"
8202 ("o" "Agenda and Office-related tasks"
8210 This will define @kbd{C-c a h} to create a multi-block view for stuff
8211 you need to attend to at home. The resulting agenda buffer will contain
8212 your agenda for the current week, all TODO items that carry the tag
8213 @samp{home}, and also all lines tagged with @samp{garden}. Finally the
8214 command @kbd{C-c a o} provides a similar view for office tasks.
8216 @node Setting Options, , Block agenda, Custom agenda views
8217 @subsection Setting options for custom commands
8218 @cindex options, for custom agenda views
8220 @vindex org-agenda-custom-commands
8221 Org-mode contains a number of variables regulating agenda construction
8222 and display. The global variables define the behavior for all agenda
8223 commands, including the custom commands. However, if you want to change
8224 some settings just for a single custom view, you can do so. Setting
8225 options requires inserting a list of variable names and values at the
8226 right spot in @code{org-agenda-custom-commands}. For example:
8230 (setq org-agenda-custom-commands
8231 '(("w" todo "WAITING"
8232 ((org-agenda-sorting-strategy '(priority-down))
8233 (org-agenda-prefix-format " Mixed: ")))
8234 ("U" tags-tree "+boss-urgent"
8235 ((org-show-following-heading nil)
8236 (org-show-hierarchy-above nil)))
8238 ((org-agenda-files '("~org/notes.org"))
8239 (org-agenda-text-search-extra-files nil)))))
8244 Now the @kbd{C-c a w} command will sort the collected entries only by
8245 priority, and the prefix format is modified to just say @samp{ Mixed: }
8246 instead of giving the category of the entry. The sparse tags tree of
8247 @kbd{C-c a U} will now turn out ultra-compact, because neither the
8248 headline hierarchy above the match, nor the headline following the match
8249 will be shown. The command @kbd{C-c a N} will do a text search limited
8250 to only a single file.
8252 @vindex org-agenda-custom-commands
8253 For command sets creating a block agenda,
8254 @code{org-agenda-custom-commands} has two separate spots for setting
8255 options. You can add options that should be valid for just a single
8256 command in the set, and options that should be valid for all commands in
8257 the set. The former are just added to the command entry, the latter
8258 must come after the list of command entries. Going back to the block
8259 agenda example (@pxref{Block agenda}), let's change the sorting strategy
8260 for the @kbd{C-c a h} commands to @code{priority-down}, but let's sort
8261 the results for GARDEN tags query in the opposite order,
8262 @code{priority-up}. This would look like this:
8266 (setq org-agenda-custom-commands
8267 '(("h" "Agenda and Home-related tasks"
8271 ((org-agenda-sorting-strategy '(priority-up)))))
8272 ((org-agenda-sorting-strategy '(priority-down))))
8273 ("o" "Agenda and Office-related tasks"
8280 As you see, the values and parentheses setting is a little complex.
8281 When in doubt, use the customize interface to set this variable---it
8282 fully supports its structure. Just one caveat: when setting options in
8283 this interface, the @emph{values} are just Lisp expressions. So if the
8284 value is a string, you need to add the double-quotes around the value
8288 @node Exporting Agenda Views, Agenda column view, Custom agenda views, Agenda Views
8289 @section Exporting Agenda Views
8290 @cindex agenda views, exporting
8292 If you are away from your computer, it can be very useful to have a printed
8293 version of some agenda views to carry around. Org-mode can export custom
8294 agenda views as plain text, HTML@footnote{You need to install Hrvoje Niksic's
8295 @file{htmlize.el}.}, Postscript, PDF@footnote{To create PDF output, the
8296 ghostscript @file{ps2pdf} utility must be installed on the system. Selecting
8297 a PDF file with also create the postscript file.}, and iCalendar files. If
8298 you want to do this only occasionally, use the command
8301 @orgcmd{C-x C-w,org-write-agenda}
8302 @cindex exporting agenda views
8303 @cindex agenda views, exporting
8304 @vindex org-agenda-exporter-settings
8305 Write the agenda view to a file. Depending on the extension of the selected
8306 file name, the view will be exported as HTML (extension @file{.html} or
8307 @file{.htm}), Postscript (extension @file{.ps}), iCalendar (extension
8308 @file{.ics}), or plain text (any other extension). Use the variable
8309 @code{org-agenda-exporter-settings} to set options for @file{ps-print} and
8310 for @file{htmlize} to be used during export, for example
8312 @vindex org-agenda-add-entry-text-maxlines
8313 @vindex htmlize-output-type
8314 @vindex ps-number-of-columns
8315 @vindex ps-landscape-mode
8317 (setq org-agenda-exporter-settings
8318 '((ps-number-of-columns 2)
8319 (ps-landscape-mode t)
8320 (org-agenda-add-entry-text-maxlines 5)
8321 (htmlize-output-type 'css)))
8325 If you need to export certain agenda views frequently, you can associate
8326 any custom agenda command with a list of output file names
8327 @footnote{If you want to store standard views like the weekly agenda
8328 or the global TODO list as well, you need to define custom commands for
8329 them in order to be able to specify file names.}. Here is an example
8330 that first defines custom commands for the agenda and the global
8331 TODO list, together with a number of files to which to export them.
8332 Then we define two block agenda commands and specify file names for them
8333 as well. File names can be relative to the current working directory,
8338 (setq org-agenda-custom-commands
8339 '(("X" agenda "" nil ("agenda.html" "agenda.ps"))
8340 ("Y" alltodo "" nil ("todo.html" "todo.txt" "todo.ps"))
8341 ("h" "Agenda and Home-related tasks"
8346 ("~/views/home.html"))
8347 ("o" "Agenda and Office-related tasks"
8352 ("~/views/office.ps" "~/calendars/office.ics"))))
8356 The extension of the file name determines the type of export. If it is
8357 @file{.html}, Org-mode will use the @file{htmlize.el} package to convert
8358 the buffer to HTML and save it to this file name. If the extension is
8359 @file{.ps}, @code{ps-print-buffer-with-faces} is used to produce
8360 Postscript output. If the extension is @file{.ics}, iCalendar export is
8361 run export over all files that were used to construct the agenda, and
8362 limit the export to entries listed in the agenda. Any other
8363 extension produces a plain ASCII file.
8365 The export files are @emph{not} created when you use one of those
8366 commands interactively because this might use too much overhead.
8367 Instead, there is a special command to produce @emph{all} specified
8371 @orgcmd{C-c a e,org-store-agenda-views}
8372 Export all agenda views that have export file names associated with
8376 You can use the options section of the custom agenda commands to also
8377 set options for the export commands. For example:
8380 (setq org-agenda-custom-commands
8382 ((ps-number-of-columns 2)
8383 (ps-landscape-mode t)
8384 (org-agenda-prefix-format " [ ] ")
8385 (org-agenda-with-colors nil)
8386 (org-agenda-remove-tags t))
8391 This command sets two options for the Postscript exporter, to make it
8392 print in two columns in landscape format---the resulting page can be cut
8393 in two and then used in a paper agenda. The remaining settings modify
8394 the agenda prefix to omit category and scheduling information, and
8395 instead include a checkbox to check off items. We also remove the tags
8396 to make the lines compact, and we don't want to use colors for the
8397 black-and-white printer. Settings specified in
8398 @code{org-agenda-exporter-settings} will also apply, but the settings
8399 in @code{org-agenda-custom-commands} take precedence.
8402 From the command line you may also use
8404 emacs -f org-batch-store-agenda-views -kill
8407 or, if you need to modify some parameters@footnote{Quoting depends on the
8408 system you use, please check the FAQ for examples.}
8410 emacs -eval '(org-batch-store-agenda-views \
8411 org-agenda-ndays 30 \
8412 org-agenda-start-day "2007-11-01" \
8413 org-agenda-include-diary nil \
8414 org-agenda-files (quote ("~/org/project.org")))' \
8418 which will create the agenda views restricted to the file
8419 @file{~/org/project.org}, without diary entries and with a 30-day
8422 You can also extract agenda information in a way that allows further
8423 processing by other programs. See @ref{Extracting agenda information}, for
8427 @node Agenda column view, , Exporting Agenda Views, Agenda Views
8428 @section Using column view in the agenda
8429 @cindex column view, in agenda
8430 @cindex agenda, column view
8432 Column view (@pxref{Column view}) is normally used to view and edit
8433 properties embedded in the hierarchical structure of an Org file. It can be
8434 quite useful to use column view also from the agenda, where entries are
8435 collected by certain criteria.
8438 @orgcmd{C-c C-x C-c,org-agenda-columns}
8439 Turn on column view in the agenda.
8442 To understand how to use this properly, it is important to realize that the
8443 entries in the agenda are no longer in their proper outline environment.
8444 This causes the following issues:
8448 @vindex org-columns-default-format
8449 @vindex org-overriding-columns-format
8450 Org needs to make a decision which @code{COLUMNS} format to use. Since the
8451 entries in the agenda are collected from different files, and different files
8452 may have different @code{COLUMNS} formats, this is a non-trivial problem.
8453 Org first checks if the variable @code{org-overriding-columns-format} is
8454 currently set, and if so, takes the format from there. Otherwise it takes
8455 the format associated with the first item in the agenda, or, if that item
8456 does not have a specific format (defined in a property, or in its file), it
8457 uses @code{org-columns-default-format}.
8459 @cindex property, special, CLOCKSUM
8460 If any of the columns has a summary type defined (@pxref{Column attributes}),
8461 turning on column view in the agenda will visit all relevant agenda files and
8462 make sure that the computations of this property are up to date. This is
8463 also true for the special @code{CLOCKSUM} property. Org will then sum the
8464 values displayed in the agenda. In the daily/weekly agenda, the sums will
8465 cover a single day, in all other views they cover the entire block. It is
8466 vital to realize that the agenda may show the same entry @emph{twice} (for
8467 example as scheduled and as a deadline), and it may show two entries from the
8468 same hierarchy (for example a @emph{parent} and its @emph{child}). In these
8469 cases, the summation in the agenda will lead to incorrect results because
8470 some values will count double.
8472 When the column view in the agenda shows the @code{CLOCKSUM}, that is always
8473 the entire clocked time for this item. So even in the daily/weekly agenda,
8474 the clocksum listed in column view may originate from times outside the
8475 current view. This has the advantage that you can compare these values with
8476 a column listing the planned total effort for a task---one of the major
8477 applications for column view in the agenda. If you want information about
8478 clocked time in the displayed period use clock table mode (press @kbd{R} in
8483 @node Markup, Exporting, Agenda Views, Top
8484 @chapter Markup for rich export
8486 When exporting Org-mode documents, the exporter tries to reflect the
8487 structure of the document as accurately as possible in the backend. Since
8488 export targets like HTML, La@TeX{}, or DocBook allow much richer formatting,
8489 Org-mode has rules on how to prepare text for rich export. This section
8490 summarizes the markup rules used in an Org-mode buffer.
8493 * Structural markup elements:: The basic structure as seen by the exporter
8494 * Images and tables:: Tables and Images will be included
8495 * Literal examples:: Source code examples with special formatting
8496 * Include files:: Include additional files into a document
8497 * Index entries:: Making an index
8498 * Macro replacement:: Use macros to create complex output
8499 * Embedded LaTeX:: LaTeX can be freely used inside Org documents
8502 @node Structural markup elements, Images and tables, Markup, Markup
8503 @section Structural markup elements
8506 * Document title:: Where the title is taken from
8507 * Headings and sections:: The document structure as seen by the exporter
8508 * Table of contents:: The if and where of the table of contents
8509 * Initial text:: Text before the first heading?
8511 * Paragraphs:: Paragraphs
8512 * Footnote markup:: Footnotes
8513 * Emphasis and monospace:: Bold, italic, etc.
8514 * Horizontal rules:: Make a line
8515 * Comment lines:: What will *not* be exported
8518 @node Document title, Headings and sections, Structural markup elements, Structural markup elements
8519 @subheading Document title
8520 @cindex document title, markup rules
8523 The title of the exported document is taken from the special line
8527 #+TITLE: This is the title of the document
8531 If this line does not exist, the title is derived from the first non-empty,
8532 non-comment line in the buffer. If no such line exists, or if you have
8533 turned off exporting of the text before the first headline (see below), the
8534 title will be the file name without extension.
8536 @cindex property, EXPORT_TITLE
8537 If you are exporting only a subtree by marking is as the region, the heading
8538 of the subtree will become the title of the document. If the subtree has a
8539 property @code{EXPORT_TITLE}, that will take precedence.
8541 @node Headings and sections, Table of contents, Document title, Structural markup elements
8542 @subheading Headings and sections
8543 @cindex headings and sections, markup rules
8545 @vindex org-export-headline-levels
8546 The outline structure of the document as described in @ref{Document
8547 Structure}, forms the basis for defining sections of the exported document.
8548 However, since the outline structure is also used for (for example) lists of
8549 tasks, only the first three outline levels will be used as headings. Deeper
8550 levels will become itemized lists. You can change the location of this
8551 switch globally by setting the variable @code{org-export-headline-levels}, or on a
8552 per-file basis with a line
8559 @node Table of contents, Initial text, Headings and sections, Structural markup elements
8560 @subheading Table of contents
8561 @cindex table of contents, markup rules
8563 @vindex org-export-with-toc
8564 The table of contents is normally inserted directly before the first headline
8565 of the file. If you would like to get it to a different location, insert the
8566 string @code{[TABLE-OF-CONTENTS]} on a line by itself at the desired
8567 location. The depth of the table of contents is by default the same as the
8568 number of headline levels, but you can choose a smaller number, or turn off
8569 the table of contents entirely, by configuring the variable
8570 @code{org-export-with-toc}, or on a per-file basis with a line like
8573 #+OPTIONS: toc:2 (only to two levels in TOC)
8574 #+OPTIONS: toc:nil (no TOC at all)
8577 @node Initial text, Lists, Table of contents, Structural markup elements
8578 @subheading Text before the first headline
8579 @cindex text before first headline, markup rules
8582 Org-mode normally exports the text before the first headline, and even uses
8583 the first line as the document title. The text will be fully marked up. If
8584 you need to include literal HTML, La@TeX{}, or DocBook code, use the special
8585 constructs described below in the sections for the individual exporters.
8587 @vindex org-export-skip-text-before-1st-heading
8588 Some people like to use the space before the first headline for setup and
8589 internal links and therefore would like to control the exported text before
8590 the first headline in a different way. You can do so by setting the variable
8591 @code{org-export-skip-text-before-1st-heading} to @code{t}. On a per-file
8592 basis, you can get the same effect with @samp{#+OPTIONS: skip:t}.
8595 If you still want to have some text before the first headline, use the
8596 @code{#+TEXT} construct:
8600 #+TEXT: This text will go before the *first* headline.
8601 #+TEXT: [TABLE-OF-CONTENTS]
8602 #+TEXT: This goes between the table of contents and the first headline
8605 @node Lists, Paragraphs, Initial text, Structural markup elements
8607 @cindex lists, markup rules
8609 Plain lists as described in @ref{Plain lists}, are translated to the backend's
8610 syntax for such lists. Most backends support unordered, ordered, and
8613 @node Paragraphs, Footnote markup, Lists, Structural markup elements
8614 @subheading Paragraphs, line breaks, and quoting
8615 @cindex paragraphs, markup rules
8617 Paragraphs are separated by at least one empty line. If you need to enforce
8618 a line break within a paragraph, use @samp{\\} at the end of a line.
8620 To keep the line breaks in a region, but otherwise use normal formatting, you
8621 can use this construct, which can also be used to format poetry.
8623 @cindex #+BEGIN_VERSE
8626 Great clouds overhead
8627 Tiny black birds rise and fall
8634 When quoting a passage from another document, it is customary to format this
8635 as a paragraph that is indented on both the left and the right margin. You
8636 can include quotations in Org-mode documents like this:
8638 @cindex #+BEGIN_QUOTE
8641 Everything should be made as simple as possible,
8642 but not any simpler -- Albert Einstein
8646 If you would like to center some text, do it like this:
8647 @cindex #+BEGIN_CENTER
8650 Everything should be made as simple as possible, \\
8656 @node Footnote markup, Emphasis and monospace, Paragraphs, Structural markup elements
8657 @subheading Footnote markup
8658 @cindex footnotes, markup rules
8659 @cindex @file{footnote.el}
8661 Footnotes defined in the way described in @ref{Footnotes}, will be exported by
8662 all backends. Org allows multiple references to the same note, and
8663 different backends support this to varying degrees.
8665 @node Emphasis and monospace, Horizontal rules, Footnote markup, Structural markup elements
8666 @subheading Emphasis and monospace
8668 @cindex underlined text, markup rules
8669 @cindex bold text, markup rules
8670 @cindex italic text, markup rules
8671 @cindex verbatim text, markup rules
8672 @cindex code text, markup rules
8673 @cindex strike-through text, markup rules
8674 You can make words @b{*bold*}, @i{/italic/}, _underlined_, @code{=code=}
8675 and @code{~verbatim~}, and, if you must, @samp{+strike-through+}. Text
8676 in the code and verbatim string is not processed for Org-mode specific
8677 syntax, it is exported verbatim.
8679 @node Horizontal rules, Comment lines, Emphasis and monospace, Structural markup elements
8680 @subheading Horizontal rules
8681 @cindex horizontal rules, markup rules
8682 A line consisting of only dashes, and at least 5 of them, will be
8683 exported as a horizontal line (@samp{<hr/>} in HTML).
8685 @node Comment lines, , Horizontal rules, Structural markup elements
8686 @subheading Comment lines
8687 @cindex comment lines
8688 @cindex exporting, not
8689 @cindex #+BEGIN_COMMENT
8691 Lines starting with @samp{#} in column zero are treated as comments and will
8692 never be exported. If you want an indented line to be treated as a comment,
8693 start it with @samp{#+ }. Also entire subtrees starting with the word
8694 @samp{COMMENT} will never be exported. Finally, regions surrounded by
8695 @samp{#+BEGIN_COMMENT} ... @samp{#+END_COMMENT} will not be exported.
8700 Toggle the COMMENT keyword at the beginning of an entry.
8704 @node Images and tables, Literal examples, Structural markup elements, Markup
8705 @section Images and Tables
8707 @cindex tables, markup rules
8710 Both the native Org-mode tables (@pxref{Tables}) and tables formatted with
8711 the @file{table.el} package will be exported properly. For Org-mode tables,
8712 the lines before the first horizontal separator line will become table header
8713 lines. You can use the following lines somewhere before the table to assign
8714 a caption and a label for cross references, and in the text you can refer to
8715 the object with @code{\ref@{tab:basic-data@}}:
8718 #+CAPTION: This is the caption for the next table (or link)
8719 #+LABEL: tbl:basic-data
8724 @cindex inlined images, markup rules
8725 Some backends (HTML, La@TeX{}, and DocBook) allow you to directly include
8726 images into the exported document. Org does this, if a link to an image
8727 files does not have a description part, for example @code{[[./img/a.jpg]]}.
8728 If you wish to define a caption for the image and maybe a label for internal
8729 cross references, make sure that the link is on a line by itself and precede
8730 it with @code{#+CAPTION} and @code{#+LABEL} as follows:
8733 #+CAPTION: This is the caption for the next figure link (or table)
8734 #+LABEL: fig:SED-HR4049
8738 You may also define additional attributes for the figure. As this is
8739 backend-specific, see the sections about the individual backends for more
8742 @xref{Handling links,the discussion of image links}.
8744 @node Literal examples, Include files, Images and tables, Markup
8745 @section Literal examples
8746 @cindex literal examples, markup rules
8747 @cindex code line references, markup rules
8749 You can include literal examples that should not be subjected to
8750 markup. Such examples will be typeset in monospace, so this is well suited
8751 for source code and similar examples.
8752 @cindex #+BEGIN_EXAMPLE
8756 Some example from a text file.
8760 Note that such blocks may be @i{indented} in order to align nicely with
8761 indented text and in particular with plain list structure (@pxref{Plain
8762 lists}). For simplicity when using small examples, you can also start the
8763 example lines with a colon followed by a space. There may also be additional
8764 whitespace before the colon:
8768 : Some example from a text file.
8771 @cindex formatting source code, markup rules
8772 If the example is source code from a programming language, or any other text
8773 that can be marked up by font-lock in Emacs, you can ask for the example to
8774 look like the fontified Emacs buffer@footnote{This works automatically for
8775 the HTML backend (it requires version 1.34 of the @file{htmlize.el} package,
8776 which is distributed with Org.) Fontified code chunks in LaTeX can be
8777 achieved using either the listings or the
8778 @url{http://code.google.com/p/minted, minted,} package. To use listings, turn
8779 on the variable @code{org-export-latex-listings} and ensure that the listings
8780 package is included by the LaTeX header (e.g. by configuring
8781 @code{org-export-latex-packages-alist}). See the listings documentation for
8782 configuration options, including obtaining colored output. For minted it is
8783 necessary to install the program @url{http://pygments.org, pygments}, in
8784 addition to setting @code{org-export-latex-minted}, ensuring that the minted
8785 package is included by the LaTeX header, and ensuring that the
8786 @code{-shell-escape} option is passed to @file{pdflatex} (see
8787 @code{org-latex-to-pdf-process}). See the documentation of the variables
8788 @code{org-export-latex-listings} and @code{org-export-latex-minted} for
8789 further details.}. This is done with the @samp{src} block, where you also
8790 need to specify the name of the major mode that should be used to fontify the
8795 #+BEGIN_SRC emacs-lisp
8796 (defun org-xor (a b)
8802 Both in @code{example} and in @code{src} snippets, you can add a @code{-n}
8803 switch to the end of the @code{BEGIN} line, to get the lines of the example
8804 numbered. If you use a @code{+n} switch, the numbering from the previous
8805 numbered snippet will be continued in the current one. In literal examples,
8806 Org will interpret strings like @samp{(ref:name)} as labels, and use them as
8807 targets for special hyperlinks like @code{[[(name)]]} (i.e. the reference name
8808 enclosed in single parenthesis). In HTML, hovering the mouse over such a
8809 link will remote-highlight the corresponding code line, which is kind of
8812 You can also add a @code{-r} switch which @i{removes} the labels from the
8813 source code@footnote{Adding @code{-k} to @code{-n -r} will @i{keep} the
8814 labels in the source code while using line numbers for the links, which might
8815 be useful to explain those in an org-mode example code.}. With the @code{-n}
8816 switch, links to these references will be labeled by the line numbers from
8817 the code listing, otherwise links will use the labels with no parentheses.
8821 #+BEGIN_SRC emacs-lisp -n -r
8822 (save-excursion (ref:sc)
8823 (goto-char (point-min)) (ref:jump)
8825 In line [[(sc)]] we remember the current position. [[(jump)][Line (jump)]]
8829 @vindex org-coderef-label-format
8830 If the syntax for the label format conflicts with the language syntax, use a
8831 @code{-l} switch to change the format, for example @samp{#+BEGIN_SRC pascal
8832 -n -r -l "((%s))"}. See also the variable @code{org-coderef-label-format}.
8834 HTML export also allows examples to be published as text areas, @xref{Text
8835 areas in HTML export}.
8840 Edit the source code example at point in its native mode. This works by
8841 switching to a temporary buffer with the source code. You need to exit by
8842 pressing @kbd{C-c '} again@footnote{Upon exit, lines starting with @samp{*}
8843 or @samp{#} will get a comma prepended, to keep them from being interpreted
8844 by Org as outline nodes or special comments. These commas will be stripped
8845 for editing with @kbd{C-c '}, and also for export.}, the edited version will
8846 then replace the old version in the Org buffer. Fixed-width regions
8847 (where each line starts with a colon followed by a space) will be edited
8848 using @code{artist-mode}@footnote{You may select a different-mode with the
8849 variable @code{org-edit-fixed-width-region-mode}.} to allow creating ASCII
8850 drawings easily. Using this command in an empty line will create a new
8854 Calling @code{org-store-link} while editing a source code example in a
8855 temporary buffer created with @kbd{C-c '} will prompt for a label, make sure
8856 that it is unique in the current buffer, and insert it with the proper
8857 formatting like @samp{(ref:label)} at the end of the current line. Then the
8858 label is stored as a link @samp{(label)}, for retrieval with @kbd{C-c C-l}.
8862 @node Include files, Index entries, Literal examples, Markup
8863 @section Include files
8864 @cindex include files, markup rules
8866 During export, you can include the content of another file. For example, to
8867 include your @file{.emacs} file, you could use:
8871 #+INCLUDE: "~/.emacs" src emacs-lisp
8874 The optional second and third parameter are the markup (e.g. @samp{quote},
8875 @samp{example}, or @samp{src}), and, if the markup is @samp{src}, the
8876 language for formatting the contents. The markup is optional, if it is not
8877 given, the text will be assumed to be in Org-mode format and will be
8878 processed normally. The include line will also allow additional keyword
8879 parameters @code{:prefix1} and @code{:prefix} to specify prefixes for the
8880 first line and for each following line, as well as any options accepted by
8881 the selected markup. For example, to include a file as an item, use
8884 #+INCLUDE: "~/snippets/xx" :prefix1 " + " :prefix " "
8890 Visit the include file at point.
8893 @node Index entries, Macro replacement, Include files, Markup
8894 @section Index entries
8895 @cindex index entries, for publishing
8897 You can specify entries that will be used for generating an index during
8898 publishing. This is done by lines starting with @code{#+INDEX}. An entry
8899 the contains an exclamation mark will create a sub item. See @ref{Generating
8900 an index} for more information.
8905 #+INDEX: Application!CV
8911 @node Macro replacement, Embedded LaTeX, Index entries, Markup
8912 @section Macro replacement
8913 @cindex macro replacement, during export
8916 You can define text snippets with
8919 #+MACRO: name replacement text $1, $2 are arguments
8922 @noindent which can be referenced anywhere in the document (even in
8923 code examples) with @code{@{@{@{name(arg1,arg2)@}@}@}}. In addition to
8924 defined macros, @code{@{@{@{title@}@}@}}, @code{@{@{@{author@}@}@}}, etc.,
8925 will reference information set by the @code{#+TITLE:}, @code{#+AUTHOR:}, and
8926 similar lines. Also, @code{@{@{@{date(@var{FORMAT})@}@}@}} and
8927 @code{@{@{@{modification-time(@var{FORMAT})@}@}@}} refer to current date time
8928 and to the modification time of the file being exported, respectively.
8929 @var{FORMAT} should be a format string understood by
8930 @code{format-time-string}.
8932 Macro expansion takes place during export, and some people use it to
8933 construct complex HTML code.
8936 @node Embedded LaTeX, , Macro replacement, Markup
8937 @section Embedded La@TeX{}
8938 @cindex @TeX{} interpretation
8939 @cindex La@TeX{} interpretation
8941 Plain ASCII is normally sufficient for almost all note taking. One
8942 exception, however, are scientific notes which need to be able to contain
8943 mathematical symbols and the occasional formula. La@TeX{}@footnote{La@TeX{}
8944 is a macro system based on Donald E. Knuth's @TeX{} system. Many of the
8945 features described here as ``La@TeX{}'' are really from @TeX{}, but for
8946 simplicity I am blurring this distinction.} is widely used to typeset
8947 scientific documents. Org-mode supports embedding La@TeX{} code into its
8948 files, because many academics are used to writing and reading La@TeX{} source
8949 code, and because it can be readily processed to produce pretty output for a
8950 number of export backends.
8953 * Special symbols:: Greek letters and other symbols
8954 * Subscripts and superscripts:: Simple syntax for raising/lowering text
8955 * LaTeX fragments:: Complex formulas made easy
8956 * Previewing LaTeX fragments:: What will this snippet look like?
8957 * CDLaTeX mode:: Speed up entering of formulas
8960 @node Special symbols, Subscripts and superscripts, Embedded LaTeX, Embedded LaTeX
8961 @subsection Special symbols
8962 @cindex math symbols
8963 @cindex special symbols
8964 @cindex @TeX{} macros
8965 @cindex La@TeX{} fragments, markup rules
8966 @cindex HTML entities
8967 @cindex La@TeX{} entities
8969 You can use La@TeX{} macros to insert special symbols like @samp{\alpha} to
8970 indicate the Greek letter, or @samp{\to} to indicate an arrow. Completion
8971 for these macros is available, just type @samp{\} and maybe a few letters,
8972 and press @kbd{M-@key{TAB}} to see possible completions. Unlike La@TeX{}
8973 code, Org-mode allows these macros to be present without surrounding math
8974 delimiters, for example:
8977 Angles are written as Greek letters \alpha, \beta and \gamma.
8980 @vindex org-entities
8981 During export, these symbols will be transformed into the native format of
8982 the exporter backend. Strings like @code{\alpha} will be exported as
8983 @code{α} in the HTML output, and as @code{$\alpha$} in the La@TeX{}
8984 output. Similarly, @code{\nbsp} will become @code{ } in HTML and
8985 @code{~} in La@TeX{}. If you need such a symbol inside a word, terminate it
8986 like this: @samp{\Aacute@{@}stor}.
8988 A large number of entities is provided, with names taken from both HTML and
8989 La@TeX{}, see the variable @code{org-entities} for the complete list.
8990 @samp{\-} is treated as a shy hyphen, and @samp{--}, @samp{---}, and
8991 @samp{...} are all converted into special commands creating hyphens of
8992 different lengths or a compact set of dots.
8994 If you would like to see entities displayed as UTF8 characters, use the
8995 following command@footnote{You can turn this on by default by setting the
8996 variable @code{org-pretty-entities}, or on a per-file base with the
8997 @code{#+STARTUP} option @code{entitiespretty}.}:
9002 Toggle display of entities as UTF8 characters. This does not change the
9003 buffer content which remains plain ASCII, but it overlays the UTF8 character
9004 for display purposes only.
9007 @node Subscripts and superscripts, LaTeX fragments, Special symbols, Embedded LaTeX
9008 @subsection Subscripts and superscripts
9012 Just like in La@TeX{}, @samp{^} and @samp{_} are used to indicate super-
9013 and subscripts. Again, these can be used without embedding them in
9014 math-mode delimiters. To increase the readability of ASCII text, it is
9015 not necessary (but OK) to surround multi-character sub- and superscripts
9016 with curly braces. For example
9019 The mass if the sun is M_sun = 1.989 x 10^30 kg. The radius of
9020 the sun is R_@{sun@} = 6.96 x 10^8 m.
9023 @vindex org-export-with-sub-superscripts
9024 To avoid interpretation as raised or lowered text, you can quote @samp{^} and
9025 @samp{_} with a backslash: @samp{\^} and @samp{\_}. If you write a text
9026 where the underscore is often used in a different context, Org's convention
9027 to always interpret these as subscripts can get in your way. Configure the
9028 variable @code{org-export-with-sub-superscripts} to globally change this
9029 convention, or use, on a per-file basis:
9035 @noindent With this setting, @samp{a_b} will not be interpreted as a
9036 subscript, but @samp{a_@{b@}} will.
9041 In addition to showing entities as UTF8 characters, this command will also
9042 format sub- and superscripts in a WYSIWYM way.
9045 @node LaTeX fragments, Previewing LaTeX fragments, Subscripts and superscripts, Embedded LaTeX
9046 @subsection La@TeX{} fragments
9047 @cindex La@TeX{} fragments
9049 @vindex org-format-latex-header
9050 Going beyond symbols and sub- and superscripts, a full formula language is
9051 needed. Org-mode can contain La@TeX{} math fragments, and it supports ways
9052 to process these for several export backends. When exporting to La@TeX{},
9053 the code is obviously left as it is. When exporting to HTML, Org invokes the
9054 @uref{http://www.mathjax.org, MathJax library} (@pxref{Math formatting in
9055 HTML export}) to process and display the math@footnote{If you plan to use
9056 this regularly or on pages with significant page views, you should install
9057 @file{MathJax} on your own server in order to limit the load of our server.}.
9058 Finally, it can also process the mathematical expressions into
9059 images@footnote{For this to work you need to be on a system with a working
9060 La@TeX{} installation. You also need the @file{dvipng} program, available at
9061 @url{http://sourceforge.net/projects/dvipng/}. The La@TeX{} header that will
9062 be used when processing a fragment can be configured with the variable
9063 @code{org-format-latex-header}.} that can be displayed in a browser or in
9066 La@TeX{} fragments don't need any special marking at all. The following
9067 snippets will be identified as La@TeX{} source code:
9070 Environments of any kind@footnote{When @file{MathJax} is used, only the
9071 environment recognized by @file{MathJax} will be processed. When dvipng is
9072 used to create images, any La@TeX{} environments will be handled.}. The only
9073 requirement is that the @code{\begin} statement appears on a new line,
9074 preceded by only whitespace.
9076 Text within the usual La@TeX{} math delimiters. To avoid conflicts with
9077 currency specifications, single @samp{$} characters are only recognized as
9078 math delimiters if the enclosed text contains at most two line breaks, is
9079 directly attached to the @samp{$} characters with no whitespace in between,
9080 and if the closing @samp{$} is followed by whitespace, punctuation or a dash.
9081 For the other delimiters, there is no such restriction, so when in doubt, use
9082 @samp{\(...\)} as inline math delimiters.
9085 @noindent For example:
9088 \begin@{equation@} % arbitrary environments,
9089 x=\sqrt@{b@} % even tables, figures
9090 \end@{equation@} % etc
9092 If $a^2=b$ and \( b=2 \), then the solution must be
9093 either $$ a=+\sqrt@{2@} $$ or \[ a=-\sqrt@{2@} \].
9097 @vindex org-format-latex-options
9098 If you need any of the delimiter ASCII sequences for other purposes, you
9099 can configure the option @code{org-format-latex-options} to deselect the
9100 ones you do not wish to have interpreted by the La@TeX{} converter.
9102 @vindex org-export-with-LaTeX-fragments
9103 LaTeX processing can be configured with the variable
9104 @code{org-export-with-LaTeX-fragments}. The default setting is @code{t}
9105 which means @file{MathJax} for HTML, and no processing for DocBook, ASCII and
9106 LaTeX backends. You can also set this variable on a per-file basis using one
9110 #+OPTIONS: LaTeX:t @r{Do the right thing automatically (MathJax)}
9111 #+OPTIONS: LaTeX:dvipng @r{Force using dvipng images}
9112 #+OPTIONS: LaTeX:nil @r{Do not process La@TeX{} fragments at all}
9113 #+OPTIONS: LaTeX:verbatim @r{Verbatim export, for jsMath or so}
9116 @node Previewing LaTeX fragments, CDLaTeX mode, LaTeX fragments, Embedded LaTeX
9117 @subsection Previewing LaTeX fragments
9118 @cindex LaTeX fragments, preview
9120 If you have @file{dvipng} installed, La@TeX{} fragments can be processed to
9121 produce preview images of the typeset expressions:
9126 Produce a preview image of the La@TeX{} fragment at point and overlay it
9127 over the source code. If there is no fragment at point, process all
9128 fragments in the current entry (between two headlines). When called
9129 with a prefix argument, process the entire subtree. When called with
9130 two prefix arguments, or when the cursor is before the first headline,
9131 process the entire buffer.
9134 Remove the overlay preview images.
9137 @vindex org-format-latex-options
9138 You can customize the variable @code{org-format-latex-options} to influence
9139 some aspects of the preview. In particular, the @code{:scale} (and for HTML
9140 export, @code{:html-scale}) property can be used to adjust the size of the
9143 @node CDLaTeX mode, , Previewing LaTeX fragments, Embedded LaTeX
9144 @subsection Using CDLa@TeX{} to enter math
9147 CDLa@TeX{} mode is a minor mode that is normally used in combination with a
9148 major La@TeX{} mode like AUC@TeX{} in order to speed-up insertion of
9149 environments and math templates. Inside Org-mode, you can make use of
9150 some of the features of CDLa@TeX{} mode. You need to install
9151 @file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
9152 AUC@TeX{}) from @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
9153 Don't use CDLa@TeX{} mode itself under Org-mode, but use the light
9154 version @code{org-cdlatex-mode} that comes as part of Org-mode. Turn it
9155 on for the current buffer with @code{M-x org-cdlatex-mode}, or for all
9159 (add-hook 'org-mode-hook 'turn-on-org-cdlatex)
9162 When this mode is enabled, the following features are present (for more
9163 details see the documentation of CDLa@TeX{} mode):
9167 Environment templates can be inserted with @kbd{C-c @{}.
9170 The @key{TAB} key will do template expansion if the cursor is inside a
9171 La@TeX{} fragment@footnote{Org-mode has a method to test if the cursor is
9172 inside such a fragment, see the documentation of the function
9173 @code{org-inside-LaTeX-fragment-p}.}. For example, @key{TAB} will
9174 expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
9175 correctly inside the first brace. Another @key{TAB} will get you into
9176 the second brace. Even outside fragments, @key{TAB} will expand
9177 environment abbreviations at the beginning of a line. For example, if
9178 you write @samp{equ} at the beginning of a line and press @key{TAB},
9179 this abbreviation will be expanded to an @code{equation} environment.
9180 To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help}.
9184 @vindex cdlatex-simplify-sub-super-scripts
9185 Pressing @kbd{_} and @kbd{^} inside a La@TeX{} fragment will insert these
9186 characters together with a pair of braces. If you use @key{TAB} to move
9187 out of the braces, and if the braces surround only a single character or
9188 macro, they are removed again (depending on the variable
9189 @code{cdlatex-simplify-sub-super-scripts}).
9192 Pressing the backquote @kbd{`} followed by a character inserts math
9193 macros, also outside La@TeX{} fragments. If you wait more than 1.5 seconds
9194 after the backquote, a help window will pop up.
9197 Pressing the single-quote @kbd{'} followed by another character modifies
9198 the symbol before point with an accent or a font. If you wait more than
9199 1.5 seconds after the backquote, a help window will pop up. Character
9200 modification will work only inside La@TeX{} fragments, outside the quote
9204 @node Exporting, Publishing, Markup, Top
9208 Org-mode documents can be exported into a variety of other formats. For
9209 printing and sharing of notes, ASCII export produces a readable and simple
9210 version of an Org file. HTML export allows you to publish a notes file on
9211 the web, while the XOXO format provides a solid base for exchange with a
9212 broad range of other applications. La@TeX{} export lets you use Org-mode and
9213 its structured editing functions to easily create La@TeX{} files. DocBook
9214 export makes it possible to convert Org files to many other formats using
9215 DocBook tools. For project management you can create gantt and resource
9216 charts by using TaskJuggler export. To incorporate entries with associated
9217 times like deadlines or appointments into a desktop calendar program like
9218 iCal, Org-mode can also produce extracts in the iCalendar format. Currently
9219 Org-mode only supports export, not import of these different formats.
9221 Org supports export of selected regions when @code{transient-mark-mode} is
9222 enabled (default in Emacs 23).
9225 * Selective export:: Using tags to select and exclude trees
9226 * Export options:: Per-file export settings
9227 * The export dispatcher:: How to access exporter commands
9228 * ASCII/Latin-1/UTF-8 export:: Exporting to flat files with encoding
9229 * HTML export:: Exporting to HTML
9230 * LaTeX and PDF export:: Exporting to La@TeX{}, and processing to PDF
9231 * DocBook export:: Exporting to DocBook
9232 * TaskJuggler export:: Exporting to TaskJuggler
9233 * Freemind export:: Exporting to Freemind mind maps
9234 * XOXO export:: Exporting to XOXO
9235 * iCalendar export:: Exporting in iCalendar format
9238 @node Selective export, Export options, Exporting, Exporting
9239 @section Selective export
9240 @cindex export, selective by tags
9242 @vindex org-export-select-tags
9243 @vindex org-export-exclude-tags
9244 You may use tags to select the parts of a document that should be exported,
9245 or to exclude parts from export. This behavior is governed by two variables:
9246 @code{org-export-select-tags} and @code{org-export-exclude-tags}.
9248 Org first checks if any of the @emph{select} tags is present in the buffer.
9249 If yes, all trees that do not carry one of these tags will be excluded. If a
9250 selected tree is a subtree, the heading hierarchy above it will also be
9251 selected for export, but not the text below those headings.
9254 If none of the select tags is found, the whole buffer will be selected for
9258 Finally, all subtrees that are marked by any of the @emph{exclude} tags will
9259 be removed from the export buffer.
9261 @node Export options, The export dispatcher, Selective export, Exporting
9262 @section Export options
9263 @cindex options, for export
9265 @cindex completion, of option keywords
9266 The exporter recognizes special lines in the buffer which provide
9267 additional information. These lines may be put anywhere in the file.
9268 The whole set of lines can be inserted into the buffer with @kbd{C-c
9269 C-e t}. For individual lines, a good way to make sure the keyword is
9270 correct is to type @samp{#+} and then use @kbd{M-@key{TAB}} completion
9271 (@pxref{Completion}). For a summary of other in-buffer settings not
9272 specifically related to export, see @ref{In-buffer settings}.
9273 In particular, note that you can place commonly-used (export) options in
9274 a separate file which can be included using @code{#+SETUPFILE}.
9277 @orgcmd{C-c C-e t,org-insert-export-options-template}
9278 Insert template with export options, see example below.
9285 @cindex #+DESCRIPTION
9293 @cindex #+EXPORT_SELECT_TAGS
9294 @cindex #+EXPORT_EXCLUDE_TAGS
9296 @cindex #+LATEX_HEADER
9297 @vindex user-full-name
9298 @vindex user-mail-address
9299 @vindex org-export-default-language
9301 #+TITLE: the title to be shown (default is the buffer name)
9302 #+AUTHOR: the author (default taken from @code{user-full-name})
9303 #+DATE: a date, fixed, of a format string for @code{format-time-string}
9304 #+EMAIL: his/her email address (default from @code{user-mail-address})
9305 #+DESCRIPTION: the page description, e.g. for the XHTML meta tag
9306 #+KEYWORDS: the page keywords, e.g. for the XHTML meta tag
9307 #+LANGUAGE: language for HTML, e.g. @samp{en} (@code{org-export-default-language})
9308 #+TEXT: Some descriptive text to be inserted at the beginning.
9309 #+TEXT: Several lines may be given.
9310 #+OPTIONS: H:2 num:t toc:t \n:nil @@:t ::t |:t ^:t f:t TeX:t ...
9311 #+BIND: lisp-var lisp-val, e.g.: org-export-latex-low-levels itemize
9312 @r{You need to confirm using these, or configure @code{org-export-allow-BIND}}
9313 #+LINK_UP: the ``up'' link of an exported page
9314 #+LINK_HOME: the ``home'' link of an exported page
9315 #+LATEX_HEADER: extra line(s) for the LaTeX header, like \usepackage@{xyz@}
9316 #+EXPORT_SELECT_TAGS: Tags that select a tree for export
9317 #+EXPORT_EXCLUDE_TAGS: Tags that exclude a tree from export
9318 #+XSLT: the XSLT stylesheet used by DocBook exporter to generate FO file
9322 The OPTIONS line is a compact@footnote{If you want to configure many options
9323 this way, you can use several OPTIONS lines.} form to specify export settings. Here
9325 @cindex headline levels
9326 @cindex section-numbers
9327 @cindex table of contents
9328 @cindex line-break preservation
9329 @cindex quoted HTML tags
9330 @cindex fixed-width sections
9332 @cindex @TeX{}-like syntax for sub- and superscripts
9334 @cindex special strings
9335 @cindex emphasized text
9336 @cindex @TeX{} macros
9337 @cindex La@TeX{} fragments
9338 @cindex author info, in export
9339 @cindex time info, in export
9341 H: @r{set the number of headline levels for export}
9342 num: @r{turn on/off section-numbers}
9343 toc: @r{turn on/off table of contents, or set level limit (integer)}
9344 \n: @r{turn on/off line-break-preservation (DOES NOT WORK)}
9345 @@: @r{turn on/off quoted HTML tags}
9346 :: @r{turn on/off fixed-width sections}
9347 |: @r{turn on/off tables}
9348 ^: @r{turn on/off @TeX{}-like syntax for sub- and superscripts. If}
9349 @r{you write "^:@{@}", @code{a_@{b@}} will be interpreted, but}
9350 @r{the simple @code{a_b} will be left as it is.}
9351 -: @r{turn on/off conversion of special strings.}
9352 f: @r{turn on/off footnotes like this[1].}
9353 todo: @r{turn on/off inclusion of TODO keywords into exported text}
9354 pri: @r{turn on/off priority cookies}
9355 tags: @r{turn on/off inclusion of tags, may also be @code{not-in-toc}}
9356 <: @r{turn on/off inclusion of any time/date stamps like DEADLINES}
9357 *: @r{turn on/off emphasized text (bold, italic, underlined)}
9358 TeX: @r{turn on/off simple @TeX{} macros in plain text}
9359 LaTeX: @r{configure export of La@TeX{} fragments. Default @code{auto}}
9360 skip: @r{turn on/off skipping the text before the first heading}
9361 author: @r{turn on/off inclusion of author name/email into exported file}
9362 email: @r{turn on/off inclusion of author email into exported file}
9363 creator: @r{turn on/off inclusion of creator info into exported file}
9364 timestamp: @r{turn on/off inclusion creation time into exported file}
9365 d: @r{turn on/off inclusion of drawers}
9368 These options take effect in both the HTML and La@TeX{} export, except
9369 for @code{TeX} and @code{LaTeX}, which are respectively @code{t} and
9370 @code{nil} for the La@TeX{} export.
9372 When exporting only a single subtree by selecting it with @kbd{C-c @@} before
9373 calling an export command, the subtree can overrule some of the file's export
9374 settings with properties @code{EXPORT_FILE_NAME}, @code{EXPORT_TITLE},
9375 @code{EXPORT_TEXT}, @code{EXPORT_AUTHOR}, @code{EXPORT_DATE}, and
9376 @code{EXPORT_OPTIONS}.
9378 @node The export dispatcher, ASCII/Latin-1/UTF-8 export, Export options, Exporting
9379 @section The export dispatcher
9380 @cindex dispatcher, for export commands
9382 All export commands can be reached using the export dispatcher, which is a
9383 prefix key that prompts for an additional key specifying the command.
9384 Normally the entire file is exported, but if there is an active region that
9385 contains one outline tree, the first heading is used as document title and
9386 the subtrees are exported.
9389 @orgcmd{C-c C-e,org-export}
9390 @vindex org-export-run-in-background
9391 Dispatcher for export and publishing commands. Displays a help-window
9392 listing the additional key(s) needed to launch an export or publishing
9393 command. The prefix arg is passed through to the exporter. A double prefix
9394 @kbd{C-u C-u} causes most commands to be executed in the background, in a
9395 separate Emacs process@footnote{To make this behavior the default, customize
9396 the variable @code{org-export-run-in-background}.}.
9397 @orgcmd{C-c C-e v,org-export-visible}
9398 Like @kbd{C-c C-e}, but only export the text that is currently visible
9399 (i.e. not hidden by outline visibility).
9400 @orgcmd{C-u C-u C-c C-e,org-export}
9401 @vindex org-export-run-in-background
9402 Call an the exporter, but reverse the setting of
9403 @code{org-export-run-in-background}, i.e. request background processing if
9404 not set, or force processing in the current Emacs process if set.
9407 @node ASCII/Latin-1/UTF-8 export, HTML export, The export dispatcher, Exporting
9408 @section ASCII/Latin-1/UTF-8 export
9409 @cindex ASCII export
9410 @cindex Latin-1 export
9411 @cindex UTF-8 export
9413 ASCII export produces a simple and very readable version of an Org-mode
9414 file, containing only plain ASCII. Latin-1 and UTF-8 export augment the file
9415 with special characters and symbols available in these encodings.
9417 @cindex region, active
9418 @cindex active region
9419 @cindex transient-mark-mode
9421 @orgcmd{C-c C-e a,org-export-as-ascii}
9422 @cindex property, EXPORT_FILE_NAME
9423 Export as ASCII file. For an Org file, @file{myfile.org}, the ASCII file
9424 will be @file{myfile.txt}. The file will be overwritten without
9425 warning. If there is an active region@footnote{This requires
9426 @code{transient-mark-mode} be turned on.}, only the region will be
9427 exported. If the selected region is a single tree@footnote{To select the
9428 current subtree, use @kbd{C-c @@}.}, the tree head will
9429 become the document title. If the tree head entry has or inherits an
9430 @code{EXPORT_FILE_NAME} property, that name will be used for the
9432 @orgcmd{C-c C-e A,org-export-as-ascii-to-buffer}
9433 Export to a temporary buffer, do not create a file.
9434 @orgcmd{C-c C-e n,org-export-as-latin1}
9435 @xorgcmd{C-c C-e N,org-export-as-latin1-to-buffer}
9436 Like the above commands, but use Latin-1 encoding.
9437 @orgcmd{C-c C-e u,org-export-as-utf8}
9438 @xorgcmd{C-c C-e U,org-export-as-utf8-to-buffer}
9439 Like the above commands, but use UTF-8 encoding.
9440 @item C-c C-e v a/n/u
9441 Export only the visible part of the document.
9444 @cindex headline levels, for exporting
9445 In the exported version, the first 3 outline levels will become
9446 headlines, defining a general document structure. Additional levels
9447 will be exported as itemized lists. If you want that transition to occur
9448 at a different level, specify it with a prefix argument. For example,
9455 creates only top level headlines and does the rest as items. When
9456 headlines are converted to items, the indentation of the text following
9457 the headline is changed to fit nicely under the item. This is done with
9458 the assumption that the first body line indicates the base indentation of
9459 the body text. Any indentation larger than this is adjusted to preserve
9460 the layout relative to the first line. Should there be lines with less
9461 indentation than the first, these are left alone.
9463 @vindex org-export-ascii-links-to-notes
9464 Links will be exported in a footnote-like style, with the descriptive part in
9465 the text and the link in a note before the next heading. See the variable
9466 @code{org-export-ascii-links-to-notes} for details and other options.
9468 @node HTML export, LaTeX and PDF export, ASCII/Latin-1/UTF-8 export, Exporting
9469 @section HTML export
9472 Org-mode contains an HTML (XHTML 1.0 strict) exporter with extensive
9473 HTML formatting, in ways similar to John Gruber's @emph{markdown}
9474 language, but with additional support for tables.
9477 * HTML Export commands:: How to invoke HTML export
9478 * Quoting HTML tags:: Using direct HTML in Org-mode
9479 * Links in HTML export:: How links will be interpreted and formatted
9480 * Tables in HTML export:: How to modify the formatting of tables
9481 * Images in HTML export:: How to insert figures into HTML output
9482 * Math formatting in HTML export:: Beautiful math also on the web
9483 * Text areas in HTML export:: An alternative way to show an example
9484 * CSS support:: Changing the appearance of the output
9485 * JavaScript support:: Info and Folding in a web browser
9488 @node HTML Export commands, Quoting HTML tags, HTML export, HTML export
9489 @subsection HTML export commands
9491 @cindex region, active
9492 @cindex active region
9493 @cindex transient-mark-mode
9495 @orgcmd{C-c C-e h,org-export-as-html}
9496 @cindex property, EXPORT_FILE_NAME
9497 Export as HTML file @file{myfile.html}. For an Org file @file{myfile.org},
9498 the ASCII file will be @file{myfile.html}. The file will be overwritten
9499 without warning. If there is an active region@footnote{This requires
9500 @code{transient-mark-mode} be turned on.}, only the region will be
9501 exported. If the selected region is a single tree@footnote{To select the
9502 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
9503 title. If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
9504 property, that name will be used for the export.
9505 @orgcmd{C-c C-e b,org-export-as-html-and-open}
9506 Export as HTML file and immediately open it with a browser.
9507 @orgcmd{C-c C-e H,org-export-as-html-to-buffer}
9508 Export to a temporary buffer, do not create a file.
9509 @orgcmd{C-c C-e R,org-export-region-as-html}
9510 Export the active region to a temporary buffer. With a prefix argument, do
9511 not produce the file header and footer, but just the plain HTML section for
9512 the region. This is good for cut-and-paste operations.
9513 @item C-c C-e v h/b/H/R
9514 Export only the visible part of the document.
9515 @item M-x org-export-region-as-html
9516 Convert the region to HTML under the assumption that it was Org-mode
9517 syntax before. This is a global command that can be invoked in any
9519 @item M-x org-replace-region-by-HTML
9520 Replace the active region (assumed to be in Org-mode syntax) by HTML
9524 @cindex headline levels, for exporting
9525 In the exported version, the first 3 outline levels will become headlines,
9526 defining a general document structure. Additional levels will be exported as
9527 itemized lists. If you want that transition to occur at a different level,
9528 specify it with a numeric prefix argument. For example,
9535 creates two levels of headings and does the rest as items.
9537 @node Quoting HTML tags, Links in HTML export, HTML Export commands, HTML export
9538 @subsection Quoting HTML tags
9540 Plain @samp{<} and @samp{>} are always transformed to @samp{<} and
9541 @samp{>} in HTML export. If you want to include simple HTML tags
9542 which should be interpreted as such, mark them with @samp{@@} as in
9543 @samp{@@<b>bold text@@</b>}. Note that this really works only for
9544 simple tags. For more extensive HTML that should be copied verbatim to
9545 the exported file use either
9548 @cindex #+BEGIN_HTML
9550 #+HTML: Literal HTML code for export
9554 @cindex #+BEGIN_HTML
9558 All lines between these markers are exported literally
9563 @node Links in HTML export, Tables in HTML export, Quoting HTML tags, HTML export
9564 @subsection Links in HTML export
9566 @cindex links, in HTML export
9567 @cindex internal links, in HTML export
9568 @cindex external links, in HTML export
9569 Internal links (@pxref{Internal links}) will continue to work in HTML. This
9570 includes automatic links created by radio targets (@pxref{Radio
9571 targets}). Links to external files will still work if the target file is on
9572 the same @i{relative} path as the published Org file. Links to other
9573 @file{.org} files will be translated into HTML links under the assumption
9574 that an HTML version also exists of the linked file, at the same relative
9575 path. @samp{id:} links can then be used to jump to specific entries across
9576 files. For information related to linking files while publishing them to a
9577 publishing directory see @ref{Publishing links}.
9579 If you want to specify attributes for links, you can do so using a special
9580 @code{#+ATTR_HTML} line to define attributes that will be added to the
9581 @code{<a>} or @code{<img>} tags. Here is an example that sets @code{title}
9582 and @code{style} attributes for a link:
9586 #+ATTR_HTML: title="The Org-mode homepage" style="color:red;"
9587 [[http://orgmode.org]]
9590 @node Tables in HTML export, Images in HTML export, Links in HTML export, HTML export
9592 @cindex tables, in HTML
9593 @vindex org-export-html-table-tag
9595 Org-mode tables are exported to HTML using the table tag defined in
9596 @code{org-export-html-table-tag}. The default setting makes tables without
9597 cell borders and frame. If you would like to change this for individual
9598 tables, place something like the following before the table:
9603 #+CAPTION: This is a table with lines around and between cells
9604 #+ATTR_HTML: border="2" rules="all" frame="all"
9607 @node Images in HTML export, Math formatting in HTML export, Tables in HTML export, HTML export
9608 @subsection Images in HTML export
9610 @cindex images, inline in HTML
9611 @cindex inlining images in HTML
9612 @vindex org-export-html-inline-images
9613 HTML export can inline images given as links in the Org file, and
9614 it can make an image the clickable part of a link. By
9615 default@footnote{But see the variable
9616 @code{org-export-html-inline-images}.}, images are inlined if a link does
9617 not have a description. So @samp{[[file:myimg.jpg]]} will be inlined,
9618 while @samp{[[file:myimg.jpg][the image]]} will just produce a link
9619 @samp{the image} that points to the image. If the description part
9620 itself is a @code{file:} link or a @code{http:} URL pointing to an
9621 image, this image will be inlined and activated so that clicking on the
9622 image will activate the link. For example, to include a thumbnail that
9623 will link to a high resolution version of the image, you could use:
9626 [[file:highres.jpg][file:thumb.jpg]]
9629 If you need to add attributes to an inlined image, use a @code{#+ATTR_HTML}.
9630 In the example below we specify the @code{alt} and @code{title} attributes to
9631 support text viewers and accessibility, and align it to the right.
9636 #+CAPTION: A black cat stalking a spider
9637 #+ATTR_HTML: alt="cat/spider image" title="Action!" align="right"
9642 and you could use @code{http} addresses just as well.
9644 @node Math formatting in HTML export, Text areas in HTML export, Images in HTML export, HTML export
9645 @subsection Math formatting in HTML export
9649 La@TeX{} math snippets (@pxref{LaTeX fragments}) can be displayed in two
9650 different ways on HTML pages. The default is to use the
9651 @uref{http://www.mathjax.org, MathJax system} which should work out of the
9652 box with Org mode installation because @code{http://orgmode.org} serves
9653 @file{MathJax} for Org-mode users for small applications and for testing
9654 purposes. @b{If you plan to use this regularly or on pages with significant
9655 page views, you should install MathJax on your own server in order to limit
9656 the load of our server.} To configure @file{MathJax}, use the variable
9657 @code{org-export-html-mathjax-options} or insert something like the following
9661 #+MATHJAX: align:"left" mathml:t path:"/MathJax/MathJax.js"
9664 @noindent See the docstring of the variable
9665 @code{org-export-html-mathjax-options} for the meaning of the parameters in
9668 If you prefer, you can also request that La@TeX{} are processed into small
9669 images that will be inserted into the browser page. Before the availability
9670 of MathJax, this was the default method for Org files. This method requires
9671 that the @file{dvipng} program is available on your system. You can still
9672 get this processing with
9675 #+OPTIONS: LaTeX:dvipng
9678 @node Text areas in HTML export, CSS support, Math formatting in HTML export, HTML export
9679 @subsection Text areas in HTML export
9681 @cindex text areas, in HTML
9682 An alternative way to publish literal code examples in HTML is to use text
9683 areas, where the example can even be edited before pasting it into an
9684 application. It is triggered by a @code{-t} switch at an @code{example} or
9685 @code{src} block. Using this switch disables any options for syntax and
9686 label highlighting, and line numbering, which may be present. You may also
9687 use @code{-h} and @code{-w} switches to specify the height and width of the
9688 text area, which default to the number of lines in the example, and 80,
9689 respectively. For example
9692 #+BEGIN_EXAMPLE -t -w 40
9693 (defun org-xor (a b)
9700 @node CSS support, JavaScript support, Text areas in HTML export, HTML export
9701 @subsection CSS support
9702 @cindex CSS, for HTML export
9703 @cindex HTML export, CSS
9705 @vindex org-export-html-todo-kwd-class-prefix
9706 @vindex org-export-html-tag-class-prefix
9707 You can also give style information for the exported file. The HTML exporter
9708 assigns the following special CSS classes@footnote{If the classes on TODO
9709 keywords and tags lead to conflicts, use the variables
9710 @code{org-export-html-todo-kwd-class-prefix} and
9711 @code{org-export-html-tag-class-prefix} to make them unique.} to appropriate
9712 parts of the document---your style specifications may change these, in
9713 addition to any of the standard classes like for headlines, tables, etc.
9715 p.author @r{author information, including email}
9716 p.date @r{publishing date}
9717 p.creator @r{creator info, about org-mode version}
9718 .title @r{document title}
9719 .todo @r{TODO keywords, all not-done states}
9720 .done @r{the DONE keywords, all stated the count as done}
9721 .WAITING @r{each TODO keyword also uses a class named after itself}
9722 .timestamp @r{timestamp}
9723 .timestamp-kwd @r{keyword associated with a timestamp, like SCHEDULED}
9724 .timestamp-wrapper @r{span around keyword plus timestamp}
9725 .tag @r{tag in a headline}
9726 ._HOME @r{each tag uses itself as a class, "@@" replaced by "_"}
9727 .target @r{target for links}
9728 .linenr @r{the line number in a code example}
9729 .code-highlighted @r{for highlighting referenced code lines}
9730 div.outline-N @r{div for outline level N (headline plus text))}
9731 div.outline-text-N @r{extra div for text at outline level N}
9732 .section-number-N @r{section number in headlines, different for each level}
9733 div.figure @r{how to format an inlined image}
9734 pre.src @r{formatted source code}
9735 pre.example @r{normal example}
9736 p.verse @r{verse paragraph}
9737 div.footnotes @r{footnote section headline}
9738 p.footnote @r{footnote definition paragraph, containing a footnote}
9739 .footref @r{a footnote reference number (always a <sup>)}
9740 .footnum @r{footnote number in footnote definition (always <sup>)}
9743 @vindex org-export-html-style-default
9744 @vindex org-export-html-style-include-default
9745 @vindex org-export-html-style
9746 @vindex org-export-html-extra
9747 @vindex org-export-html-style-default
9748 Each exported file contains a compact default style that defines these
9749 classes in a basic way@footnote{This style is defined in the constant
9750 @code{org-export-html-style-default}, which you should not modify. To turn
9751 inclusion of these defaults off, customize
9752 @code{org-export-html-style-include-default}}. You may overwrite these
9753 settings, or add to them by using the variables @code{org-export-html-style}
9754 (for Org-wide settings) and @code{org-export-html-style-extra} (for more
9755 granular settings, like file-local settings). To set the latter variable
9756 individually for each file, you can use
9760 #+STYLE: <link rel="stylesheet" type="text/css" href="stylesheet.css" />
9764 For longer style definitions, you can use several such lines. You could also
9765 directly write a @code{<style>} @code{</style>} section in this way, without
9766 referring to an external file.
9768 In order to add styles to a subtree, use the @code{:HTML_CONTAINER_CLASS:}
9769 property to assign a class to the tree. In order to specify CSS styles for a
9770 particular headline, you can use the id specified in a @code{:CUSTOM_ID:}
9773 @c FIXME: More about header and footer styles
9774 @c FIXME: Talk about links and targets.
9776 @node JavaScript support, , CSS support, HTML export
9777 @subsection JavaScript supported display of web pages
9779 @cindex Rose, Sebastian
9780 Sebastian Rose has written a JavaScript program especially designed to
9781 enhance the web viewing experience of HTML files created with Org. This
9782 program allows you to view large files in two different ways. The first one
9783 is an @emph{Info}-like mode where each section is displayed separately and
9784 navigation can be done with the @kbd{n} and @kbd{p} keys (and some other keys
9785 as well, press @kbd{?} for an overview of the available keys). The second
9786 view type is a @emph{folding} view much like Org provides inside Emacs. The
9787 script is available at @url{http://orgmode.org/org-info.js} and you can find
9788 the documentation for it at @url{http://orgmode.org/worg/code/org-info-js/}.
9789 We host the script at our site, but if you use it a lot, you might
9790 not want to be dependent on @url{orgmode.org} and prefer to install a local
9791 copy on your own web server.
9793 To use the script, you need to make sure that the @file{org-jsinfo.el} module
9794 gets loaded. It should be loaded by default, but you can try @kbd{M-x
9795 customize-variable @key{RET} org-modules @key{RET}} to convince yourself that
9796 this is indeed the case. All it then takes to make use of the program is
9797 adding a single line to the Org file:
9799 @cindex #+INFOJS_OPT
9801 #+INFOJS_OPT: view:info toc:nil
9805 If this line is found, the HTML header will automatically contain the code
9806 needed to invoke the script. Using the line above, you can set the following
9810 path: @r{The path to the script. The default is to grab the script from}
9811 @r{@url{http://orgmode.org/org-info.js}, but you might want to have}
9812 @r{a local copy and use a path like @samp{../scripts/org-info.js}.}
9813 view: @r{Initial view when website is first shown. Possible values are:}
9814 info @r{Info-like interface with one section per page.}
9815 overview @r{Folding interface, initially showing only top-level.}
9816 content @r{Folding interface, starting with all headlines visible.}
9817 showall @r{Folding interface, all headlines and text visible.}
9818 sdepth: @r{Maximum headline level that will still become an independent}
9819 @r{section for info and folding modes. The default is taken from}
9820 @r{@code{org-export-headline-levels} (= the @code{H} switch in @code{#+OPTIONS}).}
9821 @r{If this is smaller than in @code{org-export-headline-levels}, each}
9822 @r{info/folding section can still contain child headlines.}
9823 toc: @r{Should the table of content @emph{initially} be visible?}
9824 @r{Even when @code{nil}, you can always get to the "toc" with @kbd{i}.}
9825 tdepth: @r{The depth of the table of contents. The defaults are taken from}
9826 @r{the variables @code{org-export-headline-levels} and @code{org-export-with-toc}.}
9827 ftoc: @r{Does the css of the page specify a fixed position for the "toc"?}
9828 @r{If yes, the toc will never be displayed as a section.}
9829 ltoc: @r{Should there be short contents (children) in each section?}
9830 @r{Make this @code{above} if the section should be above initial text.}
9831 mouse: @r{Headings are highlighted when the mouse is over them. Should be}
9832 @r{@samp{underline} (default) or a background color like @samp{#cccccc}.}
9833 buttons: @r{Should view-toggle buttons be everywhere? When @code{nil} (the}
9834 @r{default), only one such button will be present.}
9837 @vindex org-infojs-options
9838 @vindex org-export-html-use-infojs
9839 You can choose default values for these options by customizing the variable
9840 @code{org-infojs-options}. If you always want to apply the script to your
9841 pages, configure the variable @code{org-export-html-use-infojs}.
9843 @node LaTeX and PDF export, DocBook export, HTML export, Exporting
9844 @section La@TeX{} and PDF export
9845 @cindex La@TeX{} export
9847 @cindex Guerry, Bastien
9849 Org-mode contains a La@TeX{} exporter written by Bastien Guerry. With
9850 further processing@footnote{The default LaTeX output is designed for
9851 processing with pdftex or latex. It includes packages that are not
9852 compatible with xetex and possibly luatex. See the variables
9853 @code{org-export-latex-default-packages-alist} and
9854 @code{org-export-latex-packages-alist}.}, this backend is also used to
9855 produce PDF output. Since the La@TeX{} output uses @file{hyperref} to
9856 implement links and cross references, the PDF output file will be fully
9860 * LaTeX/PDF export commands:: Which key invokes which commands
9861 * Header and sectioning:: Setting up the export file structure
9862 * Quoting LaTeX code:: Incorporating literal La@TeX{} code
9863 * Tables in LaTeX export:: Options for exporting tables to La@TeX{}
9864 * Images in LaTeX export:: How to insert figures into La@TeX{} output
9865 * Beamer class export:: Turning the file into a presentation
9868 @node LaTeX/PDF export commands, Header and sectioning, LaTeX and PDF export, LaTeX and PDF export
9869 @subsection La@TeX{} export commands
9871 @cindex region, active
9872 @cindex active region
9873 @cindex transient-mark-mode
9875 @orgcmd{C-c C-e l,org-export-as-latex}
9876 @cindex property EXPORT_FILE_NAME
9877 Export as La@TeX{} file @file{myfile.tex}. For an Org file
9878 @file{myfile.org}, the ASCII file will be @file{myfile.tex}. The file will
9879 be overwritten without warning. If there is an active region@footnote{This
9880 requires @code{transient-mark-mode} be turned on.}, only the region will be
9881 exported. If the selected region is a single tree@footnote{To select the
9882 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
9883 title. If the tree head entry has or inherits an @code{EXPORT_FILE_NAME}
9884 property, that name will be used for the export.
9885 @orgcmd{C-c C-e L,org-export-as-latex-to-buffer}
9886 Export to a temporary buffer, do not create a file.
9888 Export only the visible part of the document.
9889 @item M-x org-export-region-as-latex
9890 Convert the region to La@TeX{} under the assumption that it was Org-mode
9891 syntax before. This is a global command that can be invoked in any
9893 @item M-x org-replace-region-by-latex
9894 Replace the active region (assumed to be in Org-mode syntax) by La@TeX{}
9896 @orgcmd{C-c C-e p,org-export-as-pdf}
9897 Export as La@TeX{} and then process to PDF.
9898 @orgcmd{C-c C-e d,org-export-as-pdf-and-open}
9899 Export as La@TeX{} and then process to PDF, then open the resulting PDF file.
9902 @cindex headline levels, for exporting
9903 @vindex org-latex-low-levels
9904 In the exported version, the first 3 outline levels will become
9905 headlines, defining a general document structure. Additional levels
9906 will be exported as description lists. The exporter can ignore them or
9907 convert them to a custom string depending on
9908 @code{org-latex-low-levels}.
9910 If you want that transition to occur at a different level, specify it
9911 with a numeric prefix argument. For example,
9918 creates two levels of headings and does the rest as items.
9920 @node Header and sectioning, Quoting LaTeX code, LaTeX/PDF export commands, LaTeX and PDF export
9921 @subsection Header and sectioning structure
9922 @cindex La@TeX{} class
9923 @cindex La@TeX{} sectioning structure
9924 @cindex La@TeX{} header
9925 @cindex header, for LaTeX files
9926 @cindex sectioning structure, for LaTeX export
9928 By default, the La@TeX{} output uses the class @code{article}.
9930 @vindex org-export-latex-default-class
9931 @vindex org-export-latex-classes
9932 @vindex org-export-latex-default-packages-alist
9933 @vindex org-export-latex-packages-alist
9934 @cindex #+LATEX_HEADER
9935 @cindex #+LATEX_CLASS
9936 @cindex #+LATEX_CLASS_OPTIONS
9937 @cindex property, LATEX_CLASS
9938 @cindex property, LATEX_CLASS_OPTIONS
9939 You can change this globally by setting a different value for
9940 @code{org-export-latex-default-class} or locally by adding an option like
9941 @code{#+LaTeX_CLASS: myclass} in your file, or with a @code{:LaTeX_CLASS:}
9942 property that applies when exporting a region containing only this (sub)tree.
9943 The class must be listed in @code{org-export-latex-classes}. This variable
9944 defines a header template for each class@footnote{Into which the values of
9945 @code{org-export-latex-default-packages-alist} and
9946 @code{org-export-latex-packages-alist} are spliced.}, and allows you to
9947 define the sectioning structure for each class. You can also define your own
9948 classes there. @code{#+LaTeX_CLASS_OPTIONS} or a @code{LaTeX_CLASS_OPTIONS}
9949 property can specify the options for the @code{\documentclass} macro. You
9950 can also use @code{#+LATEX_HEADER: \usepackage@{xyz@}} to add lines to the
9951 header. See the docstring of @code{org-export-latex-classes} for more
9954 @node Quoting LaTeX code, Tables in LaTeX export, Header and sectioning, LaTeX and PDF export
9955 @subsection Quoting La@TeX{} code
9957 Embedded La@TeX{} as described in @ref{Embedded LaTeX}, will be correctly
9958 inserted into the La@TeX{} file. This includes simple macros like
9959 @samp{\ref@{LABEL@}} to create a cross reference to a figure. Furthermore,
9960 you can add special code that should only be present in La@TeX{} export with
9961 the following constructs:
9964 @cindex #+BEGIN_LaTeX
9966 #+LaTeX: Literal LaTeX code for export
9970 @cindex #+BEGIN_LaTeX
9974 All lines between these markers are exported literally
9979 @node Tables in LaTeX export, Images in LaTeX export, Quoting LaTeX code, LaTeX and PDF export
9980 @subsection Tables in La@TeX{} export
9981 @cindex tables, in La@TeX{} export
9983 For La@TeX{} export of a table, you can specify a label and a caption
9984 (@pxref{Images and tables}). You can also use the @code{ATTR_LaTeX} line to
9985 request a @code{longtable} environment for the table, so that it may span
9986 several pages, or provide the @code{multicolumn} keyword that will make the
9987 table span the page in a multicolumn environment (@code{table*} environment).
9988 Finally, you can set the alignment string:
9992 @cindex #+ATTR_LaTeX
9994 #+CAPTION: A long table
9996 #+ATTR_LaTeX: longtable align=l|lp@{3cm@}r|l
10002 @node Images in LaTeX export, Beamer class export, Tables in LaTeX export, LaTeX and PDF export
10003 @subsection Images in La@TeX{} export
10004 @cindex images, inline in La@TeX{}
10005 @cindex inlining images in La@TeX{}
10007 Images that are linked to without a description part in the link, like
10008 @samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]} will be inserted into the PDF
10009 output file resulting from La@TeX{} processing. Org will use an
10010 @code{\includegraphics} macro to insert the image. If you have specified a
10011 caption and/or a label as described in @ref{Images and tables}, the figure
10012 will be wrapped into a @code{figure} environment and thus become a floating
10013 element. You can use an @code{#+ATTR_LaTeX:} line to specify the various
10014 options that can be used in the optional argument of the
10015 @code{\includegraphics} macro. To modify the placement option of the
10016 @code{figure} environment, add something like @samp{placement=[h!]} to the
10019 If you would like to let text flow around the image, add the word @samp{wrap}
10020 to the @code{#+ATTR_LaTeX:} line, which will make the figure occupy the left
10021 half of the page. To fine-tune, the @code{placement} field will be the set
10022 of additional arguments needed by the @code{wrapfigure} environment. Note
10023 that if you change the size of the image, you need to use compatible settings
10024 for @code{\includegraphics} and @code{wrapfigure}.
10028 @cindex #+ATTR_LaTeX
10030 #+CAPTION: The black-body emission of the disk around HR 4049
10031 #+LABEL: fig:SED-HR4049
10032 #+ATTR_LaTeX: width=5cm,angle=90
10033 [[./img/sed-hr4049.pdf]]
10035 #+ATTR_LaTeX: width=0.38\textwidth wrap placement=@{r@}@{0.4\textwidth@}
10039 If you need references to a label created in this way, write
10040 @samp{\ref@{fig:SED-HR4049@}} just like in La@TeX{}.
10042 @node Beamer class export, , Images in LaTeX export, LaTeX and PDF export
10043 @subsection Beamer class export
10045 The LaTeX class @file{beamer} allows production of high quality presentations
10046 using LaTeX and pdf processing. Org-mode has special support for turning an
10047 Org-mode file or tree into a @file{beamer} presentation.
10049 When the LaTeX class for the current buffer (as set with @code{#+LaTeX_CLASS:
10050 beamer}) or subtree (set with a @code{LaTeX_CLASS} property) is
10051 @code{beamer}, a special export mode will turn the file or tree into a beamer
10052 presentation. Any tree with not-too-deep level nesting should in principle be
10053 exportable as a beamer presentation. By default, the top-level entries (or
10054 the first level below the selected subtree heading) will be turned into
10055 frames, and the outline structure below this level will become itemize lists.
10056 You can also configure the variable @code{org-beamer-frame-level} to a
10057 different level - then the hierarchy above frames will produce the sectioning
10058 structure of the presentation.
10060 A template for useful in-buffer settings or properties can be inserted into
10061 the buffer with @kbd{M-x org-insert-beamer-options-template}. Among other
10062 things, this will install a column view format which is very handy for
10063 editing special properties used by beamer.
10065 You can influence the structure of the presentation using the following
10070 The environment that should be used to format this entry. Valid environments
10071 are defined in the constant @code{org-beamer-environments-default}, and you
10072 can define more in @code{org-beamer-environments-extra}. If this property is
10073 set, the entry will also get a @code{:B_environment:} tag to make this
10074 visible. This tag has no semantic meaning, it is only a visual aid.
10075 @item BEAMER_envargs
10076 The beamer-special arguments that should be used for the environment, like
10077 @code{[t]} or @code{[<+->]} of @code{<2-3>}. If the @code{BEAMER_col}
10078 property is also set, something like @code{C[t]} can be added here as well to
10079 set an options argument for the implied @code{columns} environment.
10080 @code{c[t]} will set an option for the implied @code{column} environment.
10082 The width of a column that should start with this entry. If this property is
10083 set, the entry will also get a @code{:BMCOL:} property to make this visible.
10084 Also this tag is only a visual aid. When this is a plain number, it will be
10085 interpreted as a fraction of @code{\textwidth}. Otherwise it will be assumed
10086 that you have specified the units, like @samp{3cm}. The first such property
10087 in a frame will start a @code{columns} environment to surround the columns.
10088 This environment is closed when an entry has a @code{BEAMER_col} property
10089 with value 0 or 1, or automatically at the end of the frame.
10091 Additional commands that should be inserted after the environment has been
10092 opened. For example, when creating a frame, this can be used to specify
10096 Frames will automatically receive a @code{fragile} option if they contain
10097 source code that uses the verbatim environment. Special @file{beamer}
10098 specific code can be inserted using @code{#+BEAMER:} and
10099 @code{#+BEGIN_beamer...#+end_beamer} constructs, similar to other export
10100 backends, but with the difference that @code{#+LaTeX:} stuff will be included
10101 in the presentation as well.
10103 Outline nodes with @code{BEAMER_env} property value @samp{note} or
10104 @samp{noteNH} will be formatted as beamer notes, i,e, they will be wrapped
10105 into @code{\note@{...@}}. The former will include the heading as part of the
10106 note text, the latter will ignore the heading of that node. To simplify note
10107 generation, it is actually enough to mark the note with a @emph{tag} (either
10108 @code{:B_note:} or @code{:B_noteNH:}) instead of creating the
10109 @code{BEAMER_env} property.
10111 You can turn on a special minor mode @code{org-beamer-mode} for editing
10119 @orgcmd{C-c C-b,org-beamer-select-environment}
10120 In @code{org-beamer-mode}, this key offers fast selection of a beamer
10121 environment or the @code{BEAMER_col} property.
10124 Column view provides a great way to set the environment of a node and other
10125 important parameters. Make sure you are using a COLUMN format that is geared
10126 toward this special purpose. The command @kbd{M-x
10127 org-insert-beamer-options-template} defines such a format.
10129 Here is a simple example Org document that is intended for beamer export.
10132 #+LaTeX_CLASS: beamer
10133 #+TITLE: Example Presentation
10134 #+AUTHOR: Carsten Dominik
10135 #+LaTeX_CLASS_OPTIONS: [presentation]
10136 #+BEAMER_FRAME_LEVEL: 2
10137 #+BEAMER_HEADER_EXTRA: \usetheme@{Madrid@}\usecolortheme@{default@}
10138 #+COLUMNS: %35ITEM %10BEAMER_env(Env) %10BEAMER_envargs(Args) %4BEAMER_col(Col) %8BEAMER_extra(Ex)
10140 * This is the first structural section
10142 ** Frame 1 \\ with a subtitle
10143 *** Thanks to Eric Fraga :BMCOL:B_block:
10146 :BEAMER_envargs: C[t]
10149 for the first viable beamer setup in Org
10150 *** Thanks to everyone else :BMCOL:B_block:
10154 :BEAMER_envargs: <2->
10156 for contributing to the discussion
10157 **** This will be formatted as a beamer note :B_note:
10158 ** Frame 2 \\ where we will not use columns
10159 *** Request :B_block:
10160 Please test this stuff!
10166 For more information, see the documentation on Worg.
10168 @node DocBook export, TaskJuggler export, LaTeX and PDF export, Exporting
10169 @section DocBook export
10170 @cindex DocBook export
10172 @cindex Cui, Baoqiu
10174 Org contains a DocBook exporter written by Baoqiu Cui. Once an Org file is
10175 exported to DocBook format, it can be further processed to produce other
10176 formats, including PDF, HTML, man pages, etc., using many available DocBook
10177 tools and stylesheets.
10179 Currently DocBook exporter only supports DocBook V5.0.
10182 * DocBook export commands:: How to invoke DocBook export
10183 * Quoting DocBook code:: Incorporating DocBook code in Org files
10184 * Recursive sections:: Recursive sections in DocBook
10185 * Tables in DocBook export:: Tables are exported as HTML tables
10186 * Images in DocBook export:: How to insert figures into DocBook output
10187 * Special characters:: How to handle special characters
10190 @node DocBook export commands, Quoting DocBook code, DocBook export, DocBook export
10191 @subsection DocBook export commands
10193 @cindex region, active
10194 @cindex active region
10195 @cindex transient-mark-mode
10197 @orgcmd{C-c C-e D,org-export-as-docbook}
10198 @cindex property EXPORT_FILE_NAME
10199 Export as DocBook file. For an Org file, @file{myfile.org}, the DocBook XML
10200 file will be @file{myfile.xml}. The file will be overwritten without
10201 warning. If there is an active region@footnote{This requires
10202 @code{transient-mark-mode} to be turned on}, only the region will be
10203 exported. If the selected region is a single tree@footnote{To select the
10204 current subtree, use @kbd{C-c @@}.}, the tree head will become the document
10205 title. If the tree head entry has, or inherits, an @code{EXPORT_FILE_NAME}
10206 property, that name will be used for the export.
10207 @orgcmd{C-c C-e V,org-export-as-docbook-pdf-and-open}
10208 Export as DocBook file, process to PDF, then open the resulting PDF file.
10210 @vindex org-export-docbook-xslt-proc-command
10211 @vindex org-export-docbook-xsl-fo-proc-command
10212 Note that, in order to produce PDF output based on exported DocBook file, you
10213 need to have XSLT processor and XSL-FO processor software installed on your
10214 system. Check variables @code{org-export-docbook-xslt-proc-command} and
10215 @code{org-export-docbook-xsl-fo-proc-command}.
10217 @vindex org-export-docbook-xslt-stylesheet
10218 The stylesheet argument @code{%s} in variable
10219 @code{org-export-docbook-xslt-proc-command} is replaced by the value of
10220 variable @code{org-export-docbook-xslt-stylesheet}, which needs to be set by
10221 the user. You can also overrule this global setting on a per-file basis by
10222 adding an in-buffer setting @code{#+XSLT:} to the Org file.
10224 @orgkey{C-c C-e v D}
10225 Export only the visible part of the document.
10228 @node Quoting DocBook code, Recursive sections, DocBook export commands, DocBook export
10229 @subsection Quoting DocBook code
10231 You can quote DocBook code in Org files and copy it verbatim into exported
10232 DocBook file with the following constructs:
10235 @cindex #+BEGIN_DOCBOOK
10237 #+DOCBOOK: Literal DocBook code for export
10241 @cindex #+BEGIN_DOCBOOK
10245 All lines between these markers are exported by DocBook exporter
10250 For example, you can use the following lines to include a DocBook warning
10251 admonition. As to what this warning says, you should pay attention to the
10252 document context when quoting DocBook code in Org files. You may make
10253 exported DocBook XML files invalid by not quoting DocBook code correctly.
10258 <para>You should know what you are doing when quoting DocBook XML code
10259 in your Org file. Invalid DocBook XML file may be generated by
10260 DocBook exporter if you are not careful!</para>
10265 @node Recursive sections, Tables in DocBook export, Quoting DocBook code, DocBook export
10266 @subsection Recursive sections
10267 @cindex DocBook recursive sections
10269 DocBook exporter exports Org files as articles using the @code{article}
10270 element in DocBook. Recursive sections, i.e. @code{section} elements, are
10271 used in exported articles. Top level headlines in Org files are exported as
10272 top level sections, and lower level headlines are exported as nested
10273 sections. The entire structure of Org files will be exported completely, no
10274 matter how many nested levels of headlines there are.
10276 Using recursive sections makes it easy to port and reuse exported DocBook
10277 code in other DocBook document types like @code{book} or @code{set}.
10279 @node Tables in DocBook export, Images in DocBook export, Recursive sections, DocBook export
10280 @subsection Tables in DocBook export
10281 @cindex tables, in DocBook export
10283 Tables in Org files are exported as HTML tables, which have been supported since
10286 If a table does not have a caption, an informal table is generated using the
10287 @code{informaltable} element; otherwise, a formal table will be generated
10288 using the @code{table} element.
10290 @node Images in DocBook export, Special characters, Tables in DocBook export, DocBook export
10291 @subsection Images in DocBook export
10292 @cindex images, inline in DocBook
10293 @cindex inlining images in DocBook
10295 Images that are linked to without a description part in the link, like
10296 @samp{[[file:img.jpg]]} or @samp{[[./img.jpg]]}, will be exported to DocBook
10297 using @code{mediaobject} elements. Each @code{mediaobject} element contains
10298 an @code{imageobject} that wraps an @code{imagedata} element. If you have
10299 specified a caption for an image as described in @ref{Images and tables}, a
10300 @code{caption} element will be added in @code{mediaobject}. If a label is
10301 also specified, it will be exported as an @code{xml:id} attribute of the
10302 @code{mediaobject} element.
10304 @vindex org-export-docbook-default-image-attributes
10305 Image attributes supported by the @code{imagedata} element, like @code{align}
10306 or @code{width}, can be specified in two ways: you can either customize
10307 variable @code{org-export-docbook-default-image-attributes} or use the
10308 @code{#+ATTR_DOCBOOK:} line. Attributes specified in variable
10309 @code{org-export-docbook-default-image-attributes} are applied to all inline
10310 images in the Org file to be exported (unless they are overridden by image
10311 attributes specified in @code{#+ATTR_DOCBOOK:} lines).
10313 The @code{#+ATTR_DOCBOOK:} line can be used to specify additional image
10314 attributes or override default image attributes for individual images. If
10315 the same attribute appears in both the @code{#+ATTR_DOCBOOK:} line and
10316 variable @code{org-export-docbook-default-image-attributes}, the former
10317 takes precedence. Here is an example about how image attributes can be
10322 @cindex #+ATTR_DOCBOOK
10324 #+CAPTION: The logo of Org-mode
10325 #+LABEL: unicorn-svg
10326 #+ATTR_DOCBOOK: scalefit="1" width="100%" depth="100%"
10327 [[./img/org-mode-unicorn.svg]]
10330 @vindex org-export-docbook-inline-image-extensions
10331 By default, DocBook exporter recognizes the following image file types:
10332 @file{jpeg}, @file{jpg}, @file{png}, @file{gif}, and @file{svg}. You can
10333 customize variable @code{org-export-docbook-inline-image-extensions} to add
10334 more types to this list as long as DocBook supports them.
10336 @node Special characters, , Images in DocBook export, DocBook export
10337 @subsection Special characters in DocBook export
10338 @cindex Special characters in DocBook export
10340 @vindex org-export-docbook-doctype
10341 @vindex org-entities
10342 Special characters that are written in @TeX{}-like syntax, such as @code{\alpha},
10343 @code{\Gamma}, and @code{\Zeta}, are supported by DocBook exporter. These
10344 characters are rewritten to XML entities, like @code{α},
10345 @code{Γ}, and @code{Ζ}, based on the list saved in variable
10346 @code{org-entities}. As long as the generated DocBook file includes the
10347 corresponding entities, these special characters are recognized.
10349 You can customize variable @code{org-export-docbook-doctype} to include the
10350 entities you need. For example, you can set variable
10351 @code{org-export-docbook-doctype} to the following value to recognize all
10352 special characters included in XHTML entities:
10355 "<!DOCTYPE article [
10356 <!ENTITY % xhtml1-symbol PUBLIC
10357 \"-//W3C//ENTITIES Symbol for HTML//EN//XML\"
10358 \"http://www.w3.org/2003/entities/2007/xhtml1-symbol.ent\"
10365 @node TaskJuggler export, Freemind export, DocBook export, Exporting
10366 @section TaskJuggler export
10367 @cindex TaskJuggler export
10368 @cindex Project management
10370 @uref{http://www.taskjuggler.org/, TaskJuggler} is a project management tool.
10371 It provides an optimizing scheduler that computes your project time lines and
10372 resource assignments based on the project outline and the constraints that
10375 The TaskJuggler exporter is a bit different from other exporters, such as the
10376 HTML and LaTeX exporters for example, in that it does not export all the
10377 nodes of a document or strictly follow the order of the nodes in the
10380 Instead the TaskJuggler exporter looks for a tree that defines the tasks and
10381 a optionally tree that defines the resources for this project. It then
10382 creates a TaskJuggler file based on these trees and the attributes defined in
10385 @subsection TaskJuggler export commands
10388 @orgcmd{C-c C-e j,org-export-as-taskjuggler}
10389 Export as TaskJuggler file.
10391 @orgcmd{C-c C-e J,org-export-as-taskjuggler-and-open}
10392 Export as TaskJuggler file and then open the file with TaskJugglerUI.
10397 @vindex org-export-taskjuggler-project-tag
10398 Create your tasks as you usually do with Org-mode. Assign efforts to each
10399 task using properties (it's easiest to do this in the column view). You
10400 should end up with something similar to the example by Peter Jones in
10401 @url{http://www.contextualdevelopment.com/static/artifacts/articles/2008/project-planning/project-planning.org}.
10402 Now mark the top node of your tasks with a tag named
10403 @code{:taskjuggler_project:} (or whatever you customized
10404 @code{org-export-taskjuggler-project-tag} to). You are now ready to export
10405 the project plan with @kbd{C-c C-e J} which will export the project plan and
10406 open a gantt chart in TaskJugglerUI.
10408 @subsection Resources
10410 @vindex org-export-taskjuggler-resource-tag
10411 Next you can define resources and assign those to work on specific tasks. You
10412 can group your resources hierarchically. Tag the top node of the resources
10413 with @code{:taskjuggler_resource:} (or whatever you customized
10414 @code{org-export-taskjuggler-resource-tag} to). You can optionally assign an
10415 identifier (named @samp{resource_id}) to the resources (using the standard
10416 Org properties commands, @pxref{Property syntax}) or you can let the exporter
10417 generate identifiers automatically (the exporter picks the first word of the
10418 headline as the identifier as long as it is unique, see the documentation of
10419 @code{org-taskjuggler-get-unique-id}). Using that identifier you can then
10420 allocate resources to tasks. This is again done with the @samp{allocate}
10421 property on the tasks. Do this in column view or when on the task type
10422 @kbd{C-c C-x p allocate @key{RET} <resource_id> @key{RET}}.
10424 Once the allocations are done you can again export to TaskJuggler and check
10425 in the Resource Allocation Graph which person is working on what task at what
10428 @subsection Export of properties
10430 The exporter also takes TODO state information into consideration, i.e. if a
10431 task is marked as done it will have the corresponding attribute in
10432 TaskJuggler (@samp{complete 100}). Also it will export any property on a task
10433 resource or resource node which is known to TaskJuggler, such as
10434 @samp{limits}, @samp{vacation}, @samp{shift}, @samp{booking},
10435 @samp{efficiency}, @samp{journalentry}, @samp{rate} for resources or
10436 @samp{account}, @samp{start}, @samp{note}, @samp{duration}, @samp{end},
10437 @samp{journalentry}, @samp{milestone}, @samp{reference}, @samp{responsible},
10438 @samp{scheduling}, etc for tasks.
10440 @subsection Dependencies
10442 The exporter will handle dependencies that are defined in the tasks either
10443 with the @samp{ORDERED} attribute (@pxref{TODO dependencies}), with the
10444 @samp{BLOCKER} attribute (see org-depend.el) or alternatively with a
10445 @samp{depends} attribute. Both the @samp{BLOCKER} and the @samp{depends}
10446 attribute can be either @samp{previous-sibling} or a reference to an
10447 identifier (named @samp{task_id}) which is defined for another task in the
10448 project. @samp{BLOCKER} and the @samp{depends} attribute can define multiple
10449 dependencies separated by either space or comma. You can also specify
10450 optional attributes on the dependency by simply appending it. The following
10451 examples should illustrate this:
10456 :task_id: preparation
10459 * Training material
10461 :task_id: training_material
10464 ** Markup Guidelines
10468 ** Workflow Guidelines
10475 :BLOCKER: training_material @{ gapduration 1d @} preparation
10479 @subsection Reports
10481 @vindex org-export-taskjuggler-default-reports
10482 TaskJuggler can produce many kinds of reports (e.g. gantt chart, resource
10483 allocation, etc). The user defines what kind of reports should be generated
10484 for a project in the TaskJuggler file. The exporter will automatically insert
10485 some default reports in the file. These defaults are defined in
10486 @code{org-export-taskjuggler-default-reports}. They can be modified using
10487 customize along with a number of other options. For a more complete list, see
10488 @kbd{M-x customize-group @key{RET} org-export-taskjuggler @key{RET}}.
10490 For more information and examples see the Org-taskjuggler tutorial at
10491 @uref{http://orgmode.org/worg/org-tutorials/org-taskjuggler.php}.
10493 @node Freemind export, XOXO export, TaskJuggler export, Exporting
10494 @section Freemind export
10495 @cindex Freemind export
10498 The Freemind exporter was written by Lennart Borgman.
10501 @orgcmd{C-c C-e m,org-export-as-freemind}
10502 Export as Freemind mind map @file{myfile.mm}.
10505 @node XOXO export, iCalendar export, Freemind export, Exporting
10506 @section XOXO export
10507 @cindex XOXO export
10509 Org-mode contains an exporter that produces XOXO-style output.
10510 Currently, this exporter only handles the general outline structure and
10511 does not interpret any additional Org-mode features.
10514 @orgcmd{C-c C-e x,org-export-as-xoxo}
10515 Export as XOXO file @file{myfile.html}.
10516 @orgkey{C-c C-e v x}
10517 Export only the visible part of the document.
10520 @node iCalendar export, , XOXO export, Exporting
10521 @section iCalendar export
10522 @cindex iCalendar export
10524 @vindex org-icalendar-include-todo
10525 @vindex org-icalendar-use-deadline
10526 @vindex org-icalendar-use-scheduled
10527 @vindex org-icalendar-categories
10528 @vindex org-icalendar-alarm-time
10529 Some people use Org-mode for keeping track of projects, but still prefer a
10530 standard calendar application for anniversaries and appointments. In this
10531 case it can be useful to show deadlines and other time-stamped items in Org
10532 files in the calendar application. Org-mode can export calendar information
10533 in the standard iCalendar format. If you also want to have TODO entries
10534 included in the export, configure the variable
10535 @code{org-icalendar-include-todo}. Plain timestamps are exported as VEVENT,
10536 and TODO items as VTODO. It will also create events from deadlines that are
10537 in non-TODO items. Deadlines and scheduling dates in TODO items will be used
10538 to set the start and due dates for the TODO entry@footnote{See the variables
10539 @code{org-icalendar-use-deadline} and @code{org-icalendar-use-scheduled}.}.
10540 As categories, it will use the tags locally defined in the heading, and the
10541 file/tree category@footnote{To add inherited tags or the TODO state,
10542 configure the variable @code{org-icalendar-categories}.}. See the variable
10543 @code{org-icalendar-alarm-time} for a way to assign alarms to entries with a
10546 @vindex org-icalendar-store-UID
10547 @cindex property, ID
10548 The iCalendar standard requires each entry to have a globally unique
10549 identifier (UID). Org creates these identifiers during export. If you set
10550 the variable @code{org-icalendar-store-UID}, the UID will be stored in the
10551 @code{:ID:} property of the entry and re-used next time you report this
10552 entry. Since a single entry can give rise to multiple iCalendar entries (as
10553 a timestamp, a deadline, a scheduled item, and as a TODO item), Org adds
10554 prefixes to the UID, depending on what triggered the inclusion of the entry.
10555 In this way the UID remains unique, but a synchronization program can still
10556 figure out from which entry all the different instances originate.
10559 @orgcmd{C-c C-e i,org-export-icalendar-this-file}
10560 Create iCalendar entries for the current file and store them in the same
10561 directory, using a file extension @file{.ics}.
10562 @orgcmd{C-c C-e I, org-export-icalendar-all-agenda-files}
10563 @vindex org-agenda-files
10564 Like @kbd{C-c C-e i}, but do this for all files in
10565 @code{org-agenda-files}. For each of these files, a separate iCalendar
10566 file will be written.
10567 @orgcmd{C-c C-e c,org-export-icalendar-combine-agenda-files}
10568 @vindex org-combined-agenda-icalendar-file
10569 Create a single large iCalendar file from all files in
10570 @code{org-agenda-files} and write it to the file given by
10571 @code{org-combined-agenda-icalendar-file}.
10574 @vindex org-use-property-inheritance
10575 @vindex org-icalendar-include-body
10576 @cindex property, SUMMARY
10577 @cindex property, DESCRIPTION
10578 @cindex property, LOCATION
10579 The export will honor SUMMARY, DESCRIPTION and LOCATION@footnote{The LOCATION
10580 property can be inherited from higher in the hierarchy if you configure
10581 @code{org-use-property-inheritance} accordingly.} properties if the selected
10582 entries have them. If not, the summary will be derived from the headline,
10583 and the description from the body (limited to
10584 @code{org-icalendar-include-body} characters).
10586 How this calendar is best read and updated, depends on the application
10587 you are using. The FAQ covers this issue.
10589 @node Publishing, Working With Source Code, Exporting, Top
10590 @chapter Publishing
10593 Org includes a publishing management system that allows you to configure
10594 automatic HTML conversion of @emph{projects} composed of interlinked org
10595 files. You can also configure Org to automatically upload your exported HTML
10596 pages and related attachments, such as images and source code files, to a web
10599 You can also use Org to convert files into PDF, or even combine HTML and PDF
10600 conversion so that files are available in both formats on the server.
10602 Publishing has been contributed to Org by David O'Toole.
10605 * Configuration:: Defining projects
10606 * Uploading files:: How to get files up on the server
10607 * Sample configuration:: Example projects
10608 * Triggering publication:: Publication commands
10611 @node Configuration, Uploading files, Publishing, Publishing
10612 @section Configuration
10614 Publishing needs significant configuration to specify files, destination
10615 and many other properties of a project.
10618 * Project alist:: The central configuration variable
10619 * Sources and destinations:: From here to there
10620 * Selecting files:: What files are part of the project?
10621 * Publishing action:: Setting the function doing the publishing
10622 * Publishing options:: Tweaking HTML export
10623 * Publishing links:: Which links keep working after publishing?
10624 * Sitemap:: Generating a list of all pages
10625 * Generating an index:: An index that reaches across pages
10628 @node Project alist, Sources and destinations, Configuration, Configuration
10629 @subsection The variable @code{org-publish-project-alist}
10630 @cindex org-publish-project-alist
10631 @cindex projects, for publishing
10633 @vindex org-publish-project-alist
10634 Publishing is configured almost entirely through setting the value of one
10635 variable, called @code{org-publish-project-alist}. Each element of the list
10636 configures one project, and may be in one of the two following forms:
10639 ("project-name" :property value :property value ...)
10640 @r{i.e. a well-formed property list with alternating keys and values}
10642 ("project-name" :components ("project-name" "project-name" ...))
10646 In both cases, projects are configured by specifying property values. A
10647 project defines the set of files that will be published, as well as the
10648 publishing configuration to use when publishing those files. When a project
10649 takes the second form listed above, the individual members of the
10650 @code{:components} property are taken to be sub-projects, which group
10651 together files requiring different publishing options. When you publish such
10652 a ``meta-project'', all the components will also be published, in the
10655 @node Sources and destinations, Selecting files, Project alist, Configuration
10656 @subsection Sources and destinations for files
10657 @cindex directories, for publishing
10659 Most properties are optional, but some should always be set. In
10660 particular, Org needs to know where to look for source files,
10661 and where to put published files.
10663 @multitable @columnfractions 0.3 0.7
10664 @item @code{:base-directory}
10665 @tab Directory containing publishing source files
10666 @item @code{:publishing-directory}
10667 @tab Directory where output files will be published. You can directly
10668 publish to a webserver using a file name syntax appropriate for
10669 the Emacs @file{tramp} package. Or you can publish to a local directory and
10670 use external tools to upload your website (@pxref{Uploading files}).
10671 @item @code{:preparation-function}
10672 @tab Function or list of functions to be called before starting the
10673 publishing process, for example, to run @code{make} for updating files to be
10674 published. The project property list is scoped into this call as the
10675 variable @code{project-plist}.
10676 @item @code{:completion-function}
10677 @tab Function or list of functions called after finishing the publishing
10678 process, for example, to change permissions of the resulting files. The
10679 project property list is scoped into this call as the variable
10680 @code{project-plist}.
10684 @node Selecting files, Publishing action, Sources and destinations, Configuration
10685 @subsection Selecting files
10686 @cindex files, selecting for publishing
10688 By default, all files with extension @file{.org} in the base directory
10689 are considered part of the project. This can be modified by setting the
10691 @multitable @columnfractions 0.25 0.75
10692 @item @code{:base-extension}
10693 @tab Extension (without the dot!) of source files. This actually is a
10694 regular expression. Set this to the symbol @code{any} if you want to get all
10695 files in @code{:base-directory}, even without extension.
10697 @item @code{:exclude}
10698 @tab Regular expression to match file names that should not be
10699 published, even though they have been selected on the basis of their
10702 @item @code{:include}
10703 @tab List of files to be included regardless of @code{:base-extension}
10704 and @code{:exclude}.
10707 @node Publishing action, Publishing options, Selecting files, Configuration
10708 @subsection Publishing action
10709 @cindex action, for publishing
10711 Publishing means that a file is copied to the destination directory and
10712 possibly transformed in the process. The default transformation is to export
10713 Org files as HTML files, and this is done by the function
10714 @code{org-publish-org-to-html} which calls the HTML exporter (@pxref{HTML
10715 export}). But you also can publish your content as PDF files using
10716 @code{org-publish-org-to-pdf}, or as @code{ascii}, @code{latin1} or
10717 @code{utf8} encoded files using the corresponding functions. If you want to
10718 publish the Org file itself, but with @i{archived}, @i{commented}, and
10719 @i{tag-excluded} trees removed, use @code{org-publish-org-to-org} and set the
10720 parameters @code{:plain-source} and/or @code{:htmlized-source}. This will
10721 produce @file{file.org} and @file{file.org.html} in the publishing
10722 directory@footnote{@file{file-source.org} and @file{file-source.org.html} if
10723 source and publishing directories are equal. Note that with this kind of
10724 setup, you need to add @code{:exclude "-source\\.org"} to the project
10725 definition in @code{org-publish-project-alist} to avoid that the published
10726 source files will be considered as new org files the next time the project is
10727 published.}. Other files like images only need to be copied to the
10728 publishing destination, for this you may use @code{org-publish-attachment}.
10729 For non-Org files, you always need to specify the publishing function:
10731 @multitable @columnfractions 0.3 0.7
10732 @item @code{:publishing-function}
10733 @tab Function executing the publication of a file. This may also be a
10734 list of functions, which will all be called in turn.
10735 @item @code{:plain-source}
10736 @tab Non-nil means, publish plain source.
10737 @item @code{:htmlized-source}
10738 @tab Non-nil means, publish htmlized source.
10741 The function must accept three arguments: a property list containing at least
10742 a @code{:publishing-directory} property, the name of the file to be
10743 published, and the path to the publishing directory of the output file. It
10744 should take the specified file, make the necessary transformation (if any)
10745 and place the result into the destination folder.
10747 @node Publishing options, Publishing links, Publishing action, Configuration
10748 @subsection Options for the HTML/La@TeX{} exporters
10749 @cindex options, for publishing
10751 The property list can be used to set many export options for the HTML
10752 and La@TeX{} exporters. In most cases, these properties correspond to user
10753 variables in Org. The table below lists these properties along
10754 with the variable they belong to. See the documentation string for the
10755 respective variable for details.
10757 @vindex org-export-html-link-up
10758 @vindex org-export-html-link-home
10759 @vindex org-export-default-language
10760 @vindex org-display-custom-times
10761 @vindex org-export-headline-levels
10762 @vindex org-export-with-section-numbers
10763 @vindex org-export-section-number-format
10764 @vindex org-export-with-toc
10765 @vindex org-export-preserve-breaks
10766 @vindex org-export-with-archived-trees
10767 @vindex org-export-with-emphasize
10768 @vindex org-export-with-sub-superscripts
10769 @vindex org-export-with-special-strings
10770 @vindex org-export-with-footnotes
10771 @vindex org-export-with-drawers
10772 @vindex org-export-with-tags
10773 @vindex org-export-with-todo-keywords
10774 @vindex org-export-with-priority
10775 @vindex org-export-with-TeX-macros
10776 @vindex org-export-with-LaTeX-fragments
10777 @vindex org-export-skip-text-before-1st-heading
10778 @vindex org-export-with-fixed-width
10779 @vindex org-export-with-timestamps
10780 @vindex org-export-author-info
10781 @vindex org-export-email
10782 @vindex org-export-creator-info
10783 @vindex org-export-with-tables
10784 @vindex org-export-highlight-first-table-line
10785 @vindex org-export-html-style-include-default
10786 @vindex org-export-html-style
10787 @vindex org-export-html-style-extra
10788 @vindex org-export-html-link-org-files-as-html
10789 @vindex org-export-html-inline-images
10790 @vindex org-export-html-extension
10791 @vindex org-export-html-table-tag
10792 @vindex org-export-html-expand
10793 @vindex org-export-html-with-timestamp
10794 @vindex org-export-publishing-directory
10795 @vindex org-export-html-preamble
10796 @vindex org-export-html-postamble
10797 @vindex org-export-html-auto-preamble
10798 @vindex org-export-html-auto-postamble
10799 @vindex user-full-name
10800 @vindex user-mail-address
10801 @vindex org-export-select-tags
10802 @vindex org-export-exclude-tags
10804 @multitable @columnfractions 0.32 0.68
10805 @item @code{:link-up} @tab @code{org-export-html-link-up}
10806 @item @code{:link-home} @tab @code{org-export-html-link-home}
10807 @item @code{:language} @tab @code{org-export-default-language}
10808 @item @code{:customtime} @tab @code{org-display-custom-times}
10809 @item @code{:headline-levels} @tab @code{org-export-headline-levels}
10810 @item @code{:section-numbers} @tab @code{org-export-with-section-numbers}
10811 @item @code{:section-number-format} @tab @code{org-export-section-number-format}
10812 @item @code{:table-of-contents} @tab @code{org-export-with-toc}
10813 @item @code{:preserve-breaks} @tab @code{org-export-preserve-breaks}
10814 @item @code{:archived-trees} @tab @code{org-export-with-archived-trees}
10815 @item @code{:emphasize} @tab @code{org-export-with-emphasize}
10816 @item @code{:sub-superscript} @tab @code{org-export-with-sub-superscripts}
10817 @item @code{:special-strings} @tab @code{org-export-with-special-strings}
10818 @item @code{:footnotes} @tab @code{org-export-with-footnotes}
10819 @item @code{:drawers} @tab @code{org-export-with-drawers}
10820 @item @code{:tags} @tab @code{org-export-with-tags}
10821 @item @code{:todo-keywords} @tab @code{org-export-with-todo-keywords}
10822 @item @code{:priority} @tab @code{org-export-with-priority}
10823 @item @code{:TeX-macros} @tab @code{org-export-with-TeX-macros}
10824 @item @code{:LaTeX-fragments} @tab @code{org-export-with-LaTeX-fragments}
10825 @item @code{:latex-listings} @tab @code{org-export-latex-listings}
10826 @item @code{:skip-before-1st-heading} @tab @code{org-export-skip-text-before-1st-heading}
10827 @item @code{:fixed-width} @tab @code{org-export-with-fixed-width}
10828 @item @code{:timestamps} @tab @code{org-export-with-timestamps}
10829 @item @code{:author-info} @tab @code{org-export-author-info}
10830 @item @code{:email-info} @tab @code{org-export-email-info}
10831 @item @code{:creator-info} @tab @code{org-export-creator-info}
10832 @item @code{:tables} @tab @code{org-export-with-tables}
10833 @item @code{:table-auto-headline} @tab @code{org-export-highlight-first-table-line}
10834 @item @code{:style-include-default} @tab @code{org-export-html-style-include-default}
10835 @item @code{:style} @tab @code{org-export-html-style}
10836 @item @code{:style-extra} @tab @code{org-export-html-style-extra}
10837 @item @code{:convert-org-links} @tab @code{org-export-html-link-org-files-as-html}
10838 @item @code{:inline-images} @tab @code{org-export-html-inline-images}
10839 @item @code{:html-extension} @tab @code{org-export-html-extension}
10840 @item @code{:xml-declaration} @tab @code{org-export-html-xml-declaration}
10841 @item @code{:html-table-tag} @tab @code{org-export-html-table-tag}
10842 @item @code{:expand-quoted-html} @tab @code{org-export-html-expand}
10843 @item @code{:timestamp} @tab @code{org-export-html-with-timestamp}
10844 @item @code{:publishing-directory} @tab @code{org-export-publishing-directory}
10845 @item @code{:preamble} @tab @code{org-export-html-preamble}
10846 @item @code{:postamble} @tab @code{org-export-html-postamble}
10847 @item @code{:auto-preamble} @tab @code{org-export-html-auto-preamble}
10848 @item @code{:auto-postamble} @tab @code{org-export-html-auto-postamble}
10849 @item @code{:author} @tab @code{user-full-name}
10850 @item @code{:email} @tab @code{user-mail-address} : @code{addr;addr;..}
10851 @item @code{:select-tags} @tab @code{org-export-select-tags}
10852 @item @code{:exclude-tags} @tab @code{org-export-exclude-tags}
10853 @item @code{:latex-image-options} @tab @code{org-export-latex-image-default-option}
10856 Most of the @code{org-export-with-*} variables have the same effect in
10857 both HTML and La@TeX{} exporters, except for @code{:TeX-macros} and
10858 @code{:LaTeX-fragments}, respectively @code{nil} and @code{t} in the
10861 @vindex org-publish-project-alist
10862 When a property is given a value in @code{org-publish-project-alist},
10863 its setting overrides the value of the corresponding user variable (if
10864 any) during publishing. Options set within a file (@pxref{Export
10865 options}), however, override everything.
10867 @node Publishing links, Sitemap, Publishing options, Configuration
10868 @subsection Links between published files
10869 @cindex links, publishing
10871 To create a link from one Org file to another, you would use
10872 something like @samp{[[file:foo.org][The foo]]} or simply
10873 @samp{file:foo.org.} (@pxref{Hyperlinks}). When published, this link
10874 becomes a link to @file{foo.html}. In this way, you can interlink the
10875 pages of your "org web" project and the links will work as expected when
10876 you publish them to HTML. If you also publish the Org source file and want
10877 to link to that, use an @code{http:} link instead of a @code{file:} link,
10878 because @code{file:} links are converted to link to the corresponding
10881 You may also link to related files, such as images. Provided you are careful
10882 with relative file names, and provided you have also configured Org to upload
10883 the related files, these links will work too. See @ref{Complex example}, for
10884 an example of this usage.
10886 Sometimes an Org file to be published may contain links that are
10887 only valid in your production environment, but not in the publishing
10888 location. In this case, use the property
10890 @multitable @columnfractions 0.4 0.6
10891 @item @code{:link-validation-function}
10892 @tab Function to validate links
10896 to define a function for checking link validity. This function must
10897 accept two arguments, the file name and a directory relative to which
10898 the file name is interpreted in the production environment. If this
10899 function returns @code{nil}, then the HTML generator will only insert a
10900 description into the HTML file, but no link. One option for this
10901 function is @code{org-publish-validate-link} which checks if the given
10902 file is part of any project in @code{org-publish-project-alist}.
10904 @node Sitemap, Generating an index, Publishing links, Configuration
10905 @subsection Generating a sitemap
10906 @cindex sitemap, of published pages
10908 The following properties may be used to control publishing of
10909 a map of files for a given project.
10911 @multitable @columnfractions 0.35 0.65
10912 @item @code{:auto-sitemap}
10913 @tab When non-nil, publish a sitemap during @code{org-publish-current-project}
10914 or @code{org-publish-all}.
10916 @item @code{:sitemap-filename}
10917 @tab Filename for output of sitemap. Defaults to @file{sitemap.org} (which
10918 becomes @file{sitemap.html}).
10920 @item @code{:sitemap-title}
10921 @tab Title of sitemap page. Defaults to name of file.
10923 @item @code{:sitemap-function}
10924 @tab Plug-in function to use for generation of the sitemap.
10925 Defaults to @code{org-publish-org-sitemap}, which generates a plain list
10926 of links to all files in the project.
10928 @item @code{:sitemap-sort-folders}
10929 @tab Where folders should appear in the sitemap. Set this to @code{first}
10930 (default) or @code{last} to display folders first or last,
10931 respectively. Any other value will mix files and folders.
10933 @item @code{:sitemap-alphabetically}
10934 @tab The site map is normally sorted alphabetically. Set this explicitly to
10935 @code{nil} to turn off sorting.
10937 @item @code{:sitemap-ignore-case}
10938 @tab Should sorting be case-sensitive? Default @code{nil}.
10942 @node Generating an index, , Sitemap, Configuration
10943 @subsection Generating an index
10944 @cindex index, in a publishing project
10946 Org-mode can generate an index across the files of a publishing project.
10948 @multitable @columnfractions 0.25 0.75
10949 @item @code{:makeindex}
10950 @tab When non-nil, generate in index in the file @file{theindex.org} and
10951 publish it as @file{theindex.html}.
10954 The file will be create when first publishing a project with the
10955 @code{:makeindex} set. The file only contains a statement @code{#+include:
10956 "theindex.inc"}. You can then built around this include statement by adding
10957 a title, style information etc.
10959 @node Uploading files, Sample configuration, Configuration, Publishing
10960 @section Uploading files
10964 For those people already utilizing third party sync tools such as
10965 @command{rsync} or @command{unison}, it might be preferable not to use the built in
10966 @i{remote} publishing facilities of Org-mode which rely heavily on
10967 Tramp. Tramp, while very useful and powerful, tends not to be
10968 so efficient for multiple file transfer and has been known to cause problems
10971 Specialized synchronization utilities offer several advantages. In addition
10972 to timestamp comparison, they also do content and permissions/attribute
10973 checks. For this reason you might prefer to publish your web to a local
10974 directory (possibly even @i{in place} with your Org files) and then use
10975 @file{unison} or @file{rsync} to do the synchronization with the remote host.
10977 Since Unison (for example) can be configured as to which files to transfer to
10978 a certain remote destination, it can greatly simplify the project publishing
10979 definition. Simply keep all files in the correct location, process your Org
10980 files with @code{org-publish} and let the synchronization tool do the rest.
10981 You do not need, in this scenario, to include attachments such as @file{jpg},
10982 @file{css} or @file{gif} files in the project definition since the 3rd party
10985 Publishing to a local directory is also much faster than to a remote one, so
10986 that you can afford more easily to republish entire projects. If you set
10987 @code{org-publish-use-timestamps-flag} to @code{nil}, you gain the main
10988 benefit of re-including any changed external files such as source example
10989 files you might include with @code{#+INCLUDE}. The timestamp mechanism in
10990 Org is not smart enough to detect if included files have been modified.
10992 @node Sample configuration, Triggering publication, Uploading files, Publishing
10993 @section Sample configuration
10995 Below we provide two example configurations. The first one is a simple
10996 project publishing only a set of Org files. The second example is
10997 more complex, with a multi-component project.
11000 * Simple example:: One-component publishing
11001 * Complex example:: A multi-component publishing example
11004 @node Simple example, Complex example, Sample configuration, Sample configuration
11005 @subsection Example: simple publishing configuration
11007 This example publishes a set of Org files to the @file{public_html}
11008 directory on the local machine.
11011 (setq org-publish-project-alist
11013 :base-directory "~/org/"
11014 :publishing-directory "~/public_html"
11015 :section-numbers nil
11016 :table-of-contents nil
11017 :style "<link rel=\"stylesheet\"
11018 href=\"../other/mystyle.css\"
11019 type=\"text/css\"/>")))
11022 @node Complex example, , Simple example, Sample configuration
11023 @subsection Example: complex publishing configuration
11025 This more complicated example publishes an entire website, including
11026 Org files converted to HTML, image files, Emacs Lisp source code, and
11027 style sheets. The publishing directory is remote and private files are
11030 To ensure that links are preserved, care should be taken to replicate
11031 your directory structure on the web server, and to use relative file
11032 paths. For example, if your Org files are kept in @file{~/org} and your
11033 publishable images in @file{~/images}, you would link to an image with
11036 file:../images/myimage.png
11039 On the web server, the relative path to the image should be the
11040 same. You can accomplish this by setting up an "images" folder in the
11041 right place on the web server, and publishing images to it.
11044 (setq org-publish-project-alist
11046 :base-directory "~/org/"
11047 :base-extension "org"
11048 :publishing-directory "/ssh:user@@host:~/html/notebook/"
11049 :publishing-function org-publish-org-to-html
11050 :exclude "PrivatePage.org" ;; regexp
11052 :section-numbers nil
11053 :table-of-contents nil
11054 :style "<link rel=\"stylesheet\"
11055 href=\"../other/mystyle.css\" type=\"text/css\"/>"
11057 :auto-postamble nil)
11060 :base-directory "~/images/"
11061 :base-extension "jpg\\|gif\\|png"
11062 :publishing-directory "/ssh:user@@host:~/html/images/"
11063 :publishing-function org-publish-attachment)
11066 :base-directory "~/other/"
11067 :base-extension "css\\|el"
11068 :publishing-directory "/ssh:user@@host:~/html/other/"
11069 :publishing-function org-publish-attachment)
11070 ("website" :components ("orgfiles" "images" "other"))))
11073 @node Triggering publication, , Sample configuration, Publishing
11074 @section Triggering publication
11076 Once properly configured, Org can publish with the following commands:
11079 @orgcmd{C-c C-e X,org-publish}
11080 Prompt for a specific project and publish all files that belong to it.
11081 @orgcmd{C-c C-e P,org-publish-current-project}
11082 Publish the project containing the current file.
11083 @orgcmd{C-c C-e F,org-publish-current-file}
11084 Publish only the current file.
11085 @orgcmd{C-c C-e E,org-publish-all}
11086 Publish every project.
11089 @vindex org-publish-use-timestamps-flag
11090 Org uses timestamps to track when a file has changed. The above functions
11091 normally only publish changed files. You can override this and force
11092 publishing of all files by giving a prefix argument to any of the commands
11093 above, or by customizing the variable @code{org-publish-use-timestamps-flag}.
11094 This may be necessary in particular if files include other files via
11095 @code{#+SETUPFILE:} or @code{#+INCLUDE:}.
11097 @comment node-name, next, previous, up
11098 @comment Working With Source Code, Miscellaneous, Publishing, Top
11100 @node Working With Source Code, Miscellaneous, Publishing, Top
11101 @chapter Working with source code
11102 @cindex Schulte, Eric
11103 @cindex Davison, Dan
11104 @cindex source code, working with
11106 Source code can be included in Org-mode documents using a @samp{src} block,
11110 #+BEGIN_SRC emacs-lisp
11111 (defun org-xor (a b)
11117 Org-mode provides a number of features for working with live source code,
11118 including editing of code blocks in their native major-mode, evaluation of
11119 code blocks, tangling of code blocks, and exporting code blocks and their
11120 results in several formats. This functionality was contributed by Eric
11121 Schulte and Dan Davison, and was originally named Org-babel.
11123 The following sections describe Org-mode's code block handling facilities.
11126 * Structure of code blocks:: Code block syntax described
11127 * Editing source code:: Language major-mode editing
11128 * Exporting code blocks:: Export contents and/or results
11129 * Extracting source code:: Create pure source code files
11130 * Evaluating code blocks:: Place results of evaluation in the Org-mode buffer
11131 * Library of Babel:: Use and contribute to a library of useful code blocks
11132 * Languages:: List of supported code block languages
11133 * Header arguments:: Configure code block functionality
11134 * Results of evaluation:: How evaluation results are handled
11135 * Noweb reference syntax:: Literate programming in Org-mode
11136 * Key bindings and useful functions:: Work quickly with code blocks
11137 * Batch execution:: Call functions from the command line
11140 @comment node-name, next, previous, up
11141 @comment Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
11143 @node Structure of code blocks, Editing source code, Working With Source Code, Working With Source Code
11144 @section Structure of code blocks
11145 @cindex code block, structure
11146 @cindex source code, block structure
11148 The structure of code blocks is as follows:
11152 #+begin_src <language> <switches> <header arguments>
11157 code blocks can also be embedded in text as so called inline code blocks as
11160 src_<language>@{<body>@}
11166 src_<language>[<header arguments>]@{<body>@}
11171 This name is associated with the code block. This is similar to the
11172 @samp{#+tblname} lines that can be used to name tables in Org-mode files.
11173 Referencing the name of a code block makes it possible to evaluate the
11174 block from other places in the file, other files, or from Org-mode table
11175 formulas (see @ref{The spreadsheet}).
11177 The language of the code in the block.
11179 Switches controlling exportation of the code block (see switches discussion in
11180 @ref{Literal examples})
11181 @item <header arguments>
11182 Optional header arguments control many aspects of evaluation, export and
11183 tangling of code blocks. See the @ref{Header arguments}
11184 section. Header arguments can also be set on a per-buffer or per-subtree
11185 basis using properties.
11190 @comment node-name, next, previous, up
11191 @comment Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
11193 @node Editing source code, Exporting code blocks, Structure of code blocks, Working With Source Code
11194 @section Editing source code
11195 @cindex code block, editing
11196 @cindex source code, editing
11199 Use @kbd{C-c '} to edit the current code block. This brings up
11200 a language major-mode edit buffer containing the body of the code
11201 block. Saving this buffer will write the new contents back to the Org
11202 buffer. Use @kbd{C-c '} again to exit.
11204 The @code{org-src-mode} minor mode will be active in the edit buffer. The
11205 following variables can be used to configure the behavior of the edit
11206 buffer. See also the customization group @code{org-edit-structure} for
11207 further configuration options.
11210 @item org-src-lang-modes
11211 If an Emacs major-mode named @code{<lang>-mode} exists, where
11212 @code{<lang>} is the language named in the header line of the code block,
11213 then the edit buffer will be placed in that major-mode. This variable
11214 can be used to map arbitrary language names to existing major modes.
11215 @item org-src-window-setup
11216 Controls the way Emacs windows are rearranged when the edit buffer is created.
11217 @item org-src-preserve-indentation
11218 This variable is especially useful for tangling languages such as
11219 python, in which whitespace indentation in the output is critical.
11220 @item org-src-ask-before-returning-to-edit-buffer
11221 By default, Org will ask before returning to an open edit buffer. Set
11222 this variable to nil to switch without asking.
11225 @comment node-name, next, previous, up
11226 @comment Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
11228 @node Exporting code blocks, Extracting source code, Editing source code, Working With Source Code
11229 @section Exporting code blocks
11230 @cindex code block, exporting
11231 @cindex source code, exporting
11233 It is possible to export the @emph{contents} of code blocks, the
11234 @emph{results} of code block evaluation, @emph{neither}, or @emph{both}. For
11235 most languages, the default exports the contents of code blocks. However, for
11236 some languages (e.g. @code{ditaa}) the default exports the results of code
11237 block evaluation. For information on exporting code block bodies, see
11238 @ref{Literal examples}.
11240 The @code{:exports} header argument can be used to specify export
11243 @subsubheading Header arguments:
11245 @item :exports code
11246 The default in most languages. The body of the code block is exported, as
11247 described in @ref{Literal examples}.
11248 @item :exports results
11249 The code block will be evaluated and the results will be placed in the
11250 Org-mode buffer for export, either updating previous results of the code
11251 block located anywhere in the buffer or, if no previous results exist,
11252 placing the results immediately after the code block. The body of the code
11253 block will not be exported.
11254 @item :exports both
11255 Both the code block and its results will be exported.
11256 @item :exports none
11257 Neither the code block nor its results will be exported.
11260 It is possible to inhibit the evaluation of code blocks during export.
11261 Setting the the @code{org-export-babel-evaluate} variable to @code{nil} will
11262 ensure that no code blocks are evaluated as part of the export process. This
11263 can be useful in situations where potentially untrusted Org-mode files are
11264 exported in an automated fashion, for example when Org-mode is used as the
11265 markup language for a wiki.
11267 @comment node-name, next, previous, up
11268 @comment Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
11269 @node Extracting source code, Evaluating code blocks, Exporting code blocks, Working With Source Code
11270 @section Extracting source code
11271 @cindex source code, extracting
11272 @cindex code block, extracting source code
11274 Creating pure source code files by extracting code from source blocks is
11275 referred to as ``tangling''---a term adopted from the literate programming
11276 community. During ``tangling'' of code blocks their bodies are expanded
11277 using @code{org-babel-expand-src-block} which can expand both variable and
11278 ``noweb'' style references (see @ref{Noweb reference syntax}).
11280 @subsubheading Header arguments
11283 The default. The code block is not included in the tangled output.
11285 Include the code block in the tangled output. The output file name is the
11286 name of the org file with the extension @samp{.org} replaced by the extension
11287 for the block language.
11288 @item :tangle filename
11289 Include the code block in the tangled output to file @samp{filename}.
11293 @subsubheading Functions
11295 @item org-babel-tangle
11296 Tangle the current file. Bound to @kbd{C-c C-v t}.
11297 @item org-babel-tangle-file
11298 Choose a file to tangle. Bound to @kbd{C-c C-v f}.
11301 @subsubheading Hooks
11303 @item org-babel-post-tangle-hook
11304 This hook is run from within code files tangled by @code{org-babel-tangle}.
11305 Example applications could include post-processing, compilation or evaluation
11306 of tangled code files.
11309 @node Evaluating code blocks, Library of Babel, Extracting source code, Working With Source Code
11310 @section Evaluating code blocks
11311 @cindex code block, evaluating
11312 @cindex source code, evaluating
11314 Code blocks can be evaluated@footnote{Whenever code is evaluated there is a
11315 potential for that code to do harm. Org-mode provides a number of safeguards
11316 to ensure that it only evaluates code with explicit confirmation from the
11317 user. For information on these safeguards (and on how to disable them) see
11318 @ref{Code evaluation security}.} and the results placed in the Org-mode
11319 buffer. By default, evaluation is only turned on for @code{emacs-lisp} code
11320 blocks, however support exists for evaluating blocks in many languages. See
11321 @ref{Languages} for a list of supported languages. See @ref{Structure of
11322 code blocks} for information on the syntax used to define a code block.
11325 There are a number of ways to evaluate code blocks. The simplest is to press
11326 @kbd{C-c C-c} or @kbd{C-c C-v e} with the point on a code block@footnote{The
11327 @code{org-babel-no-eval-on-ctrl-c-ctrl-c} variable can be used to remove code
11328 evaluation from the @kbd{C-c C-c} key binding.}. This will call the
11329 @code{org-babel-execute-src-block} function to evaluate the block and insert
11330 its results into the Org-mode buffer.
11332 It is also possible to evaluate named code blocks from anywhere in an
11333 Org-mode buffer or an Org-mode table. @code{#+call} (or synonymously
11334 @code{#+function} or @code{#+lob}) lines can be used to remotely execute code
11335 blocks located in the current Org-mode buffer or in the ``Library of Babel''
11336 (see @ref{Library of Babel}). These lines use the following syntax.
11339 #+call: <name>(<arguments>) <header arguments>
11340 #+function: <name>(<arguments>) <header arguments>
11341 #+lob: <name>(<arguments>) <header arguments>
11346 The name of the code block to be evaluated.
11348 Arguments specified in this section will be passed to the code block.
11349 @item <header arguments>
11350 Header arguments can be placed after the function invocation. See
11351 @ref{Header arguments} for more information on header arguments.
11355 @node Library of Babel, Languages, Evaluating code blocks, Working With Source Code
11356 @section Library of Babel
11357 @cindex babel, library of
11358 @cindex source code, library
11359 @cindex code block, library
11361 The ``Library of Babel'' is a library of code blocks
11362 that can be called from any Org-mode file. The library is housed in an
11363 Org-mode file located in the @samp{contrib} directory of Org-mode.
11364 Org-mode users can deposit functions they believe to be generally
11365 useful in the library.
11367 Code blocks defined in the ``Library of Babel'' can be called remotely as if
11368 they were in the current Org-mode buffer (see @ref{Evaluating code blocks}
11369 for information on the syntax of remote code block evaluation).
11372 Code blocks located in any Org-mode file can be loaded into the ``Library of
11373 Babel'' with the @code{org-babel-lob-ingest} function, bound to @kbd{C-c C-v
11376 @node Languages, Header arguments, Library of Babel, Working With Source Code
11378 @cindex babel, languages
11379 @cindex source code, languages
11380 @cindex code block, languages
11382 Code blocks in the following languages are supported.
11384 @multitable @columnfractions 0.28 0.3 0.22 0.2
11385 @item @b{Language} @tab @b{Identifier} @tab @b{Language} @tab @b{Identifier}
11386 @item Asymptote @tab asymptote @tab C @tab C
11387 @item C++ @tab C++ @tab Clojure @tab clojure
11388 @item css @tab css @tab ditaa @tab ditaa
11389 @item Graphviz @tab dot @tab Emacs Lisp @tab emacs-lisp
11390 @item gnuplot @tab gnuplot @tab Haskell @tab haskell
11391 @item LaTeX @tab latex @tab Matlab @tab matlab
11392 @item Mscgen @tab mscgen @tab Objective Caml @tab ocaml
11393 @item Octave @tab octave @tab OZ @tab oz
11394 @item Perl @tab perl @tab Python @tab python
11395 @item R @tab R @tab Ruby @tab ruby
11396 @item Sass @tab sass @tab GNU Screen @tab screen
11397 @item shell @tab sh @tab SQL @tab sql
11398 @item Sqlite @tab sqlite
11401 Language-specific documentation is available for some languages. If
11402 available, it can be found at
11403 @uref{http://orgmode.org/worg/org-contrib/babel/languages}.
11405 The @code{org-babel-load-languages} controls which languages are enabled for
11406 evaluation (by default only @code{emacs-lisp} is enabled). This variable can
11407 be set using the customization interface or by adding code like the following
11408 to your emacs configuration.
11411 The following disables @code{emacs-lisp} evaluation and enables evaluation of
11412 @code{R} code blocks.
11416 (org-babel-do-load-languages
11417 'org-babel-load-languages
11418 '((emacs-lisp . nil)
11422 It is also possible to enable support for a language by loading the related
11423 elisp file with @code{require}.
11426 The following adds support for evaluating @code{clojure} code blocks.
11430 (require 'ob-clojure)
11433 @node Header arguments, Results of evaluation, Languages, Working With Source Code
11434 @section Header arguments
11435 @cindex code block, header arguments
11436 @cindex source code, block header arguments
11438 Code block functionality can be configured with header arguments. This
11439 section provides an overview of the use of header arguments, and then
11440 describes each header argument in detail.
11443 * Using header arguments:: Different ways to set header arguments
11444 * Specific header arguments:: List of header arguments
11447 @node Using header arguments, Specific header arguments, Header arguments, Header arguments
11448 @subsection Using header arguments
11450 The values of header arguments can be set in six different ways, each more
11451 specific (and having higher priority) than the last.
11453 * System-wide header arguments:: Set global default values
11454 * Language-specific header arguments:: Set default values by language
11455 * Buffer-wide header arguments:: Set default values for a specific buffer
11456 * Header arguments in Org-mode properties:: Set default values for a buffer or heading
11457 * Code block specific header arguments:: The most common way to set values
11458 * Header arguments in function calls:: The most specific level
11462 @node System-wide header arguments, Language-specific header arguments, Using header arguments, Using header arguments
11463 @subsubheading System-wide header arguments
11464 @vindex org-babel-default-header-args
11465 System-wide values of header arguments can be specified by customizing the
11466 @code{org-babel-default-header-args} variable:
11470 :results => "replace"
11477 @c org-babel-default-header-args is a variable defined in `org-babel.el'.
11479 @c ((:session . "none")
11480 @c (:results . "replace")
11481 @c (:exports . "code")
11483 @c (:noweb . "no"))
11487 @c Default arguments to use when evaluating a code block.
11490 For example, the following example could be used to set the default value of
11491 @code{:noweb} header arguments to @code{yes}. This would have the effect of
11492 expanding @code{:noweb} references by default when evaluating source code
11496 (setq org-babel-default-header-args
11497 (cons '(:noweb . "yes")
11498 (assq-delete-all :noweb org-babel-default-header-args)))
11501 @node Language-specific header arguments, Buffer-wide header arguments, System-wide header arguments, Using header arguments
11502 @subsubheading Language-specific header arguments
11503 Each language can define its own set of default header arguments. See the
11504 language-specific documentation available online at
11505 @uref{http://orgmode.org/worg/org-contrib/babel}.
11507 @node Buffer-wide header arguments, Header arguments in Org-mode properties, Language-specific header arguments, Using header arguments
11508 @subsubheading Buffer-wide header arguments
11509 Buffer-wide header arguments may be specified through the use of a special
11510 line placed anywhere in an Org-mode file. The line consists of the
11511 @code{#+BABEL:} keyword followed by a series of header arguments which may be
11512 specified using the standard header argument syntax.
11514 For example the following would set @code{session} to @code{*R*}, and
11515 @code{results} to @code{silent} for every code block in the buffer, ensuring
11516 that all execution took place in the same session, and no results would be
11517 inserted into the buffer.
11520 #+BABEL: :session *R* :results silent
11523 @node Header arguments in Org-mode properties, Code block specific header arguments, Buffer-wide header arguments, Using header arguments
11524 @subsubheading Header arguments in Org-mode properties
11526 Header arguments are also read from Org-mode properties (see @ref{Property
11527 syntax}), which can be set on a buffer-wide or per-heading basis. An example
11528 of setting a header argument for all code blocks in a buffer is
11531 #+property: tangle yes
11534 When properties are used to set default header arguments, they are looked up
11535 with inheritance, so the value of the @code{:cache} header argument will default
11536 to @code{yes} in all code blocks in the subtree rooted at the following
11547 @vindex org-babel-default-header-args
11548 Properties defined in this way override the properties set in
11549 @code{org-babel-default-header-args}. It is convenient to use the
11550 @code{org-set-property} function bound to @kbd{C-c C-x p} to set properties
11551 in Org-mode documents.
11553 @node Code block specific header arguments, Header arguments in function calls, Header arguments in Org-mode properties, Using header arguments
11554 @subsubheading Code block specific header arguments
11556 The most common way to assign values to header arguments is at the
11557 code block level. This can be done by listing a sequence of header
11558 arguments and their values as part of the @code{#+begin_src} line.
11559 Properties set in this way override both the values of
11560 @code{org-babel-default-header-args} and header arguments specified as
11561 properties. In the following example, the @code{:results} header argument
11562 is set to @code{silent}, meaning the results of execution will not be
11563 inserted in the buffer, and the @code{:exports} header argument is set to
11564 @code{code}, meaning only the body of the code block will be
11565 preserved on export to HTML or LaTeX.
11568 #+source: factorial
11569 #+begin_src haskell :results silent :exports code :var n=0
11571 fac n = n * fac (n-1)
11574 Similarly, it is possible to set header arguments for inline code blocks:
11577 src_haskell[:exports both]@{fac 5@}
11580 @node Header arguments in function calls, , Code block specific header arguments, Using header arguments
11581 @comment node-name, next, previous, up
11582 @subsubheading Header arguments in function calls
11584 At the most specific level, header arguments for ``Library of Babel'' or
11585 function call lines can be set as shown below:
11588 #+call: factorial(n=5) :exports results
11591 @node Specific header arguments, , Using header arguments, Header arguments
11592 @subsection Specific header arguments
11593 The following header arguments are defined:
11596 * var:: Pass arguments to code blocks
11597 * results:: Specify the type of results and how they will
11598 be collected and handled
11599 * file:: Specify a path for file output
11600 * dir:: Specify the default (possibly remote)
11601 directory for code block execution
11602 * exports:: Export code and/or results
11603 * tangle:: Toggle tangling and specify file name
11604 * comments:: Toggle insertion of comments in tangled
11606 * no-expand:: Turn off variable assignment and noweb
11607 expansion during tangling
11608 * session:: Preserve the state of code evaluation
11609 * noweb:: Toggle expansion of noweb references
11610 * cache:: Avoid re-evaluating unchanged code blocks
11611 * hlines:: Handle horizontal lines in tables
11612 * colnames:: Handle column names in tables
11613 * rownames:: Handle row names in tables
11614 * shebang:: Make tangled files executable
11615 * eval:: Limit evaluation of specific code blocks
11618 @node var, results, Specific header arguments, Specific header arguments
11619 @subsubsection @code{:var}
11620 The @code{:var} header argument is used to pass arguments to code blocks.
11621 The specifics of how arguments are included in a code block vary by language;
11622 these are addressed in the language-specific documentation. However, the
11623 syntax used to specify arguments is the same across all languages. The
11624 values passed to arguments can be literal values, values from org-mode tables
11625 and literal example blocks, or the results of other code blocks.
11627 These values can be indexed in a manner similar to arrays---see the
11628 ``indexable variable values'' heading below.
11630 The following syntax is used to pass arguments to code blocks using the
11631 @code{:var} header argument.
11637 where @code{assign} can take one of the following forms
11640 @item literal value
11641 either a string @code{"string"} or a number @code{9}.
11646 #+tblname: example-table
11652 #+source: table-length
11653 #+begin_src emacs-lisp :var table=example-table
11657 #+results: table-length
11661 a code block name, as assigned by @code{#+srcname:}, followed by
11665 #+begin_src emacs-lisp :var length=table-length()
11673 In addition, an argument can be passed to the code block referenced
11674 by @code{:var}. The argument is passed within the parentheses following the
11679 #+begin_src emacs-lisp :var input=8
11687 #+begin_src emacs-lisp :var input=double(input=1)
11696 @subsubheading Alternate argument syntax
11697 It is also possible to specify arguments in a potentially more natural way
11698 using the @code{#+source:} line of a code block. As in the following
11699 example arguments can be packed inside of parenthesis, separated by commas,
11700 following the source name.
11703 #+source: double(input=0, x=2)
11704 #+begin_src emacs-lisp
11709 @subsubheading Indexable variable values
11710 It is possible to reference portions of variable values by ``indexing'' into
11711 the variables. Indexes are 0 based with negative values counting back from
11712 the end. If an index is separated by @code{,}s then each subsequent section
11713 will index into the next deepest nesting or dimension of the value. The
11714 following example assigns the last cell of the first row the table
11715 @code{example-table} to the variable @code{data}:
11718 #+results: example-table
11724 #+begin_src emacs-lisp :var data=example-table[0,-1]
11732 Ranges of variable values can be referenced using two integers separated by a
11733 @code{:}, in which case the entire inclusive range is referenced. For
11734 example the following assigns the middle three rows of @code{example-table}
11738 #+results: example-table
11745 #+begin_src emacs-lisp :var data=example-table[1:3]
11755 Additionally, an empty index, or the single character @code{*}, are both
11756 interpreted to mean the entire range and as such are equivalent to
11757 @code{0:-1}, as shown in the following example in which the entire first
11758 column is referenced.
11761 #+results: example-table
11767 #+begin_src emacs-lisp :var data=example-table[,0]
11775 It is possible to index into the results of code blocks as well as tables.
11776 Any number of dimensions can be indexed. Dimensions are separated from one
11777 another by commas, as shown in the following example.
11781 #+begin_src emacs-lisp
11782 '(((1 2 3) (4 5 6) (7 8 9))
11783 ((10 11 12) (13 14 15) (16 17 18))
11784 ((19 20 21) (22 23 24) (25 26 27)))
11787 #+begin_src emacs-lisp :var data=3D[1,,1]
11795 @node results, file, var, Specific header arguments
11796 @subsubsection @code{:results}
11798 There are three classes of @code{:results} header argument. Only one option of
11799 each type may be supplied per code block.
11803 @b{collection} header arguments specify how the results should be collected
11804 from the code block
11806 @b{type} header arguments specify what type of result the code block will
11807 return---which has implications for how they will be inserted into the
11810 @b{handling} header arguments specify how the results of evaluating the code
11811 block should be handled.
11814 @subsubheading Collection
11815 The following options are mutually exclusive, and specify how the results
11816 should be collected from the code block.
11820 This is the default. The result is the value of the last statement in the
11821 code block. This header argument places the evaluation in functional
11822 mode. Note that in some languages, e.g., python, use of this result type
11823 requires that a @code{return} statement be included in the body of the source
11824 code block. E.g., @code{:results value}.
11825 @item @code{output}
11826 The result is the collection of everything printed to STDOUT during the
11827 execution of the code block. This header argument places the
11828 evaluation in scripting mode. E.g., @code{:results output}.
11831 @subsubheading Type
11833 The following options are mutually exclusive and specify what type of results
11834 the code block will return. By default, results are inserted as either a
11835 table or scalar depending on their value.
11838 @item @code{table}, @code{vector}
11839 The results should be interpreted as an Org-mode table. If a single value is
11840 returned, it will be converted into a table with one row and one column.
11841 E.g., @code{:results value table}.
11842 @item @code{scalar}, @code{verbatim}
11843 The results should be interpreted literally---they will not be
11844 converted into a table. The results will be inserted into the Org-mode
11845 buffer as quoted text. E.g., @code{:results value verbatim}.
11847 The results will be interpreted as the path to a file, and will be inserted
11848 into the Org-mode buffer as a file link. E.g., @code{:results value file}.
11849 @item @code{raw}, @code{org}
11850 The results are interpreted as raw Org-mode code and are inserted directly
11851 into the buffer. If the results look like a table they will be aligned as
11852 such by Org-mode. E.g., @code{:results value raw}.
11854 Results are assumed to be HTML and will be enclosed in a @code{begin_html}
11855 block. E.g., @code{:results value html}.
11857 Results assumed to be LaTeX and are enclosed in a @code{begin_latex} block.
11858 E.g., @code{:results value latex}.
11860 Result are assumed to be parseable code and are enclosed in a code block.
11861 E.g., @code{:results value code}.
11863 The result is converted to pretty-printed code and is enclosed in a code
11864 block. This option currently supports Emacs Lisp, python, and ruby. E.g.,
11865 @code{:results value pp}.
11868 @subsubheading Handling
11869 The following results options indicate what happens with the
11870 results once they are collected.
11873 @item @code{silent}
11874 The results will be echoed in the minibuffer but will not be inserted into
11875 the Org-mode buffer. E.g., @code{:results output silent}.
11876 @item @code{replace}
11877 The default value. Any existing results will be removed, and the new results
11878 will be inserted into the Org-mode buffer in their place. E.g.,
11879 @code{:results output replace}.
11880 @item @code{append}
11881 If there are pre-existing results of the code block then the new results will
11882 be appended to the existing results. Otherwise the new results will be
11883 inserted as with @code{replace}.
11884 @item @code{prepend}
11885 If there are pre-existing results of the code block then the new results will
11886 be prepended to the existing results. Otherwise the new results will be
11887 inserted as with @code{replace}.
11890 @node file, dir, results, Specific header arguments
11891 @subsubsection @code{:file}
11893 The header argument @code{:file} is used to specify a path for file output.
11894 An Org-mode style @code{file:} link is inserted into the buffer as the result
11895 (see @ref{Link format}). Common examples are graphical output from R,
11896 gnuplot, ditaa and LaTeX code blocks.
11898 Note that for some languages, including R, gnuplot, LaTeX and ditaa,
11899 graphical output is sent to the specified file without the file being
11900 referenced explicitly in the code block. See the documentation for the
11901 individual languages for details. In contrast, general purpose languages such
11902 as python and ruby require that the code explicitly create output
11903 corresponding to the path indicated by @code{:file}.
11906 @node dir, exports, file, Specific header arguments
11907 @subsubsection @code{:dir} and remote execution
11909 While the @code{:file} header argument can be used to specify the path to the
11910 output file, @code{:dir} specifies the default directory during code block
11911 execution. If it is absent, then the directory associated with the current
11912 buffer is used. In other words, supplying @code{:dir path} temporarily has
11913 the same effect as changing the current directory with @kbd{M-x cd path}, and
11914 then not supplying @code{:dir}. Under the surface, @code{:dir} simply sets
11915 the value of the Emacs variable @code{default-directory}.
11917 When using @code{:dir}, you should supply a relative path for file output
11918 (e.g. @code{:file myfile.jpg} or @code{:file results/myfile.jpg}) in which
11919 case that path will be interpreted relative to the default directory.
11921 In other words, if you want your plot to go into a folder called Work in your
11922 home directory, you could use
11925 #+begin_src R :file myplot.png :dir ~/Work
11926 matplot(matrix(rnorm(100), 10), type="l")
11930 @subsubheading Remote execution
11931 A directory on a remote machine can be specified using tramp file syntax, in
11932 which case the code will be evaluated on the remote machine. An example is
11935 #+begin_src R :file plot.png :dir /dand@@yakuba.princeton.edu:
11936 plot(1:10, main=system("hostname", intern=TRUE))
11940 Text results will be returned to the local Org-mode buffer as usual, and file
11941 output will be created on the remote machine with relative paths interpreted
11942 relative to the remote directory. An Org-mode link to the remote file will be
11945 So, in the above example a plot will be created on the remote machine,
11946 and a link of the following form will be inserted in the org buffer:
11949 [[file:/scp:dand@@yakuba.princeton.edu:/home/dand/plot.png][plot.png]]
11952 Most of this functionality follows immediately from the fact that @code{:dir}
11953 sets the value of the Emacs variable @code{default-directory}, thanks to
11954 tramp. Those using XEmacs, or GNU Emacs prior to version 23 may need to
11955 install tramp separately in order for the these features to work correctly.
11957 @subsubheading Further points
11961 If @code{:dir} is used in conjunction with @code{:session}, although it will
11962 determine the starting directory for a new session as expected, no attempt is
11963 currently made to alter the directory associated with an existing session.
11965 @code{:dir} should typically not be used to create files during export with
11966 @code{:exports results} or @code{:exports both}. The reason is that, in order
11967 to retain portability of exported material between machines, during export
11968 links inserted into the buffer will *not* be expanded against @code{default
11969 directory}. Therefore, if @code{default-directory} is altered using
11970 @code{:dir}, it is probable that the file will be created in a location to
11971 which the link does not point.
11974 @node exports, tangle, dir, Specific header arguments
11975 @subsubsection @code{:exports}
11977 The @code{:exports} header argument specifies what should be included in HTML
11978 or LaTeX exports of the Org-mode file.
11982 The default. The body of code is included into the exported file. E.g.,
11983 @code{:exports code}.
11984 @item @code{results}
11985 The result of evaluating the code is included in the exported file. E.g.,
11986 @code{:exports results}.
11988 Both the code and results are included in the exported file. E.g.,
11989 @code{:exports both}.
11991 Nothing is included in the exported file. E.g., @code{:exports none}.
11994 @node tangle, comments, exports, Specific header arguments
11995 @subsubsection @code{:tangle}
11997 The @code{:tangle} header argument specifies whether or not the code
11998 block should be included in tangled extraction of source code files.
12002 The code block is exported to a source code file named after the
12003 basename (name w/o extension) of the Org-mode file. E.g., @code{:tangle
12006 The default. The code block is not exported to a source code file.
12007 E.g., @code{:tangle no}.
12009 Any other string passed to the @code{:tangle} header argument is interpreted
12010 as a file basename to which the block will be exported. E.g., @code{:tangle
12014 @node comments, no-expand, tangle, Specific header arguments
12015 @subsubsection @code{:comments}
12016 By default code blocks are tangled to source-code files without any insertion
12017 of comments beyond those which may already exist in the body of the code
12018 block. The @code{:comments} header argument can be set as follows to control
12019 the insertion of extra comments into the tangled code file.
12023 The default. No extra comments are inserted during tangling.
12025 The code block is wrapped in comments which contain pointers back to the
12026 original Org file from which the code was tangled.
12028 A synonym for ``link'' to maintain backwards compatibility.
12030 Include text from the org-mode file as a comment.
12032 The text is picked from the leading context of the tangled code and is
12033 limited by the nearest headline or source block as the case may be.
12035 Turns on both the ``link'' and ``org'' comment options.
12038 @node no-expand, session, comments, Specific header arguments
12039 @subsubsection @code{:no-expand}
12041 By default, code blocks are expanded with @code{org-babel-expand-src-block}
12042 during tangling. This has the effect of assigning values to variables
12043 specified with @code{:var} (see @ref{var}), and of replacing ``noweb''
12044 references (see @ref{Noweb reference syntax}) with their targets. The
12045 @code{:no-expand} header argument can be used to turn off this behavior.
12047 @node session, noweb, no-expand, Specific header arguments
12048 @subsubsection @code{:session}
12050 The @code{:session} header argument starts a session for an interpreted
12051 language where state is preserved.
12053 By default, a session is not started.
12055 A string passed to the @code{:session} header argument will give the session
12056 a name. This makes it possible to run concurrent sessions for each
12057 interpreted language.
12059 @node noweb, cache, session, Specific header arguments
12060 @subsubsection @code{:noweb}
12062 The @code{:noweb} header argument controls expansion of ``noweb'' style (see
12063 @ref{Noweb reference syntax}) references in a code block. This header
12064 argument can have one of three values: @code{yes} @code{no} or @code{tangle}.
12068 All ``noweb'' syntax references in the body of the code block will be
12069 expanded before the block is evaluated, tangled or exported.
12071 The default. No ``noweb'' syntax specific action is taken on evaluating
12072 code blocks, However, noweb references will still be expanded during
12074 @item @code{tangle}
12075 All ``noweb'' syntax references in the body of the code block will be
12076 expanded before the block is tangled, however ``noweb'' references will not
12077 be expanded when the block is evaluated or exported.
12080 @subsubheading Noweb prefix lines
12081 Noweb insertions are now placed behind the line prefix of the
12082 @code{<<reference>>}.
12083 This behavior is illustrated in the following example. Because the
12084 @code{<<example>>} noweb reference appears behind the SQL comment syntax,
12085 each line of the expanded noweb reference will be commented.
12098 -- multi-line body of example
12101 Note that noweb replacement text that does not contain any newlines will not
12102 be affected by this change, so it is still possible to use inline noweb
12105 @node cache, hlines, noweb, Specific header arguments
12106 @subsubsection @code{:cache}
12108 The @code{:cache} header argument controls the use of in-buffer caching of
12109 the results of evaluating code blocks. It can be used to avoid re-evaluating
12110 unchanged code blocks. This header argument can have one of two
12111 values: @code{yes} or @code{no}.
12115 The default. No caching takes place, and the code block will be evaluated
12116 every time it is called.
12118 Every time the code block is run a sha1 hash of the code and arguments
12119 passed to the block will be generated. This hash is packed into the
12120 @code{#+results:} line and will be checked on subsequent
12121 executions of the code block. If the code block has not
12122 changed since the last time it was evaluated, it will not be re-evaluated.
12125 @node hlines, colnames, cache, Specific header arguments
12126 @subsubsection @code{:hlines}
12128 Tables are frequently represented with one or more horizontal lines, or
12129 hlines. The @code{:hlines} argument to a code block accepts the
12130 values @code{yes} or @code{no}, with a default value of @code{no}.
12134 Strips horizontal lines from the input table. In most languages this is the
12135 desired effect because an @code{hline} symbol is interpreted as an unbound
12136 variable and raises an error. Setting @code{:hlines no} or relying on the
12137 default value yields the following results.
12140 #+tblname: many-cols
12147 #+source: echo-table
12148 #+begin_src python :var tab=many-cols
12152 #+results: echo-table
12159 Leaves hlines in the table. Setting @code{:hlines yes} has this effect.
12162 #+tblname: many-cols
12169 #+source: echo-table
12170 #+begin_src python :var tab=many-cols :hlines yes
12174 #+results: echo-table
12183 @node colnames, rownames, hlines, Specific header arguments
12184 @subsubsection @code{:colnames}
12186 The @code{:colnames} header argument accepts the values @code{yes},
12187 @code{no}, or @code{nil} for unassigned. The default value is @code{nil}.
12191 If an input table looks like it has column names
12192 (because its second row is an hline), then the column
12193 names will be removed from the table before
12194 processing, then reapplied to the results.
12197 #+tblname: less-cols
12203 #+srcname: echo-table-again
12204 #+begin_src python :var tab=less-cols
12205 return [[val + '*' for val in row] for row in tab]
12208 #+results: echo-table-again
12216 No column name pre-processing takes place
12219 Column names are removed and reapplied as with @code{nil} even if the table
12220 does not ``look like'' it has column names (i.e. the second row is not an
12224 @node rownames, shebang, colnames, Specific header arguments
12225 @subsubsection @code{:rownames}
12227 The @code{:rownames} header argument can take on the values @code{yes}
12228 or @code{no}, with a default value of @code{no}.
12232 No row name pre-processing will take place.
12235 The first column of the table is removed from the table before processing,
12236 and is then reapplied to the results.
12239 #+tblname: with-rownames
12240 | one | 1 | 2 | 3 | 4 | 5 |
12241 | two | 6 | 7 | 8 | 9 | 10 |
12243 #+srcname: echo-table-once-again
12244 #+begin_src python :var tab=with-rownames :rownames yes
12245 return [[val + 10 for val in row] for row in tab]
12248 #+results: echo-table-once-again
12249 | one | 11 | 12 | 13 | 14 | 15 |
12250 | two | 16 | 17 | 18 | 19 | 20 |
12254 @node shebang, eval, rownames, Specific header arguments
12255 @subsubsection @code{:shebang}
12257 Setting the @code{:shebang} header argument to a string value
12258 (e.g. @code{:shebang "#!/bin/bash"}) causes the string to be inserted as the
12259 first line of any tangled file holding the code block, and the file
12260 permissions of the tangled file are set to make it executable.
12262 @node eval, , shebang, Specific header arguments
12263 @subsubsection @code{:eval}
12264 The @code{:eval} header argument can be used to limit the evaluation of
12265 specific code blocks. @code{:eval} accepts two arguments ``never'' and
12266 ``query''. @code{:eval never} will ensure that a code block is never
12267 evaluated, this can be useful for protecting against the evaluation of
12268 dangerous code blocks. @code{:eval query} will require a query for every
12269 execution of a code block regardless of the value of the
12270 @code{org-confirm-babel-evaluate} variable.
12272 @node Results of evaluation, Noweb reference syntax, Header arguments, Working With Source Code
12273 @section Results of evaluation
12274 @cindex code block, results of evaluation
12275 @cindex source code, results of evaluation
12277 The way in which results are handled depends on whether a session is invoked,
12278 as well as on whether @code{:results value} or @code{:results output} is
12279 used. The following table shows the possibilities:
12281 @multitable @columnfractions 0.26 0.33 0.41
12282 @item @tab @b{Non-session} @tab @b{Session}
12283 @item @code{:results value} @tab value of last expression @tab value of last expression
12284 @item @code{:results output} @tab contents of STDOUT @tab concatenation of interpreter output
12287 Note: With @code{:results value}, the result in both @code{:session} and
12288 non-session is returned to Org-mode as a table (a one- or two-dimensional
12289 vector of strings or numbers) when appropriate.
12291 @subsection Non-session
12292 @subsubsection @code{:results value}
12293 This is the default. Internally, the value is obtained by wrapping the code
12294 in a function definition in the external language, and evaluating that
12295 function. Therefore, code should be written as if it were the body of such a
12296 function. In particular, note that python does not automatically return a
12297 value from a function unless a @code{return} statement is present, and so a
12298 @samp{return} statement will usually be required in python.
12300 This is the only one of the four evaluation contexts in which the code is
12301 automatically wrapped in a function definition.
12303 @subsubsection @code{:results output}
12304 The code is passed to the interpreter as an external process, and the
12305 contents of the standard output stream are returned as text. (In certain
12306 languages this also contains the error output stream; this is an area for
12309 @subsection @code{:session}
12310 @subsubsection @code{:results value}
12311 The code is passed to the interpreter running as an interactive Emacs
12312 inferior process. The result returned is the result of the last evaluation
12313 performed by the interpreter. (This is obtained in a language-specific
12314 manner: the value of the variable @code{_} in python and ruby, and the value
12315 of @code{.Last.value} in R).
12317 @subsubsection @code{:results output}
12318 The code is passed to the interpreter running as an interactive Emacs
12319 inferior process. The result returned is the concatenation of the sequence of
12320 (text) output from the interactive interpreter. Notice that this is not
12321 necessarily the same as what would be sent to @code{STDOUT} if the same code
12322 were passed to a non-interactive interpreter running as an external
12323 process. For example, compare the following two blocks:
12326 #+begin_src python :results output
12337 In non-session mode, the '2' is not printed and does not appear.
12339 #+begin_src python :results output :session
12351 But in @code{:session} mode, the interactive interpreter receives input '2'
12352 and prints out its value, '2'. (Indeed, the other print statements are
12355 @node Noweb reference syntax, Key bindings and useful functions, Results of evaluation, Working With Source Code
12356 @section Noweb reference syntax
12357 @cindex code block, noweb reference
12358 @cindex syntax, noweb
12359 @cindex source code, noweb reference
12361 The ``noweb'' (see @uref{http://www.cs.tufts.edu/~nr/noweb/}) Literate
12362 Programming system allows named blocks of code to be referenced by using the
12363 familiar Noweb syntax:
12366 <<code-block-name>>
12369 When a code block is tangled or evaluated, whether or not ``noweb''
12370 references are expanded depends upon the value of the @code{:noweb} header
12371 argument. If @code{:noweb yes}, then a Noweb reference is expanded before
12372 evaluation. If @code{:noweb no}, the default, then the reference is not
12373 expanded before evaluation.
12375 Note: the default value, @code{:noweb no}, was chosen to ensure that
12376 correct code is not broken in a language, such as Ruby, where
12377 @code{<<arg>>} is a syntactically valid construct. If @code{<<arg>>} is not
12378 syntactically valid in languages that you use, then please consider setting
12381 @node Key bindings and useful functions, Batch execution, Noweb reference syntax, Working With Source Code
12382 @section Key bindings and useful functions
12383 @cindex code block, key bindings
12385 Many common Org-mode key sequences are re-bound depending on
12388 Within a code block, the following key bindings
12391 @multitable @columnfractions 0.25 0.75
12393 @item @kbd{C-c C-c} @tab org-babel-execute-src-block
12395 @item @kbd{C-c C-o} @tab org-babel-open-src-block-result
12397 @item @kbd{C-@key{up}} @tab org-babel-load-in-session
12399 @item @kbd{M-@key{down}} @tab org-babel-pop-to-session
12402 In an Org-mode buffer, the following key bindings are active:
12404 @multitable @columnfractions 0.45 0.55
12406 @kindex C-c C-v C-a
12407 @item @kbd{C-c C-v a} @ @ @r{or} @ @ @kbd{C-c C-v C-a} @tab org-babel-sha1-hash
12409 @kindex C-c C-v C-b
12410 @item @kbd{C-c C-v b} @ @ @r{or} @ @ @kbd{C-c C-v C-b} @tab org-babel-execute-buffer
12412 @kindex C-c C-v C-f
12413 @item @kbd{C-c C-v f} @ @ @r{or} @ @ @kbd{C-c C-v C-f} @tab org-babel-tangle-file
12415 @item @kbd{C-c C-v g} @tab org-babel-goto-named-source-block
12417 @item @kbd{C-c C-v h} @tab org-babel-describe-bindings
12419 @kindex C-c C-v C-l
12420 @item @kbd{C-c C-v l} @ @ @r{or} @ @ @kbd{C-c C-v C-l} @tab org-babel-lob-ingest
12422 @kindex C-c C-v C-p
12423 @item @kbd{C-c C-v p} @ @ @r{or} @ @ @kbd{C-c C-v C-p} @tab org-babel-expand-src-block
12425 @kindex C-c C-v C-s
12426 @item @kbd{C-c C-v s} @ @ @r{or} @ @ @kbd{C-c C-v C-s} @tab org-babel-execute-subtree
12428 @kindex C-c C-v C-t
12429 @item @kbd{C-c C-v t} @ @ @r{or} @ @ @kbd{C-c C-v C-t} @tab org-babel-tangle
12431 @kindex C-c C-v C-z
12432 @item @kbd{C-c C-v z} @ @ @r{or} @ @ @kbd{C-c C-v C-z} @tab org-babel-switch-to-session
12435 @c When possible these keybindings were extended to work when the control key is
12436 @c kept pressed, resulting in the following additional keybindings.
12438 @c @multitable @columnfractions 0.25 0.75
12439 @c @item @kbd{C-c C-v C-a} @tab org-babel-sha1-hash
12440 @c @item @kbd{C-c C-v C-b} @tab org-babel-execute-buffer
12441 @c @item @kbd{C-c C-v C-f} @tab org-babel-tangle-file
12442 @c @item @kbd{C-c C-v C-l} @tab org-babel-lob-ingest
12443 @c @item @kbd{C-c C-v C-p} @tab org-babel-expand-src-block
12444 @c @item @kbd{C-c C-v C-s} @tab org-babel-execute-subtree
12445 @c @item @kbd{C-c C-v C-t} @tab org-babel-tangle
12446 @c @item @kbd{C-c C-v C-z} @tab org-babel-switch-to-session
12449 @node Batch execution, , Key bindings and useful functions, Working With Source Code
12450 @section Batch execution
12451 @cindex code block, batch execution
12452 @cindex source code, batch execution
12454 It is possible to call functions from the command line. This shell
12455 script calls @code{org-babel-tangle} on every one of its arguments.
12457 Be sure to adjust the paths to fit your system.
12461 # -*- mode: shell-script -*-
12463 # tangle files with org-mode
12467 ORGINSTALL="~/src/org/lisp/org-install.el"
12469 # wrap each argument in the code required to call tangle on it
12471 FILES="$FILES \"$i\""
12474 emacs -Q --batch -l $ORGINSTALL \
12476 (add-to-list 'load-path (expand-file-name \"~/src/org/lisp/\"))
12477 (add-to-list 'load-path (expand-file-name \"~/src/org/contrib/lisp/\"))
12478 (require 'org)(require 'org-exp)(require 'ob)(require 'ob-tangle)
12479 (mapc (lambda (file)
12480 (find-file (expand-file-name file \"$DIR\"))
12482 (kill-buffer)) '($FILES)))" 2>&1 |grep tangled
12485 @node Miscellaneous, Hacking, Working With Source Code, Top
12486 @chapter Miscellaneous
12489 * Completion:: M-TAB knows what you need
12490 * Easy Templates:: Quick insertion of structural elements
12491 * Speed keys:: Electric commands at the beginning of a headline
12492 * Code evaluation security:: Org mode files evaluate inline code
12493 * Customization:: Adapting Org to your taste
12494 * In-buffer settings:: Overview of the #+KEYWORDS
12495 * The very busy C-c C-c key:: When in doubt, press C-c C-c
12496 * Clean view:: Getting rid of leading stars in the outline
12497 * TTY keys:: Using Org on a tty
12498 * Interaction:: Other Emacs packages
12502 @node Completion, Easy Templates, Miscellaneous, Miscellaneous
12503 @section Completion
12504 @cindex completion, of @TeX{} symbols
12505 @cindex completion, of TODO keywords
12506 @cindex completion, of dictionary words
12507 @cindex completion, of option keywords
12508 @cindex completion, of tags
12509 @cindex completion, of property keys
12510 @cindex completion, of link abbreviations
12511 @cindex @TeX{} symbol completion
12512 @cindex TODO keywords completion
12513 @cindex dictionary word completion
12514 @cindex option keyword completion
12515 @cindex tag completion
12516 @cindex link abbreviations, completion of
12518 Emacs would not be Emacs without completion, and Org-mode uses it whenever it
12519 makes sense. If you prefer an @i{iswitchb}- or @i{ido}-like interface for
12520 some of the completion prompts, you can specify your preference by setting at
12521 most one of the variables @code{org-completion-use-iswitchb}
12522 @code{org-completion-use-ido}.
12524 Org supports in-buffer completion. This type of completion does
12525 not make use of the minibuffer. You simply type a few letters into
12526 the buffer and use the key to complete text right there.
12529 @kindex M-@key{TAB}
12531 Complete word at point
12534 At the beginning of a headline, complete TODO keywords.
12536 After @samp{\}, complete @TeX{} symbols supported by the exporter.
12538 After @samp{*}, complete headlines in the current buffer so that they
12539 can be used in search links like @samp{[[*find this headline]]}.
12541 After @samp{:} in a headline, complete tags. The list of tags is taken
12542 from the variable @code{org-tag-alist} (possibly set through the
12543 @samp{#+TAGS} in-buffer option, @pxref{Setting tags}), or it is created
12544 dynamically from all tags used in the current buffer.
12546 After @samp{:} and not in a headline, complete property keys. The list
12547 of keys is constructed dynamically from all keys used in the current
12550 After @samp{[}, complete link abbreviations (@pxref{Link abbreviations}).
12552 After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
12553 @samp{OPTIONS} which set file-specific options for Org-mode. When the
12554 option keyword is already complete, pressing @kbd{M-@key{TAB}} again
12555 will insert example settings for this keyword.
12557 In the line after @samp{#+STARTUP: }, complete startup keywords,
12558 i.e. valid keys for this line.
12560 Elsewhere, complete dictionary words using Ispell.
12564 @node Easy Templates, Speed keys, Completion, Miscellaneous
12565 @section Easy Templates
12566 @cindex template insertion
12567 @cindex insertion, of templates
12569 Org-mode supports insertion of empty structural elements (like
12570 @code{#+BEGIN_SRC} and @code{#+END_SRC} pairs) with just a few key
12571 strokes. This is achieved through a native template expansion mechanism.
12572 Note that Emacs has several other template mechanisms which could be used in
12573 a similar way, for example @file{yasnippet}.
12575 To insert a structural element, type a @samp{<}, followed by a template
12576 selector and @kbd{@key{TAB}}. Completion takes effect only when the above
12577 keystrokes are typed on a line by itself.
12579 The following template selectors are currently supported.
12581 @multitable @columnfractions 0.1 0.9
12582 @item @kbd{s} @tab @code{#+begin_src ... #+end_src}
12583 @item @kbd{e} @tab @code{#+begin_example ... #+end_example}
12584 @item @kbd{q} @tab @code{#+begin_quote ... #+end_quote}
12585 @item @kbd{v} @tab @code{#+begin_verse ... #+end_verse}
12586 @item @kbd{c} @tab @code{#+begin_center ... #+end_center}
12587 @item @kbd{l} @tab @code{#+begin_latex ... #+end_latex}
12588 @item @kbd{L} @tab @code{#+latex:}
12589 @item @kbd{h} @tab @code{#+begin_html ... #+end_html}
12590 @item @kbd{H} @tab @code{#+html:}
12591 @item @kbd{a} @tab @code{#+begin_ascii ... #+end_ascii}
12592 @item @kbd{A} @tab @code{#+ascii:}
12593 @item @kbd{i} @tab @code{#+include:} line
12596 For example, on an empty line, typing "<e" and then pressing TAB, will expand
12597 into a complete EXAMPLE template.
12599 You can install additional templates by customizing the variable
12600 @code{org-structure-template-alist}. Refer docstring of the variable for
12601 additional details.
12603 @node Speed keys, Code evaluation security, Easy Templates, Miscellaneous
12604 @section Speed keys
12606 @vindex org-use-speed-commands
12607 @vindex org-speed-commands-user
12609 Single keys can be made to execute commands when the cursor is at the
12610 beginning of a headline, i.e. before the first star. Configure the variable
12611 @code{org-use-speed-commands} to activate this feature. There is a
12612 pre-defined list of commands, and you can add more such commands using the
12613 variable @code{org-speed-commands-user}. Speed keys do not only speed up
12614 navigation and other commands, but they also provide an alternative way to
12615 execute commands bound to keys that are not or not easily available on a tty,
12616 or on a small mobile device with a limited keyboard.
12618 To see which commands are available, activate the feature and press @kbd{?}
12619 with the cursor at the beginning of a headline.
12621 @node Code evaluation security, Customization, Speed keys, Miscellaneous
12622 @section Code evaluation and security issues
12624 Org provides tools to work with the code snippets, including evaluating them.
12626 Running code on your machine always comes with a security risk. Badly
12627 written or malicious code can be executed on purpose or by accident. Org has
12628 default settings which will only evaluate such code if you give explicit
12629 permission to do so, and as a casual user of these features you should leave
12630 these precautions intact.
12632 For people who regularly work with such code, the confirmation prompts can
12633 become annoying, and you might want to turn them off. This can be done, but
12634 you must be aware of the risks that are involved.
12636 Code evaluation can happen under the following circumstances:
12639 @item Source code blocks
12640 Source code blocks can be evaluated during export, or when pressing @kbd{C-c
12641 C-c} in the block. The most important thing to realize here is that Org mode
12642 files which contain code snippets are, in a certain sense, like executable
12643 files. So you should accept them and load them into Emacs only from trusted
12644 sources - just like you would do with a program you install on your computer.
12646 Make sure you know what you are doing before customizing the variables
12647 which take off the default security brakes.
12649 @defopt org-confirm-babel-evaluate
12650 When set to t user is queried before code block evaluation
12653 @item Following @code{shell} and @code{elisp} links
12654 Org has two link types that can directly evaluate code (@pxref{External
12655 links}). These links can be problematic because the code to be evaluated is
12658 @defopt org-confirm-shell-link-function
12659 Function to queries user about shell link execution.
12661 @defopt org-confirm-elisp-link-function
12662 Functions to query user for Emacs Lisp link execution.
12665 @item Formulas in tables
12666 Formulas in tables (@pxref{The spreadsheet}) are code that is evaluated
12667 either by the @i{calc} interpreter, or by the @i{Emacs Lisp} interpreter.
12670 @node Customization, In-buffer settings, Code evaluation security, Miscellaneous
12671 @section Customization
12672 @cindex customization
12673 @cindex options, for customization
12674 @cindex variables, for customization
12676 There are more than 180 variables that can be used to customize
12677 Org. For the sake of compactness of the manual, I am not
12678 describing the variables here. A structured overview of customization
12679 variables is available with @kbd{M-x org-customize}. Or select
12680 @code{Browse Org Group} from the @code{Org->Customization} menu. Many
12681 settings can also be activated on a per-file basis, by putting special
12682 lines into the buffer (@pxref{In-buffer settings}).
12684 @node In-buffer settings, The very busy C-c C-c key, Customization, Miscellaneous
12685 @section Summary of in-buffer settings
12686 @cindex in-buffer settings
12687 @cindex special keywords
12689 Org-mode uses special lines in the buffer to define settings on a
12690 per-file basis. These lines start with a @samp{#+} followed by a
12691 keyword, a colon, and then individual words defining a setting. Several
12692 setting words can be in the same line, but you can also have multiple
12693 lines for the keyword. While these settings are described throughout
12694 the manual, here is a summary. After changing any of those lines in the
12695 buffer, press @kbd{C-c C-c} with the cursor still in the line to
12696 activate the changes immediately. Otherwise they become effective only
12697 when the file is visited again in a new Emacs session.
12699 @vindex org-archive-location
12701 @item #+ARCHIVE: %s_done::
12702 This line sets the archive location for the agenda file. It applies for
12703 all subsequent lines until the next @samp{#+ARCHIVE} line, or the end
12704 of the file. The first such line also applies to any entries before it.
12705 The corresponding variable is @code{org-archive-location}.
12707 This line sets the category for the agenda file. The category applies
12708 for all subsequent lines until the next @samp{#+CATEGORY} line, or the
12709 end of the file. The first such line also applies to any entries before it.
12710 @item #+COLUMNS: %25ITEM .....
12711 @cindex property, COLUMNS
12712 Set the default format for columns view. This format applies when
12713 columns view is invoked in locations where no @code{COLUMNS} property
12715 @item #+CONSTANTS: name1=value1 ...
12716 @vindex org-table-formula-constants
12717 @vindex org-table-formula
12718 Set file-local values for constants to be used in table formulas. This
12719 line set the local variable @code{org-table-formula-constants-local}.
12720 The global version of this variable is
12721 @code{org-table-formula-constants}.
12722 @item #+FILETAGS: :tag1:tag2:tag3:
12723 Set tags that can be inherited by any entry in the file, including the
12725 @item #+DRAWERS: NAME1 .....
12726 @vindex org-drawers
12727 Set the file-local set of drawers. The corresponding global variable is
12728 @code{org-drawers}.
12729 @item #+LINK: linkword replace
12730 @vindex org-link-abbrev-alist
12731 These lines (several are allowed) specify link abbreviations.
12732 @xref{Link abbreviations}. The corresponding variable is
12733 @code{org-link-abbrev-alist}.
12734 @item #+PRIORITIES: highest lowest default
12735 @vindex org-highest-priority
12736 @vindex org-lowest-priority
12737 @vindex org-default-priority
12738 This line sets the limits and the default for the priorities. All three
12739 must be either letters A-Z or numbers 0-9. The highest priority must
12740 have a lower ASCII number that the lowest priority.
12741 @item #+PROPERTY: Property_Name Value
12742 This line sets a default inheritance value for entries in the current
12743 buffer, most useful for specifying the allowed values of a property.
12744 @cindex #+SETUPFILE
12745 @item #+SETUPFILE: file
12746 This line defines a file that holds more in-buffer setup. Normally this is
12747 entirely ignored. Only when the buffer is parsed for option-setting lines
12748 (i.e. when starting Org-mode for a file, when pressing @kbd{C-c C-c} in a
12749 settings line, or when exporting), then the contents of this file are parsed
12750 as if they had been included in the buffer. In particular, the file can be
12751 any other Org-mode file with internal setup. You can visit the file the
12752 cursor is in the line with @kbd{C-c '}.
12755 This line sets options to be used at startup of Org-mode, when an
12756 Org file is being visited.
12758 The first set of options deals with the initial visibility of the outline
12759 tree. The corresponding variable for global default settings is
12760 @code{org-startup-folded}, with a default value @code{t}, which means
12762 @vindex org-startup-folded
12763 @cindex @code{overview}, STARTUP keyword
12764 @cindex @code{content}, STARTUP keyword
12765 @cindex @code{showall}, STARTUP keyword
12766 @cindex @code{showeverything}, STARTUP keyword
12768 overview @r{top-level headlines only}
12769 content @r{all headlines}
12770 showall @r{no folding of any entries}
12771 showeverything @r{show even drawer contents}
12774 @vindex org-startup-indented
12775 @cindex @code{indent}, STARTUP keyword
12776 @cindex @code{noindent}, STARTUP keyword
12777 Dynamic virtual indentation is controlled by the variable
12778 @code{org-startup-indented}@footnote{Emacs 23 and Org-mode 6.29 are required}
12780 indent @r{start with @code{org-indent-mode} turned on}
12781 noindent @r{start with @code{org-indent-mode} turned off}
12784 @vindex org-startup-align-all-tables
12785 Then there are options for aligning tables upon visiting a file. This
12786 is useful in files containing narrowed table columns. The corresponding
12787 variable is @code{org-startup-align-all-tables}, with a default value
12789 @cindex @code{align}, STARTUP keyword
12790 @cindex @code{noalign}, STARTUP keyword
12792 align @r{align all tables}
12793 noalign @r{don't align tables on startup}
12796 @vindex org-startup-with-inline-images
12797 When visiting a file, inline images can be automatically displayed. The
12798 corresponding variable is @code{org-startup-with-inline-images}, with a
12799 default value @code{nil} to avoid delays when visiting a file.
12800 @cindex @code{inlineimages}, STARTUP keyword
12801 @cindex @code{noinlineimages}, STARTUP keyword
12803 inlineimages @r{show inline images}
12804 noinlineimages @r{don't show inline images on startup}
12807 @vindex org-log-done
12808 @vindex org-log-note-clock-out
12809 @vindex org-log-repeat
12810 Logging the closing and reopening of TODO items and clock intervals can be
12811 configured using these options (see variables @code{org-log-done},
12812 @code{org-log-note-clock-out} and @code{org-log-repeat})
12813 @cindex @code{logdone}, STARTUP keyword
12814 @cindex @code{lognotedone}, STARTUP keyword
12815 @cindex @code{nologdone}, STARTUP keyword
12816 @cindex @code{lognoteclock-out}, STARTUP keyword
12817 @cindex @code{nolognoteclock-out}, STARTUP keyword
12818 @cindex @code{logrepeat}, STARTUP keyword
12819 @cindex @code{lognoterepeat}, STARTUP keyword
12820 @cindex @code{nologrepeat}, STARTUP keyword
12821 @cindex @code{logreschedule}, STARTUP keyword
12822 @cindex @code{lognotereschedule}, STARTUP keyword
12823 @cindex @code{nologreschedule}, STARTUP keyword
12824 @cindex @code{logredeadline}, STARTUP keyword
12825 @cindex @code{lognoteredeadline}, STARTUP keyword
12826 @cindex @code{nologredeadline}, STARTUP keyword
12827 @cindex @code{logrefile}, STARTUP keyword
12828 @cindex @code{lognoterefile}, STARTUP keyword
12829 @cindex @code{nologrefile}, STARTUP keyword
12831 logdone @r{record a timestamp when an item is marked DONE}
12832 lognotedone @r{record timestamp and a note when DONE}
12833 nologdone @r{don't record when items are marked DONE}
12834 logrepeat @r{record a time when reinstating a repeating item}
12835 lognoterepeat @r{record a note when reinstating a repeating item}
12836 nologrepeat @r{do not record when reinstating repeating item}
12837 lognoteclock-out @r{record a note when clocking out}
12838 nolognoteclock-out @r{don't record a note when clocking out}
12839 logreschedule @r{record a timestamp when scheduling time changes}
12840 lognotereschedule @r{record a note when scheduling time changes}
12841 nologreschedule @r{do not record when a scheduling date changes}
12842 logredeadline @r{record a timestamp when deadline changes}
12843 lognoteredeadline @r{record a note when deadline changes}
12844 nologredeadline @r{do not record when a deadline date changes}
12845 logrefile @r{record a timestamp when refiling}
12846 lognoterefile @r{record a note when refiling}
12847 nologrefile @r{do not record when refiling}
12849 @vindex org-hide-leading-stars
12850 @vindex org-odd-levels-only
12851 Here are the options for hiding leading stars in outline headings, and for
12852 indenting outlines. The corresponding variables are
12853 @code{org-hide-leading-stars} and @code{org-odd-levels-only}, both with a
12854 default setting @code{nil} (meaning @code{showstars} and @code{oddeven}).
12855 @cindex @code{hidestars}, STARTUP keyword
12856 @cindex @code{showstars}, STARTUP keyword
12857 @cindex @code{odd}, STARTUP keyword
12858 @cindex @code{even}, STARTUP keyword
12860 hidestars @r{make all but one of the stars starting a headline invisible.}
12861 showstars @r{show all stars starting a headline}
12862 indent @r{virtual indentation according to outline level}
12863 noindent @r{no virtual indentation according to outline level}
12864 odd @r{allow only odd outline levels (1,3,...)}
12865 oddeven @r{allow all outline levels}
12867 @vindex org-put-time-stamp-overlays
12868 @vindex org-time-stamp-overlay-formats
12869 To turn on custom format overlays over timestamps (variables
12870 @code{org-put-time-stamp-overlays} and
12871 @code{org-time-stamp-overlay-formats}), use
12872 @cindex @code{customtime}, STARTUP keyword
12874 customtime @r{overlay custom time format}
12876 @vindex constants-unit-system
12877 The following options influence the table spreadsheet (variable
12878 @code{constants-unit-system}).
12879 @cindex @code{constcgs}, STARTUP keyword
12880 @cindex @code{constSI}, STARTUP keyword
12882 constcgs @r{@file{constants.el} should use the c-g-s unit system}
12883 constSI @r{@file{constants.el} should use the SI unit system}
12885 @vindex org-footnote-define-inline
12886 @vindex org-footnote-auto-label
12887 @vindex org-footnote-auto-adjust
12888 To influence footnote settings, use the following keywords. The
12889 corresponding variables are @code{org-footnote-define-inline},
12890 @code{org-footnote-auto-label}, and @code{org-footnote-auto-adjust}.
12891 @cindex @code{fninline}, STARTUP keyword
12892 @cindex @code{nofninline}, STARTUP keyword
12893 @cindex @code{fnlocal}, STARTUP keyword
12894 @cindex @code{fnprompt}, STARTUP keyword
12895 @cindex @code{fnauto}, STARTUP keyword
12896 @cindex @code{fnconfirm}, STARTUP keyword
12897 @cindex @code{fnplain}, STARTUP keyword
12898 @cindex @code{fnadjust}, STARTUP keyword
12899 @cindex @code{nofnadjust}, STARTUP keyword
12901 fninline @r{define footnotes inline}
12902 fnnoinline @r{define footnotes in separate section}
12903 fnlocal @r{define footnotes near first reference, but not inline}
12904 fnprompt @r{prompt for footnote labels}
12905 fnauto @r{create [fn:1]-like labels automatically (default)}
12906 fnconfirm @r{offer automatic label for editing or confirmation}
12907 fnplain @r{create [1]-like labels automatically}
12908 fnadjust @r{automatically renumber and sort footnotes}
12909 nofnadjust @r{do not renumber and sort automatically}
12911 @cindex org-hide-block-startup
12912 To hide blocks on startup, use these keywords. The corresponding variable is
12913 @code{org-hide-block-startup}.
12914 @cindex @code{hideblocks}, STARTUP keyword
12915 @cindex @code{nohideblocks}, STARTUP keyword
12917 hideblocks @r{Hide all begin/end blocks on startup}
12918 nohideblocks @r{Do not hide blocks on startup}
12920 @cindex org-pretty-entities
12921 The the display of entities as UTF8 characters is governed by the variable
12922 @code{org-pretty-entities} and the keywords
12923 @cindex @code{entitiespretty}, STARTUP keyword
12924 @cindex @code{entitiesplain}, STARTUP keyword
12926 entitiespretty @r{Show entities as UTF8 characters where possible}
12927 entitiesplain @r{Leave entities plain}
12929 @item #+TAGS: TAG1(c1) TAG2(c2)
12930 @vindex org-tag-alist
12931 These lines (several such lines are allowed) specify the valid tags in
12932 this file, and (potentially) the corresponding @emph{fast tag selection}
12933 keys. The corresponding variable is @code{org-tag-alist}.
12935 This line contains the formulas for the table directly above the line.
12936 @item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+DATE:,
12937 @itemx #+OPTIONS:, #+BIND:, #+XSLT:,
12938 @itemx #+DESCRIPTION:, #+KEYWORDS:,
12939 @itemx #+LATEX_HEADER:, #+STYLE:, #+LINK_UP:, #+LINK_HOME:,
12940 @itemx #+EXPORT_SELECT_TAGS:, #+EXPORT_EXCLUDE_TAGS:
12941 These lines provide settings for exporting files. For more details see
12942 @ref{Export options}.
12943 @item #+TODO: #+SEQ_TODO: #+TYP_TODO:
12944 @vindex org-todo-keywords
12945 These lines set the TODO keywords and their interpretation in the
12946 current file. The corresponding variable is @code{org-todo-keywords}.
12949 @node The very busy C-c C-c key, Clean view, In-buffer settings, Miscellaneous
12950 @section The very busy C-c C-c key
12952 @cindex C-c C-c, overview
12954 The key @kbd{C-c C-c} has many purposes in Org, which are all
12955 mentioned scattered throughout this manual. One specific function of
12956 this key is to add @emph{tags} to a headline (@pxref{Tags}). In many
12957 other circumstances it means something like @emph{``Hey Org, look
12958 here and update according to what you see here''}. Here is a summary of
12959 what this means in different contexts.
12963 If there are highlights in the buffer from the creation of a sparse
12964 tree, or from clock display, remove these highlights.
12966 If the cursor is in one of the special @code{#+KEYWORD} lines, this
12967 triggers scanning the buffer for these lines and updating the
12970 If the cursor is inside a table, realign the table. This command
12971 works even if the automatic table editor has been turned off.
12973 If the cursor is on a @code{#+TBLFM} line, re-apply the formulas to
12976 If the current buffer is a capture buffer, close the note and file it.
12977 With a prefix argument, file it, without further interaction, to the
12980 If the cursor is on a @code{<<<target>>>}, update radio targets and
12981 corresponding links in this buffer.
12983 If the cursor is in a property line or at the start or end of a property
12984 drawer, offer property commands.
12986 If the cursor is at a footnote reference, go to the corresponding
12987 definition, and vice versa.
12989 If the cursor is on a statistics cookie, update it.
12991 If the cursor is in a plain list item with a checkbox, toggle the status
12994 If the cursor is on a numbered item in a plain list, renumber the
12997 If the cursor is on the @code{#+BEGIN} line of a dynamic block, the
13001 @node Clean view, TTY keys, The very busy C-c C-c key, Miscellaneous
13002 @section A cleaner outline view
13003 @cindex hiding leading stars
13004 @cindex dynamic indentation
13005 @cindex odd-levels-only outlines
13006 @cindex clean outline view
13008 Some people find it noisy and distracting that the Org headlines start with a
13009 potentially large number of stars, and that text below the headlines is not
13010 indented. While this is no problem when writing a @emph{book-like} document
13011 where the outline headings are really section headings, in a more
13012 @emph{list-oriented} outline, indented structure is a lot cleaner:
13016 * Top level headline | * Top level headline
13017 ** Second level | * Second level
13018 *** 3rd level | * 3rd level
13019 some text | some text
13020 *** 3rd level | * 3rd level
13021 more text | more text
13022 * Another top level headline | * Another top level headline
13028 If you are using at least Emacs 23.2@footnote{Emacs 23.1 can actually crash
13029 with @code{org-indent-mode}} and version 6.29 of Org, this kind of view can
13030 be achieved dynamically at display time using @code{org-indent-mode}. In
13031 this minor mode, all lines are prefixed for display with the necessary amount
13032 of space@footnote{@code{org-indent-mode} also sets the @code{wrap-prefix}
13033 property, such that @code{visual-line-mode} (or purely setting
13034 @code{word-wrap}) wraps long lines (including headlines) correctly indented.
13035 }. Also headlines are prefixed with additional stars, so that the amount of
13036 indentation shifts by two@footnote{See the variable
13037 @code{org-indent-indentation-per-level}.} spaces per level. All headline
13038 stars but the last one are made invisible using the @code{org-hide}
13039 face@footnote{Turning on @code{org-indent-mode} sets
13040 @code{org-hide-leading-stars} to @code{t} and @code{org-adapt-indentation} to
13041 @code{nil}.} - see below under @samp{2.} for more information on how this
13042 works. You can turn on @code{org-indent-mode} for all files by customizing
13043 the variable @code{org-startup-indented}, or you can turn it on for
13044 individual files using
13050 If you want a similar effect in earlier version of Emacs and/or Org, or if
13051 you want the indentation to be hard space characters so that the plain text
13052 file looks as similar as possible to the Emacs display, Org supports you in
13057 @emph{Indentation of text below headlines}@*
13058 You may indent text below each headline to make the left boundary line up
13059 with the headline, like
13063 more text, now indented
13066 @vindex org-adapt-indentation
13067 Org supports this with paragraph filling, line wrapping, and structure
13068 editing@footnote{See also the variable @code{org-adapt-indentation}.},
13069 preserving or adapting the indentation as appropriate.
13072 @vindex org-hide-leading-stars
13073 @emph{Hiding leading stars}@* You can modify the display in such a way that
13074 all leading stars become invisible. To do this in a global way, configure
13075 the variable @code{org-hide-leading-stars} or change this on a per-file basis
13079 #+STARTUP: hidestars
13080 #+STARTUP: showstars
13083 With hidden stars, the tree becomes:
13087 * Top level headline
13095 @vindex org-hide @r{(face)}
13096 The leading stars are not truly replaced by whitespace, they are only
13097 fontified with the face @code{org-hide} that uses the background color as
13098 font color. If you are not using either white or black background, you may
13099 have to customize this face to get the wanted effect. Another possibility is
13100 to set this font such that the extra stars are @i{almost} invisible, for
13101 example using the color @code{grey90} on a white background.
13104 @vindex org-odd-levels-only
13105 Things become cleaner still if you skip all the even levels and use only odd
13106 levels 1, 3, 5..., effectively adding two stars to go from one outline level
13107 to the next@footnote{When you need to specify a level for a property search
13108 or refile targets, @samp{LEVEL=2} will correspond to 3 stars, etc@.}. In this
13109 way we get the outline view shown at the beginning of this section. In order
13110 to make the structure editing and export commands handle this convention
13111 correctly, configure the variable @code{org-odd-levels-only}, or set this on
13112 a per-file basis with one of the following lines:
13119 You can convert an Org file from single-star-per-level to the
13120 double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
13121 RET} in that file. The reverse operation is @kbd{M-x
13122 org-convert-to-oddeven-levels}.
13125 @node TTY keys, Interaction, Clean view, Miscellaneous
13126 @section Using Org on a tty
13127 @cindex tty key bindings
13129 Because Org contains a large number of commands, by default many of
13130 Org's core commands are bound to keys that are generally not
13131 accessible on a tty, such as the cursor keys (@key{left}, @key{right},
13132 @key{up}, @key{down}), @key{TAB} and @key{RET}, in particular when used
13133 together with modifiers like @key{Meta} and/or @key{Shift}. To access
13134 these commands on a tty when special keys are unavailable, the following
13135 alternative bindings can be used. The tty bindings below will likely be
13136 more cumbersome; you may find for some of the bindings below that a
13137 customized workaround suits you better. For example, changing a timestamp
13138 is really only fun with @kbd{S-@key{cursor}} keys, whereas on a
13139 tty you would rather use @kbd{C-c .} to re-insert the timestamp.
13141 @multitable @columnfractions 0.15 0.2 0.1 0.2
13142 @item @b{Default} @tab @b{Alternative 1} @tab @b{Speed key} @tab @b{Alternative 2}
13143 @item @kbd{S-@key{TAB}} @tab @kbd{C-u @key{TAB}} @tab @kbd{C} @tab
13144 @item @kbd{M-@key{left}} @tab @kbd{C-c C-x l} @tab @kbd{l} @tab @kbd{@key{Esc} @key{left}}
13145 @item @kbd{M-S-@key{left}} @tab @kbd{C-c C-x L} @tab @kbd{L} @tab
13146 @item @kbd{M-@key{right}} @tab @kbd{C-c C-x r} @tab @kbd{r} @tab @kbd{@key{Esc} @key{right}}
13147 @item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R} @tab @kbd{R} @tab
13148 @item @kbd{M-@key{up}} @tab @kbd{C-c C-x u} @tab @kbd{ } @tab @kbd{@key{Esc} @key{up}}
13149 @item @kbd{M-S-@key{up}} @tab @kbd{C-c C-x U} @tab @kbd{U} @tab
13150 @item @kbd{M-@key{down}} @tab @kbd{C-c C-x d} @tab @kbd{ } @tab @kbd{@key{Esc} @key{down}}
13151 @item @kbd{M-S-@key{down}} @tab @kbd{C-c C-x D} @tab @kbd{D} @tab
13152 @item @kbd{S-@key{RET}} @tab @kbd{C-c C-x c} @tab @kbd{ } @tab
13153 @item @kbd{M-@key{RET}} @tab @kbd{C-c C-x m} @tab @kbd{ } @tab @kbd{@key{Esc} @key{RET}}
13154 @item @kbd{M-S-@key{RET}} @tab @kbd{C-c C-x M} @tab @kbd{ } @tab
13155 @item @kbd{S-@key{left}} @tab @kbd{C-c @key{left}} @tab @kbd{ } @tab
13156 @item @kbd{S-@key{right}} @tab @kbd{C-c @key{right}} @tab @kbd{ } @tab
13157 @item @kbd{S-@key{up}} @tab @kbd{C-c @key{up}} @tab @kbd{ } @tab
13158 @item @kbd{S-@key{down}} @tab @kbd{C-c @key{down}} @tab @kbd{ } @tab
13159 @item @kbd{C-S-@key{left}} @tab @kbd{C-c C-x @key{left}} @tab @kbd{ } @tab
13160 @item @kbd{C-S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab @kbd{ } @tab
13164 @node Interaction, , TTY keys, Miscellaneous
13165 @section Interaction with other packages
13166 @cindex packages, interaction with other
13167 Org lives in the world of GNU Emacs and interacts in various ways
13168 with other code out there.
13171 * Cooperation:: Packages Org cooperates with
13172 * Conflicts:: Packages that lead to conflicts
13175 @node Cooperation, Conflicts, Interaction, Interaction
13176 @subsection Packages that Org cooperates with
13179 @cindex @file{calc.el}
13180 @cindex Gillespie, Dave
13181 @item @file{calc.el} by Dave Gillespie
13182 Org uses the Calc package for implementing spreadsheet
13183 functionality in its tables (@pxref{The spreadsheet}). Org
13184 checks for the availability of Calc by looking for the function
13185 @code{calc-eval} which will have been autoloaded during setup if Calc has
13186 been installed properly. As of Emacs 22, Calc is part of the Emacs
13187 distribution. Another possibility for interaction between the two
13188 packages is using Calc for embedded calculations. @xref{Embedded Mode,
13189 , Embedded Mode, Calc, GNU Emacs Calc Manual}.
13190 @item @file{constants.el} by Carsten Dominik
13191 @cindex @file{constants.el}
13192 @cindex Dominik, Carsten
13193 @vindex org-table-formula-constants
13194 In a table formula (@pxref{The spreadsheet}), it is possible to use
13195 names for natural constants or units. Instead of defining your own
13196 constants in the variable @code{org-table-formula-constants}, install
13197 the @file{constants} package which defines a large number of constants
13198 and units, and lets you use unit prefixes like @samp{M} for
13199 @samp{Mega}, etc@. You will need version 2.0 of this package, available
13200 at @url{http://www.astro.uva.nl/~dominik/Tools}. Org checks for
13201 the function @code{constants-get}, which has to be autoloaded in your
13202 setup. See the installation instructions in the file
13203 @file{constants.el}.
13204 @item @file{cdlatex.el} by Carsten Dominik
13205 @cindex @file{cdlatex.el}
13206 @cindex Dominik, Carsten
13207 Org-mode can make use of the CDLa@TeX{} package to efficiently enter
13208 La@TeX{} fragments into Org files. See @ref{CDLaTeX mode}.
13209 @item @file{imenu.el} by Ake Stenhoff and Lars Lindberg
13210 @cindex @file{imenu.el}
13211 Imenu allows menu access to an index of items in a file. Org-mode
13212 supports Imenu---all you need to do to get the index is the following:
13214 (add-hook 'org-mode-hook
13215 (lambda () (imenu-add-to-menubar "Imenu")))
13217 @vindex org-imenu-depth
13218 By default the index is two levels deep---you can modify the depth using
13219 the option @code{org-imenu-depth}.
13220 @item @file{remember.el} by John Wiegley
13221 @cindex @file{remember.el}
13222 @cindex Wiegley, John
13223 Org used to use this package for capture, but no longer does.
13224 @item @file{speedbar.el} by Eric M. Ludlam
13225 @cindex @file{speedbar.el}
13226 @cindex Ludlam, Eric M.
13227 Speedbar is a package that creates a special frame displaying files and
13228 index items in files. Org-mode supports Speedbar and allows you to
13229 drill into Org files directly from the Speedbar. It also allows you to
13230 restrict the scope of agenda commands to a file or a subtree by using
13231 the command @kbd{<} in the Speedbar frame.
13232 @cindex @file{table.el}
13233 @item @file{table.el} by Takaaki Ota
13235 @cindex table editor, @file{table.el}
13236 @cindex @file{table.el}
13237 @cindex Ota, Takaaki
13239 Complex ASCII tables with automatic line wrapping, column- and row-spanning,
13240 and alignment can be created using the Emacs table package by Takaaki Ota
13241 (@uref{http://sourceforge.net/projects/table}, and also part of Emacs 22).
13242 Org-mode will recognize these tables and export them properly. Because of
13243 interference with other Org-mode functionality, you unfortunately cannot edit
13244 these tables directly in the buffer. Instead, you need to use the command
13245 @kbd{C-c '} to edit them, similar to source code snippets.
13248 @orgcmd{C-c ',org-edit-special}
13249 Edit a @file{table.el} table. Works when the cursor is in a table.el table.
13251 @orgcmd{C-c ~,org-table-create-with-table.el}
13252 Insert a @file{table.el} table. If there is already a table at point, this
13253 command converts it between the @file{table.el} format and the Org-mode
13254 format. See the documentation string of the command
13255 @code{org-convert-table} for the restrictions under which this is
13258 @file{table.el} is part of Emacs since Emacs 22.
13259 @item @file{footnote.el} by Steven L. Baur
13260 @cindex @file{footnote.el}
13261 @cindex Baur, Steven L.
13262 Org-mode recognizes numerical footnotes as provided by this package.
13263 However, Org-mode also has its own footnote support (@pxref{Footnotes}),
13264 which makes using @file{footnote.el} unnecessary.
13267 @node Conflicts, , Cooperation, Interaction
13268 @subsection Packages that lead to conflicts with Org-mode
13272 @cindex @code{shift-selection-mode}
13273 @vindex org-support-shift-select
13274 In Emacs 23, @code{shift-selection-mode} is on by default, meaning that
13275 cursor motions combined with the shift key should start or enlarge regions.
13276 This conflicts with the use of @kbd{S-@key{cursor}} commands in Org to change
13277 timestamps, TODO keywords, priorities, and item bullet types if the cursor is
13278 at such a location. By default, @kbd{S-@key{cursor}} commands outside
13279 special contexts don't do anything, but you can customize the variable
13280 @code{org-support-shift-select}. Org-mode then tries to accommodate shift
13281 selection by (i) using it outside of the special contexts where special
13282 commands apply, and by (ii) extending an existing active region even if the
13283 cursor moves across a special context.
13285 @item @file{CUA.el} by Kim. F. Storm
13286 @cindex @file{CUA.el}
13287 @cindex Storm, Kim. F.
13288 @vindex org-replace-disputed-keys
13289 Key bindings in Org conflict with the @kbd{S-<cursor>} keys used by CUA mode
13290 (as well as @code{pc-select-mode} and @code{s-region-mode}) to select and extend the
13291 region. In fact, Emacs 23 has this built-in in the form of
13292 @code{shift-selection-mode}, see previous paragraph. If you are using Emacs
13293 23, you probably don't want to use another package for this purpose. However,
13294 if you prefer to leave these keys to a different package while working in
13295 Org-mode, configure the variable @code{org-replace-disputed-keys}. When set,
13296 Org will move the following key bindings in Org files, and in the agenda
13297 buffer (but not during date selection).
13300 S-UP -> M-p S-DOWN -> M-n
13301 S-LEFT -> M-- S-RIGHT -> M-+
13302 C-S-LEFT -> M-S-- C-S-RIGHT -> M-S-+
13305 @vindex org-disputed-keys
13306 Yes, these are unfortunately more difficult to remember. If you want
13307 to have other replacement keys, look at the variable
13308 @code{org-disputed-keys}.
13310 @item @file{yasnippet.el}
13311 @cindex @file{yasnippet.el}
13312 The way Org-mode binds the TAB key (binding to @code{[tab]} instead of
13313 @code{"\t"}) overrules yasnippets' access to this key. The following code
13314 fixed this problem:
13317 (add-hook 'org-mode-hook
13319 (org-set-local 'yas/trigger-key [tab])
13320 (define-key yas/keymap [tab] 'yas/next-field-group)))
13323 @item @file{windmove.el} by Hovav Shacham
13324 @cindex @file{windmove.el}
13325 This package also uses the @kbd{S-<cursor>} keys, so everything written
13326 in the paragraph above about CUA mode also applies here. If you want make
13327 the windmove function active in locations where Org-mode does not have
13328 special functionality on @kbd{S-@key{cursor}}, add this to your
13332 ;; Make windmove work in org-mode:
13333 (add-hook 'org-shiftup-final-hook 'windmove-up)
13334 (add-hook 'org-shiftleft-final-hook 'windmove-left)
13335 (add-hook 'org-shiftdown-final-hook 'windmove-down)
13336 (add-hook 'org-shiftright-final-hook 'windmove-right)
13339 @item @file{viper.el} by Michael Kifer
13340 @cindex @file{viper.el}
13342 Viper uses @kbd{C-c /} and therefore makes this key not access the
13343 corresponding Org-mode command @code{org-sparse-tree}. You need to find
13344 another key for this command, or override the key in
13345 @code{viper-vi-global-user-map} with
13348 (define-key viper-vi-global-user-map "C-c /" 'org-sparse-tree)
13354 @node Hacking, MobileOrg, Miscellaneous, Top
13358 This appendix covers some aspects where users can extend the functionality of
13362 * Hooks:: Who to reach into Org's internals
13363 * Add-on packages:: Available extensions
13364 * Adding hyperlink types:: New custom link types
13365 * Context-sensitive commands:: How to add functionality to such commands
13366 * Tables in arbitrary syntax:: Orgtbl for La@TeX{} and other programs
13367 * Dynamic blocks:: Automatically filled blocks
13368 * Special agenda views:: Customized views
13369 * Extracting agenda information:: Postprocessing of agenda information
13370 * Using the property API:: Writing programs that use entry properties
13371 * Using the mapping API:: Mapping over all or selected entries
13374 @node Hooks, Add-on packages, Hacking, Hacking
13378 Org has a large number of hook variables that can be used to add
13379 functionality. This appendix about hacking is going to illustrate the
13380 use of some of them. A complete list of all hooks with documentation is
13381 maintained by the Worg project and can be found at
13382 @uref{http://orgmode.org/worg/org-configs/org-hooks.php}.
13384 @node Add-on packages, Adding hyperlink types, Hooks, Hacking
13385 @section Add-on packages
13386 @cindex add-on packages
13388 A large number of add-on packages have been written by various authors.
13389 These packages are not part of Emacs, but they are distributed as contributed
13390 packages with the separate release available at the Org-mode home page at
13391 @uref{http://orgmode.org}. The list of contributed packages, along with
13392 documentation about each package, is maintained by the Worg project at
13393 @uref{http://orgmode.org/worg/org-contrib/}.
13397 @node Adding hyperlink types, Context-sensitive commands, Add-on packages, Hacking
13398 @section Adding hyperlink types
13399 @cindex hyperlinks, adding new types
13401 Org has a large number of hyperlink types built-in
13402 (@pxref{Hyperlinks}). If you would like to add new link types, Org
13403 provides an interface for doing so. Let's look at an example file,
13404 @file{org-man.el}, that will add support for creating links like
13405 @samp{[[man:printf][The printf manpage]]} to show Unix manual pages inside
13409 ;;; org-man.el - Support for links to manpages in Org
13413 (org-add-link-type "man" 'org-man-open)
13414 (add-hook 'org-store-link-functions 'org-man-store-link)
13416 (defcustom org-man-command 'man
13417 "The Emacs command to be used to display a man page."
13419 :type '(choice (const man) (const woman)))
13421 (defun org-man-open (path)
13422 "Visit the manpage on PATH.
13423 PATH should be a topic that can be thrown at the man command."
13424 (funcall org-man-command path))
13426 (defun org-man-store-link ()
13427 "Store a link to a manpage."
13428 (when (memq major-mode '(Man-mode woman-mode))
13429 ;; This is a man page, we do make this link
13430 (let* ((page (org-man-get-page-name))
13431 (link (concat "man:" page))
13432 (description (format "Manpage for %s" page)))
13433 (org-store-link-props
13436 :description description))))
13438 (defun org-man-get-page-name ()
13439 "Extract the page name from the buffer name."
13440 ;; This works for both `Man-mode' and `woman-mode'.
13441 (if (string-match " \\(\\S-+\\)\\*" (buffer-name))
13442 (match-string 1 (buffer-name))
13443 (error "Cannot create link to this man page")))
13447 ;;; org-man.el ends here
13451 You would activate this new link type in @file{.emacs} with
13458 Let's go through the file and see what it does.
13461 It does @code{(require 'org)} to make sure that @file{org.el} has been
13464 The next line calls @code{org-add-link-type} to define a new link type
13465 with prefix @samp{man}. The call also contains the name of a function
13466 that will be called to follow such a link.
13468 @vindex org-store-link-functions
13469 The next line adds a function to @code{org-store-link-functions}, in
13470 order to allow the command @kbd{C-c l} to record a useful link in a
13471 buffer displaying a man page.
13474 The rest of the file defines the necessary variables and functions.
13475 First there is a customization variable that determines which Emacs
13476 command should be used to display man pages. There are two options,
13477 @code{man} and @code{woman}. Then the function to follow a link is
13478 defined. It gets the link path as an argument---in this case the link
13479 path is just a topic for the manual command. The function calls the
13480 value of @code{org-man-command} to display the man page.
13482 Finally the function @code{org-man-store-link} is defined. When you try
13483 to store a link with @kbd{C-c l}, this function will be called to
13484 try to make a link. The function must first decide if it is supposed to
13485 create the link for this buffer type; we do this by checking the value
13486 of the variable @code{major-mode}. If not, the function must exit and
13487 return the value @code{nil}. If yes, the link is created by getting the
13488 manual topic from the buffer name and prefixing it with the string
13489 @samp{man:}. Then it must call the command @code{org-store-link-props}
13490 and set the @code{:type} and @code{:link} properties. Optionally you
13491 can also set the @code{:description} property to provide a default for
13492 the link description when the link is later inserted into an Org
13493 buffer with @kbd{C-c C-l}.
13495 When is makes sense for your new link type, you may also define a function
13496 @code{org-PREFIX-complete-link} that implements special (e.g. completion)
13497 support for inserting such a link with @kbd{C-c C-l}. Such a function should
13498 not accept any arguments, and return the full link with prefix.
13500 @node Context-sensitive commands, Tables in arbitrary syntax, Adding hyperlink types, Hacking
13501 @section Context-sensitive commands
13502 @cindex context-sensitive commands, hooks
13503 @cindex add-ons, context-sensitive commands
13504 @vindex org-ctrl-c-ctrl-c-hook
13506 Org has several commands that act differently depending on context. The most
13507 important example it the @kbd{C-c C-c} (@pxref{The very busy C-c C-c key}).
13508 Also the @kbd{M-cursor} and @kbd{M-S-cursor} keys have this property.
13510 Add-ons can tap into this functionality by providing a function that detects
13511 special context for that add-on and executes functionality appropriate for
13512 the context. Here is an example from Dan Davison's @file{org-R.el} which
13513 allows you to evaluate commands based on the @file{R} programming language
13514 @footnote{@file{org-R.el} has been replaced by the org-mode functionality
13515 described in @ref{Working With Source Code} and is now obsolete.}. For this
13516 package, special contexts are lines that start with @code{#+R:} or
13520 (defun org-R-apply-maybe ()
13521 "Detect if this is context for org-R and execute R commands."
13522 (if (save-excursion
13523 (beginning-of-line 1)
13524 (looking-at "#\\+RR?:"))
13525 (progn (call-interactively 'org-R-apply)
13526 t) ;; to signal that we took action
13527 nil)) ;; to signal that we did not
13529 (add-hook 'org-ctrl-c-ctrl-c-hook 'org-R-apply-maybe)
13532 The function first checks if the cursor is in such a line. If that is the
13533 case, @code{org-R-apply} is called and the function returns @code{t} to
13534 signal that action was taken, and @kbd{C-c C-c} will stop looking for other
13535 contexts. If the function finds it should do nothing locally, it returns @code{nil} so that other, similar functions can have a try.
13538 @node Tables in arbitrary syntax, Dynamic blocks, Context-sensitive commands, Hacking
13539 @section Tables and lists in arbitrary syntax
13540 @cindex tables, in other modes
13541 @cindex lists, in other modes
13542 @cindex Orgtbl mode
13544 Since Orgtbl mode can be used as a minor mode in arbitrary buffers, a
13545 frequent feature request has been to make it work with native tables in
13546 specific languages, for example La@TeX{}. However, this is extremely
13547 hard to do in a general way, would lead to a customization nightmare,
13548 and would take away much of the simplicity of the Orgtbl-mode table
13551 This appendix describes a different approach. We keep the Orgtbl mode
13552 table in its native format (the @i{source table}), and use a custom
13553 function to @i{translate} the table to the correct syntax, and to
13554 @i{install} it in the right location (the @i{target table}). This puts
13555 the burden of writing conversion functions on the user, but it allows
13556 for a very flexible system.
13558 Bastien added the ability to do the same with lists, in Orgstruct mode. You
13559 can use Org's facilities to edit and structure lists by turning
13560 @code{orgstruct-mode} on, then locally exporting such lists in another format
13561 (HTML, La@TeX{} or Texinfo.)
13565 * Radio tables:: Sending and receiving radio tables
13566 * A LaTeX example:: Step by step, almost a tutorial
13567 * Translator functions:: Copy and modify
13568 * Radio lists:: Doing the same for lists
13571 @node Radio tables, A LaTeX example, Tables in arbitrary syntax, Tables in arbitrary syntax
13572 @subsection Radio tables
13573 @cindex radio tables
13575 To define the location of the target table, you first need to create two
13576 lines that are comments in the current mode, but contain magic words for
13577 Orgtbl mode to find. Orgtbl mode will insert the translated table
13578 between these lines, replacing whatever was there before. For example:
13581 /* BEGIN RECEIVE ORGTBL table_name */
13582 /* END RECEIVE ORGTBL table_name */
13586 Just above the source table, we put a special line that tells
13587 Orgtbl mode how to translate this table and where to install it. For
13591 #+ORGTBL: SEND table_name translation_function arguments....
13595 @code{table_name} is the reference name for the table that is also used
13596 in the receiver lines. @code{translation_function} is the Lisp function
13597 that does the translation. Furthermore, the line can contain a list of
13598 arguments (alternating key and value) at the end. The arguments will be
13599 passed as a property list to the translation function for
13600 interpretation. A few standard parameters are already recognized and
13601 acted upon before the translation function is called:
13605 Skip the first N lines of the table. Hlines do count as separate lines for
13608 @item :skipcols (n1 n2 ...)
13609 List of columns that should be skipped. If the table has a column with
13610 calculation marks, that column is automatically discarded as well.
13611 Please note that the translator function sees the table @emph{after} the
13612 removal of these columns, the function never knows that there have been
13613 additional columns.
13617 The one problem remaining is how to keep the source table in the buffer
13618 without disturbing the normal workings of the file, for example during
13619 compilation of a C file or processing of a La@TeX{} file. There are a
13620 number of different solutions:
13624 The table could be placed in a block comment if that is supported by the
13625 language. For example, in C mode you could wrap the table between
13626 @samp{/*} and @samp{*/} lines.
13628 Sometimes it is possible to put the table after some kind of @i{END}
13629 statement, for example @samp{\bye} in @TeX{} and @samp{\end@{document@}}
13632 You can just comment the table line-by-line whenever you want to process
13633 the file, and uncomment it whenever you need to edit the table. This
13634 only sounds tedious---the command @kbd{M-x orgtbl-toggle-comment}
13635 makes this comment-toggling very easy, in particular if you bind it to a
13639 @node A LaTeX example, Translator functions, Radio tables, Tables in arbitrary syntax
13640 @subsection A La@TeX{} example of radio tables
13641 @cindex La@TeX{}, and Orgtbl mode
13643 The best way to wrap the source table in La@TeX{} is to use the
13644 @code{comment} environment provided by @file{comment.sty}. It has to be
13645 activated by placing @code{\usepackage@{comment@}} into the document
13646 header. Orgtbl mode can insert a radio table skeleton@footnote{By
13647 default this works only for La@TeX{}, HTML, and Texinfo. Configure the
13648 variable @code{orgtbl-radio-tables} to install templates for other
13649 modes.} with the command @kbd{M-x orgtbl-insert-radio-table}. You will
13650 be prompted for a table name, let's say we use @samp{salesfigures}. You
13651 will then get the following template:
13653 @cindex #+ORGTBL, SEND
13655 % BEGIN RECEIVE ORGTBL salesfigures
13656 % END RECEIVE ORGTBL salesfigures
13658 #+ORGTBL: SEND salesfigures orgtbl-to-latex
13664 @vindex La@TeX{}-verbatim-environments
13665 The @code{#+ORGTBL: SEND} line tells Orgtbl mode to use the function
13666 @code{orgtbl-to-latex} to convert the table into La@TeX{} and to put it
13667 into the receiver location with name @code{salesfigures}. You may now
13668 fill in the table, feel free to use the spreadsheet features@footnote{If
13669 the @samp{#+TBLFM} line contains an odd number of dollar characters,
13670 this may cause problems with font-lock in La@TeX{} mode. As shown in the
13671 example you can fix this by adding an extra line inside the
13672 @code{comment} environment that is used to balance the dollar
13673 expressions. If you are using AUC@TeX{} with the font-latex library, a
13674 much better solution is to add the @code{comment} environment to the
13675 variable @code{LaTeX-verbatim-environments}.}:
13678 % BEGIN RECEIVE ORGTBL salesfigures
13679 % END RECEIVE ORGTBL salesfigures
13681 #+ORGTBL: SEND salesfigures orgtbl-to-latex
13682 | Month | Days | Nr sold | per day |
13683 |-------+------+---------+---------|
13684 | Jan | 23 | 55 | 2.4 |
13685 | Feb | 21 | 16 | 0.8 |
13686 | March | 22 | 278 | 12.6 |
13687 #+TBLFM: $4=$3/$2;%.1f
13688 % $ (optional extra dollar to keep font-lock happy, see footnote)
13693 When you are done, press @kbd{C-c C-c} in the table to get the converted
13694 table inserted between the two marker lines.
13696 Now let's assume you want to make the table header by hand, because you
13697 want to control how columns are aligned, etc@. In this case we make sure
13698 that the table translator skips the first 2 lines of the source
13699 table, and tell the command to work as a @i{splice}, i.e. to not produce
13700 header and footer commands of the target table:
13703 \begin@{tabular@}@{lrrr@}
13704 Month & \multicolumn@{1@}@{c@}@{Days@} & Nr.\ sold & per day\\
13705 % BEGIN RECEIVE ORGTBL salesfigures
13706 % END RECEIVE ORGTBL salesfigures
13710 #+ORGTBL: SEND salesfigures orgtbl-to-latex :splice t :skip 2
13711 | Month | Days | Nr sold | per day |
13712 |-------+------+---------+---------|
13713 | Jan | 23 | 55 | 2.4 |
13714 | Feb | 21 | 16 | 0.8 |
13715 | March | 22 | 278 | 12.6 |
13716 #+TBLFM: $4=$3/$2;%.1f
13720 The La@TeX{} translator function @code{orgtbl-to-latex} is already part of
13721 Orgtbl mode. It uses a @code{tabular} environment to typeset the table
13722 and marks horizontal lines with @code{\hline}. Furthermore, it
13723 interprets the following parameters (see also @pxref{Translator functions}):
13726 @item :splice nil/t
13727 When set to t, return only table body lines, don't wrap them into a
13728 tabular environment. Default is nil.
13731 A format to be used to wrap each field, it should contain @code{%s} for the
13732 original field value. For example, to wrap each field value in dollars,
13733 you could use @code{:fmt "$%s$"}. This may also be a property list with
13734 column numbers and formats. for example @code{:fmt (2 "$%s$" 4 "%s\\%%")}.
13735 A function of one argument can be used in place of the strings; the
13736 function must return a formatted string.
13739 Use this format to print numbers with exponentials. The format should
13740 have @code{%s} twice for inserting mantissa and exponent, for example
13741 @code{"%s\\times10^@{%s@}"}. The default is @code{"%s\\,(%s)"}. This
13742 may also be a property list with column numbers and formats, for example
13743 @code{:efmt (2 "$%s\\times10^@{%s@}$" 4 "$%s\\cdot10^@{%s@}$")}. After
13744 @code{efmt} has been applied to a value, @code{fmt} will also be
13745 applied. Similar to @code{fmt}, functions of two arguments can be
13746 supplied instead of strings.
13749 @node Translator functions, Radio lists, A LaTeX example, Tables in arbitrary syntax
13750 @subsection Translator functions
13751 @cindex HTML, and Orgtbl mode
13752 @cindex translator function
13754 Orgtbl mode has several translator functions built-in: @code{orgtbl-to-csv}
13755 (comma-separated values), @code{orgtbl-to-tsv} (TAB-separated values)
13756 @code{orgtbl-to-latex}, @code{orgtbl-to-html}, and @code{orgtbl-to-texinfo}.
13757 Except for @code{orgtbl-to-html}@footnote{The HTML translator uses the same
13758 code that produces tables during HTML export.}, these all use a generic
13759 translator, @code{orgtbl-to-generic}. For example, @code{orgtbl-to-latex}
13760 itself is a very short function that computes the column definitions for the
13761 @code{tabular} environment, defines a few field and line separators and then
13762 hands processing over to the generic translator. Here is the entire code:
13766 (defun orgtbl-to-latex (table params)
13767 "Convert the Orgtbl mode TABLE to LaTeX."
13768 (let* ((alignment (mapconcat (lambda (x) (if x "r" "l"))
13769 org-table-last-alignment ""))
13772 :tstart (concat "\\begin@{tabular@}@{" alignment "@}")
13773 :tend "\\end@{tabular@}"
13774 :lstart "" :lend " \\\\" :sep " & "
13775 :efmt "%s\\,(%s)" :hline "\\hline")))
13776 (orgtbl-to-generic table (org-combine-plists params2 params))))
13780 As you can see, the properties passed into the function (variable
13781 @var{PARAMS}) are combined with the ones newly defined in the function
13782 (variable @var{PARAMS2}). The ones passed into the function (i.e. the
13783 ones set by the @samp{ORGTBL SEND} line) take precedence. So if you
13784 would like to use the La@TeX{} translator, but wanted the line endings to
13785 be @samp{\\[2mm]} instead of the default @samp{\\}, you could just
13786 overrule the default with
13789 #+ORGTBL: SEND test orgtbl-to-latex :lend " \\\\[2mm]"
13792 For a new language, you can either write your own converter function in
13793 analogy with the La@TeX{} translator, or you can use the generic function
13794 directly. For example, if you have a language where a table is started
13795 with @samp{!BTBL!}, ended with @samp{!ETBL!}, and where table lines are
13796 started with @samp{!BL!}, ended with @samp{!EL!}, and where the field
13797 separator is a TAB, you could call the generic translator like this (on
13801 #+ORGTBL: SEND test orgtbl-to-generic :tstart "!BTBL!" :tend "!ETBL!"
13802 :lstart "!BL! " :lend " !EL!" :sep "\t"
13806 Please check the documentation string of the function
13807 @code{orgtbl-to-generic} for a full list of parameters understood by
13808 that function, and remember that you can pass each of them into
13809 @code{orgtbl-to-latex}, @code{orgtbl-to-texinfo}, and any other function
13810 using the generic function.
13812 Of course you can also write a completely new function doing complicated
13813 things the generic translator cannot do. A translator function takes
13814 two arguments. The first argument is the table, a list of lines, each
13815 line either the symbol @code{hline} or a list of fields. The second
13816 argument is the property list containing all parameters specified in the
13817 @samp{#+ORGTBL: SEND} line. The function must return a single string
13818 containing the formatted table. If you write a generally useful
13819 translator, please post it on @email{emacs-orgmode@@gnu.org} so that
13820 others can benefit from your work.
13822 @node Radio lists, , Translator functions, Tables in arbitrary syntax
13823 @subsection Radio lists
13824 @cindex radio lists
13825 @cindex org-list-insert-radio-list
13827 Sending and receiving radio lists works exactly the same way than sending and
13828 receiving radio tables (@pxref{Radio tables}). As for radio tables, you can
13829 insert radio lists templates in HTML, La@TeX{} and Texinfo modes by calling
13830 @code{org-list-insert-radio-list}.
13832 Here are the differences with radio tables:
13836 Orgstruct mode must be active.
13838 Use the @code{ORGLST} keyword instead of @code{ORGTBL}.
13840 The available translation functions for radio lists don't take
13843 @kbd{C-c C-c} will work when pressed on the first item of the list.
13846 Here is a La@TeX{} example. Let's say that you have this in your
13851 % BEGIN RECEIVE ORGLST to-buy
13852 % END RECEIVE ORGLST to-buy
13854 #+ORGLST: SEND to-buy org-list-to-latex
13863 Pressing `C-c C-c' on @code{a new house} and will insert the converted
13864 La@TeX{} list between the two marker lines.
13866 @node Dynamic blocks, Special agenda views, Tables in arbitrary syntax, Hacking
13867 @section Dynamic blocks
13868 @cindex dynamic blocks
13870 Org documents can contain @emph{dynamic blocks}. These are
13871 specially marked regions that are updated by some user-written function.
13872 A good example for such a block is the clock table inserted by the
13873 command @kbd{C-c C-x C-r} (@pxref{Clocking work time}).
13875 Dynamic block are enclosed by a BEGIN-END structure that assigns a name
13876 to the block and can also specify parameters for the function producing
13877 the content of the block.
13879 #+BEGIN:dynamic block
13881 #+BEGIN: myblock :parameter1 value1 :parameter2 value2 ...
13886 Dynamic blocks are updated with the following commands
13889 @orgcmd{C-c C-x C-u,org-dblock-update}
13890 Update dynamic block at point.
13891 @orgkey{C-u C-c C-x C-u}
13892 Update all dynamic blocks in the current file.
13895 Updating a dynamic block means to remove all the text between BEGIN and
13896 END, parse the BEGIN line for parameters and then call the specific
13897 writer function for this block to insert the new content. If you want
13898 to use the original content in the writer function, you can use the
13899 extra parameter @code{:content}.
13901 For a block with name @code{myblock}, the writer function is
13902 @code{org-dblock-write:myblock} with as only parameter a property list
13903 with the parameters given in the begin line. Here is a trivial example
13904 of a block that keeps track of when the block update function was last
13908 #+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M"
13914 The corresponding block writer function could look like this:
13917 (defun org-dblock-write:block-update-time (params)
13918 (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
13919 (insert "Last block update at: "
13920 (format-time-string fmt (current-time)))))
13923 If you want to make sure that all dynamic blocks are always up-to-date,
13924 you could add the function @code{org-update-all-dblocks} to a hook, for
13925 example @code{before-save-hook}. @code{org-update-all-dblocks} is
13926 written in a way such that it does nothing in buffers that are not in
13929 @node Special agenda views, Extracting agenda information, Dynamic blocks, Hacking
13930 @section Special agenda views
13931 @cindex agenda views, user-defined
13933 Org provides a special hook that can be used to narrow down the selection
13934 made by these agenda views: @code{todo}, @code{alltodo}, @code{tags}, @code{tags-todo},
13935 @code{tags-tree}. You may specify a function that is used at each match to verify
13936 if the match should indeed be part of the agenda view, and if not, how
13937 much should be skipped.
13939 Let's say you want to produce a list of projects that contain a WAITING
13940 tag anywhere in the project tree. Let's further assume that you have
13941 marked all tree headings that define a project with the TODO keyword
13942 PROJECT. In this case you would run a TODO search for the keyword
13943 PROJECT, but skip the match unless there is a WAITING tag anywhere in
13944 the subtree belonging to the project line.
13946 To achieve this, you must write a function that searches the subtree for
13947 the tag. If the tag is found, the function must return @code{nil} to
13948 indicate that this match should not be skipped. If there is no such
13949 tag, return the location of the end of the subtree, to indicate that
13950 search should continue from there.
13953 (defun my-skip-unless-waiting ()
13954 "Skip trees that are not waiting"
13955 (let ((subtree-end (save-excursion (org-end-of-subtree t))))
13956 (if (re-search-forward ":waiting:" subtree-end t)
13957 nil ; tag found, do not skip
13958 subtree-end))) ; tag not found, continue after end of subtree
13961 Now you may use this function in an agenda custom command, for example
13965 (org-add-agenda-custom-command
13966 '("b" todo "PROJECT"
13967 ((org-agenda-skip-function 'my-skip-unless-waiting)
13968 (org-agenda-overriding-header "Projects waiting for something: "))))
13971 @vindex org-agenda-overriding-header
13972 Note that this also binds @code{org-agenda-overriding-header} to get a
13973 meaningful header in the agenda view.
13975 @vindex org-odd-levels-only
13976 @vindex org-agenda-skip-function
13977 A general way to create custom searches is to base them on a search for
13978 entries with a certain level limit. If you want to study all entries with
13979 your custom search function, simply do a search for
13980 @samp{LEVEL>0}@footnote{Note that, when using @code{org-odd-levels-only}, a
13981 level number corresponds to order in the hierarchy, not to the number of
13982 stars.}, and then use @code{org-agenda-skip-function} to select the entries
13983 you really want to have.
13985 You may also put a Lisp form into @code{org-agenda-skip-function}. In
13986 particular, you may use the functions @code{org-agenda-skip-entry-if}
13987 and @code{org-agenda-skip-subtree-if} in this form, for example:
13990 @item '(org-agenda-skip-entry-if 'scheduled)
13991 Skip current entry if it has been scheduled.
13992 @item '(org-agenda-skip-entry-if 'notscheduled)
13993 Skip current entry if it has not been scheduled.
13994 @item '(org-agenda-skip-entry-if 'deadline)
13995 Skip current entry if it has a deadline.
13996 @item '(org-agenda-skip-entry-if 'scheduled 'deadline)
13997 Skip current entry if it has a deadline, or if it is scheduled.
13998 @item '(org-agenda-skip-entry-if 'todo '("TODO" "WAITING"))
13999 Skip current entry if the TODO keyword is TODO or WAITING.
14000 @item '(org-agenda-skip-entry-if 'todo 'done)
14001 Skip current entry if the TODO keyword marks a DONE state.
14002 @item '(org-agenda-skip-entry-if 'timestamp)
14003 Skip current entry if it has any timestamp, may also be deadline or scheduled.
14004 @item '(org-agenda-skip-entry 'regexp "regular expression")
14005 Skip current entry if the regular expression matches in the entry.
14006 @item '(org-agenda-skip-entry 'notregexp "regular expression")
14007 Skip current entry unless the regular expression matches.
14008 @item '(org-agenda-skip-subtree-if 'regexp "regular expression")
14009 Same as above, but check and skip the entire subtree.
14012 Therefore we could also have written the search for WAITING projects
14013 like this, even without defining a special function:
14016 (org-add-agenda-custom-command
14017 '("b" todo "PROJECT"
14018 ((org-agenda-skip-function '(org-agenda-skip-subtree-if
14019 'regexp ":waiting:"))
14020 (org-agenda-overriding-header "Projects waiting for something: "))))
14023 @node Extracting agenda information, Using the property API, Special agenda views, Hacking
14024 @section Extracting agenda information
14025 @cindex agenda, pipe
14026 @cindex Scripts, for agenda processing
14028 @vindex org-agenda-custom-commands
14029 Org provides commands to access agenda information for the command
14030 line in Emacs batch mode. This extracted information can be sent
14031 directly to a printer, or it can be read by a program that does further
14032 processing of the data. The first of these commands is the function
14033 @code{org-batch-agenda}, that produces an agenda view and sends it as
14034 ASCII text to STDOUT. The command takes a single string as parameter.
14035 If the string has length 1, it is used as a key to one of the commands
14036 you have configured in @code{org-agenda-custom-commands}, basically any
14037 key you can use after @kbd{C-c a}. For example, to directly print the
14038 current TODO list, you could use
14041 emacs -batch -l ~/.emacs -eval '(org-batch-agenda "t")' | lpr
14044 If the parameter is a string with 2 or more characters, it is used as a
14045 tags/TODO match string. For example, to print your local shopping list
14046 (all items with the tag @samp{shop}, but excluding the tag
14047 @samp{NewYork}), you could use
14050 emacs -batch -l ~/.emacs \
14051 -eval '(org-batch-agenda "+shop-NewYork")' | lpr
14055 You may also modify parameters on the fly like this:
14058 emacs -batch -l ~/.emacs \
14059 -eval '(org-batch-agenda "a" \
14060 org-agenda-ndays 30 \
14061 org-agenda-include-diary nil \
14062 org-agenda-files (quote ("~/org/project.org")))' \
14067 which will produce a 30-day agenda, fully restricted to the Org file
14068 @file{~/org/projects.org}, not even including the diary.
14070 If you want to process the agenda data in more sophisticated ways, you
14071 can use the command @code{org-batch-agenda-csv} to get a comma-separated
14072 list of values for each agenda item. Each line in the output will
14073 contain a number of fields separated by commas. The fields in a line
14077 category @r{The category of the item}
14078 head @r{The headline, without TODO keyword, TAGS and PRIORITY}
14079 type @r{The type of the agenda entry, can be}
14080 todo @r{selected in TODO match}
14081 tagsmatch @r{selected in tags match}
14082 diary @r{imported from diary}
14083 deadline @r{a deadline}
14084 scheduled @r{scheduled}
14085 timestamp @r{appointment, selected by timestamp}
14086 closed @r{entry was closed on date}
14087 upcoming-deadline @r{warning about nearing deadline}
14088 past-scheduled @r{forwarded scheduled item}
14089 block @r{entry has date block including date}
14090 todo @r{The TODO keyword, if any}
14091 tags @r{All tags including inherited ones, separated by colons}
14092 date @r{The relevant date, like 2007-2-14}
14093 time @r{The time, like 15:00-16:50}
14094 extra @r{String with extra planning info}
14095 priority-l @r{The priority letter if any was given}
14096 priority-n @r{The computed numerical priority}
14100 Time and date will only be given if a timestamp (or deadline/scheduled)
14101 led to the selection of the item.
14103 A CSV list like this is very easy to use in a post-processing script.
14104 For example, here is a Perl program that gets the TODO list from
14105 Emacs/Org and prints all the items, preceded by a checkbox:
14110 # define the Emacs command to run
14111 $cmd = "emacs -batch -l ~/.emacs -eval '(org-batch-agenda-csv \"t\")'";
14113 # run it and capture the output
14114 $agenda = qx@{$cmd 2>/dev/null@};
14116 # loop over all lines
14117 foreach $line (split(/\n/,$agenda)) @{
14118 # get the individual values
14119 ($category,$head,$type,$todo,$tags,$date,$time,$extra,
14120 $priority_l,$priority_n) = split(/,/,$line);
14121 # process and print
14122 print "[ ] $head\n";
14126 @node Using the property API, Using the mapping API, Extracting agenda information, Hacking
14127 @section Using the property API
14128 @cindex API, for properties
14129 @cindex properties, API
14131 Here is a description of the functions that can be used to work with
14134 @defun org-entry-properties &optional pom which
14135 Get all properties of the entry at point-or-marker POM.@*
14136 This includes the TODO keyword, the tags, time strings for deadline,
14137 scheduled, and clocking, and any additional properties defined in the
14138 entry. The return value is an alist, keys may occur multiple times
14139 if the property key was used several times.@*
14140 POM may also be nil, in which case the current entry is used.
14141 If WHICH is nil or `all', get all properties. If WHICH is
14142 `special' or `standard', only get that subclass.
14144 @vindex org-use-property-inheritance
14145 @defun org-entry-get pom property &optional inherit
14146 Get value of PROPERTY for entry at point-or-marker POM. By default,
14147 this only looks at properties defined locally in the entry. If INHERIT
14148 is non-nil and the entry does not have the property, then also check
14149 higher levels of the hierarchy. If INHERIT is the symbol
14150 @code{selective}, use inheritance if and only if the setting of
14151 @code{org-use-property-inheritance} selects PROPERTY for inheritance.
14154 @defun org-entry-delete pom property
14155 Delete the property PROPERTY from entry at point-or-marker POM.
14158 @defun org-entry-put pom property value
14159 Set PROPERTY to VALUE for entry at point-or-marker POM.
14162 @defun org-buffer-property-keys &optional include-specials
14163 Get all property keys in the current buffer.
14166 @defun org-insert-property-drawer
14167 Insert a property drawer at point.
14170 @defun org-entry-put-multivalued-property pom property &rest values
14171 Set PROPERTY at point-or-marker POM to VALUES. VALUES should be a list of
14172 strings. They will be concatenated, with spaces as separators.
14175 @defun org-entry-get-multivalued-property pom property
14176 Treat the value of the property PROPERTY as a whitespace-separated list of
14177 values and return the values as a list of strings.
14180 @defun org-entry-add-to-multivalued-property pom property value
14181 Treat the value of the property PROPERTY as a whitespace-separated list of
14182 values and make sure that VALUE is in this list.
14185 @defun org-entry-remove-from-multivalued-property pom property value
14186 Treat the value of the property PROPERTY as a whitespace-separated list of
14187 values and make sure that VALUE is @emph{not} in this list.
14190 @defun org-entry-member-in-multivalued-property pom property value
14191 Treat the value of the property PROPERTY as a whitespace-separated list of
14192 values and check if VALUE is in this list.
14195 @defopt org-property-allowed-value-functions
14196 Hook for functions supplying allowed values for specific.
14197 The functions must take a single argument, the name of the property, and
14198 return a flat list of allowed values. If @samp{:ETC} is one of
14199 the values, use the values as completion help, but allow also other values
14200 to be entered. The functions must return @code{nil} if they are not
14201 responsible for this property.
14204 @node Using the mapping API, , Using the property API, Hacking
14205 @section Using the mapping API
14206 @cindex API, for mapping
14207 @cindex mapping entries, API
14209 Org has sophisticated mapping capabilities to find all entries satisfying
14210 certain criteria. Internally, this functionality is used to produce agenda
14211 views, but there is also an API that can be used to execute arbitrary
14212 functions for each or selected entries. The main entry point for this API
14215 @defun org-map-entries func &optional match scope &rest skip
14216 Call FUNC at each headline selected by MATCH in SCOPE.
14218 FUNC is a function or a Lisp form. The function will be called without
14219 arguments, with the cursor positioned at the beginning of the headline.
14220 The return values of all calls to the function will be collected and
14221 returned as a list.
14223 The call to FUNC will be wrapped into a save-excursion form, so FUNC
14224 does not need to preserve point. After evaluation, the cursor will be
14225 moved to the end of the line (presumably of the headline of the
14226 processed entry) and search continues from there. Under some
14227 circumstances, this may not produce the wanted results. For example,
14228 if you have removed (e.g. archived) the current (sub)tree it could
14229 mean that the next entry will be skipped entirely. In such cases, you
14230 can specify the position from where search should continue by making
14231 FUNC set the variable `org-map-continue-from' to the desired buffer
14234 MATCH is a tags/property/todo match as it is used in the agenda match view.
14235 Only headlines that are matched by this query will be considered during
14236 the iteration. When MATCH is nil or t, all headlines will be
14237 visited by the iteration.
14239 SCOPE determines the scope of this command. It can be any of:
14242 nil @r{the current buffer, respecting the restriction if any}
14243 tree @r{the subtree started with the entry at point}
14244 file @r{the current buffer, without restriction}
14246 @r{the current buffer, and any archives associated with it}
14247 agenda @r{all agenda files}
14248 agenda-with-archives
14249 @r{all agenda files with any archive files associated with them}
14251 @r{if this is a list, all files in the list will be scanned}
14254 The remaining args are treated as settings for the skipping facilities of
14255 the scanner. The following items can be given here:
14257 @vindex org-agenda-skip-function
14259 archive @r{skip trees with the archive tag}
14260 comment @r{skip trees with the COMMENT keyword}
14261 function or Lisp form
14262 @r{will be used as value for @code{org-agenda-skip-function},}
14263 @r{so whenever the function returns t, FUNC}
14264 @r{will not be called for that entry and search will}
14265 @r{continue from the point where the function leaves it}
14269 The function given to that mapping routine can really do anything you like.
14270 It can use the property API (@pxref{Using the property API}) to gather more
14271 information about the entry, or in order to change metadata in the entry.
14272 Here are a couple of functions that might be handy:
14274 @defun org-todo &optional arg
14275 Change the TODO state of the entry, see the docstring of the functions for
14276 the many possible values for the argument ARG.
14279 @defun org-priority &optional action
14280 Change the priority of the entry, see the docstring of this function for the
14281 possible values for ACTION.
14284 @defun org-toggle-tag tag &optional onoff
14285 Toggle the tag TAG in the current entry. Setting ONOFF to either @code{on}
14286 or @code{off} will not toggle tag, but ensure that it is either on or off.
14290 Promote the current entry.
14294 Demote the current entry.
14297 Here is a simple example that will turn all entries in the current file with
14298 a tag @code{TOMORROW} into TODO entries with the keyword @code{UPCOMING}.
14299 Entries in comment trees and in archive trees will be ignored.
14303 '(org-todo "UPCOMING")
14304 "+TOMORROW" 'file 'archive 'comment)
14307 The following example counts the number of entries with TODO keyword
14308 @code{WAITING}, in all agenda files.
14311 (length (org-map-entries t "/+WAITING" 'agenda))
14314 @node MobileOrg, History and Acknowledgments, Hacking, Top
14315 @appendix MobileOrg
14319 @uref{http://mobileorg.ncogni.to/, MobileOrg} is an application for the
14320 @i{iPhone/iPod Touch} series of devices, developed by Richard Moreland.
14321 @i{MobileOrg} offers offline viewing and capture support for an Org-mode
14322 system rooted on a ``real'' computer. It does also allow you to record
14323 changes to existing entries. Android users should check out
14324 @uref{http://wiki.github.com/matburt/mobileorg-android/, MobileOrg Android}
14327 This appendix describes the support Org has for creating agenda views in a
14328 format that can be displayed by @i{MobileOrg}, and for integrating notes
14329 captured and changes made by @i{MobileOrg} into the main system.
14331 For changing tags and TODO states in MobileOrg, you should have set up the
14332 customization variables @code{org-todo-keywords} and @code{org-tags-alist} to
14333 cover all important tags and TODO keywords, even if individual files use only
14334 part of these. MobileOrg will also offer you states and tags set up with
14335 in-buffer settings, but it will understand the logistics of TODO state
14336 @i{sets} (@pxref{Per-file keywords}) and @i{mutually exclusive} tags
14337 (@pxref{Setting tags}) only for those set in these variables.
14340 * Setting up the staging area:: Where to interact with the mobile device
14341 * Pushing to MobileOrg:: Uploading Org files and agendas
14342 * Pulling from MobileOrg:: Integrating captured and flagged items
14345 @node Setting up the staging area, Pushing to MobileOrg, MobileOrg, MobileOrg
14346 @section Setting up the staging area
14348 MobileOrg needs to interact with Emacs through directory on a server. If you
14349 are using a public server, you should consider to encrypt the files that are
14350 uploaded to the server. This can be done with Org-mode 7.02 and with
14351 @i{MobileOrg 1.5} (iPhone version), and you need an @file{openssl}
14352 installation on your system. To turn on encryption, set a password in
14353 @i{MobileOrg} and, on the Emacs side, configure the variable
14354 @code{org-mobile-use-encryption}@footnote{If you can safely store the
14355 password in your Emacs setup, you might also want to configure
14356 @code{org-mobile-encryption-password}. Please read the docstring of that
14357 variable. Note that encryption will apply only to the contents of the
14358 @file{.org} files. The file names themselves will remain visible.}.
14360 The easiest way to create that directory is to use a free
14361 @uref{http://dropbox.com,Dropbox.com} account@footnote{If you cannot use
14362 Dropbox, or if your version of MobileOrg does not support it, you can use a
14363 webdav server. For more information, check out the the documentation of
14364 MobileOrg and also this
14365 @uref{http://orgmode.org/worg/org-faq.php#mobileorg_webdav, FAQ entry}.}.
14366 When MobileOrg first connects to your Dropbox, it will create a directory
14367 @i{MobileOrg} inside the Dropbox. After the directory has been created, tell
14371 (setq org-mobile-directory "~/Dropbox/MobileOrg")
14374 Org-mode has commands to put files for @i{MobileOrg} into that directory,
14375 and to read captured notes from there.
14377 @node Pushing to MobileOrg, Pulling from MobileOrg, Setting up the staging area, MobileOrg
14378 @section Pushing to MobileOrg
14380 This operation copies all files currently listed in @code{org-mobile-files}
14381 to the directory @code{org-mobile-directory}. By default this list contains
14382 all agenda files (as listed in @code{org-agenda-files}), but additional files
14383 can be included by customizing @code{org-mobiles-files}. File names will be
14384 staged with path relative to @code{org-directory}, so all files should be
14385 inside this directory. The push operation also creates a special Org file
14386 @file{agendas.org} with all custom agenda view defined by the
14387 user@footnote{While creating the agendas, Org-mode will force ID properties
14388 on all referenced entries, so that these entries can be uniquely identified
14389 if @i{MobileOrg} flags them for further action. If you do not want to get
14390 these properties in so many entries, you can set the variable
14391 @code{org-mobile-force-id-on-agenda-items} to @code{nil}. Org mode will then
14392 rely on outline paths, in the hope that these will be unique enough.}.
14393 Finally, Org writes the file @file{index.org}, containing links to all other
14394 files. @i{MobileOrg} first reads this file from the server, and then
14395 downloads all agendas and Org files listed in it. To speed up the download,
14396 MobileOrg will only read files whose checksums@footnote{stored automatically
14397 in the file @file{checksums.dat}} have changed.
14399 @node Pulling from MobileOrg, , Pushing to MobileOrg, MobileOrg
14400 @section Pulling from MobileOrg
14402 When @i{MobileOrg} synchronizes with the server, it not only pulls the Org
14403 files for viewing. It also appends captured entries and pointers to flagged
14404 and changed entries to the file @file{mobileorg.org} on the server. Org has
14405 a @emph{pull} operation that integrates this information into an inbox file
14406 and operates on the pointers to flagged entries. Here is how it works:
14410 Org moves all entries found in
14411 @file{mobileorg.org}@footnote{@file{mobileorg.org} will be empty after this
14412 operation.} and appends them to the file pointed to by the variable
14413 @code{org-mobile-inbox-for-pull}. Each captured entry and each editing event
14414 will be a top-level entry in the inbox file.
14416 After moving the entries, Org will attempt to implement the changes made in
14417 @i{MobileOrg}. Some changes are applied directly and without user
14418 interaction. Examples are all changes to tags, TODO state, headline and body
14419 text that can be cleanly applied. Entries that have been flagged for further
14420 action will receive a tag @code{:FLAGGED:}, so that they can be easily found
14421 again. When there is a problem finding an entry or applying the change, the
14422 pointer entry will remain in the inbox and will be marked with an error
14423 message. You need to later resolve these issues by hand.
14425 Org will then generate an agenda view with all flagged entries. The user
14426 should then go through these entries and do whatever actions are necessary.
14427 If a note has been stored while flagging an entry in @i{MobileOrg}, that note
14428 will be displayed in the echo area when the cursor is on the corresponding
14433 Pressing @kbd{?} in that special agenda will display the full flagging note in
14434 another window and also push it onto the kill ring. So you could use @kbd{?
14435 z C-y C-c C-c} to store that flagging note as a normal note in the entry.
14436 Pressing @kbd{?} twice in succession will offer to remove the
14437 @code{:FLAGGED:} tag along with the recorded flagging note (which is stored
14438 in a property). In this way you indicate, that the intended processing for
14439 this flagged entry is finished.
14444 If you are not able to process all flagged entries directly, you can always
14445 return to this agenda view@footnote{Note, however, that there is a subtle
14446 difference. The view created automatically by @kbd{M-x org-mobile-pull
14447 @key{RET}} is guaranteed to search all files that have been addressed by the
14448 last pull. This might include a file that is not currently in your list of
14449 agenda files. If you later use @kbd{C-c a ?} to regenerate the view, only
14450 the current agenda files will be searched.} using @kbd{C-c a ?}.
14452 @node History and Acknowledgments, Main Index, MobileOrg, Top
14453 @appendix History and acknowledgments
14454 @cindex acknowledgments
14458 Org was born in 2003, out of frustration over the user interface of the Emacs
14459 Outline mode. I was trying to organize my notes and projects, and using
14460 Emacs seemed to be the natural way to go. However, having to remember eleven
14461 different commands with two or three keys per command, only to hide and show
14462 parts of the outline tree, that seemed entirely unacceptable to me. Also,
14463 when using outlines to take notes, I constantly wanted to restructure the
14464 tree, organizing it parallel to my thoughts and plans. @emph{Visibility
14465 cycling} and @emph{structure editing} were originally implemented in the
14466 package @file{outline-magic.el}, but quickly moved to the more general
14467 @file{org.el}. As this environment became comfortable for project planning,
14468 the next step was adding @emph{TODO entries}, basic @emph{timestamps}, and
14469 @emph{table support}. These areas highlighted the two main goals that Org
14470 still has today: to be a new, outline-based, plain text mode with innovative
14471 and intuitive editing features, and to incorporate project planning
14472 functionality directly into a notes file.
14474 Since the first release, literally thousands of emails to me or to
14475 @email{emacs-orgmode@@gnu.org} have provided a constant stream of bug
14476 reports, feedback, new ideas, and sometimes patches and add-on code.
14477 Many thanks to everyone who has helped to improve this package. I am
14478 trying to keep here a list of the people who had significant influence
14479 in shaping one or more aspects of Org. The list may not be
14480 complete, if I have forgotten someone, please accept my apologies and
14483 Before I get to this list, a few special mentions are in order:
14486 @item Bastien Guerry
14487 Bastien has written a large number of extensions to Org (most of them
14488 integrated into the core by now), including the LaTeX exporter and the plain
14489 list parser. His support during the early days, when he basically acted as
14490 co-maintainer, was central to the success of this project. Bastien also
14491 invented Worg, helped establishing the Web presence of Org, and sponsors
14492 hosting costs for the orgmode.org website.
14493 @item Eric Schulte and Dan Davison
14494 Eric and Dan are jointly responsible for the Org-babel system, which turns
14495 Org into a multi-language environment for evaluating code and doing literate
14496 programming and reproducible research.
14498 John has also contributed a number of great ideas and patches
14499 directly to Org, including the attachment system (@file{org-attach.el}),
14500 integration with Apple Mail (@file{org-mac-message.el}), hierarchical
14501 dependencies of TODO items, habit tracking (@file{org-habits.el}), and
14502 encryption (@file{org-crypt.el}). Also, the capture system is really an
14503 extended copy of his great @file{remember.el}.
14504 @item Sebastian Rose
14505 Without Sebastian, the HTML/XHTML publishing of Org would be the pitiful work
14506 of an ignorant amateur. Sebastian has pushed this part of Org onto a much
14507 higher level. He also wrote @file{org-info.js}, a Java script for displaying
14508 webpages derived from Org using an Info-like or a folding interface with
14509 single-key navigation.
14512 @noindent OK, now to the full list of contributions! Again, please let me
14513 know what I am missing here!
14518 @i{Russel Adams} came up with the idea for drawers.
14520 @i{Thomas Baumann} wrote @file{org-bbdb.el} and @file{org-mhe.el}.
14522 @i{Christophe Bataillon} created the great unicorn logo that we use on the
14525 @i{Alex Bochannek} provided a patch for rounding timestamps.
14527 @i{Jan Böcker} wrote @file{org-docview.el}.
14529 @i{Brad Bozarth} showed how to pull RSS feed data into Org-mode files.
14531 @i{Tom Breton} wrote @file{org-choose.el}.
14533 @i{Charles Cave}'s suggestion sparked the implementation of templates
14534 for Remember, which are now templates for capture.
14536 @i{Pavel Chalmoviansky} influenced the agenda treatment of items with
14539 @i{Gregory Chernov} patched support for Lisp forms into table
14540 calculations and improved XEmacs compatibility, in particular by porting
14541 @file{nouline.el} to XEmacs.
14543 @i{Sacha Chua} suggested copying some linking code from Planner.
14545 @i{Baoqiu Cui} contributed the DocBook exporter.
14547 @i{Eddward DeVilla} proposed and tested checkbox statistics. He also
14548 came up with the idea of properties, and that there should be an API for
14551 @i{Nick Dokos} tracked down several nasty bugs.
14553 @i{Kees Dullemond} used to edit projects lists directly in HTML and so
14554 inspired some of the early development, including HTML export. He also
14555 asked for a way to narrow wide table columns.
14557 @i{Thomas S. Dye} contributed documentation on Worg and helped integrating
14558 the Org-Babel documentation into the manual.
14560 @i{Christian Egli} converted the documentation into Texinfo format,
14561 patched CSS formatting into the HTML exporter, and inspired the agenda.
14563 @i{David Emery} provided a patch for custom CSS support in exported
14566 @i{Nic Ferrier} contributed mailcap and XOXO support.
14568 @i{Miguel A. Figueroa-Villanueva} implemented hierarchical checkboxes.
14570 @i{John Foerch} figured out how to make incremental search show context
14571 around a match in a hidden outline tree.
14573 @i{Raimar Finken} wrote @file{org-git-line.el}.
14575 @i{Mikael Fornius} works as a mailing list moderator.
14577 @i{Austin Frank} works as a mailing list moderator.
14579 @i{Niels Giesen} had the idea to automatically archive DONE trees.
14581 @i{Nicolas Goaziou} rewrote much of the plain list code.
14583 @i{Kai Grossjohann} pointed out key-binding conflicts with other packages.
14585 @i{Bernt Hansen} has driven much of the support for auto-repeating tasks,
14586 task state change logging, and the clocktable. His clear explanations have
14587 been critical when we started to adopt the Git version control system.
14589 @i{Manuel Hermenegildo} has contributed various ideas, small fixes and
14592 @i{Phil Jackson} wrote @file{org-irc.el}.
14594 @i{Scott Jaderholm} proposed footnotes, control over whitespace between
14595 folded entries, and column view for properties.
14597 @i{Matt Jones} wrote @i{MobileOrg Android}.
14599 @i{Tokuya Kameshima} wrote @file{org-wl.el} and @file{org-mew.el}.
14601 @i{Shidai Liu} ("Leo") asked for embedded La@TeX{} and tested it. He also
14602 provided frequent feedback and some patches.
14604 @i{Matt Lundin} has proposed last-row references for table formulas and named
14605 invisible anchors. He has also worked a lot on the FAQ.
14607 @i{David Maus} wrote @file{org-atom.el}, maintains the issues file for Org,
14608 and is a prolific contributor on the mailing list with competent replies,
14609 small fixes and patches.
14611 @i{Jason F. McBrayer} suggested agenda export to CSV format.
14613 @i{Max Mikhanosha} came up with the idea of refiling.
14615 @i{Dmitri Minaev} sent a patch to set priority limits on a per-file
14618 @i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
14621 @i{Richard Moreland} wrote @i{MobileOrg} for the iPhone.
14623 @i{Rick Moynihan} proposed allowing multiple TODO sequences in a file
14624 and being able to quickly restrict the agenda to a subtree.
14626 @i{Todd Neal} provided patches for links to Info files and Elisp forms.
14628 @i{Greg Newman} refreshed the unicorn logo into its current form.
14630 @i{Tim O'Callaghan} suggested in-file links, search options for general
14631 file links, and TAGS.
14633 @i{Osamu Okano} wrote @file{orgcard2ref.pl}, a perl program to create a text
14634 version of the reference card.
14636 @i{Takeshi Okano} translated the manual and David O'Toole's tutorial
14639 @i{Oliver Oppitz} suggested multi-state TODO items.
14641 @i{Scott Otterson} sparked the introduction of descriptive text for
14642 links, among other things.
14644 @i{Pete Phillips} helped during the development of the TAGS feature, and
14645 provided frequent feedback.
14647 @i{Martin Pohlack} provided the code snippet to bundle character insertion
14648 into bundles of 20 for undo.
14650 @i{T.V. Raman} reported bugs and suggested improvements.
14652 @i{Matthias Rempe} (Oelde) provided ideas, Windows support, and quality
14655 @i{Paul Rivier} provided the basic implementation of named footnotes. He
14656 also acted as mailing list moderator for some time.
14658 @i{Kevin Rogers} contributed code to access VM files on remote hosts.
14660 @i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a
14661 conflict with @file{allout.el}.
14663 @i{Jason Riedy} generalized the send-receive mechanism for Orgtbl tables with
14666 @i{Philip Rooke} created the Org reference card, provided lots
14667 of feedback, developed and applied standards to the Org documentation.
14669 @i{Christian Schlauer} proposed angular brackets around links, among
14672 @i{Paul Sexton} wrote @file{org-ctags.el}.
14674 Linking to VM/BBDB/Gnus was first inspired by @i{Tom Shannon}'s
14675 @file{organizer-mode.el}.
14677 @i{Ilya Shlyakhter} proposed the Archive Sibling, line numbering in literal
14678 examples, and remote highlighting for referenced code lines.
14680 @i{Stathis Sideris} wrote the @file{ditaa.jar} ASCII to PNG converter that is
14681 now packaged into Org's @file{contrib} directory.
14683 @i{Daniel Sinder} came up with the idea of internal archiving by locking
14686 @i{Dale Smith} proposed link abbreviations.
14688 @i{James TD Smith} has contributed a large number of patches for useful
14689 tweaks and features.
14691 @i{Adam Spiers} asked for global linking commands, inspired the link
14692 extension system, added support for mairix, and proposed the mapping API.
14694 @i{Ulf Stegemann} created the table to translate special symbols to HTML,
14695 LaTeX, UTF-8, Latin-1 and ASCII.
14697 @i{Andy Stewart} contributed code to @file{org-w3m.el}, to copy HTML content
14698 with links transformation to Org syntax.
14700 @i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
14701 chapter about publishing.
14703 @i{Stefan Vollmar} organized a video-recorded talk at the
14704 Max-Planck-Institute for Neurology. He also inspired the creation of a
14705 concept index for HTML export.
14707 @i{J@"urgen Vollmer} contributed code generating the table of contents
14710 @i{Samuel Wales} has provided important feedback and bug reports.
14712 @i{Chris Wallace} provided a patch implementing the @samp{QUOTE}
14715 @i{David Wainberg} suggested archiving, and improvements to the linking
14718 @i{Carsten Wimmer} suggested some changes and helped fix a bug in
14721 @i{Roland Winkler} requested additional key bindings to make Org
14724 @i{Piotr Zielinski} wrote @file{org-mouse.el}, proposed agenda blocks
14725 and contributed various ideas and code snippets.
14729 @node Main Index, Key Index, History and Acknowledgments, Top
14730 @unnumbered Concept index
14734 @node Key Index, Command and Function Index, Main Index, Top
14735 @unnumbered Key index
14739 @node Command and Function Index, Variable Index, Key Index, Top
14740 @unnumbered Command and function index
14744 @node Variable Index, , Command and Function Index, Top
14745 @unnumbered Variable index
14747 This is not a complete index of variables and faces, only the ones that are
14748 mentioned in the manual. For a more complete list, use @kbd{M-x
14749 org-customize @key{RET}} and then click yourself through the tree.
14756 arch-tag: 7893d1Fe-cc57-4d13-b5e5-f494a1CBC7ac
14759 @c Local variables:
14761 @c indent-tabs-mode: nil
14762 @c paragraph-start: "
\b\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|\f\\|[ ]*$"
14763 @c paragraph-separate: "
\b\\|^@[a-zA-Z]*[ \n]\\|^@x?org\\(key\\|cmd\\)\\|[ \f]*$"
14767 @c LocalWords: webdavhost pre