(Making Backups, Auto-Saving): Remove @tindex entries.
[bpt/emacs.git] / man / org.texi
1 \input texinfo
2 @c %**start of header
3 @setfilename ../info/org
4 @settitle Org Mode Manual
5
6 @set VERSION 4.43
7 @set DATE July 2006
8
9 @dircategory Emacs
10 @direntry
11 * Org Mode: (org). outline-based notes management and organizer
12 @end direntry
13
14 @c Version and Contact Info
15 @set MAINTAINERSITE @uref{http://www.astro.uva.nl/~dominik/Tools/org/,maintainers webpage}
16 @set AUTHOR Carsten Dominik
17 @set MAINTAINER Carsten Dominik
18 @set MAINTAINEREMAIL @email{dominik@@science.uva.nl}
19 @set MAINTAINERCONTACT @uref{mailto:dominik@@science.uva.nl,contact the maintainer}
20 @c %**end of header
21 @finalout
22
23 @c Macro definitions
24
25 @c Subheadings inside a table.
26 @macro tsubheading{text}
27 @ifinfo
28 @subsubheading \text\
29 @end ifinfo
30 @ifnotinfo
31 @item @b{\text\}
32 @end ifnotinfo
33 @end macro
34
35 @copying
36 This manual is for Org-mode (version @value{VERSION}).
37
38 Copyright @copyright{} 2004, 2005, 2006 Free Software Foundation
39
40 @quotation
41 Permission is granted to copy, distribute and/or modify this document
42 under the terms of the GNU Free Documentation License, Version 1.1 or
43 any later version published by the Free Software Foundation; with no
44 Invariant Sections, with the Front-Cover texts being ``A GNU Manual,''
45 and with the Back-Cover Texts as in (a) below. A copy of the
46 license is included in the section entitled ``GNU Free Documentation
47 License.''
48
49 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and modify
50 this GNU Manual, like GNU software. Copies published by the Free
51 Software Foundation raise funds for GNU development.''
52 @end quotation
53 @end copying
54
55 @titlepage
56 @title Org Mode Manual
57
58 @subtitle Release @value{VERSION}
59 @author by Carsten Dominik
60
61 @c The following two commands start the copyright page.
62 @page
63 @vskip 0pt plus 1filll
64 @insertcopying
65 @end titlepage
66
67 @c Output the table of contents at the beginning.
68 @contents
69
70 @ifnottex
71 @node Top, Introduction, (dir), (dir)
72 @top Org Mode Manual
73
74 @insertcopying
75 @end ifnottex
76
77 @menu
78 * Introduction:: Getting started
79 * Document structure:: A tree works like your brain
80 * Tables:: Pure magic for quick formatting
81 * Hyperlinks:: Notes in context
82 * TODO items:: Every tree branch can be a TODO item
83 * Timestamps:: Assign date and time to items
84 * Tags:: Tagging headlines and matching sets of tags
85 * Agenda views:: Collecting information into views
86 * Embedded LaTeX:: LaTeX fragments and formulas
87 * Exporting:: Sharing and publishing of notes
88 * Publishing:: Create a web site of linked Org-mode files
89 * Miscellaneous:: All the rest which did not fit elsewhere
90 * Extensions and Hacking:: It is possible to write add-on code
91 * History and Acknowledgments:: How Org-mode came into being
92 * Index:: The fast road to specific information
93 * Key Index:: Key bindings and where they are described
94
95 @detailmenu
96 --- The Detailed Node Listing ---
97
98 Introduction
99
100 * Summary:: Brief summary of what Org-mode does
101 * Installation:: How to install Org-mode
102 * Feedback:: Bug reports, ideas, patches etc.
103
104 Document Structure
105
106 * Outlines:: Org-mode is based on outline-mode
107 * Headlines:: How to typeset org-tree headlines
108 * Visibility cycling:: Show and hide, much simplified
109 * Motion:: Jumping to other headlines
110 * Structure editing:: Changing sequence and level of headlines
111 * Archiving:: Move done task trees to a different place
112 * Sparse trees:: Matches embedded in context
113 * Plain lists:: Editing hand-formatted lists
114 * Checkboxes:: Easily checking off things.
115
116 Archiving
117
118 * ARCHIVE tag:: Marking a tree as inactive
119 * Moving subtrees:: Moving a tree to an archive file
120
121 Tables
122
123 * Built-in table editor:: Simple tables
124 * Narrow columns:: Stop wasting space in tables
125 * Table calculations:: Compute a field from other fields
126 * orgtbl-mode:: The table editor as minor mode
127 * table.el:: Complex tables
128
129 Calculations in tables
130
131 * Formula syntax:: How to write a formula
132 * Lisp formulas:: An alternative way to write formulas
133 * Column formulas:: Formulas valid for all fields in a column
134 * Advanced features:: Field names, parameters and automatic recalc
135 * Named-field formulas:: Formulas valid in single fields
136 * Editing/debugging formulas:: Changing a stored formula
137 * Appetizer:: Taste the power of calc
138
139 Hyperlinks
140
141 * Link format:: How links in Org-mode are formatted
142 * Internal links:: Links to other places in the current file
143 * External links:: URL-like links to the world
144 * Handling links:: Creating, inserting and following
145 * Search options:: Linking to a specific location
146 * Custom searches:: When the default search is not enough
147 * Remember:: Org-trees store quick notes
148
149 Internal links
150
151 * Radio targets:: Make targets trigger links in plain text.
152 * CamelCase links:: Activating CamelCase words as links
153
154 TODO items
155
156 * TODO basics:: Marking and displaying TODO entries
157 * TODO extensions:: Workflow and assignments
158 * Priorities:: Some things are more important than others
159
160 Extended use of TODO keywords
161
162 * Workflow states:: From TODO to DONE in steps
163 * TODO types:: I do this, Fred the rest
164 * Per file keywords:: Different files, different requirements
165
166 Timestamps
167
168 * Time stamps:: Assigning a time to a tree entry
169 * Creating timestamps:: Commands which insert timestamps
170 * Progress logging:: Documenting when what work was done.
171
172 Progress Logging
173
174 * Closing items:: When was this entry marked DONE?
175 * Clocking work time:: When exactly did you work on this item?
176
177 Tags
178
179 * Tag inheritance:: Tags use the tree structure of the outline
180 * Setting tags:: How to assign tags to a headline
181 * Tag searches:: Searching for combinations of tags
182
183 Agenda Views
184
185 * Agenda files:: Files being searched for agenda information
186 * Agenda dispatcher:: Keyboard access to agenda views
187 * Weekly/Daily agenda:: The calendar page with current tasks
188 * Global TODO list:: All unfinished action items
189 * Matching headline tags:: Structured information with fine-tuned search
190 * Timeline:: Time-sorted view for single file
191 * Agenda commands:: Remote editing of org trees
192
193 The weekly/daily agenda
194
195 * Categories:: Not all tasks are equal
196 * Time-of-day specifications:: How the agenda knows the time
197 * Calendar/Diary integration:: Integrating Anniversaries and more
198 * Sorting of agenda items:: The order of things
199
200 Embedded LaTeX
201
202 * Math symbols:: TeX macros for symbols and Greek letters
203 * Subscripts and Superscripts:: Simple syntax for raising/lowering text
204 * LaTeX fragments:: Complex formulas made easy
205 * Processing LaTeX fragments:: Previewing LaTeX processing
206 * CDLaTeX mode:: Speed up entering of formulas
207
208 Exporting
209
210 * ASCII export:: Exporting to plain ASCII
211 * HTML export:: Exporting to HTML
212 * XOXO export:: Exporting to XOXO
213 * iCalendar export:: Exporting in iCalendar format
214 * Text interpretation:: How the exporter looks at the file
215
216 Text interpretation by the exporter
217
218 * Comment lines:: Some lines will not be exported
219 * Enhancing text:: Subscripts, symbols and more
220 * Export options:: How to influence the export settings
221
222 Publishing
223
224 * Configuration:: Defining projects
225 * Sample configuration:: Example projects
226 * Triggering publication:: Publication commands
227
228 Configuration
229
230 * Project alist:: The central configuration variable
231 * Sources and destinations:: From here to there
232 * Selecting files:: What files are part of the project?
233 * Publishing action:: Setting the function doing the publishing
234 * Publishing options:: Tweaking HTML export
235 * Publishing links:: Which links keep working after publishing?
236 * Project page index:: Publishing a list of project files
237
238 Sample configuration
239
240 * Simple example:: One-component publishing
241 * Complex example:: A multi-component publishing example
242
243 Miscellaneous
244
245 * Completion:: M-TAB knows what you need
246 * Customization:: Adapting Org-mode to your taste
247 * In-buffer settings:: Overview of the #+KEYWORDS
248 * The very busy C-c C-c key:: When in doubt, press C-c C-c
249 * Clean view:: Getting rid of leading stars in the outline
250 * TTY keys:: Using Org-mode on a tty
251 * Interaction:: Other Emacs packages
252 * Bugs:: Things which do not work perfectly
253
254 Interaction with other packages
255
256 * Cooperation:: Packages Org-mode cooperates with
257 * Conflicts:: Packages that lead to conflicts
258
259 Extensions, Hooks and Hacking
260
261 * Extensions:: Existing 3rd-part extensions
262 * Dynamic blocks:: Automatically filled blocks
263
264 @end detailmenu
265 @end menu
266
267 @node Introduction, Document structure, Top, Top
268 @chapter Introduction
269 @cindex introduction
270
271 @menu
272 * Summary:: Brief summary of what Org-mode does
273 * Installation:: How to install Org-mode
274 * Feedback:: Bug reports, ideas, patches etc.
275 @end menu
276
277 @node Summary, Installation, Introduction, Introduction
278 @section Summary
279 @cindex summary
280
281 Org-mode is a mode for keeping notes, maintaining ToDo lists, and doing
282 project planning with a fast and effective plain-text system.
283
284 Org-mode develops organizational tasks around NOTES files that contain
285 information about projects as plain text. Org-mode is implemented on
286 top of outline-mode, which makes it possible to keep the content of
287 large files well structured. Visibility cycling and structure editing
288 help to work with the tree. Tables are easily created with a built-in
289 table editor. Org-mode supports ToDo items, deadlines, time stamps,
290 and scheduling. It dynamically compiles entries into an agenda that
291 utilizes and smoothly integrates much of the Emacs calendar and diary.
292 Plain text URL-like links connect to websites, emails, Usenet
293 messages, BBDB entries, and any files related to the projects. For
294 printing and sharing of notes, an Org-mode file can be exported as a
295 structured ASCII file, as HTML, or (todo and agenda items only) as an
296 iCalendar file. It can also serve as a publishing tool for a set of
297 linked webpages.
298
299 Org-mode keeps simple things simple. When first fired up, it should
300 feel like a straightforward, easy to use outliner. Complexity is not
301 imposed, but a large amount of functionality is available when you need
302 it. Org-mode can be used on different levels and in different ways, for
303 example:
304
305 @example
306 @r{@bullet{} as an outline extension with visibility cycling and structure editing}
307 @r{@bullet{} as an ASCII system and table editor for taking structured notes}
308 @r{@bullet{} as an ASCII table editor with spreadsheet-like capabilities}
309 @r{@bullet{} as a TODO list editor}
310 @r{@bullet{} as a full agenda and planner with deadlines and work scheduling}
311 @r{@bullet{} as a simple hypertext system, with HTML export}
312 @r{@bullet{} as a publishing tool to create a set of interlinked webpages}
313 @end example
314
315 The Org-mode table editor can be integrated into any major mode by
316 activating the minor Orgtbl-mode.
317
318 @cindex FAQ
319 There is a website for Org-mode which provides links to the newest
320 version of Org-mode, as well as additional information, frequently asked
321 questions (FAQ), links to tutorials etc. This page is located at
322 @uref{http://www.astro.uva.nl/~dominik/Tools/org/}.
323
324 @page
325
326 @node Installation, Feedback, Summary, Introduction
327 @section Installation and Activation
328 @cindex installation
329 @cindex autoload
330 @cindex global keybindings
331 @cindex keybindings, global
332
333 If Org-mode is part of the Emacs distribution or an XEmacs package,
334 you only need to copy the following lines to your @file{.emacs} file.
335 The last two lines define @emph{global} keys for the commands
336 @command{org-store-link} and @command{org-agenda} - please
337 choose suitable keys yourself.
338
339 @lisp
340 ;; The following lines are always needed. Choose your own keys.
341 (add-to-list 'auto-mode-alist '("\\.org$" . org-mode))
342 (define-key global-map "\C-cl" 'org-store-link)
343 (define-key global-map "\C-ca" 'org-agenda)
344 @end lisp
345
346 Furthermore, you must activate @code{font-lock-mode} in org-mode
347 buffers, because significant functionality depends on font-locking being
348 active. You can do this with either one of the following two lines:
349 @lisp
350 (global-font-lock-mode 1) ; for all buffers
351 (add-hook 'org-mode-hook 'turn-on-font-lock) ; org-mode buffers only
352 @end lisp
353
354 If you have downloaded Org-mode from the Web, you must take additional
355 action: Byte-compile @file{org.el} and @file{org-publish.el} and put
356 them together with @file{org-install.el} on your load path. Then add to
357 @file{.emacs}:
358
359 @lisp
360 ;; This line only if org-mode is not part of the X/Emacs distribution.
361 (require 'org-install)
362 @end lisp
363
364 If you use Org-mode with XEmacs, you also need to install the file
365 @file{noutline.el} from the @file{xemacs} subdirectory of the Org-mode
366 distribution.
367
368 @cindex org-mode, turning on
369 With this setup, all files with extension @samp{.org} will be put into
370 Org-mode. As an alternative, make the first line of a file look like
371 this:
372
373 @example
374 MY PROJECTS -*- mode: org; -*-
375 @end example
376
377 @noindent which will select Org-mode for this buffer no matter what
378 the file's name is. See also the variable
379 @code{org-insert-mode-line-in-empty-file}.
380
381 @node Feedback, , Installation, Introduction
382 @section Feedback
383 @cindex feedback
384 @cindex bug reports
385 @cindex maintainer
386 @cindex author
387
388 If you find problems with Org-mode, or if you have questions, remarks,
389 or ideas about it, please contact the maintainer @value{MAINTAINER} at
390 @value{MAINTAINEREMAIL}.
391
392 For bug reports, please provide as much information as possible,
393 including the version information of Emacs (@kbd{C-h v emacs-version
394 @key{RET}}) and Org-mode (@kbd{C-h v org-version @key{RET}}), as well as
395 the Org-mode related setup in @file{.emacs}. If an error occurs, a
396 traceback can be very useful. Often a small example file helps, along
397 with clear information about:
398
399 @enumerate
400 @item What exactly did you do?
401 @item What did you expect to happen?
402 @item What happened instead?
403 @end enumerate
404 @noindent Thank you for helping to improve this mode.
405
406 @node Document structure, Tables, Introduction, Top
407 @chapter Document Structure
408 @cindex document structure
409 @cindex structure of document
410
411 Org-mode is based on outline mode and provides flexible commands to
412 edit the structure of the document.
413
414 @menu
415 * Outlines:: Org-mode is based on outline-mode
416 * Headlines:: How to typeset org-tree headlines
417 * Visibility cycling:: Show and hide, much simplified
418 * Motion:: Jumping to other headlines
419 * Structure editing:: Changing sequence and level of headlines
420 * Archiving:: Move done task trees to a different place
421 * Sparse trees:: Matches embedded in context
422 * Plain lists:: Editing hand-formatted lists
423 * Checkboxes:: Easily checking off things.
424 @end menu
425
426 @node Outlines, Headlines, Document structure, Document structure
427 @section Outlines
428 @cindex outlines
429 @cindex outline-mode
430
431 Org-mode is implemented on top of outline-mode. Outlines allow to
432 organize a document in a hierarchical structure, which (at least for
433 me) is the best representation of notes and thoughts. Overview over
434 this structure is achieved by folding (hiding) large parts of the
435 document to show only the general document structure and the parts
436 currently being worked on. Org-mode greatly simplifies the use of
437 outlines by compressing the entire show/hide functionality into a
438 single command @command{org-cycle}, which is bound to the @key{TAB}
439 key.
440
441 @node Headlines, Visibility cycling, Outlines, Document structure
442 @section Headlines
443 @cindex headlines
444 @cindex outline tree
445
446 Headlines define the structure of an outline tree. The headlines in
447 Org-mode start with one or more stars, on the left margin. For
448 example:
449
450 @example
451 * Top level headline
452 ** Second level
453 *** 3rd level
454 some text
455 *** 3rd level
456 more text
457 * Another top level headline
458 @end example
459
460 @noindent Some people find the many stars too noisy and would prefer an
461 outline that has whitespace followed by a single star as headline
462 starters. @ref{Clean view} describes a setup to realize this.
463
464 @node Visibility cycling, Motion, Headlines, Document structure
465 @section Visibility cycling
466 @cindex cycling, visibility
467 @cindex visibility cycling
468 @cindex trees, visibility
469 @cindex show hidden text
470 @cindex hide text
471
472 Outlines make it possible to hide parts of the text in the buffer.
473 Org-mode uses just two commands, bound to @key{TAB} and
474 @kbd{S-@key{TAB}} to change the visibility in the buffer.
475
476 @cindex subtree visibility states
477 @cindex subtree cycling
478 @cindex folded, subtree visibility state
479 @cindex children, subtree visibility state
480 @cindex subtree, subtree visibility state
481 @table @kbd
482 @kindex @key{TAB}
483 @item @key{TAB}
484 @emph{Subtree cycling}: Rotate current subtree between the states
485
486 @example
487 ,-> FOLDED -> CHILDREN -> SUBTREE --.
488 '-----------------------------------'
489 @end example
490
491 The cursor must be on a headline for this to work@footnote{see, however,
492 the option @code{org-cycle-emulate-tab}.}. When the cursor is at the
493 beginning of the buffer and the first line is not a headline, then
494 @key{TAB} actually runs global cycling (see below)@footnote{see the
495 option @code{org-cycle-global-at-bob}.}. Also when called with a prefix
496 argument (@kbd{C-u @key{TAB}}), global cycling is invoked.
497
498 @cindex global visibility states
499 @cindex global cycling
500 @cindex overview, global visibility state
501 @cindex contents, global visibility state
502 @cindex show all, global visibility state
503 @kindex S-@key{TAB}
504 @item S-@key{TAB}
505 @itemx C-u @key{TAB}
506 @emph{Global cycling}: Rotate the entire buffer between the states
507
508 @example
509 ,-> OVERVIEW -> CONTENTS -> SHOW ALL --.
510 '--------------------------------------'
511 @end example
512
513 Note that inside tables, @kbd{S-@key{TAB}} jumps to the previous field.
514
515 @cindex show all, command
516 @kindex C-c C-a
517 @item C-c C-a
518 Show all.
519 @end table
520
521 When Emacs first visits an Org-mode file, the global state is set to
522 OVERVIEW, i.e. only the top level headlines are visible. This can be
523 configured through the variable @code{org-startup-folded}, or on a
524 per-file basis by adding one of the following lines anywhere in the
525 buffer:
526
527 @example
528 #+STARTUP: overview
529 #+STARTUP: content
530 #+STARTUP: showall
531 @end example
532
533 @node Motion, Structure editing, Visibility cycling, Document structure
534 @section Motion
535 @cindex motion, between headlines
536 @cindex jumping, to headlines
537 @cindex headline navigation
538 The following commands jump to other headlines in the buffer.
539
540 @table @kbd
541 @kindex C-c C-n
542 @item C-c C-n
543 Next heading.
544 @kindex C-c C-p
545 @item C-c C-p
546 Previous heading.
547 @kindex C-c C-f
548 @item C-c C-f
549 Next heading same level.
550 @kindex C-c C-b
551 @item C-c C-b
552 Previous heading same level.
553 @kindex C-c C-u
554 @item C-c C-u
555 Backward to higher level heading.
556 @kindex C-c C-j
557 @item C-c C-j
558 Jump to a different place without changing the current outline
559 visibility. Shows the document structure in a temporary buffer, where
560 you can use visibility cycling (@key{TAB}) to find your destination.
561 After pressing @key{RET}, the cursor moves to the selected location in
562 the original buffer, and the headings hierarchy above it is made
563 visible.
564 @end table
565
566 @node Structure editing, Archiving, Motion, Document structure
567 @section Structure editing
568 @cindex structure editing
569 @cindex headline, promotion and demotion
570 @cindex promotion, of subtrees
571 @cindex demotion, of subtrees
572 @cindex subtree, cut and paste
573 @cindex pasting, of subtrees
574 @cindex cutting, of subtrees
575 @cindex copying, of subtrees
576 @cindex subtrees, cut and paste
577
578 @table @kbd
579 @kindex M-@key{RET}
580 @item M-@key{RET}
581 Insert new heading with same level as current. If the cursor is in a
582 plain list item, a new item is created (@pxref{Plain lists}). To force
583 creation of a new headline, use a prefix arg, or first press @key{RET}
584 to get to the beginning of the next line. When this command is used in
585 the middle of a line, the line is split and the rest of the line becomes
586 the new headline. If the command is used at the beginning of a
587 headline, the new headline is created before the current line. If at
588 the beginning of any other line, the content of that line is made the
589 new heading.
590 @kindex M-S-@key{RET}
591 @item M-S-@key{RET}
592 Insert new TODO entry with same level as current heading.
593 @kindex M-@key{left}
594 @item M-@key{left}
595 Promote current heading by one level.
596 @kindex M-@key{right}
597 @item M-@key{right}
598 Demote current heading by one level.
599 @kindex M-S-@key{left}
600 @item M-S-@key{left}
601 Promote the current subtree by one level.
602 @kindex M-S-@key{right}
603 @item M-S-@key{right}
604 Demote the current subtree by one level.
605 @kindex M-S-@key{up}
606 @item M-S-@key{up}
607 Move subtree up (swap with previous subtree of same
608 level).
609 @kindex M-S-@key{down}
610 @item M-S-@key{down}
611 Move subtree down (swap with next subtree of same level).
612 @kindex C-c C-x C-w
613 @kindex C-c C-x C-k
614 @item C-c C-x C-w
615 @itemx C-c C-x C-k
616 Kill subtree, i.e. remove it from buffer but save in kill ring.
617 @kindex C-c C-x M-w
618 @item C-c C-x M-w
619 Copy subtree to kill ring.
620 @kindex C-c C-x C-y
621 @item C-c C-x C-y
622 Yank subtree from kill ring. This does modify the level of the subtree to
623 make sure the tree fits in nicely at the yank position. The yank
624 level can also be specified with a prefix arg, or by yanking after a
625 headline marker like @samp{****}.
626 @end table
627
628 @cindex region, active
629 @cindex active region
630 @cindex transient-mark-mode
631 When there is an active region (transient-mark-mode), promotion and
632 demotion work on all headlines in the region. To select a region of
633 headlines, it is best to place both point and mark at the beginning of a
634 line, mark at the beginning of the first headline, and point at the line
635 just after the last headline to change. Note that when the cursor is
636 inside a table (@pxref{Tables}), the Meta-Cursor keys have different
637 functionality.
638
639 @node Archiving, Sparse trees, Structure editing, Document structure
640 @section Archiving
641 @cindex archiving
642
643 When a project represented by a (sub)tree is finished, you may want
644 to move the tree out of the way and to stop it from contributing to the
645 agenda. Org-mode knows two ways of archiving. You can mark a tree with
646 the ARCHIVE tag, or you can move an entire (sub)tree to a different
647 location.
648
649 @menu
650 * ARCHIVE tag:: Marking a tree as inactive
651 * Moving subtrees:: Moving a tree to an archive file
652 @end menu
653
654 @node ARCHIVE tag, Moving subtrees, Archiving, Archiving
655 @subsection The ARCHIVE tag
656 @cindex internal archiving
657
658 A headline that is marked with the ARCHIVE tag (@pxref{Tags}) stays at
659 its location in the outline tree, but behaves in the following way:
660 @itemize @minus
661 @item
662 It does not open when you attempt to do so with a visibility cycling
663 command (@pxref{Visibility cycling}). You can still open it with a
664 normal outline command like @code{show-all}. Or you can modify the
665 option @code{org-cycle-open-archived-trees}.
666 @item
667 During sparse tree construction (@pxref{Sparse trees}), matches in
668 archived subtrees are not exposed, unless you configure the option
669 @code{org-sparse-tree-open-archived-trees}.
670 @item
671 During agenda view construction (@pxref{Agenda views}), the content of
672 archived trees is ignored unless you configure the option
673 @code{org-agenda-skip-archived-trees}.
674 @item
675 Archived trees are not exported (@pxref{Exporting}), only the headline
676 is. Configure the details using the variable
677 @code{org-export-with-archived-trees}.
678 @end itemize
679
680 The following commands allow to set or clear the ARCHIVE tag:
681
682 @table @kbd
683 @kindex C-c C-x C-a
684 @item C-c C-x C-a
685 Toggle the ARCHIVE tag for the current headline. When the tag is set,
686 the headline changes to a shadowish face, and the subtree below it is
687 hidden.
688 @kindex C-u C-c C-x C-a
689 @item C-u C-c C-x C-a
690 Check if any direct children of the current headline should be archived.
691 To do this, each subtree is checked for open TODO entries. If none are
692 found, the command offers to set the ARCHIVE tag for the child. If the
693 cursor is @emph{not} on a headline when this command is invoked, the
694 level 1 trees will be checked.
695 @end table
696
697 @node Moving subtrees, , ARCHIVE tag, Archiving
698 @subsection Moving subtrees
699 @cindex external archiving
700
701 Once an entire project is finished, you may want to move it to a
702 different location, either in the current file, or even in a different
703 file, the archive file.
704
705 @table @kbd
706 @kindex C-c $
707 @item C-c $
708 Archive the subtree starting at the cursor position to the location
709 given by @code{org-archive-location}.
710 @kindex C-u C-c $
711 @item C-u C-c $
712 Check if any direct children of the current headline could be moved to
713 the archive. To do this, each subtree is checked for open TODO entries.
714 If none are found, the command offers to move it to the archive
715 location. If the cursor is @emph{not} on a headline when this command
716 is invoked, the level 1 trees will be checked.
717 @end table
718
719 @cindex archive locations
720 The default archive location is a file in the same directory as the
721 current file, with the name derived by appending @file{_archive} to the
722 current file name. For information and examples on how to change this,
723 see the documentation string of the variable
724 @code{org-archive-location}.
725
726 @node Sparse trees, Plain lists, Archiving, Document structure
727 @section Sparse trees
728 @cindex sparse trees
729 @cindex trees, sparse
730 @cindex folding, sparse trees
731 @cindex occur, command
732
733 An important feature of Org-mode is the ability to construct
734 @emph{sparse trees} for selected information in an outline tree. A
735 sparse tree means that the entire document is folded as much as
736 possible, but the selected information is made visible along with the
737 headline structure above it@footnote{See also the variables
738 @code{org-show-hierarchy-above} and
739 @code{org-show-following-heading}.}. Just try it out and you will see
740 immediately how it works.
741
742 Org-mode contains several commands creating such trees. The most
743 basic one is @command{org-occur}:
744
745 @table @kbd
746 @kindex C-c /
747 @item C-c /
748 Occur. Prompts for a regexp and shows a sparse tree with all matches.
749 If the match is in a headline, the headline is made visible. If the
750 match is in the body of an entry, headline and body are made visible.
751 In order to provide minimal context, also the full hierarchy of
752 headlines above the match is shown, as well as the headline following
753 the match. Each match is also highlighted; the highlights disappear
754 when the buffer is changed with an editing command.
755 @end table
756 @noindent
757 For frequently used sparse trees of specific search strings, you can
758 use the variable @code{org-agenda-custom-commands} to define fast
759 keyboard access to specific sparse trees. These commands will then be
760 accessible through the agenda dispatcher (@pxref{Agenda dispatcher}).
761 For example:
762
763 @lisp
764 (setq org-agenda-custom-commands
765 '(("f" occur-tree "FIXME")))
766 @end lisp
767
768 @noindent will define the key @kbd{C-c a f} as a shortcut for creating
769 a sparse tree matching the string @samp{FIXME}.
770
771 Other commands use sparse trees as well. For example @kbd{C-c
772 C-v} creates a sparse TODO tree (@pxref{TODO basics}).
773
774 @kindex C-c C-e v
775 @cindex printing sparse trees
776 @cindex visible text, printing
777 To print a sparse tree, you can use the Emacs command
778 @code{ps-print-buffer-with-faces} which does not print invisible parts
779 of the document @footnote{This does not work under XEmacs, because
780 XEmacs uses selective display for outlining, not text properties.}.
781 Or you can use the command @kbd{C-c C-e v} to export only the visible
782 part of the document and print the resulting file.
783
784
785 @node Plain lists, Checkboxes, Sparse trees, Document structure
786 @section Plain lists
787 @cindex plain lists
788 @cindex lists, plain
789 @cindex lists, ordered
790 @cindex ordered lists
791
792 Headlines define both the structure of the Org-mode file, and also lists
793 (for example, TODO items (@pxref{TODO items}) should be created using
794 headline levels). When taking notes, however, the plain text is
795 sometimes easier to read with hand-formatted lists. Org-mode supports
796 editing such lists, and the HTML exporter (@pxref{Exporting}) does
797 parse and format them.
798
799 Org-mode knows ordered and unordered lists. Unordered list items start
800 with @samp{-}, @samp{+}, or @samp{*}@footnote{When using @samp{*} as a
801 bullet, lines must be indented or they will be seen as top-level
802 headlines. Also, when you are hiding leading stars to get a clean
803 outline view, plain list items starting with a star are visually
804 indistinguishable from true headlines. In short: even though @samp{*}
805 is supported, it may be better not to use it for plain list items} as
806 bullets. Ordered list items start with @samp{1.} or @samp{1)}. Items
807 belonging to the same list must have the same indentation on the first
808 line. In particular, if an ordered list reaches number @samp{10.}, then
809 the 2--digit numbers must be written left-aligned with the other numbers
810 in the list. Indentation also determines the end of a list item. It
811 ends before the next line that is indented like the bullet/number, or
812 less. For example:
813
814 @example
815 @group
816 ** Lord of the Rings
817 My favorite scenes are (in this order)
818 1. Eowyns fight with the witch king
819 + this was already my favorite scene in the book
820 + I really like Miranda Otto.
821 2. The attack of the Rohirrim
822 3. Peter Jackson being shot by Legolas
823 - on DVD only
824 He makes a really funny face when it happens.
825 But in the end, not individual scenes matter but the film as a whole.
826 @end group
827 @end example
828
829 Org-mode supports these lists by tuning filling and wrapping commands
830 to deal with them correctly.
831
832 The following commands act on items when the cursor is in the first line
833 of an item (the line with the bullet or number).
834
835 @table @kbd
836 @kindex @key{TAB}
837 @item @key{TAB}
838 Items can be folded just like headline levels if you set the variable
839 @code{org-cycle-include-plain-lists}. The level of an item is then
840 given by the indentation of the bullet/number. Items are always
841 subordinate to real headlines, however; the hierarchies remain
842 completely separated.
843 @kindex M-@key{RET}
844 @item M-@key{RET}
845 Insert new item at current level. With prefix arg, force a new heading
846 (@pxref{Structure editing}). If this command is used in the middle of a
847 line, the line is @emph{split} and the rest of the line becomes the new
848 item. If this command is executed in the @emph{whitespace before a bullet or
849 number}, the new item is created @emph{before} the current item. If the
850 command is executed in the white space before the text that is part of
851 an item but does not contain the bullet, a bullet is added to the
852 current line.
853 @kindex M-S-@key{RET}
854 @item M-S-@key{RET}
855 Insert a new item with a checkbox (@pxref{Checkboxes}).
856 @kindex S-@key{up}
857 @kindex S-@key{down}
858 @item S-@key{up}
859 @itemx S-@key{down}
860 Jump to the previous/next item in the current list.
861 @kindex M-S-@key{up}
862 @kindex M-S-@key{down}
863 @item M-S-@key{up}
864 @itemx M-S-@key{down}
865 Move the item including subitems up/down (swap with previous/next item
866 of same indentation). If the list is ordered, renumbering is
867 automatic.
868 @kindex M-S-@key{left}
869 @kindex M-S-@key{right}
870 @item M-S-@key{left}
871 @itemx M-S-@key{right}
872 Decrease/increase the indentation of the item, including subitems.
873 Initially, the item tree is selected based on current indentation.
874 When these commands are executed several times in direct succession,
875 the initially selected region is used, even if the new indentation
876 would imply a different hierarchy. To use the new hierarchy, break
877 the command chain with a cursor motion or so.
878 @kindex C-c C-c
879 @item C-c C-c
880 If there is a checkbox (@pxref{Checkboxes}) in the item line, toggle the
881 state of the checkbox. Otherwise, if this is an ordered list, renumber
882 the ordered list at the cursor.
883 @end table
884
885 @page
886 @node Checkboxes, , Plain lists, Document structure
887 @section Checkboxes
888 @cindex checkboxes
889
890 Every item in a plain list (ordered and unordered) can be made a
891 checkbox by starting it with the string @samp{[ ]}. This feature is
892 similar to TODO items (@pxref{TODO items}), but more lightweight.
893 Checkboxes are not included into the global TODO list, so they are often
894 great to split a task into a number of simple steps. Or you can use
895 them in a shopping list to select the items you need to buy. To toggle
896 a checkbox, use @kbd{C-c C-c}, or try Piotr Zielinski's
897 @file{org-mouse.el}. Here is an example of a checkbox list.
898
899 @example
900 * Avoid stupid mistakes when distributing a new version
901 - [ ] update also Emacs CVS
902 - [X] forget to update index.html on the website
903 - [X] leaving a `(debug)' form in the code
904 @end example
905
906 @noindent The following commands work with checkboxes:
907
908 @table @kbd
909 @kindex C-c C-c
910 @item C-c C-c
911 Toggle checkbox at point.
912 @kindex C-c C-x C-b
913 @item C-c C-x C-b
914 Toggle checkbox at point.
915 @itemize @minus
916 @item
917 If there is an active region, toggle the first checkbox in the region
918 and set all remaining boxes to the same status as the first. If you
919 want to toggle all boxes in the region independently, use a prefix
920 argument.
921 @item
922 If the cursor is in a headline, toggle checkboxes in the region between
923 this headline and the next. This does @emph{not} act on the entire
924 subtree, just the current entry.
925 @item
926 If no active region, just toggle the checkbox at point.
927 @end itemize
928 @kindex M-S-@key{RET}
929 @item M-S-@key{RET}
930 Insert a new item with a checkbox.
931 This works only if the cursor is already in a plain list item
932 (@pxref{Plain lists}).
933 @end table
934
935 @node Tables, Hyperlinks, Document structure, Top
936 @chapter Tables
937 @cindex tables
938 @cindex editing tables
939
940 Org-mode has a very fast and intuitive table editor built-in.
941 Spreadsheet-like calculations are supported in connection with the
942 Emacs @file{calc} package.
943
944 @menu
945 * Built-in table editor:: Simple tables
946 * Narrow columns:: Stop wasting space in tables
947 * Table calculations:: Compute a field from other fields
948 * orgtbl-mode:: The table editor as minor mode
949 * table.el:: Complex tables
950 @end menu
951
952 @node Built-in table editor, Narrow columns, Tables, Tables
953 @section The built-in table editor
954 @cindex table editor, builtin
955
956 Org-mode makes it easy to format tables in plain ASCII. Any line with
957 @samp{|} as the first non-white character is considered part of a
958 table. @samp{|} is also the column separator. A table might look
959 like this:
960
961 @example
962 | Name | Phone | Age |
963 |-------+-------+-----|
964 | Peter | 1234 | 17 |
965 | Anna | 4321 | 25 |
966 @end example
967
968 A table is re-aligned automatically each time you press @key{TAB} or
969 @key{RET} or @kbd{C-c C-c} inside the table. @key{TAB} also moves to
970 the next field (@key{RET} to the next row) and creates new table rows
971 at the end of the table or before horizontal lines. The indentation
972 of the table is set by the first line. Any line starting with
973 @samp{|-} is considered as a horizontal separator line and will be
974 expanded on the next re-align to span the whole table width. So, to
975 create the above table, you would only type
976
977 @example
978 |Name|Phone|Age
979 |-
980 @end example
981
982 @noindent and then press @key{TAB} to align the table and start filling in
983 fields.
984
985 When typing text into a field, Org-mode treats @key{DEL},
986 @key{Backspace}, and all character keys in a special way, so that
987 inserting and deleting avoids shifting other fields. Also, when
988 typing @emph{immediately after the cursor was moved into a new field
989 with @kbd{@key{TAB}}, @kbd{S-@key{TAB}} or @kbd{@key{RET}}}, the
990 field is automatically made blank. If this behavior is too
991 unpredictable for you, configure the variables
992 @code{org-enable-table-editor} and @code{org-table-auto-blank-field}.
993
994 @table @kbd
995 @tsubheading{Creation and conversion}
996 @kindex C-c |
997 @item C-c |
998 Convert the active region to table. If every line contains at least one
999 TAB character, the function assumes that the material is tab separated.
1000 If not, lines are split at whitespace into fields. You can use a prefix
1001 argument to indicate the minimum number of consecutive spaces required
1002 to identify a field separator (default: just one).@*
1003 If there is no active region, this command creates an empty Org-mode
1004 table. But it's easier just to start typing, like
1005 @kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
1006
1007 @tsubheading{Re-aligning and field motion}
1008 @kindex C-c C-c
1009 @item C-c C-c
1010 Re-align the table without moving the cursor.
1011
1012 @kindex @key{TAB}
1013 @item @key{TAB}
1014 Re-align the table, move to the next field. Creates a new row if
1015 necessary.
1016
1017 @kindex S-@key{TAB}
1018 @item S-@key{TAB}
1019 Re-align, move to previous field.
1020
1021 @kindex @key{RET}
1022 @item @key{RET}
1023 Re-align the table and move down to next row. Creates a new row if
1024 necessary. At the beginning or end of a line, @key{RET} still does
1025 NEWLINE, so it can be used to split a table.
1026
1027 @tsubheading{Column and row editing}
1028 @kindex M-@key{left}
1029 @kindex M-@key{right}
1030 @item M-@key{left}
1031 @itemx M-@key{right}
1032 Move the current column left/right.
1033
1034 @kindex M-S-@key{left}
1035 @item M-S-@key{left}
1036 Kill the current column.
1037
1038 @kindex M-S-@key{right}
1039 @item M-S-@key{right}
1040 Insert a new column to the left of the cursor position.
1041
1042 @kindex M-@key{up}
1043 @kindex M-@key{down}
1044 @item M-@key{up}
1045 @itemx M-@key{down}
1046 Move the current row up/down.
1047
1048 @kindex M-S-@key{up}
1049 @item M-S-@key{up}
1050 Kill the current row or horizontal line.
1051
1052 @kindex M-S-@key{down}
1053 @item M-S-@key{down}
1054 Insert a new row above (with arg: below) the current row.
1055
1056 @kindex C-c -
1057 @item C-c -
1058 Insert a horizontal line below current row. With prefix arg, the line
1059 is created above the current line.
1060
1061 @kindex C-c ^
1062 @item C-c ^
1063 Sort the table lines in the region. Point and mark must be in the first
1064 and last line to be included, and must be in the column that should be
1065 used for sorting. The command prompts for numerical versus
1066 alphanumerical sorting.
1067
1068 @tsubheading{Regions}
1069 @kindex C-c C-x M-w
1070 @item C-c C-x M-w
1071 Copy a rectangular region from a table to a special clipboard. Point
1072 and mark determine edge fields of the rectangle. The process ignores
1073 horizontal separator lines.
1074 @kindex C-c C-x C-w
1075 @item C-c C-x C-w
1076 Copy a rectangular region from a table to a special clipboard, and
1077 blank all fields in the rectangle. So this is the ``cut'' operation.
1078 @kindex C-c C-x C-y
1079 @item C-c C-x C-y
1080 Paste a rectangular region into a table.
1081 The upper right corner ends up in the current field. All involved fields
1082 will be overwritten. If the rectangle does not fit into the present table,
1083 the table is enlarged as needed. The process ignores horizontal separator
1084 lines.
1085 @kindex C-c C-q
1086 @item C-c C-q
1087 Wrap several fields in a column like a paragraph. If there is an active
1088 region, and both point and mark are in the same column, the text in the
1089 column is wrapped to minimum width for the given number of lines. A
1090 prefix ARG may be used to change the number of desired lines. If there
1091 is no region, the current field is split at the cursor position and the
1092 text fragment to the right of the cursor is prepended to the field one
1093 line down. If there is no region, but you specify a prefix ARG, the
1094 current field is made blank, and the content is appended to the field
1095 above.
1096
1097 @tsubheading{Calculations}
1098 @cindex formula, in tables
1099 @cindex calculations, in tables
1100 @kindex C-c =
1101 @item C-c =
1102 Install a new formula for the current column and replace current field
1103 with the result of the formula.
1104
1105 @kindex C-u C-c =
1106 @item C-u C-c =
1107 Install a new formula for the current field, which must be a named
1108 field. Evaluate the formula and replace the field content with the
1109 result.
1110
1111 @kindex C-c '
1112 @item C-c '
1113 Edit all formulas associated with the current table in a separate
1114 buffer.
1115
1116 @kindex C-c *
1117 @item C-c *
1118 Recalculate the current row by applying the stored formulas from left
1119 to right. When called with a @kbd{C-u} prefix, recalculate the
1120 entire table, starting with the first non-header line (i.e. below the
1121 first horizontal separator line). For details, see @ref{Table calculations}.
1122
1123 @kindex C-#
1124 @item C-#
1125 Rotate the calculation mark in first column through the states
1126 @samp{}, @samp{#}, @samp{*}, @samp{!}, @samp{$}. For the meaning of
1127 these marks see @ref{Advanced features}. When there is an active
1128 region, change all marks in the region.
1129
1130 @kindex C-c ?
1131 @item C-c ?
1132 Which table column is the cursor in? Displays number >0 in echo
1133 area.
1134
1135 @cindex region, active
1136 @cindex active region
1137 @cindex transient-mark-mode
1138 @kindex C-c +
1139 @item C-c +
1140 Sum the numbers in the current column, or in the rectangle defined by
1141 the active region. The result is shown in the echo area and can
1142 be inserted with @kbd{C-y}.
1143
1144 @kindex S-@key{RET}
1145 @item S-@key{RET}
1146 When current field is empty, copy from first non-empty field above.
1147 When not empty, copy current field down to next row and move cursor
1148 along with it. Depending on the variable
1149 @code{org-table-copy-increment}, integer field values will be
1150 incremented during copy. This key is also used by CUA-mode
1151 (@pxref{Cooperation}).
1152
1153 @tsubheading{Miscellaneous}
1154 @kindex C-c `
1155 @item C-c `
1156 Edit the current field in a separate window. This is useful for fields
1157 that are not fully visible (@pxref{Narrow columns}). When called with a
1158 @kbd{C-u} prefix, just make the full field visible, so that it can be
1159 edited in place.
1160
1161 @kindex C-c @key{TAB}
1162 @item C-c @key{TAB}
1163 This is an alias for @kbd{C-u C-c `} to make the current field fully
1164 visible.
1165
1166 @item M-x org-table-import
1167 Import a file as a table. The table should be TAB- or whitespace
1168 separated. Useful, for example, to import an Excel table or data from a
1169 database, because these programs generally can write TAB-separated text
1170 files. This command works by inserting the file into the buffer and
1171 then converting the region to a table. Any prefix argument is passed on
1172 to the converter, which uses it to determine the separator.
1173
1174 @item M-x org-table-export
1175 Export the table as a TAB-separated file. Useful for data exchange with,
1176 for example, Excel or database programs.
1177
1178 @end table
1179
1180 If you don't like the automatic table editor because it gets in your
1181 way on lines which you would like to start with @samp{|}, you can turn
1182 it off with
1183
1184 @lisp
1185 (setq org-enable-table-editor nil)
1186 @end lisp
1187
1188 @noindent Then the only table command that still works is
1189 @kbd{C-c C-c} to do a manual re-align.
1190
1191 @node Narrow columns, Table calculations, Built-in table editor, Tables
1192 @section Narrow columns
1193 @cindex narrow columns in tables
1194
1195 The width of columns is automatically determined by the table editor.
1196 Sometimes a single field or a few fields need to carry more text,
1197 leading to inconveniently wide columns. To limit@footnote{This feature
1198 does not work on XEmacs.} the width of a column, one field anywhere in
1199 the column may contain just the string @samp{<N>} where @samp{N} is an
1200 integer specifying the width of the column in characters. The next
1201 re-align will then set the width of this column to no more than this
1202 value.
1203
1204 @example
1205 |---+------------------------------| |---+--------|
1206 | | | | | <6> |
1207 | 1 | one | | 1 | one |
1208 | 2 | two | ----\ | 2 | two |
1209 | 3 | This is a long chunk of text | ----/ | 3 | This=> |
1210 | 4 | four | | 4 | four |
1211 |---+------------------------------| |---+--------|
1212 @end example
1213
1214 @noindent
1215 Fields that are wider become clipped and end in the string @samp{=>}.
1216 Note that the full text is still in the buffer, it is only invisible.
1217 To see the full text, hold the mouse over the field - a tooltip window
1218 will show the full content. To edit such a field, use the command
1219 @kbd{C-c `} (that is @kbd{C-c} followed by the backquote). This will
1220 open a new window with the full field. Edit it and finish with @kbd{C-c
1221 C-c}.
1222
1223 When visiting a file containing a table with narrowed columns, the
1224 necessary character hiding has not yet happened, and the table needs to
1225 be aligned before it looks nice. Setting the option
1226 @code{org-startup-align-all-tables} will realign all tables in a file
1227 upon visiting, but also slow down startup. You can also set this option
1228 on a per-file basis with:
1229
1230 @example
1231 #+STARTUP: align
1232 #+STARTUP: noalign
1233 @end example
1234
1235 @node Table calculations, orgtbl-mode, Narrow columns, Tables
1236 @section Calculations in tables
1237 @cindex calculations, in tables
1238 @cindex spreadsheet capabilities
1239 @cindex @file{calc} package
1240
1241 The table editor makes use of the Emacs @file{calc} package to implement
1242 spreadsheet-like capabilities. It can also evaluate Emacs Lisp forms to
1243 derive fields from other fields. Org-mode has two levels of complexity
1244 for table calculations. On the basic level, tables do only horizontal
1245 computations, so a field can be computed from other fields @emph{in the
1246 same row}, and Org-mode assumes that there is only one formula for each
1247 column. This is very efficient to work with and enough for many tasks.
1248 On the complex level, columns and individual fields can be named for
1249 easier referencing in formulas, individual named fields can have their
1250 own formula associated with them, and recalculation can be automated.
1251
1252 @menu
1253 * Formula syntax:: How to write a formula
1254 * Lisp formulas:: An alternative way to write formulas
1255 * Column formulas:: Formulas valid for all fields in a column
1256 * Advanced features:: Field names, parameters and automatic recalc
1257 * Named-field formulas:: Formulas valid in single fields
1258 * Editing/debugging formulas:: Changing a stored formula
1259 * Appetizer:: Taste the power of calc
1260 @end menu
1261
1262 @node Formula syntax, Lisp formulas, Table calculations, Table calculations
1263 @subsection Formula syntax
1264 @cindex formula syntax
1265 @cindex syntax, of formulas
1266
1267 A formula can be any algebraic expression understood by the Emacs
1268 @file{calc} package. Note that @file{calc} has the slightly
1269 non-standard convention that @samp{/} has lower precedence than
1270 @samp{*}, so that @samp{a/b*c} is interpreted as @samp{a/(b*c)}. Before
1271 evaluation by @code{calc-eval} (@pxref{Calling Calc from Your
1272 Programs,calc-eval,Calling calc from Your Lisp Programs,calc,GNU Emacs
1273 Calc Manual}), variable substitution takes place:
1274
1275 @example
1276 $ @r{refers to the current field}
1277 $3 @r{refers to the field in column 3 of the current row}
1278 $3..$7 @r{a vector of the fields in columns 3-7 of current row}
1279 $P1..$P3 @r{vector of column range, using column names}
1280 &2 @r{second data field above the current, in same column}
1281 &5-2 @r{vector from fifth to second field above current}
1282 &III-II @r{vector of fields between 2nd and 3rd hline above}
1283 &III @r{vector of fields between third hline above and current field}
1284 $name @r{a named field, parameter or constant}
1285 @end example
1286
1287 @cindex vectors, in table calculations
1288 The range vectors can be directly fed into the calc vector functions
1289 like @samp{vmean} and @samp{vsum}.
1290
1291 @cindex name, of column or field
1292 @cindex constants, in calculations
1293 @samp{$name} is interpreted as the name of a column, parameter or
1294 constant. Constants are defined globally through the variable
1295 @code{org-table-formula-constants}. If you have the
1296 @file{constants.el} package, it will also be used to resolve
1297 constants, including natural constants like @samp{$h} for Planck's
1298 constant, and units like @samp{$km} for kilometers. Column names and
1299 parameters can be specified in special table lines. These are
1300 described below, see @ref{Advanced features}.
1301
1302 @cindex format specifier
1303 @cindex mode, for @file{calc}
1304 A formula can contain an optional mode string after a semicolon. This
1305 string consists of flags to influence calc's modes@footnote{By
1306 default, Org-mode uses the standard calc modes (precision 12, angular
1307 units degrees, fraction and symbolic modes off). The display format,
1308 however, has been changed to @code{(float 5)} to keep tables compact.
1309 The default settings can be configured using the variable
1310 @code{org-calc-default-modes}.} during execution, e.g. @samp{p20} to
1311 switch the internal precision to 20 digits, @samp{n3}, @samp{s3},
1312 @samp{e2} or @samp{f4} to switch to normal, scientific, engineering,
1313 or fixed display format, respectively, and @samp{D}, @samp{R}, @samp{F},
1314 and @samp{S} to turn on degrees, radians, fraction and symbolic modes,
1315 respectively. In addition, you may provide a @code{printf} format
1316 specifier to reformat the final result. A few examples:
1317
1318 @example
1319 $1+$2 @r{Sum of first and second field}
1320 $1+$2;%.2f @r{Same, format result to two decimals}
1321 exp($2)+exp($1) @r{Math functions can be used}
1322 $;%.1f @r{Reformat current cell to 1 decimal}
1323 ($3-32)*5/9 @r{Degrees F -> C conversion}
1324 $c/$1/$cm @r{Hz -> cm conversion, using @file{constants.el}}
1325 tan($1);Dp3s1 @r{Compute in degrees, precision 3, display SCI 1}
1326 sin($1);Dp3%.1e @r{Same, but use printf specifier for display}
1327 vmean($2..$7) @r{Compute column range mean, using vector function}
1328 vsum(&III) @r{Sum numbers from 3rd hline above, up to here}
1329 taylor($3,x=7,2) @r{taylor series of $3, at x=7, second degree}
1330 @end example
1331
1332 @node Lisp formulas, Column formulas, Formula syntax, Table calculations
1333 @subsection Emacs Lisp forms as formulas
1334 @cindex Lisp forms, as table formulas
1335
1336 It is also possible to write a formula in Emacs lisp; this can be useful
1337 for string manipulation and control structures. If a formula starts
1338 with a single quote followed by an opening parenthesis, then it is
1339 evaluated as a lisp form. The evaluation should return either a string
1340 or a number. Just as with @file{calc} formulas, you can provide a
1341 format specifier after a semicolon. A few examples:
1342
1343 @example
1344 @r{swap the first two characters of the content of column 1}
1345 '(concat (substring "$1" 1 2) (substring "$1" 0 1) (substring "$1" 2))
1346 @r{Add columns 1 and 2, equivalent to the calc's @code{$1+$2}}
1347 '(+ $1 $2)
1348 @end example
1349
1350 @node Column formulas, Advanced features, Lisp formulas, Table calculations
1351 @subsection Column formulas
1352 @cindex column formula
1353 @cindex formula, for table column
1354
1355 To apply a formula to a field, type it directly into the field,
1356 preceded by an equal sign, like @samp{=$1+$2}. When you press
1357 @key{TAB} or @key{RET} or @kbd{C-c C-c} with the cursor still in the
1358 field, the formula will be stored as the formula for the current
1359 column, evaluated and the current field replaced with the result. If
1360 the field contains only @samp{=}, the previously stored formula for
1361 this column is used.
1362
1363 For each column, Org-mode will remember the most recently used
1364 formula. The information is stored in a special line starting with
1365 @samp{#+TBLFM} directly below the table. When adding/deleting/moving
1366 columns with the appropriate commands, the stored equations will be
1367 modified accordingly. When a column used in a calculation is removed,
1368 references to this column become invalid and will cause an error upon
1369 applying the equation.
1370
1371 Instead of typing an equation into the field, you may also use the
1372 command @kbd{C-c =}. It prompts for a formula (with default taken
1373 from the @samp{#+TBLFM:} line) and applies it to the current field. A
1374 numerical prefix (e.g. @kbd{C-5 C-c =}) will apply it to that many
1375 consecutive fields in the current column.
1376
1377 @cindex recomputing table fields
1378 To recompute all the fields in a line, use the command @kbd{C-c *}.
1379 It re-applies all stored equations to the current row, from left to
1380 right. With a @kbd{C-u} prefix, this will be done to every line in
1381 the table, so use this command it you want to make sure the entire
1382 table is up-to-date. @kbd{C-u C-c C-c} is another way to update the
1383 entire table. Global updating does not touch the line(s) above the
1384 first horizontal separator line, assuming that this is the table
1385 header.
1386
1387 @node Advanced features, Named-field formulas, Column formulas, Table calculations
1388 @subsection Advanced features
1389
1390 If you want the recalculation of fields to happen automatically,
1391 or if you want to be able to assign a formula to an individual field
1392 (instead of an entire column) you need to reserve the first column of
1393 the table for special marking characters. Here is an example of a
1394 table that collects exam results of students and makes use of these
1395 features:
1396
1397 @example
1398 @group
1399 |---+---------+--------+--------+--------+-------+------|
1400 | | Student | Prob 1 | Prob 2 | Prob 3 | Total | Note |
1401 |---+---------+--------+--------+--------+-------+------|
1402 | ! | | P1 | P2 | P3 | Tot | |
1403 | # | Maximum | 10 | 15 | 25 | 50 | 10.0 |
1404 | ^ | | m1 | m2 | m3 | mt | |
1405 |---+---------+--------+--------+--------+-------+------|
1406 | # | Peter | 10 | 8 | 23 | 41 | 8.2 |
1407 | # | Sara | 6 | 14 | 19 | 39 | 7.8 |
1408 | # | Sam | 2 | 4 | 3 | 9 | 1.8 |
1409 |---+---------+--------+--------+--------+-------+------|
1410 | | Average | | | | 29.7 | |
1411 | ^ | | | | | at | |
1412 | $ | max=50 | | | | | |
1413 |---+---------+--------+--------+--------+-------+------|
1414 #+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(&II);%.1f
1415 @end group
1416 @end example
1417
1418 @noindent @b{Important}: Please note that for these special tables,
1419 recalculating the table with @kbd{C-u C-c *} will only affect rows
1420 that are marked @samp{#} or @samp{*}, and named fields. The column
1421 formulas are not applied in rows with empty first field.
1422
1423 @cindex marking characters, tables
1424 The marking characters have the following meaning:
1425 @table @samp
1426 @item !
1427 The fields in this line define names for the columns, so that you may
1428 refer to a column as @samp{$Tot} instead of @samp{$6}.
1429 @item ^
1430 This row defines names for the fields @emph{above} the row. With such
1431 a definition, any formula in the table may use @samp{$m1} to refer to
1432 the value @samp{10}. Also, named fields can have their own formula
1433 associated with them.
1434 @item _
1435 Similar to @samp{^}, but defines names for the fields in the row
1436 @emph{below}.
1437 @item $
1438 Fields in this row can define @emph{parameters} for formulas. For
1439 example, if a field in a @samp{$} row contains @samp{max=50}, then
1440 formulas in this table can refer to the value 50 using @samp{$max}.
1441 Parameters work exactly like constants, only that they can be defined on
1442 a per-table basis. Changing a parameter and then recalculating the
1443 table can be useful.
1444 @item #
1445 Fields in this row are automatically recalculated when pressing
1446 @key{TAB} or @key{RET} or @kbd{S-@key{TAB}} in this row. Also, this row
1447 is selected for a global recalculation with @kbd{C-u C-c *}. Unmarked
1448 lines will be left alone by this command.
1449 @item *
1450 Selects this line for global recalculation with @kbd{C-u C-c *}, but
1451 not for automatic recalculation. Use this when automatic
1452 recalculation slows down editing too much.
1453 @item
1454 Unmarked lines are exempt from recalculation with @kbd{C-u C-c *}.
1455 All lines that should be recalculated should be marked with @samp{#}
1456 or @samp{*}.
1457 @end table
1458
1459 @node Named-field formulas, Editing/debugging formulas, Advanced features, Table calculations
1460 @subsection Named-field formulas
1461 @cindex named field formula
1462 @cindex formula, for named table field
1463
1464 A named field can have its own formula associated with it. In the
1465 example above, this is used for the @samp{at} field that contains
1466 the average result of the students. To enter a formula for a named
1467 field, just type it into the buffer, preceded by @samp{:=}. Or use
1468 @kbd{C-u C-c =}. This equation will be stored below the table like
1469 @samp{$name=...}. Any recalculation in the table (even if only
1470 requested for the current line) will also update all named field
1471 formulas.
1472
1473 @node Editing/debugging formulas, Appetizer, Named-field formulas, Table calculations
1474 @subsection Editing and debugging formulas
1475 @cindex formula editing
1476 @cindex editing, of table formulas
1477
1478 To edit a column or field formula, use the commands @kbd{C-c
1479 =} and @kbd{C-u C-c =}, respectively. The currently active expression
1480 is then presented as default in the minibuffer, where it may be edited.
1481
1482 Note that making a table field blank does not remove the formula
1483 associated with the field - during the next recalculation the field
1484 will be filled again. To remove a formula from a field, you have to
1485 give an empty reply when prompted for the formula, or to edit the
1486 @samp{#+TBLFM} line.
1487
1488 @kindex C-c C-c
1489 You may edit the @samp{#+TBLFM} directly and re-apply
1490 the changed equations with @kbd{C-c C-c} in that line, or with the
1491 normal recalculation commands in the table.
1492
1493 @kindex C-c '
1494 @kindex C-c C-c
1495 @kindex C-c C-q
1496 @kindex C-c ?
1497 In particular for large tables with many formulas, it is convenient to
1498 use the command @kbd{C-c '} to edit the formulas of the current table
1499 in a separate buffer. That buffer will show the formulas one per
1500 line, and you are free to edit, add and remove formulas. Press
1501 @kbd{C-c ?} on a @samp{$...} expression to get information about its
1502 interpretation. Exiting the buffer with @kbd{C-c C-c} only stores the
1503 modified formulas below the table. Exiting with @kbd{C-u C-c C-c}
1504 also applies them to the entire table. @kbd{C-c C-q} exits without
1505 installing the changes.
1506
1507 When the evaluation of a formula leads to an error, the field content
1508 becomes the string @samp{#ERROR}. If you would like see what is going
1509 on during variable substitution and calculation in order to find a
1510 bug, turn on formula debugging in the menu and repeat the calculation,
1511 for example by pressing @kbd{C-c = @key{RET}} in a field.
1512 Detailed information will be displayed.
1513
1514 @node Appetizer, , Editing/debugging formulas, Table calculations
1515 @subsection Appetizer
1516
1517 Finally, just to whet your appetite on what can be done with the fantastic
1518 @file{calc} package, here is a table that computes the Taylor series
1519 for a couple of functions (homework: try that with Excel :-)
1520
1521 @example
1522 @group
1523 |---+-------------+---+-----+--------------------------------------|
1524 | | Func | n | x | Result |
1525 |---+-------------+---+-----+--------------------------------------|
1526 | # | exp(x) | 1 | x | 1 + x |
1527 | # | exp(x) | 2 | x | 1 + x + x^2 / 2 |
1528 | # | exp(x) | 3 | x | 1 + x + x^2 / 2 + x^3 / 6 |
1529 | # | x^2+sqrt(x) | 2 | x=0 | x*(0.5 / 0) + x^2 (2 - 0.25 / 0) / 2 |
1530 | # | x^2+sqrt(x) | 2 | x=1 | 2 + 2.5 x - 2.5 + 0.875 (x - 1)^2 |
1531 | * | tan(x) | 3 | x | 0.0175 x + 1.77e-6 x^3 |
1532 |---+-------------+---+-----+--------------------------------------|
1533 #+TBLFM: $5=taylor($2,$4,$3);n3
1534 @end group
1535 @end example
1536
1537 @node orgtbl-mode, table.el, Table calculations, Tables
1538 @section The Orgtbl minor mode
1539 @cindex orgtbl-mode
1540 @cindex minor mode for tables
1541
1542 If you like the intuitive way the Org-mode table editor works, you
1543 might also want to use it in other modes like text-mode or mail-mode.
1544 The minor mode Orgtbl-mode makes this possible. You can always toggle
1545 the mode with @kbd{M-x orgtbl-mode}. To turn it on by default, for
1546 example in mail mode, use
1547
1548 @lisp
1549 (add-hook 'mail-mode-hook 'turn-on-orgtbl)
1550 @end lisp
1551
1552 @node table.el, , orgtbl-mode, Tables
1553 @section The @file{table.el} package
1554 @kindex C-c C-c
1555 @cindex table editor, @file{table.el}
1556 @cindex @file{table.el}
1557
1558 Complex ASCII tables with automatic line wrapping, column- and
1559 row-spanning, and alignment can be created using the Emacs table
1560 package by Takaaki Ota (@uref{http://sourceforge.net/projects/table},
1561 and also part of Emacs 22).
1562 When @key{TAB} or @kbd{C-c C-c} is pressed in such a table, Org-mode
1563 will call @command{table-recognize-table} and move the cursor into the
1564 table. Inside a table, the keymap of Org-mode is inactive. In order
1565 to execute Org-mode-related commands, leave the table.
1566
1567 @table @kbd
1568 @kindex C-c C-c
1569 @item C-c C-c
1570 Recognize @file{table.el} table. Works when the cursor is in a
1571 table.el table.
1572
1573 @kindex C-c ~
1574 @item C-c ~
1575 Insert a table.el table. If there is already a table at point, this
1576 command converts it between the table.el format and the Org-mode
1577 format. See the documentation string of the command
1578 @code{org-convert-table} for the restrictions under which this is
1579 possible.
1580 @end table
1581
1582 @node Hyperlinks, TODO items, Tables, Top
1583 @chapter Hyperlinks
1584 @cindex hyperlinks
1585
1586 Just like HTML, Org-mode provides links inside a file, and external
1587 links to other files, Usenet articles, emails, and much more.
1588
1589 @menu
1590 * Link format:: How links in Org-mode are formatted
1591 * Internal links:: Links to other places in the current file
1592 * External links:: URL-like links to the world
1593 * Handling links:: Creating, inserting and following
1594 * Search options:: Linking to a specific location
1595 * Custom searches:: When the default search is not enough
1596 * Remember:: Org-trees store quick notes
1597 @end menu
1598
1599 @node Link format, Internal links, Hyperlinks, Hyperlinks
1600 @section Link format
1601 @cindex link format
1602 @cindex format, of links
1603
1604 Org-mode will recognize plain URL-like links and activate them as
1605 clickable links. The general link format, however, looks like this:
1606
1607 @example
1608 [[link][description]] @r{or alternatively} [[link]]
1609 @end example
1610
1611 Once a link in the buffer is complete (all brackets present), Org-mode
1612 will change the display so that @samp{description} is displayed instead
1613 of @samp{[[link][description]]} and @samp{link} is displayed instead of
1614 @samp{[[link]]}. Links will be highlighted in the face @code{org-link},
1615 which by default is an underlined face. You can directly edit the
1616 visible part of a link. Note that this can be either the @samp{link}
1617 part (if there is no description) or the @samp{description} part. To
1618 edit also the invisible @samp{link} part, use @kbd{C-c C-l} with the
1619 cursor on the link.
1620
1621 If you place the cursor at the beginning or just behind the end of the
1622 displayed text and press @key{BACKSPACE}, you will remove the
1623 (invisible) bracket at that location. This makes the link incomplete
1624 and the internals are again displayed as plain text. Inserting the
1625 missing bracket hides the link internals again. To show the
1626 internal structure of all links, use the menu entry
1627 @code{Org->Hyperlinks->Literal links}.
1628
1629 @node Internal links, External links, Link format, Hyperlinks
1630 @section Internal links
1631 @cindex internal links
1632 @cindex links, internal
1633 @cindex CamelCase links
1634
1635 If the link does not look like a URL, it is considered to be internal in
1636 the current file. Links such as @samp{[[My Target]]} or @samp{[[My
1637 Target][Find my target]]} lead to a text search in the current file.
1638 The link can be followed with @kbd{C-c C-o} when the cursor is on the
1639 link, or with a mouse click (@pxref{Handling links}). The preferred
1640 match for such a link is a dedicated target: the same string in double
1641 angular brackets. Targets may be located anywhere; often it is
1642 convenient to put them into a comment line. For example
1643
1644 @example
1645 # <<My Target>>
1646 @end example
1647
1648 @noindent In HTML export (@pxref{HTML export}), such targets will become
1649 named anchors for direct access through @samp{http} links@footnote{Note
1650 that text before the first headline will never be exported, so the first
1651 such target must be after the first headline.}.
1652
1653 If no dedicated target exists, Org-mode will search for the words in the
1654 link. In the above example the search would be for @samp{my target}.
1655 Links starting with a star like @samp{*My Target} restrict the search to
1656 headlines. When searching, Org-mode will first try an exact match, but
1657 then move on to more and more lenient searches. For example, the link
1658 @samp{[[*My Targets]]} will find any of the following:
1659
1660 @example
1661 ** My targets
1662 ** TODO my targets are bright
1663 ** my 20 targets are
1664 @end example
1665
1666 To insert a link targeting a headline, in-buffer completion can be used.
1667 Just type a star followed by a few optional letters into the buffer and
1668 press @kbd{M-@key{TAB}}. All headlines in the current buffer will be
1669 offered as completions. @xref{Handling links}, for more commands
1670 creating links.
1671
1672 Following a link pushes a mark onto Org-mode's own mark ring. You can
1673 return to the previous position with @kbd{C-c &}. Using this command
1674 several times in direct succession goes back to positions recorded
1675 earlier.
1676
1677 @menu
1678 * Radio targets:: Make targets trigger links in plain text.
1679 * CamelCase links:: Activating CamelCase words as links
1680 @end menu
1681
1682 @node Radio targets, CamelCase links, Internal links, Internal links
1683 @subsection Radio targets
1684
1685 You can configure Org-mode to link any occurrences of certain target
1686 names in normal text. So without explicitly creating a link, the text
1687 connects to the target radioing its position. Radio targets are
1688 enclosed by triple angular brackets. For example, a target
1689 @samp{<<<My Target>>>} causes each occurrence of @samp{my target} in
1690 normal text to become activated as a link. The Org-mode file is
1691 scanned automatically for radio targets only when the file is first
1692 loaded into Emacs. To update the target list during editing, press
1693 @kbd{C-c C-c} with the cursor on or at a target.
1694
1695 @node CamelCase links, , Radio targets, Internal links
1696 @subsection CamelCase words as links
1697 @cindex completion, of CamelCase links
1698 @cindex CamelCase links, completion of
1699
1700 Org-mode also supports CamelCase words as links. This feature is not
1701 turned on by default because of the inconsistencies this system suffers
1702 from. To activate CamelCase words as links, you need to customize
1703 the option @code{org-activate-links}. A CamelCase word then leads to a
1704 text search such that @samp{CamelCaseLink} is equivalent to
1705 @samp{[[camel case link]]}.
1706
1707 @node External links, Handling links, Internal links, Hyperlinks
1708 @section External links
1709 @cindex links, external
1710 @cindex external links
1711 @cindex links, external
1712 @cindex GNUS links
1713 @cindex BBDB links
1714 @cindex URL links
1715 @cindex file links
1716 @cindex VM links
1717 @cindex RMAIL links
1718 @cindex WANDERLUST links
1719 @cindex MH-E links
1720 @cindex USENET links
1721 @cindex SHELL links
1722 @cindex Info links
1723 @cindex elisp links
1724
1725 Org-mode supports links to files, websites, Usenet and email messages,
1726 and BBDB database entries. External links are URL-like locators. They
1727 start with a short identifying string followed by a colon. There can be
1728 no space after the colon. The following list shows examples for each
1729 link type.
1730
1731 @example
1732 http://www.astro.uva.nl/~dominik @r{on the web}
1733 file:/home/dominik/images/jupiter.jpg @r{file, absolute path}
1734 file:papers/last.pdf @r{file, relative path}
1735 news:comp.emacs @r{Usenet link}
1736 mailto:adent@@galaxy.net @r{Mail link}
1737 vm:folder @r{VM folder link}
1738 vm:folder#id @r{VM message link}
1739 vm://myself@@some.where.org/folder#id @r{VM on remote machine}
1740 wl:folder @r{WANDERLUST folder link}
1741 wl:folder#id @r{WANDERLUST message link}
1742 mhe:folder @r{MH-E folder link}
1743 mhe:folder#id @r{MH-E message link}
1744 rmail:folder @r{RMAIL folder link}
1745 rmail:folder#id @r{RMAIL message link}
1746 gnus:group @r{GNUS group link}
1747 gnus:group#id @r{GNUS article link}
1748 bbdb:Richard Stallman @r{BBDB link}
1749 shell:ls *.org @r{A shell command}
1750 elisp:(find-file-other-frame "Elisp.org") @r{An elisp form to evaluate}
1751 @end example
1752
1753 A link should be enclosed in double brackets and may contain a
1754 descriptive text to be displayed instead of the url (@pxref{Link
1755 format}), for example:
1756
1757 @example
1758 [[http://www.gnu.org/software/emacs/][GNU Emacs]]
1759 @end example
1760
1761 @cindex angular brackets, around links
1762 @cindex plain text external links
1763 Org-mode also finds external links in the normal text and activates them
1764 as links. If spaces must be part of the link (for example in
1765 @samp{bbdb:Richard Stallman}), or you need to remove ambiguities about the end of
1766 the link, enclose them in angular brackets.
1767
1768 @node Handling links, Search options, External links, Hyperlinks
1769 @section Handling links
1770
1771 Org-mode provides methods to create a link in the correct syntax, to
1772 insert it into an org-mode file, and to follow the link.
1773
1774 @table @kbd
1775 @kindex C-c l
1776 @cindex storing links
1777 @item C-c l
1778 Store a link to the current location. This is a @emph{global} command
1779 which can be used in any buffer to create a link. The link will be
1780 stored for later insertion into an Org-mode buffer (see below). For
1781 Org-mode files, if there is a @samp{<<target>>} at the cursor, the link
1782 points to the target. Otherwise it points to the current headline. For
1783 VM, RMAIL, WANDERLUST, MH-E, GNUS and BBDB buffers, the link will
1784 indicate the current article/entry. For W3 and W3M buffers, the link
1785 goes to the current URL. For any other files, the link will point to
1786 the file, with a search string (@pxref{Search options}) pointing to the
1787 contents of the current line. If there is an active region, the
1788 selected words will form the basis of the search string. If the
1789 automatically created link is not working correctly or accurately
1790 enough, you can write custom functions to select the search string and
1791 to do the search for particular file types - see @ref{Custom searches}.
1792 The key binding @kbd{C-c l} is only a suggestion - see @ref{Installation}.
1793
1794 @kindex C-c C-l
1795 @cindex link completion
1796 @cindex completion, of links
1797 @cindex inserting links
1798 @item C-c C-l
1799 Insert a link. This prompts for a link to be inserted into the buffer.
1800 You can just type a link, using text for an internal link, or one of the
1801 link type prefixes mentioned in the examples above. Through completion,
1802 all links stored during the current session can be
1803 accessed@footnote{After insertion of a stored link, the link will be
1804 removed from the list of stored links. To keep it in the list later
1805 use, use a triple @kbd{C-u} prefix to @kbd{C-c C-l}, or configure the
1806 option @code{org-keep-stored-link-after-insertion}.}. The link
1807 will be inserted into the buffer, along with a descriptive text. Note
1808 that you don't have to use this command to insert a link. Links in
1809 Org-mode are plain text, and you can type or paste them straight into
1810 the buffer. By using this command, the links are automatically enclosed
1811 in double brackets, and you will be asked for the optional descriptive
1812 text. If the link is a @samp{file:} link and the linked file is located
1813 in the same directory as the current file or a subdirectory of it, the
1814 path of the file will be inserted relative to the current directory.
1815
1816 @kindex C-u C-c C-l
1817 @cindex file name completion
1818 @cindex completion, of file names
1819 @item C-u C-c C-l
1820 When @kbd{C-c C-l} is called with a @kbd{C-u} prefix argument, a link to
1821 a file will be inserted and you may use file name completion to select
1822 the name of the file. The path to the file is inserted relative to the
1823 directory of the current org file, if the linked file is in the current
1824 directory or in a subdirectory of it, or if the path is written relative
1825 to the current directory using @samp{../}. Otherwise an absolute path
1826 is used, if possible with @samp{~/} for your home directory. You can
1827 force an absolute path with two @kbd{C-u} prefixes.
1828
1829 @item C-c C-l @r{with cursor on existing link}
1830 When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
1831 link and description parts of the link.
1832
1833 @cindex following links
1834 @kindex C-c C-o
1835 @item C-c C-o
1836 Open link at point. This will launch a web browser for URLs (using
1837 @command{browse-url-at-point}), run vm/mh-e/wanderlust/rmail/gnus/bbdb
1838 for the corresponding links, and execute the command in a shell link.
1839 When the cursor is on an internal link, this commands runs the
1840 corresponding search. When the cursor is on a TAG list in a headline,
1841 it creates the corresponding TAGS view. If the cursor is on a time
1842 stamp, it compiles the agenda for that date. Furthermore, it will visit
1843 text and remote files in @samp{file:} links with Emacs and select a
1844 suitable application for local non-text files. Classification of files
1845 is based on file extension only. See option @code{org-file-apps}. If
1846 you want to override the default application and visit the file with
1847 Emacs, use a @kbd{C-u} prefix.
1848
1849 @kindex mouse-2
1850 @kindex mouse-1
1851 @item mouse-2
1852 @itemx mouse-1
1853 On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o}
1854 would. Under Emacs 22, also @kbd{mouse-1} will follow a link.
1855
1856 @kindex mouse-3
1857 @item mouse-3
1858 Like @kbd{mouse-2}, but force file links to be opened with Emacs.
1859
1860 @cindex mark ring
1861 @kindex C-c %
1862 @item C-c %
1863 Push the current position onto the mark ring, to be able to return
1864 easily. Commands following an internal link do this automatically.
1865
1866 @cindex links, returning to
1867 @kindex C-c &
1868 @item C-c &
1869 Jump back to a recorded position. A position is recorded by the
1870 commands following internal links, and by @kbd{C-c %}. Using this
1871 command several times in direct succession moves through a ring of
1872 previously recorded positions.
1873 @end table
1874
1875
1876 @node Search options, Custom searches, Handling links, Hyperlinks
1877 @section Search options in file links
1878 @cindex search option in file links
1879 @cindex file links, searching
1880
1881 File links can contain additional information to make Emacs jump to a
1882 particular location in the file when following a link. This can be a
1883 line number or a search option after a double@footnote{For backward
1884 compatibility, line numbers can also follow a single colon.} colon. For
1885 example, when the command @kbd{C-c l} creates a link (@pxref{Handling
1886 links}) to a file, it encodes the words in the current line as a search
1887 string that can be used to find this line back later when following the
1888 link with @kbd{C-c C-o}.
1889
1890 Here is the syntax of the different ways to attach a search to a file
1891 link, together with an explanation:
1892
1893 @example
1894 [[file:~/code/main.c::255]]
1895 [[file:~/xx.org::My Target]]
1896 [[file:~/xx.org::*My Target]]
1897 [[file:~/xx.org::/regexp/]]
1898 @end example
1899
1900 @table @code
1901 @item 255
1902 Jump to line 255.
1903 @item My Target
1904 Search for a link target @samp{<<My Target>>}, or do a text search for
1905 @samp{my target}, similar to the search in internal links, see
1906 @ref{Internal links}. In HTML export (@pxref{HTML export}), such a file
1907 link will become an HTML reference to the corresponding named anchor in
1908 the linked file.
1909 @item *My Target
1910 In an Org-mode file, restrict search to headlines.
1911 @item /regexp/
1912 Do a regular expression search for @code{regexp}. This uses the Emacs
1913 command @code{occur} to list all matches in a separate window. If the
1914 target file is in Org-mode, @code{org-occur} is used to create a
1915 sparse tree with the matches.
1916 @c If the target file is a directory,
1917 @c @code{grep} will be used to search all files in the directory.
1918 @end table
1919
1920 As a degenerate case, a file link with an empty file name can be used
1921 to search the current file. For example, @code{<file:::find me>} does
1922 a search for @samp{find me} in the current file, just as
1923 @samp{[[find me]]} would.
1924
1925 @node Custom searches, Remember, Search options, Hyperlinks
1926 @section Custom Searches
1927 @cindex custom search strings
1928
1929 The default mechanism for creating search strings and for doing the
1930 actual search related to a file link may not work correctly in all
1931 cases. For example, BibTeX database files have many entries like
1932 @samp{year="1993"} which would not result in good search strings,
1933 because the only unique identification for a BibTeX entry is the
1934 citation key.
1935
1936 If you come across such a problem, you can write custom functions to set
1937 the right search string for a particular file type, and to do the search
1938 for the string in the file. Using @code{add-hook}, these functions need
1939 to be added to the hook variables
1940 @code{org-create-file-search-functions} and
1941 @code{org-execute-file-search-functions}. See the docstring for these
1942 variables for more information. Org-mode actually uses this mechanism
1943 for Bib@TeX{} database files, and you can use the corresponding code as
1944 an implementation example. Search for @samp{BibTeX links} in the source
1945 file.
1946
1947
1948 @node Remember, , Custom searches, Hyperlinks
1949 @section Remember
1950 @cindex @file{remember.el}
1951
1952 Another way to create org entries with links to other files is through
1953 the @emph{Remember} package by John Wiegley. @emph{Remember} lets you
1954 store quick notes with little interruption of your work flow. See
1955 @uref{http://www.emacswiki.org/cgi-bin/wiki/RememberMode} for more
1956 information. The notes produced by @emph{Remember} can be stored in
1957 different ways, and Org-mode files are a good target. Org-mode allows
1958 you to file away notes either to a default file, or directly to the correct
1959 location in your Org-mode outline tree. The following customization
1960 will tell @emph{Remember} to use org files as target, and to create
1961 annotations compatible with Org-mode links.
1962
1963 @example
1964 (setq org-directory "~/path/to/my/orgfiles/")
1965 (setq org-default-notes-file "~/.notes")
1966 (setq remember-annotation-functions '(org-remember-annotation))
1967 (setq remember-handler-functions '(org-remember-handler))
1968 (add-hook 'remember-mode-hook 'org-remember-apply-template)
1969 @end example
1970
1971 @cindex templates, for remember
1972 In combination with Org-mode, you can use templates to generate
1973 different types of remember notes. For example, if you would like to
1974 use one template to create general TODO entries, and another one for
1975 journal entries, you could use:
1976
1977 @example
1978 (setq org-remember-templates
1979 '((?t "* TODO %?\n %i\n %a" "~/org/TODO.org")
1980 (?j "* %U %?\n\n %i\n %a" "~/org/JOURNAL.org")))
1981 @end example
1982
1983 @noindent In these entries, the character specifies how to select the
1984 template, the first string specifies the template, and the (optional)
1985 second string specifies a default file (overruling
1986 @code{org-default-notes-file}) as a target for this note.
1987
1988 When you call @kbd{M-x remember} to remember something, org will prompt
1989 for a key to select the template and then prepare the buffer like
1990 @example
1991 * TODO
1992 <file:link to where you called remember>
1993 @end example
1994
1995 @noindent or
1996
1997 @example
1998 * [2006-03-21 Tue 15:37]
1999
2000 <file:link to where you called remember>
2001 @end example
2002
2003 @noindent See the variable @code{org-remember-templates} for more details.
2004
2005 When you are finished composing a note with remember, you have to press
2006 @kbd{C-c C-c} to file the note away. The handler first prompts for a
2007 target file - if you press @key{RET}, the value of
2008 @code{org-default-notes-file} is used. Then the command offers the
2009 headings tree of the selected file. You can either immediately press
2010 @key{RET} to get the note appended to the file. Or you can use vertical
2011 cursor motion (@key{up} and @key{down}) and visibility cycling
2012 (@key{TAB}) to find a better place. Pressing @key{RET} or @key{left} or
2013 @key{right} leads to the following result.
2014
2015 @multitable @columnfractions 0.2 0.1 0.7
2016 @item @b{Cursor position} @tab @b{Key} @tab @b{Note gets inserted}
2017 @item buffer-start @tab @key{RET} @tab as level 2 heading at end of file
2018 @item on headline @tab @key{RET} @tab as sublevel of the heading at cursor
2019 @item @tab @key{left} @tab as same level, before current heading
2020 @item @tab @key{right} @tab as same level, after current heading
2021 @item not on headline @tab @key{RET}
2022 @tab at cursor position, level taken from context.
2023 Or use prefix arg to specify level manually.
2024 @end multitable
2025
2026 So a fast way to store the note is to press @kbd{C-c C-c @key{RET}
2027 @key{RET}} to append it to the default file. Even shorter would be
2028 @kbd{C-u C-c C-c}, which does the same without even showing the tree.
2029 But with little extra effort, you can push it directly to the correct
2030 location.
2031
2032 Before inserting the text into a tree, the function ensures that the
2033 text has a headline, i.e. a first line that starts with a @samp{*}.
2034 If not, a headline is constructed from the current date and some
2035 additional data. If the variable @code{org-adapt-indentation} is
2036 non-nil, the entire text is also indented so that it starts in the
2037 same column as the headline (after the asterisks).
2038
2039
2040 @node TODO items, Timestamps, Hyperlinks, Top
2041 @chapter TODO items
2042 @cindex TODO items
2043
2044 Org-mode does not maintain TODO lists as a separate document. TODO
2045 items are an integral part of the notes file, because TODO items
2046 usually come up while taking notes! With Org-mode, you simply mark
2047 any entry in a tree as being a TODO item. In this way, the
2048 information is not duplicated, and the entire context from which the
2049 item emerged is always present when you check.
2050
2051 Of course, this technique causes TODO items to be scattered throughout
2052 your file. Org-mode provides methods to give you an overview over all
2053 things you have to do.
2054
2055 @menu
2056 * TODO basics:: Marking and displaying TODO entries
2057 * TODO extensions:: Workflow and assignments
2058 * Priorities:: Some things are more important than others
2059 @end menu
2060
2061 @node TODO basics, TODO extensions, TODO items, TODO items
2062 @section Basic TODO functionality
2063
2064 Any headline can become a TODO item by starting it with the word TODO,
2065 for example:
2066
2067 @example
2068 *** TODO Write letter to Sam Fortune
2069 @end example
2070
2071 @noindent
2072 The most important commands to work with TODO entries are:
2073
2074 @table @kbd
2075 @kindex C-c C-t
2076 @cindex cycling, of TODO states
2077 @item C-c C-t
2078 Rotate the TODO state of the current item between
2079
2080 @example
2081 ,-> (unmarked) -> TODO -> DONE --.
2082 '--------------------------------'
2083 @end example
2084
2085 The same rotation can also be done ``remotely'' from the timeline and
2086 agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
2087 @kindex S-@key{right}
2088 @kindex S-@key{left}
2089 @item S-@key{right}
2090 @itemx S-@key{left}
2091 Select the following/preceding TODO state, similar to cycling. Mostly
2092 useful if more than two TODO states are possible (@pxref{TODO extensions}).
2093 @kindex C-c C-v
2094 @cindex sparse tree, for TODO
2095 @item C-c C-v
2096 View TODO items in a @emph{sparse tree} (@pxref{Sparse trees}). Folds
2097 the entire buffer, but shows all TODO items and the headings hierarchy
2098 above them. With prefix arg, show also the DONE entries. With
2099 numerical prefix N, show the tree for the Nth keyword in the variable
2100 @code{org-todo-keywords}.
2101 @kindex C-c a t
2102 @item C-c a t
2103 Show the global TODO list. This collects the TODO items from all
2104 agenda files (@pxref{Agenda views}) into a single buffer. The buffer is in
2105 @code{agenda-mode}, so there are commands to examine and manipulate
2106 the TODO entries directly from that buffer (@pxref{Agenda commands}).
2107 @xref{Global TODO list}, for more information.
2108 @c @item @code{org-agenda-include-all-todo}
2109 @c If you would like to have all your TODO items listed as part of your
2110 @c agenda, customize the variable @code{org-agenda-include-all-todo}.
2111 @end table
2112
2113
2114 @node TODO extensions, Priorities, TODO basics, TODO items
2115 @section Extended use of TODO keywords
2116 @cindex extended TODO keywords
2117
2118 The default implementation of TODO entries is just two states: TODO and
2119 DONE. You can, however, use the TODO feature for more complicated
2120 things by configuring the variables @code{org-todo-keywords} and
2121 @code{org-todo-interpretation}. Using special setup, you can even use
2122 TODO keywords in different ways in different org files.
2123
2124 Note that @i{tags} are another way to classify headlines in general and
2125 TODO items in particular (@pxref{Tags}).
2126
2127 @menu
2128 * Workflow states:: From TODO to DONE in steps
2129 * TODO types:: I do this, Fred the rest
2130 * Per file keywords:: Different files, different requirements
2131 @end menu
2132
2133 @node Workflow states, TODO types, TODO extensions, TODO extensions
2134 @subsection TODO keywords as workflow states
2135 @cindex TODO workflow
2136 @cindex workflow states as TODO keywords
2137
2138 You can use TODO keywords to indicate different states in the process
2139 of working on an item, for example:
2140
2141 @lisp
2142 (setq org-todo-keywords '("TODO" "FEEDBACK" "VERIFY" "DONE")
2143 org-todo-interpretation 'sequence)
2144 @end lisp
2145
2146 @cindex completion, of TODO keywords
2147 Changing these variables only becomes effective in a new Emacs session.
2148 With this setup, the command @kbd{C-c C-t} will cycle an entry from
2149 TODO to FEEDBACK, then to VERIFY, and finally to DONE. You may also
2150 use a prefix argument to quickly select a specific state. For example
2151 @kbd{C-3 C-c C-t} will change the state immediately to VERIFY.
2152 If you define many keywords, you can use in-buffer completion (see
2153 @ref{Completion}) to insert these words into the buffer.
2154
2155 @node TODO types, Per file keywords, Workflow states, TODO extensions
2156 @subsection TODO keywords as types
2157 @cindex TODO types
2158 @cindex names as TODO keywords
2159 @cindex types as TODO keywords
2160
2161 The second possibility is to use TODO keywords to indicate different
2162 types of action items. For example, you might want to indicate that
2163 items are for ``work'' or ``home''. If you are into David Allen's
2164 @emph{Getting Things DONE}, you might want to use todo types
2165 @samp{NEXTACTION}, @samp{WAITING}, @samp{MAYBE}. Or, when you work
2166 with several people on a single project, you might want to assign
2167 action items directly to persons, by using their names as TODO
2168 keywords. This would be set up like this:
2169
2170 @lisp
2171 (setq org-todo-keywords '("Fred" "Sara" "Lucy" "Mike" "DONE")
2172 org-todo-interpretation 'type)
2173 @end lisp
2174
2175 In this case, different keywords do not indicate a sequence, but
2176 rather different types. So it is normally not useful to change from
2177 one type to another. Therefore, in this case the behavior of the
2178 command @kbd{C-c C-t} is changed slightly@footnote{This is also true
2179 for the @kbd{t} command in the timeline and agenda buffers.}. When
2180 used several times in succession, it will still cycle through all
2181 names. But when you return to the item after some time and execute
2182 @kbd{C-c C-t} again, it will switch from each name directly to DONE.
2183 Use prefix arguments or completion to quickly select a specific name.
2184 You can also review the items of a specific TODO type in a sparse tree
2185 by using a numeric prefix to @kbd{C-c C-v}. For example, to see all
2186 things Lucy has to do, you would use @kbd{C-3 C-c C-v}. To collect
2187 Lucy's items from all agenda files into a single buffer, you
2188 would use the prefix arg as well when creating the global todo list:
2189 @kbd{C-3 C-c t}.
2190
2191 @node Per file keywords, , TODO types, TODO extensions
2192 @subsection Setting up TODO keywords for individual files
2193 @cindex keyword options
2194 @cindex per file keywords
2195
2196 It can be very useful to use different aspects of the TODO mechanism
2197 in different files, which is not possible with the global settings
2198 described above. For file-local settings, you need to add special
2199 lines to the file which set the keywords and interpretation for that
2200 file only. For example, to set one of the two examples discussed
2201 above, you need one of the following lines, starting in column zero
2202 anywhere in the file:
2203
2204 @example
2205 #+SEQ_TODO: TODO FEEDBACK VERIFY DONE
2206 #+TYP_TODO: Fred Sara Lucy Mike DONE
2207 @end example
2208
2209 @cindex Completion, of option keywords
2210 @kindex M-@key{TAB}
2211 @noindent To make sure you are using the correct keyword, type
2212 @samp{#+} into the buffer and then use @kbd{M-@key{TAB}} completion.
2213
2214 @cindex DONE, final TODO keyword
2215 Remember that the last keyword must always mean that the item is DONE
2216 (although you may use a different word). Also note that in each file,
2217 only one of the two aspects of TODO keywords can be used. After
2218 changing one of these lines, use @kbd{C-c C-c} with the cursor still
2219 in the line to make the changes known to Org-mode@footnote{Org-mode
2220 parses these lines only when Org-mode is activated after visiting a
2221 file. @kbd{C-c C-c} with the cursor in a line starting with @samp{#+}
2222 is simply restarting Org-mode, making sure that these changes will be
2223 respected.}.
2224
2225 If you want to use very many keywords, for example when working with a
2226 large group of people, you may split the names over several lines:
2227
2228 @example
2229 #+TYP_TODO: Fred Sara Lucy Mike
2230 #+TYP_TODO: Luis George Jules Jessica
2231 #+TYP_TODO: Kim Arnold Peter
2232 #+TYP_TODO: DONE
2233 @end example
2234
2235 @node Priorities, , TODO extensions, TODO items
2236 @section Priorities
2237 @cindex priorities
2238
2239 If you use Org-mode extensively to organize your work, you may end up
2240 with a number of TODO entries so large that you'd like to prioritize
2241 them. This can be done by placing a @emph{priority cookie} into the
2242 headline, like this
2243
2244 @example
2245 *** TODO [#A] Write letter to Sam Fortune
2246 @end example
2247
2248 @noindent
2249 With its standard setup, Org-mode supports priorities @samp{A},
2250 @samp{B}, and @samp{C}. @samp{A} is the highest priority. An entry
2251 without a cookie is treated as priority @samp{B}. Priorities make a
2252 difference only in the agenda (@pxref{Weekly/Daily agenda}).
2253
2254 @table @kbd
2255 @kindex @kbd{C-c ,}
2256 @item @kbd{C-c ,}
2257 Set the priority of the current headline. The command prompts for a
2258 priority character @samp{A}, @samp{B} or @samp{C}. When you press
2259 @key{SPC} instead, the priority cookie is removed from the headline.
2260 The priorities can also be changed ``remotely'' from the timeline and
2261 agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
2262
2263 @kindex S-@key{up}
2264 @kindex S-@key{down}
2265 @item S-@key{up}
2266 @itemx S-@key{down}
2267 Increase/decrease priority of current headline. Note that these keys
2268 are also used to modify time stamps (@pxref{Creating timestamps}).
2269 Furthermore, these keys are also used by CUA-mode (@pxref{Conflicts}).
2270 @end table
2271
2272 @node Timestamps, Tags, TODO items, Top
2273 @chapter Timestamps
2274
2275 Items can be labeled with timestamps to make them useful for project
2276 planning.
2277
2278 @menu
2279 * Time stamps:: Assigning a time to a tree entry
2280 * Creating timestamps:: Commands which insert timestamps
2281 * Progress logging:: Documenting when what work was done.
2282 @end menu
2283
2284
2285 @node Time stamps, Creating timestamps, Timestamps, Timestamps
2286 @section Time stamps, deadlines and scheduling
2287 @cindex time stamps
2288 @cindex ranges, time
2289 @cindex date stamps
2290 @cindex deadlines
2291 @cindex scheduling
2292
2293 A time stamp is a specification of a date (possibly with time) in a
2294 special format, either @samp{<2003-09-16 Tue>} or @samp{<2003-09-16
2295 Tue 09:39>}. A time stamp can appear anywhere in the headline or body
2296 of an org-tree entry. Its presence allows entries to be shown on specific
2297 dates in the agenda (@pxref{Weekly/Daily agenda}). We distinguish:
2298
2299 @table @var
2300 @item Plain time stamp
2301 @cindex timestamp
2302 A simple time stamp just assigns a date/time to an item. This is just
2303 like writing down an appointment in a paper agenda, or like writing down
2304 an event in a diary, when you want to take note of when something
2305 happened. In the timeline and agenda displays, the headline of an entry
2306 associated with a plain time stamp will be shown exactly on that date.
2307
2308 @item Time stamp range
2309 @cindex timerange
2310 Two time stamps connected by @samp{--} denote a time range. The
2311 headline will be shown on the first and last day of the range, and on
2312 any dates that are displayed and fall in the range. Here is an
2313 example:
2314
2315 @example
2316 ** Meeting in Amsterdam
2317 <2004-08-23 Mon>--<2004-08-26 Thu>
2318 @end example
2319
2320 @item Time stamp with SCHEDULED keyword
2321 @cindex SCHEDULED keyword
2322 If a time stamp is preceded by the word @samp{SCHEDULED:}, it means you
2323 are planning to start working on that task on the given date. So this is
2324 not about recording an event, but about planning your work. The
2325 headline will be listed under the given date. In addition, a reminder
2326 that the scheduled date has passed will be present in the compilation
2327 for @emph{today}, until the entry is marked DONE. I.e., the task will
2328 automatically be forwarded until completed.
2329
2330 @example
2331 *** TODO Call Trillian for a date on New Years Eve.
2332 SCHEDULED: <2004-12-25 Sat>
2333 @end example
2334
2335 @item Time stamp with DEADLINE keyword
2336 @cindex DEADLINE keyword
2337 If a time stamp is preceded by the word @samp{DEADLINE:}, the task
2338 (most likely a TODO item) is supposed to be finished on that date, and
2339 it will be listed then. In addition, the compilation for @emph{today}
2340 will carry a warning about the approaching or missed deadline,
2341 starting @code{org-deadline-warning-days} before the due date, and
2342 continuing until the entry is marked DONE. An example:
2343
2344 @example
2345 *** TODO write article about the Earth for the Guide
2346 The editor in charge is <bbdb:Ford Prefect>
2347 DEADLINE: <2004-02-29 Sun>
2348 @end example
2349 @item Time stamp with CLOSED keyword
2350 @cindex CLOSED keyword
2351 When @code{org-log-done} is non-nil, Org-mode will automatically insert
2352 a special time stamp each time a TODO entry is marked done
2353 (@pxref{Progress logging}). This time stamp is enclosed in square
2354 brackets instead of angular brackets.
2355
2356 @item Time range with CLOCK keyword
2357 @cindex CLOCK keyword
2358 When using the clock to time the work that is being done on specific
2359 items, time ranges preceded by the CLOCK keyword are inserted
2360 automatically into the file. The time stamps are enclosed in square
2361 brackets instead of angular brackets. @xref{Clocking work time}.
2362 @end table
2363
2364 @node Creating timestamps, Progress logging, Time stamps, Timestamps
2365 @section Creating timestamps
2366 @cindex creating timestamps
2367 @cindex timestamps, creating
2368
2369 For Org-mode to recognize time stamps, they need to be in the specific
2370 format. All commands listed below produce time stamps in the correct
2371 format.
2372
2373 @table @kbd
2374 @kindex C-c .
2375 @item C-c .
2376 Prompt for a date and insert a corresponding time stamp. When the
2377 cursor is at a previously used time stamp, it is updated to NOW. When
2378 this command is used twice in succession, a time range is inserted.
2379
2380 @kindex C-u C-c .
2381 @item C-u C-c .
2382 Like @kbd{C-c .}, but use the alternative format which contains date
2383 and time. The default time can be rounded to multiples of 5 minutes,
2384 see the option @code{org-time-stamp-rounding-minutes}.
2385
2386 @kindex C-c !
2387 @item C-c !
2388 Like @kbd{C-c .}, but insert an inactive time stamp not triggering the
2389 agenda.
2390
2391 @kindex C-c <
2392 @item C-c <
2393 Insert a time stamp corresponding to the cursor date in the Calendar.
2394
2395 @kindex C-c >
2396 @item C-c >
2397 Access the Emacs calendar for the current date. If there is a
2398 timestamp in the current line, goto the corresponding date
2399 instead.
2400
2401 @kindex C-c C-o
2402 @item C-c C-o
2403 Access the agenda for the date given by the time stamp at point
2404 (@pxref{Weekly/Daily agenda}).
2405
2406 @kindex C-c C-d
2407 @item C-c C-d
2408 Insert @samp{DEADLINE} keyword along with a stamp. The insertion will
2409 happen in the line directly following the headline.
2410 @c FIXME Any CLOSED timestamp will be removed.????????
2411
2412 @kindex C-c C-w
2413 @cindex sparse tree, for deadlines
2414 @item C-c C-w
2415 Create a sparse tree with all deadlines that are either past-due, or
2416 which will become due within @code{org-deadline-warning-days}.
2417 With @kbd{C-u} prefix, show all deadlines in the file. With a numeric
2418 prefix, check that many days. For example, @kbd{C-1 C-c C-w} shows
2419 all deadlines due tomorrow.
2420
2421 @kindex C-c C-s
2422 @item C-c C-s
2423 Insert @samp{SCHEDULED} keyword along with a stamp. The insertion will
2424 happen in the line directly following the headline. Any CLOSED
2425 timestamp will be removed.
2426
2427 @kindex S-@key{left}
2428 @kindex S-@key{right}
2429 @item S-@key{left}
2430 @itemx S-@key{right}
2431 Change date at cursor by one day. These key bindings conflict with
2432 CUA-mode (@pxref{Conflicts}).
2433
2434 @kindex S-@key{up}
2435 @kindex S-@key{down}
2436 @item S-@key{up}
2437 @itemx S-@key{down}
2438 Change the item under the cursor in a timestamp. The cursor can be on
2439 a year, month, day, hour or minute. Note that if the cursor is not at
2440 a time stamp, these same keys modify the priority of an item.
2441 (@pxref{Priorities}). The key bindings also conflict with CUA-mode
2442 (@pxref{Conflicts}).
2443
2444
2445 @kindex C-c C-y
2446 @cindex evaluate time range
2447 @item C-c C-y
2448 Evaluate a time range by computing the difference between start and
2449 end. With prefix arg, insert result after the time range (in a table:
2450 into the following column).
2451 @end table
2452
2453 @cindex date, reading in minibuffer
2454 @cindex time, reading in minibuffer
2455 @cindex calendar, for selecting date
2456 When Org-mode prompts for a date/time, the function reading your input
2457 will replace anything you choose not to specify with the current date
2458 and time. For details, see the documentation string of
2459 @command{org-read-date}. Also, a calender will pop up to allow
2460 selecting a date. The calendar can be fully controlled from the
2461 minibuffer, and a date can be selected with the following commands:
2462
2463 @table @kbd
2464 @kindex <
2465 @item <
2466 Scroll calendar backwards by one month.
2467 @kindex >
2468 @item >
2469 Scroll calendar forwards by one month.
2470 @kindex mouse-1
2471 @item mouse-1
2472 Select date by clicking on it.
2473 @kindex S-@key{right}
2474 @item S-@key{right}
2475 One day forward.
2476 @kindex S-@key{left}
2477 @item S-@key{left}
2478 One day back.
2479 @kindex S-@key{down}
2480 @item S-@key{down}
2481 One week forward.
2482 @kindex S-@key{up}
2483 @item S-@key{up}
2484 One week back.
2485 @kindex M-S-@key{right}
2486 @item M-S-@key{right}
2487 One month forward.
2488 @kindex M-S-@key{left}
2489 @item M-S-@key{left}
2490 One month back.
2491 @kindex @key{RET}
2492 @item @key{RET}
2493 Choose date in calendar (only if nothing typed into minibuffer).
2494 @end table
2495
2496 @node Progress logging, , Creating timestamps, Timestamps
2497 @section Progress Logging
2498 @cindex progress logging
2499 @cindex logging, of progress
2500
2501 Org-mode can automatically record a time stamp when you mark a TODO item
2502 as DONE. You can also measure precisely the time you spent on specific
2503 items in a project by starting and stopping a clock when you start and
2504 stop working on an aspect of a project.
2505
2506 @menu
2507 * Closing items:: When was this entry marked DONE?
2508 * Clocking work time:: When exactly did you work on this item?
2509 @end menu
2510
2511 @node Closing items, Clocking work time, Progress logging, Progress logging
2512 @subsection Closing items
2513
2514 If you want to keep track of @emph{when} a certain TODO item was
2515 finished, turn on logging with
2516
2517 @lisp
2518 (setq org-log-done t)
2519 @end lisp
2520
2521 @noindent
2522 Then each time you turn a TODO entry into DONE using either @kbd{C-c
2523 C-t} in the Org-mode buffer or @kbd{t} in the agenda buffer, a line
2524 @samp{CLOSED: [timestamp]} will be inserted just after the headline.
2525 If you turn the entry back into a TODO item again through further
2526 state cycling, that line will be removed again. In the timeline
2527 (@pxref{Timeline}) and in the agenda (@pxref{Weekly/Daily agenda}),
2528 you can then use the @kbd{l} key to display the TODO items closed on
2529 each day, giving you an overview of what has been done on a day.
2530
2531 @node Clocking work time, , Closing items, Progress logging
2532 @subsection Clocking work time
2533
2534 Org-mode allows you to clock the time you spent on specific tasks in a
2535 project. When you start working on an item, you can start the clock.
2536 When you stop working on that task, or when you mark the task done, the
2537 clock is stopped and the corresponding time interval is recorded. It
2538 also computes the total time spent on each subtree of a project.
2539
2540 @table @kbd
2541 @kindex C-c C-x C-i
2542 @item C-c C-x C-i
2543 Start the clock on the current item (clock-in). This inserts the CLOCK
2544 keyword together with a timestamp.
2545 @kindex C-c C-x C-o
2546 @item C-c C-x C-o
2547 Stop the clock (clock-out). The inserts another timestamp at the same
2548 location where the clock was last started. It also directly computes
2549 the resulting time in inserts it after the time range as @samp{=>
2550 HH:MM}.
2551 @kindex C-c C-t
2552 @item C-c C-t
2553 Changing the TODO state of an item to DONE automatically stops the clock
2554 if it is running in this same item.
2555 @kindex C-c C-x C-x
2556 @item C-c C-x C-x
2557 Cancel the current clock. This is useful if a clock was started by
2558 mistake, or if you ended up working on something else.
2559 @kindex C-c C-x C-d
2560 @item C-c C-x C-d
2561 Display time summaries for each subtree in the current buffer. This
2562 puts overlays at the end of each headline, showing the total time
2563 recorded under that heading, including the time of any subheadings. You
2564 can use visibility cycling to study the tree, but the overlays disappear
2565 automatically when the buffer is changed.
2566 @kindex C-c C-x C-r
2567 @item C-c C-x C-r
2568 Insert a dynamic block containing a clock report as an org-mode table
2569 into the current file.
2570 @example
2571 #+BEGIN: clocktable :maxlevel 2 :emphasize nil
2572
2573 #+END: clocktable
2574 @end example
2575 @noindent
2576 If such a block already exists, its content is replaced by the new
2577 table. The @samp{BEGIN} line can specify options:
2578 @example
2579 :maxlevels @r{Maximum level depth to which times are listed in the table.}
2580 :emphasize @r{When @code{t}, emphasize level one and level two items}
2581 @end example
2582 @end table
2583
2584 The @kbd{l} key may be used in the timeline (@pxref{Timeline}) and in
2585 the agenda (@pxref{Weekly/Daily agenda}) to show which tasks have been
2586 worked on or closed during a day.
2587
2588 @node Tags, Agenda views, Timestamps, Top
2589 @chapter Tags
2590 @cindex tags
2591 @cindex headline tagging
2592 @cindex matching, tags
2593 @cindex sparse tree, tag based
2594
2595 If you wish to implement a system of labels and contexts for
2596 cross-correlating information, an excellent way is to assign @i{tags} to
2597 headlines. Org-mode has extensive support for using tags.
2598
2599 Every headline can contain a list of tags, at the end of the headline.
2600 Tags are normal words containing letters, numbers, @samp{_}, and
2601 @samp{@@}. Tags must be preceded and followed by a single colon; like
2602 @samp{:WORK:}. Several tags can be specified like @samp{:WORK:URGENT:}.
2603
2604 @menu
2605 * Tag inheritance:: Tags use the tree structure of the outline
2606 * Setting tags:: How to assign tags to a headline
2607 * Tag searches:: Searching for combinations of tags
2608 @end menu
2609
2610 @node Tag inheritance, Setting tags, Tags, Tags
2611 @section Tag inheritance
2612 @cindex inheritance, of tags
2613
2614 @i{Tags} make use of the hierarchical structure of outline trees. If a
2615 heading has a certain tag, all subheadings will inherit the tag as
2616 well. For example, in the list
2617
2618 @example
2619 * Meeting with the French group :WORK:
2620 ** Summary by Frank :BOSS:NOTES:
2621 *** TODO Prepare slides for him :ACTION:
2622 @end example
2623
2624 @noindent
2625 the final heading will have the tags @samp{:WORK:}, @samp{:BOSS:},
2626 @samp{:NOTES:}, and @samp{:ACTION:}. When executing tag searches and
2627 Org-mode finds that a certain headline matches the search criterion, it
2628 will not check any sublevel headline, assuming that these likely also
2629 match, and that the list of matches can become very long. This may
2630 not be what you want, however, and you can influence inheritance and
2631 searching using the variables @code{org-use-tag-inheritance} and
2632 @code{org-tags-match-list-sublevels}.
2633
2634 @node Setting tags, Tag searches, Tag inheritance, Tags
2635 @section Setting tags
2636 @cindex setting tags
2637
2638 @kindex M-@key{TAB}
2639 Tags can simply be typed into the buffer at the end of a headline.
2640 After a colon, @kbd{M-@key{TAB}} offers completion on tags. There is
2641 also a special command for inserting tags:
2642
2643 @table @kbd
2644 @kindex C-c C-c
2645 @item C-c C-c
2646 @cindex completion, of tags
2647 Enter new tags for the current headline. Org-mode will either offer
2648 completion or a special single-key interface for setting tags, see
2649 below. After pressing @key{RET}, the tags will be inserted and aligned
2650 to @code{org-tags-column}. When called with a @kbd{C-u} prefix, all
2651 tags in the current buffer will be aligned to that column, just to make
2652 things look nice. TAGS are automatically realigned after promotion,
2653 demotion, and TODO state changes (@pxref{TODO basics}).
2654 @end table
2655
2656 Org will support tag insertion based on a @emph{list of tags}. By
2657 default this list is constructed dynamically, containing all tags
2658 currently used in the buffer. You may also globally specify a hard list
2659 of tags with the variable @code{org-tag-alist}. Finally you can set
2660 the allowed tags for a given file with lines like
2661
2662 @example
2663 #+TAGS: @@WORK @@HOME @@TENNISCLUB
2664 #+TAGS: Laptop Car PC Sailboat
2665 @end example
2666
2667 The default support method is minibuffer completion. However, Org-mode
2668 also implements a much better method: @emph{fast tag selection}. This
2669 method allows to select and deselect tags with a single key per tag. To
2670 function efficiently, you should assign unique keys to all tags. This
2671 can be done globally with
2672
2673 @lisp
2674 (setq org-tag-alist '(("@@WORK" . ?w) ("@@HOME" . ?h) ("Laptop" . ?l)))
2675 @end lisp
2676
2677 @noindent or on a per-file basis with
2678
2679 @example
2680 #+TAGS: @@WORK(w) @@HOME(h) @@TENNISCLUB(t) Laptop(l) PC(p)
2681 @end example
2682
2683 @noindent
2684 You can also group together tags that are mutually exclusive. With
2685 curly braces@footnote{In @code{org-mode-alist} use
2686 @code{'(:startgroup)} and @code{'(:endgroup)}, respectively. Several
2687 groups are allowed.}
2688
2689 @example
2690 #+TAGS: @{ @@WORK(w) @@HOME(h) @@TENNISCLUB(t) @} Laptop(l) PC(p)
2691 @end example
2692
2693 @noindent you indicate that at most one of @samp{@@WORK}, @samp{@@HOME},
2694 and @samp{@@SAILBOAT} should be selected.
2695
2696 @noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
2697 these lines to activate any changes.
2698
2699 If at least one tag has a selection key, pressing @kbd{C-c C-c} will
2700 automatically present you with a special interface, listing inherited
2701 tags, the tags of the current headline, and a list of all legal tags
2702 with corresponding keys@footnote{Keys will automatically assigned to
2703 tags which have no configured keys.}. Pressing keys for the tags will
2704 add or remove them from the list of tags in the current line. Selecting
2705 a tag in a group of mutually exclusive tags will turn off any other tags
2706 from that group. @key{SPC} clears all tags for this line, @kbd{RET}
2707 accepts the modified set, and @kbd{C-g} aborts without installing
2708 changes. This method lets you assign tags to a headline with very few
2709 keys. With the above setup, you could clear the current tags and set
2710 @samp{@@HOME}, @samp{Laptop} and @samp{PC} tags with just the following
2711 keys: @kbd{C-c C-c @key{SPC} h l p @key{RET}}. Switching from
2712 @samp{@@HOME} to @samp{@@WORK} would be done with @kbd{C-c C-c w
2713 @key{RET}}.
2714
2715 What if you have globally defined your preferred set of tags using the
2716 variable @code{org-tag-alist}, but would like to use a dynamic tag list
2717 in a specific file? Just add an empty TAGS option line to that file:
2718
2719 @example
2720 #+TAGS:
2721 @end example
2722
2723
2724
2725 @node Tag searches, , Setting tags, Tags
2726 @section Tag searches
2727 @cindex tag searches
2728
2729 Once a tags system has been set up, it can be used to collect related
2730 information into special lists.
2731
2732 @table @kbd
2733 @kindex C-c \
2734 @item C-c \
2735 Create a sparse tree with all headlines matching a tags search.
2736 @kindex C-c a m
2737 @item C-c a m
2738 Create a global list of tag matches from all agenda files.
2739 @xref{Matching headline tags}.
2740 @kindex C-c a M
2741 @item C-c a M
2742 Create a global list of tag matches from all agenda files, but check
2743 only TODO items and force checking subitems (see variable
2744 @code{org-tags-match-list-sublevels}).
2745 @end table
2746
2747 A @i{tags} search string can use Boolean operators @samp{&} for AND and
2748 @samp{|} for OR. @samp{&} binds more strongly than @samp{|}.
2749 Parenthesis are currently not implemented. A tag may also be preceded
2750 by @samp{-}, to select against it, and @samp{+} is syntactic sugar for
2751 positive selection. The AND operator @samp{&} is optional when @samp{+}
2752 or @samp{-} is present. For example, @samp{+WORK-BOSS} would select all
2753 headlines that are tagged @samp{:WORK:}, but discard those also tagged
2754 @samp{:BOSS:}. The search string @samp{WORK|LAPTOP} selects all lines
2755 tagged @samp{:WORK:} or @samp{:LAPTOP:}. The string
2756 @samp{WORK|LAPTOP&NIGHT} requires that the @samp{:LAPTOP:} lines are
2757 also tagged @samp{NIGHT}.
2758
2759 @node Agenda views, Embedded LaTeX, Tags, Top
2760 @chapter Agenda Views
2761 @cindex agenda views
2762
2763 Due to the way Org-mode works, TODO items, time-stamped items, and
2764 tagged headlines can be scattered throughout a file or even a number of
2765 files. To get an overview over open action items, or over events that
2766 are important for a particular date, this information must be collected,
2767 sorted and displayed in an organized way.
2768
2769 Org-mode can select items based on various criteria, and display them
2770 in a separate buffer. Three different views are provided:
2771
2772 @itemize @bullet
2773 @item
2774 an @emph{agenda} that is like a calendar and shows information
2775 for specific dates
2776 @item
2777 a @emph{TODO list} that covers all unfinished
2778 action items, and
2779 @item
2780 a @emph{tags view} that shows information based on
2781 the tags associated with headlines in the outline tree.
2782 @end itemize
2783
2784 @noindent
2785 The extracted information is displayed in a special @emph{agenda
2786 buffer}. This buffer is read-only, but provides commands to visit the
2787 corresponding locations in the original Org-mode files, and even to
2788 edit these files remotely.
2789
2790 @menu
2791 * Agenda files:: Files being searched for agenda information
2792 * Agenda dispatcher:: Keyboard access to agenda views
2793 * Weekly/Daily agenda:: The calendar page with current tasks
2794 * Global TODO list:: All unfinished action items
2795 * Matching headline tags:: Structured information with fine-tuned search
2796 * Timeline:: Time-sorted view for single file
2797 * Agenda commands:: Remote editing of org trees
2798 @end menu
2799
2800 @node Agenda files, Agenda dispatcher, Agenda views, Agenda views
2801 @section Agenda files
2802
2803 The information to be shown is collected from all @emph{agenda files},
2804 the files listed in the variable @code{org-agenda-files}@footnote{If the
2805 value of that variable is not a list, but a single file name, then the
2806 list of agenda files will be maintained in that external file.}. Thus even
2807 if you only work with a single Org-mode file, this file should be put
2808 into that list@footnote{When using the dispatcher pressing @kbd{1}
2809 before selecting a command will actually limit the command to the
2810 current file, and ignore @code{org-agenda-files} until the next
2811 dispatcher command.}. You can customize @code{org-agenda-files}, but
2812 the easiest way to maintain it is through the following commands
2813
2814 @cindex files, adding to agenda list
2815 @table @kbd
2816 @kindex C-c [
2817 @item C-c [
2818 Add current file to the list of agenda files. The file is added to
2819 the front of the list. If it was already in the list, it is moved to
2820 the front. With prefix arg, file is added/moved to the end.
2821 @kindex C-c ]
2822 @item C-c ]
2823 Remove current file from the list of agenda files.
2824 @kindex C-,
2825 @item C-,
2826 Cycle through agenda file list, visiting one file after the other.
2827 @end table
2828
2829 @noindent
2830 The Org menu contains the current list of files and can be used
2831 to visit any of them.
2832
2833 @node Agenda dispatcher, Weekly/Daily agenda, Agenda files, Agenda views
2834 @section The agenda dispatcher
2835 @cindex agenda dispatcher
2836 @cindex dispatching agenda commands
2837 @cindex custom agenda commands
2838 @cindex agenda commands, custom
2839 The views are created through a dispatcher that should be bound to a
2840 global key, for example @kbd{C-c a} (@pxref{Installation}). In the
2841 following we will assume that @kbd{C-c a} is indeed how the dispatcher
2842 is accessed and list keyboard access to commands accordingly. After
2843 pressing @kbd{C-c a}, an additional letter is required to execute a
2844 command. The dispatcher offers the following default commands:
2845 @table @kbd
2846 @item a
2847 Create the calendar-like agenda (@pxref{Weekly/Daily agenda}).
2848 @item t / T
2849 Create a list of all TODO items (@pxref{Global TODO list}).
2850 @item m / M
2851 Create a list of headlines matching a TAGS expression (@pxref{Matching
2852 headline tags}).
2853 @end table
2854
2855 You can also define custom commands that will be accessible through
2856 the dispatcher, just like the default commands. Custom commands are
2857 global searches for tags and specific TODO keywords, or a variety of
2858 sparse tree creating commands (@pxref{Sparse trees}). As sparse trees
2859 are only defined for a single org-mode file, these latter commands act
2860 on the current buffer instead of the list of agenda files.
2861
2862 @kindex C-c a C
2863 Custom commands are configured in the variable
2864 @code{org-agenda-custom-commands}. You can customize this variable,
2865 for example by pressing @kbd{C-c a C}. You can also directly set it
2866 with Emacs Lisp in @file{.emacs}. For example:
2867
2868 @lisp
2869 (setq org-agenda-custom-commands
2870 '(("w" todo "WAITING")
2871 ("u" tags "+BOSS-URGENT")
2872 ("U" tags-tree "+BOSS-URGENT")
2873 ("f" occur-tree "\\<FIXME\\>")))
2874 @end lisp
2875
2876 @noindent will define @kbd{C-c a w} as a global search for
2877 TODO entries with @samp{WAITING} as the TODO keyword, @kbd{C-c a u} as a
2878 global tags search for headlines marked @samp{:BOSS:} but not
2879 @samp{:URGENT:}, @kbd{C-c a U} to do the same search but only in the
2880 current buffer and display the result as a sparse tree, and @kbd{C-c a
2881 f} to create a sparse tree with all entries containing the word
2882 @samp{FIXME}. For more information, look at the documentation string
2883 of the variable @code{org-agenda-custom-commands}.
2884
2885 @node Weekly/Daily agenda, Global TODO list, Agenda dispatcher, Agenda views
2886 @section The weekly/daily agenda
2887 @cindex agenda
2888
2889 The purpose of the weekly/daily @emph{agenda} is to act like a page of
2890 a paper agenda, showing all the tasks for the current week or day.
2891
2892 @table @kbd
2893 @cindex org-agenda, command
2894 @kindex C-c a a
2895 @item C-c a a
2896 Compile an agenda for the current week from a list of org files. The
2897 agenda shows the entries for each day. With a @kbd{C-u} prefix (or
2898 when the variable @code{org-agenda-include-all-todo} is @code{t}), all
2899 unfinished TODO items (including those without a date) are also listed at
2900 the beginning of the buffer, before the first date.@*
2901 @end table
2902
2903 Remote editing from the agenda buffer means, for example, that you can
2904 change the dates of deadlines and appointments from the agenda buffer.
2905 The commands available in the Agenda buffer are listed in @ref{Agenda
2906 commands}.
2907
2908 @menu
2909 * Categories:: Not all tasks are equal
2910 * Time-of-day specifications:: How the agenda knows the time
2911 * Calendar/Diary integration:: Integrating Anniversaries and more
2912 * Sorting of agenda items:: The order of things
2913 @end menu
2914
2915 @node Categories, Time-of-day specifications, Weekly/Daily agenda, Weekly/Daily agenda
2916 @subsection Categories
2917
2918 @cindex category
2919 In the agenda buffer, each entry is preceded by a @emph{category},
2920 which is derived from the file name. The category can also be set
2921 with a special line anywhere in the buffer, looking like this:
2922
2923 @example
2924 #+CATEGORY: Thesis
2925 @end example
2926
2927 If there are several such lines in a file, each specifies the category
2928 for the text below it (but the first category also applies to any text
2929 before the first CATEGORY line). The display in the agenda buffer looks
2930 best if the category is not longer than 10 characters.
2931
2932 @node Time-of-day specifications, Calendar/Diary integration, Categories, Weekly/Daily agenda
2933 @subsection Time-of-Day Specifications
2934
2935 Org-mode checks each agenda item for a time-of-day specification. The
2936 time can be part of the time stamp that triggered inclusion into the
2937 agenda, for example as in @w{@samp{<2005-05-10 Tue 19:00>}}. Time
2938 ranges can be specified with two time stamps, like
2939 @c
2940 @w{@samp{<2005-05-10 Tue 20:30>--<2005-05-10 Tue 22:15>}}.
2941
2942 In the headline of the entry itself, a time(range) may also appear as
2943 plain text (like @samp{12:45} or a @samp{8:30-1pm}. If the agenda
2944 integrates the Emacs diary (@pxref{Calendar/Diary integration}), time
2945 specifications in diary entries are recognized as well.
2946
2947 For agenda display, Org-mode extracts the time and displays it in a
2948 standard 24 hour format as part of the prefix. The example times in
2949 the previous paragraphs would end up in the agenda like this:
2950
2951 @example
2952 8:30-13:00 Arthur Dent lies in front of the bulldozer
2953 12:45...... Ford Prefect arrives and takes Arthur to the pub
2954 19:00...... The Vogon reads his poem
2955 20:30-22:15 Marwin escorts the Hitchhikers to the bridge
2956 @end example
2957
2958 If the agenda is in single-day mode, or for the display of today, the
2959 timed entries are embedded in a time grid, like
2960
2961 @example
2962 8:00...... ------------------
2963 8:30-13:00 Arthur Dent lies in front of the bulldozer
2964 10:00...... ------------------
2965 12:00...... ------------------
2966 12:45...... Ford Prefect arrives and takes Arthur to the pub
2967 14:00...... ------------------
2968 16:00...... ------------------
2969 18:00...... ------------------
2970 19:00...... The Vogon reads his poem
2971 20:00...... ------------------
2972 20:30-22:15 Marwin escorts the Hitchhikers to the bridge
2973 @end example
2974
2975 The time grid can be turned on and off with the variable
2976 @code{org-agenda-use-time-grid}, and can be configured with
2977 @code{org-agenda-time-grid}.
2978
2979
2980 @node Calendar/Diary integration, Sorting of agenda items, Time-of-day specifications, Weekly/Daily agenda
2981 @subsection Calendar/Diary integration
2982 @cindex calendar integration
2983 @cindex diary integration
2984
2985 Emacs contains the calendar and diary by Edward M. Reingold. The
2986 calendar displays a three-month calendar with holidays from different
2987 countries and cultures. The diary allows you to keep track of
2988 anniversaries, lunar phases, sunrise/set, recurrent appointments
2989 (weekly, monthly) and more. In this way, it is quite complementary to
2990 Org-mode. It can be very useful to combine output from Org-mode with
2991 the diary.
2992
2993 In order to include entries from the Emacs diary into Org-mode's
2994 agenda, you only need to customize the variable
2995
2996 @lisp
2997 (setq org-agenda-include-diary t)
2998 @end lisp
2999
3000 @noindent After that, everything will happen automatically. All diary
3001 entries including holidays, anniversaries etc will be included in the
3002 agenda buffer created by Org-mode. @key{SPC}, @key{TAB}, and
3003 @key{RET} can be used from the agenda buffer to jump to the diary
3004 file in order to edit existing diary entries. The @kbd{i} command to
3005 insert new entries for the current date works in the agenda buffer, as
3006 well as the commands @kbd{S}, @kbd{M}, and @kbd{C} to display
3007 Sunrise/Sunset times, show lunar phases and to convert to other
3008 calendars, respectively. @kbd{c} can be used to switch back and forth
3009 between calendar and agenda.
3010
3011 @node Sorting of agenda items, , Calendar/Diary integration, Weekly/Daily agenda
3012 @subsection Sorting of agenda items
3013 @cindex sorting, of agenda items
3014 @cindex priorities, of agenda items
3015 The entries for each day are sorted. The default order is to first
3016 collect all items containing an explicit time-of-day specification.
3017 These entries will be shown at the beginning of the list, as a
3018 @emph{schedule} for the day. After that, items remain grouped in
3019 categories, in the sequence given by @code{org-agenda-files}. Within
3020 each category, items are sorted by priority (@pxref{Priorities}).
3021
3022 The priority is a numerical quantity composed of the base priority
3023 (2000 for priority @samp{A}, 1000 for @samp{B}, and 0 for @samp{C}),
3024 plus additional increments for overdue scheduled or deadline items.
3025
3026 Sorting can be customized using the variable
3027 @code{org-agenda-sorting-strategy}.
3028
3029
3030 @node Global TODO list, Matching headline tags, Weekly/Daily agenda, Agenda views
3031 @section The global TODO list
3032 @cindex global TODO list
3033 @cindex TODO list, global
3034
3035 The global TODO list contains all unfinished TODO items, formatted and
3036 collected into a single place.
3037
3038 @table @kbd
3039 @kindex C-c a t
3040 @item C-c a t
3041 Show the global TODO list. This collects the TODO items from all
3042 agenda files (@pxref{Agenda views}) into a single buffer. The buffer is in
3043 @code{agenda-mode}, so there are commands to examine and manipulate
3044 the TODO entries directly from that buffer (@pxref{Agenda commands}).
3045 @kindex C-c a T
3046 @item C-c a T
3047 Like the above, but allows selection of a specific TODO keyword. You can
3048 also do this by specifying a prefix argument to @kbd{C-c a t}. With a
3049 @kbd{C-u} prefix you are prompted for a keyword. With a numeric
3050 prefix, the Nth keyword in @code{org-todo-keywords} is selected.
3051 @kindex r
3052 The @kbd{r} key in the agenda buffer regenerates it, and you can give
3053 a prefix argument to this command to change the selected TODO keyword,
3054 for example @kbd{3 r}. If you often need a search for a specific
3055 keyword, define a custom command for it (@pxref{Agenda dispatcher}).
3056 @end table
3057
3058 Remote editing of TODO items means that you can change the state of a
3059 TODO entry with a single key press. The commands available in the
3060 TODO list are described in @ref{Agenda commands}.
3061
3062 Nomally the global todo list simply shows all headlines with TODO
3063 keywords. This list can become very long. There are two ways to keep
3064 it more compact:
3065 @itemize @minus
3066 @item
3067 Some people view a TODO item that has been @emph{scheduled} for
3068 execution (@pxref{Time stamps}) as no longer @emph{open}. Configure the
3069 variable @code{org-agenda-todo-ignore-scheduled} to exclude scheduled
3070 items from the global TODO list.
3071 @item
3072 TODO items may have sublevels to break up the task into subtasks. In
3073 such cases it may be enough to list only the highest level TODO headline
3074 and omit the sublevels from the global list. Configure the variable
3075 @code{org-agenda-todo-list-sublevels} to get this behavior.
3076 @end itemize
3077
3078
3079 @node Matching headline tags, Timeline, Global TODO list, Agenda views
3080 @section Matching headline tags
3081 @cindex matching, of tags
3082 @cindex tags view
3083
3084 If headlines in the agenda files are marked with @emph{tags}
3085 (@pxref{Tags}), you can select headlines based on the tags that apply
3086 to them and collect them into an agenda buffer.
3087
3088 @table @kbd
3089 @kindex C-c a m
3090 @item C-c a m
3091 Produce a list of all headlines that match a given set of tags. The
3092 command prompts for a selection criterion, which is a boolean logic
3093 expression with tags, like @samp{+WORK+URGENT-WITHBOSS} or
3094 @samp{WORK|HOME} (@pxref{Tags}). If you often need a specific search,
3095 define a custom command for it (@pxref{Agenda dispatcher}).
3096 @kindex C-c a M
3097 @item C-c a M
3098 Like @kbd{C-c a m}, but only select headlines that are also TODO items
3099 and force checking subitems (see variable
3100 @code{org-tags-match-list-sublevels}.
3101 @end table
3102
3103 The commands available in the tags list are described in @ref{Agenda
3104 commands}.
3105
3106 @node Timeline, Agenda commands, Matching headline tags, Agenda views
3107 @section Timeline for a single file
3108 @cindex single file summary
3109 @cindex agenda, for single file
3110 @cindex timeline, single file
3111 @cindex time-sorted view
3112
3113 The timeline is not really an agenda view, because it only summarizes
3114 items from a single Org-mode file. But it also uses the agenda buffer
3115 and provides similar commands, so we discuss it here. The timeline
3116 shows all time-stamped items in a single Org-mode file (or the
3117 selected part of it), in a @emph{time-sorted view}. The main purpose of
3118 this command is to give an overview over events in a project.
3119
3120 @table @kbd
3121 @kindex C-c C-r
3122 @item C-c C-r
3123 Show a time-sorted view of the org file, with all time-stamped items.
3124 When called with a @kbd{C-u} prefix, all unfinished TODO entries
3125 (scheduled or not) are also listed under the current date.
3126 @end table
3127
3128 @noindent
3129 The commands available in the timeline buffer are listed in
3130 @ref{Agenda commands}.
3131
3132 @node Agenda commands, , Timeline, Agenda views
3133 @section Commands in the agenda buffer
3134 @cindex commands, in agenda buffer
3135
3136 Entries in the agenda buffer are linked back to the org file or diary
3137 file where they originate. You are not allowed to edit the agenda
3138 buffer itself, but commands are provided to show and jump to the
3139 original entry location, and to edit the org-files ``remotely'' from
3140 the agenda buffer. In this way, all information is stored only once,
3141 removing the risk that your agenda and note files may diverge.
3142
3143 Some commands can be executed with mouse clicks on agenda lines. For
3144 the other commands, the cursor needs to be in the desired line.
3145
3146 @table @kbd
3147 @tsubheading{Motion}
3148 @kindex n
3149 @item n
3150 Next line (same as @key{up}).
3151 @kindex p
3152 @item p
3153 Previous line (same as @key{down}).
3154 @tsubheading{View/GoTo org file}
3155 @kindex mouse-3
3156 @kindex @key{SPC}
3157 @item mouse-3
3158 @itemx @key{SPC}
3159 Display the original location of the item in another window.
3160
3161 @kindex L
3162 @item L
3163 Display original location and recenter that window.
3164
3165 @kindex mouse-2
3166 @kindex mouse-1
3167 @kindex @key{TAB}
3168 @item mouse-2
3169 @itemx mouse-1
3170 @itemx @key{TAB}
3171 Go to the original location of the item in another window. Under Emacs
3172 22, @kbd{mouse-1} will also works for this.
3173
3174 @kindex @key{RET}
3175 @itemx @key{RET}
3176 Go to the original location of the item and delete other windows.
3177
3178 @kindex f
3179 @item f
3180 Toggle Follow mode. In Follow mode, as you move the cursor through
3181 the agenda buffer, the other window always shows the corresponding
3182 location in the org file. The initial setting for this mode in new
3183 agenda buffers can be set with the variable
3184 @code{org-agenda-start-with-follow-mode}.
3185
3186 @kindex l
3187 @item l
3188 Toggle Logbook mode. In Logbook mode, entries that where marked DONE while
3189 logging was on (variable @code{org-log-done}) are shown in the agenda,
3190 as are entries that have been clocked on that day.
3191
3192 @tsubheading{Change display}
3193 @kindex o
3194 @item o
3195 Delete other windows.
3196
3197 @kindex w
3198 @item w
3199 Switch to weekly view (7 days displayed together).
3200
3201 @kindex d
3202 @item d
3203 Switch to daily view (just one day displayed).
3204
3205 @kindex D
3206 @item D
3207 Toggle the inclusion of diary entries. See @ref{Calendar/Diary integration}.
3208
3209 @kindex g
3210 @item g
3211 Toggle the time grid on and off. See also the variables
3212 @code{org-agenda-use-time-grid} and @code{org-agenda-time-grid}.
3213
3214 @kindex r
3215 @item r
3216 Recreate the agenda buffer, for example to reflect the changes
3217 after modification of the time stamps of items with S-@key{left} and
3218 S-@key{right}. When the buffer is the global todo list, a prefix
3219 argument is interpreted to create a selective list for a specific TODO
3220 keyword.
3221
3222 @kindex s
3223 @item s
3224 Save all Org-mode buffers in the current Emacs session.
3225
3226 @kindex @key{right}
3227 @item @key{right}
3228 Display the following @code{org-agenda-ndays} days. For example, if
3229 the display covers a week, switch to the following week. With prefix
3230 arg, go forward that many times @code{org-agenda-ndays} days.
3231
3232 @kindex @key{left}
3233 @item @key{left}
3234 Display the previous dates.
3235
3236 @kindex .
3237 @item .
3238 Goto today.
3239
3240 @tsubheading{Remote editing}
3241
3242 @item 0-9
3243 Digit argument.
3244
3245 @kindex t
3246 @item t
3247 Change the TODO state of the item, both in the agenda and in the
3248 original org file.
3249
3250 @kindex T
3251 @item T
3252 Show all tags associated with the current item. Because of
3253 inheritance, this may be more than the tags listed in the line itself.
3254
3255 @kindex :
3256 @item :
3257 Set tags for the current headline.
3258
3259 @kindex a
3260 @item a
3261 Toggle the ARCHIVE tag for the current headline.
3262
3263 @kindex ,
3264 @item ,
3265 Set the priority for the current item. Org-mode prompts for the
3266 priority character. If you reply with @key{SPC}, the priority cookie
3267 is removed from the entry.
3268
3269 @kindex P
3270 @item p
3271 Display weighted priority of current item.
3272
3273 @kindex +
3274 @kindex S-@key{up}
3275 @item +
3276 @itemx S-@key{up}
3277 Increase the priority of the current item. The priority is changed in
3278 the original buffer, but the agenda is not resorted. Use the @kbd{r}
3279 key for this.
3280
3281 @kindex -
3282 @kindex S-@key{down}
3283 @item -
3284 @itemx S-@key{down}
3285 Decrease the priority of the current item.
3286
3287 @kindex C-c C-s
3288 @item C-c C-s
3289 Schedule this item
3290
3291 @kindex C-c C-d
3292 @item C-c C-d
3293 Set a deadline for this item.
3294
3295 @kindex S-@key{right}
3296 @item S-@key{right}
3297 Change the time stamp associated with the current line by one day into
3298 the future. With prefix argument, change it by that many days. For
3299 example, @kbd{3 6 5 S-@key{right}} will change it by a year. The
3300 stamp is changed in the original org file, but the change is not
3301 directly reflected in the agenda buffer. Use the
3302 @kbd{r} key to update the buffer.
3303
3304 @kindex S-@key{left}
3305 @item S-@key{left}
3306 Change the time stamp associated with the current line by one day
3307 into the past.
3308
3309 @kindex >
3310 @item >
3311 Change the time stamp associated with the current line to today.
3312 The key @kbd{>} has been chosen, because it is the same as @kbd{S-.}
3313 on my keyboard.
3314
3315 @kindex I
3316 @item I
3317 Start the clock on the current item. If a clock is running already, it
3318 is stopped first.
3319 @kindex O
3320 @item O
3321 Stop the previously started clock.
3322 @kindex X
3323 @item X
3324 Cancel the currently running clock.
3325
3326 @tsubheading{Calendar commands}
3327 @kindex c
3328 @item c
3329 Open the Emacs calendar and move to the date at the agenda cursor.
3330
3331 @item c
3332 When in the calendar, compute and show the Org-mode agenda for the
3333 date at the cursor.
3334
3335 @cindex diary entries, creating from agenda
3336 @kindex i
3337 @item i
3338 Insert a new entry into the diary. Prompts for the type of entry
3339 (day, weekly, monthly, yearly, anniversary, cyclic) and creates a new
3340 entry in the diary, just as @kbd{i d} etc. would do in the calendar.
3341 The date is taken from the cursor position.
3342
3343 @kindex M
3344 @item M
3345 Show the phases of the moon for the three months around current date.
3346
3347 @kindex S
3348 @item S
3349 Show sunrise and sunset times. The geographical location must be set
3350 with calendar variables, see documentation of the Emacs calendar.
3351
3352 @kindex C
3353 @item C
3354 Convert the date at cursor into many other cultural and historic
3355 calendars.
3356
3357 @kindex H
3358 @item H
3359 Show holidays for three month around the cursor date.
3360
3361 @c FIXME: This should be a different key.
3362 @kindex C-c C-x C-c
3363 @item C-c C-x C-c
3364 Export a single iCalendar file containing entries from all agenda files.
3365
3366 @tsubheading{Quit and Exit}
3367 @kindex q
3368 @item q
3369 Quit agenda, remove the agenda buffer.
3370
3371 @kindex x
3372 @cindex agenda files, removing buffers
3373 @item x
3374 Exit agenda, remove the agenda buffer and all buffers loaded by Emacs
3375 for the compilation of the agenda. Buffers created by the user to
3376 visit org files will not be removed.
3377
3378 @end table
3379
3380 @node Embedded LaTeX, Exporting, Agenda views, Top
3381 @chapter Embedded LaTeX
3382 @cindex @TeX{} interpretation
3383 @cindex La@TeX{} interpretation
3384
3385 Plain ASCII is normally sufficient for almost all note taking. One
3386 exception, however, are scientific notes which need to be able to
3387 contain mathematical symbols and the occasional formula.
3388 La@TeX{}@footnote{La@TeX{} is a macro system based on Donald E. Knuth's
3389 @TeX{} system. Many of the features described here as ``La@TeX{}'' are
3390 really from @TeX{}, but for simplicity I am blurring this distinction.}
3391 is widely used to typeset scientific documents. Org-mode supports
3392 embedding La@TeX{} code into its files, because many academics are used
3393 to read La@TeX{} source code, and because it can be readily processed
3394 into images for HTML production.
3395
3396 It is not necessary to mark La@TeX{} macros and code in any special way.
3397 If you observe a few conventions, Org-mode knows how to find it and what
3398 to do with it.
3399
3400 @menu
3401 * Math symbols:: TeX macros for symbols and Greek letters
3402 * Subscripts and Superscripts:: Simple syntax for raising/lowering text
3403 * LaTeX fragments:: Complex formulas made easy
3404 * Processing LaTeX fragments:: Previewing LaTeX processing
3405 * CDLaTeX mode:: Speed up entering of formulas
3406 @end menu
3407
3408 @node Math symbols, Subscripts and Superscripts, Embedded LaTeX, Embedded LaTeX
3409 @section Math symbols
3410
3411 You can use La@TeX{} macros to insert special symbols like @samp{\alpha}
3412 to indicate the Greek letter, or @samp{\to} to indicate an arrow.
3413 Completion for these macros is available, just type @samp{\} and maybe a
3414 few letters, and press @kbd{M-@key{TAB}} to see possible completions.
3415 Unlike La@TeX{} code, Org-mode allows these macros to be present
3416 without surrounding math delimiters, for example:
3417
3418 @example
3419 Angles are written as Greek letters \alpha, \beta and \gamma.
3420 @end example
3421
3422 During HTML export (@pxref{HTML export}), these symbols are translated
3423 into the proper syntax for HTML, for the above examples this is
3424 @samp{&alpha;} and @samp{&rarr;}, respectively.
3425
3426 @node Subscripts and Superscripts, LaTeX fragments, Math symbols, Embedded LaTeX
3427 @section Subscripts and Superscripts
3428
3429 Just like in La@TeX{}, @samp{^} and @samp{_} are used to indicate super-
3430 and subscripts. Again, these can be used without embedding them in
3431 math-mode delimiters. To increase the readability of ASCII text, it is
3432 not necessary (but OK) to surround multi-character sub- and superscripts
3433 with curly braces. For example
3434
3435 @example
3436 The mass if the sun is M_sun = 1.989 x 10^30 kg. The radius of
3437 the sun is R_@{sun@} = 6.96 x 10^8 m.
3438 @end example
3439
3440 To avoid interpretation as raised or lowered text, you can quote
3441 @samp{^} and @samp{_} with a backslash: @samp{\_} and @samp{\^}.
3442
3443 During HTML export (@pxref{HTML export}), subscript and superscripts
3444 are surrounded with @code{<sub>} and @code{<sup>} tags, respectively.
3445
3446 @node LaTeX fragments, Processing LaTeX fragments, Subscripts and Superscripts, Embedded LaTeX
3447 @section LaTeX fragments
3448
3449 With symbols, sub- and superscripts, HTML is pretty much at its end when
3450 it comes to representing mathematical formulas. More complex
3451 expressions need a dedicated formula processor. To this end, Org-mode
3452 can contain arbitrary La@TeX{} fragments. It provides commands to
3453 preview the typeset result of these fragments, and upon export to HTML,
3454 all fragments will be converted to images and inlined into the HTML
3455 document. For this to work you need to be on a system with a working
3456 La@TeX{} installation. You also need the @file{dvipng} program,
3457 available at @url{http://sourceforge.net/projects/dvipng/}.
3458
3459 La@TeX{} fragments don't need any special marking at all. The following
3460 snippets will be identified as LaTeX source code:
3461 @itemize @bullet
3462 @item
3463 Environments of any kind. The only requirement is that the
3464 @code{\begin} statement appears on a new line, preceded by only
3465 whitespace.
3466 @item
3467 Text within the usual La@TeX{} math delimiters. To avoid conflicts with
3468 currency specifications, single @samp{$} characters are only recognized
3469 as math delimiters if the enclosed text contains at most two line breaks,
3470 is directly attached to the @samp{$} characters with no whitespace in
3471 between, and if the closing @samp{$} is followed by whitespace or
3472 punctuation. For the other delimiters, there is no such restriction, so
3473 when in doubt, use @samp{\(...\)} as inline math delimiters.
3474 @end itemize
3475
3476 @noindent For example:
3477
3478 @example
3479 \begin@{equation@} % arbitrary environments,
3480 x=\sqrt@{b@} % even tables, figures
3481 \end@{equation@} % etc
3482
3483 If $a^2=b$ and \( b=2 \), then the solution must be
3484 either $$ a=+\sqrt@{2@} $$ or \[ a=-\sqrt@{2@} \].
3485 @end example
3486
3487 @noindent
3488 If you need any of the delimiter ASCII sequences for other purposes, you
3489 can configure the option @code{org-format-latex-options} to deselect the
3490 ones you do not wish to have interpreted by the La@TeX{} converter.
3491
3492 @node Processing LaTeX fragments, CDLaTeX mode, LaTeX fragments, Embedded LaTeX
3493 @section Processing LaTeX fragments
3494
3495 La@TeX{} fragments can be processed to produce a preview images of the
3496 typeset expressions:
3497
3498 @table @kbd
3499 @kindex C-c C-x C-l
3500 @item C-c C-x C-l
3501 Produce a preview image of the La@TeX{} fragment at point and overlay it
3502 over the source code. If there is no fragment at point, process all
3503 fragments in the current entry (between two headlines). When called
3504 with a prefix argument, process the entire subtree. When called with
3505 two prefix arguments, or when the cursor is before the first headline,
3506 process the entire buffer.
3507 @kindex C-c C-c
3508 @item C-c C-c
3509 Remove the overlay preview images.
3510 @end table
3511
3512 During HTML export (@pxref{HTML export}), all La@TeX{} fragments are
3513 converted into images and inlined into the document if the following
3514 setting is active:
3515
3516 @lisp
3517 (setq org-export-with-LaTeX-fragments t)
3518 @end lisp
3519
3520 @node CDLaTeX mode, , Processing LaTeX fragments, Embedded LaTeX
3521 @section Using CDLaTeX to enter math
3522
3523 CDLaTeX-mode is a minor mode that is normally used in combination with a
3524 major LaTeX mode like AUCTeX in order to speed-up insertion of
3525 environments and math templates. Inside Org-mode, you can make use of
3526 some of the features of cdlatex-mode. You need to install
3527 @file{cdlatex.el} and @file{texmathp.el} (the latter comes also with
3528 AUCTeX) from @url{http://www.astro.uva.nl/~dominik/Tools/cdlatex}.
3529 Don't turn cdlatex-mode itself under Org-mode, but use the light
3530 version @code{org-cdlatex-mode} that comes as part of Org-mode. Turn it
3531 on for the current buffer with @code{M-x org-cdlatex-mode}, or for all
3532 Org-mode files with
3533
3534 @lisp
3535 (add-hook 'org-mode-hook 'turn-on-org-cdlatex)
3536 @end lisp
3537
3538 When this mode is enabled, the following features are present (for more
3539 details see the documentation of cdlatex-mode):
3540 @itemize @bullet
3541 @kindex C-c @{
3542 @item
3543 Environment templates can be inserted with @kbd{C-c @{}.
3544 @item
3545 @kindex @key{TAB}
3546 The @key{TAB} key will do template expansion if the cursor is inside a
3547 LaTeX fragment@footnote{Org-mode has a method to test if the cursor is
3548 inside such a fragment, see the documentation of the function
3549 @code{org-inside-LaTeX-fragment-p}.}. For example, @key{TAB} will
3550 expand @code{fr} to @code{\frac@{@}@{@}} and position the cursor
3551 correctly inside the first brace. Another @key{TAB} will get you into
3552 the second brace. Even outside fragments, @key{TAB} will expand
3553 environment abbreviations at the beginning of a line. For example, if
3554 you write @samp{equ} at the beginning of a line and press @key{TAB},
3555 this abbreviation will be expanded to an @code{equation} environment.
3556 To get a list of all abbreviations, type @kbd{M-x cdlatex-command-help}.
3557 @item
3558 @kindex _
3559 @kindex ^
3560 Pressing @kbd{_} and @kbd{^} inside a LaTeX fragment will insert these
3561 characters together with a pair of braces. If you use @key{TAB} to move
3562 out of the braces, and if the braces surround only a single character or
3563 macro, they are removed again (depending on the variable
3564 @code{cdlatex-simplify-sub-super-scripts}).
3565 @item
3566 @kindex `
3567 Pressing the backquote @kbd{`} followed by a character inserts math
3568 macros, also outside LaTeX fragments. If you wait more than 1.5 seconds
3569 after the backquote, a help window will pop up.
3570 @item
3571 @kindex '
3572 Pressing the normal quote @kbd{'} followed by another character modifies
3573 the symbol before point with an accent or a font. If you wait more than
3574 1.5 seconds after the backquote, a help window will pop up. Character
3575 modification will work only inside La@TeX{} fragments, outside the quote
3576 is normal.
3577 @end itemize
3578
3579 @node Exporting, Publishing, Embedded LaTeX, Top
3580 @chapter Exporting
3581 @cindex exporting
3582
3583 Org-mode documents can be exported into a variety of other formats. For
3584 printing and sharing of notes, ASCII export produces a readable and
3585 simple version of an Org-mode file. HTML export allows you to publish a
3586 notes file on the web, while the XOXO format provides a solid base for
3587 exchange with a broad range of other applications. To incorporate
3588 entries with associated times like deadlines or appointments into a
3589 desktop calendar program like iCal, Org-mode can also produce extracts
3590 in the iCalendar format. Currently Org-mode only supports export, not
3591 import of these different formats.
3592
3593 When exporting, Org-mode uses special conventions to enrich the output
3594 produced. @xref{Text interpretation}, for more details.
3595
3596 @table @kbd
3597 @kindex C-c C-e
3598 @item C-c C-e
3599 Dispatcher for export and publishing commands. Displays a help-window
3600 listing the additional key(s) needed to launch an export or publishing
3601 command.
3602 @end table
3603
3604 @menu
3605 * ASCII export:: Exporting to plain ASCII
3606 * HTML export:: Exporting to HTML
3607 * XOXO export:: Exporting to XOXO
3608 * iCalendar export:: Exporting in iCalendar format
3609 * Text interpretation:: How the exporter looks at the file
3610 @end menu
3611
3612 @node ASCII export, HTML export, Exporting, Exporting
3613 @section ASCII export
3614 @cindex ASCII export
3615
3616 ASCII export produces a simple and very readable version of an Org-mode
3617 file.
3618
3619 @cindex region, active
3620 @cindex active region
3621 @cindex transient-mark-mode
3622 @table @kbd
3623 @kindex C-c C-e a
3624 @item C-c C-e a
3625 Export as ASCII file. If there is an active region, only the region
3626 will be exported. For an org file @file{myfile.org}, the ASCII file
3627 will be @file{myfile.txt}. The file will be overwritten without
3628 warning.
3629 @kindex C-c C-e v a
3630 @item C-c C-e v a
3631 Export only the visible part of the document.
3632 @end table
3633
3634 @cindex headline levels, for exporting
3635 In the exported version, the first 3 outline levels will become
3636 headlines, defining a general document structure. Additional levels
3637 will be exported as itemized lists. If you want that transition to occur
3638 at a different level, specify it with a prefix argument. For example,
3639
3640 @example
3641 @kbd{C-1 C-c C-e a}
3642 @end example
3643
3644 @noindent
3645 creates only top level headlines and does the rest as items. When
3646 headlines are converted to items, the indentation of the text following
3647 the headline is changed to fit nicely under the item. This is done with
3648 the assumption that the first bodyline indicates the base indentation of
3649 the body text. Any indentation larger than this is adjusted to preserve
3650 the layout relative to the first line. Should there be lines with less
3651 indentation than the first, these are left alone.
3652
3653 @node HTML export, XOXO export, ASCII export, Exporting
3654 @section HTML export
3655 @cindex HTML export
3656
3657 Org-mode contains an HTML (XHTML 1.0 strict) exporter with extensive
3658 HTML formatting, in ways similar to John Grubers @emph{markdown}
3659 language, but with additional support for tables.
3660
3661 @cindex region, active
3662 @cindex active region
3663 @cindex transient-mark-mode
3664 @table @kbd
3665 @kindex C-c C-e h
3666 @item C-c C-e h
3667 Export as HTML file @file{myfile.html}.
3668 @kindex C-c C-e b
3669 @item C-c C-e b
3670 Export as HTML file and open it with a browser.
3671 @kindex C-c C-e v h
3672 @kindex C-c C-e v b
3673 @item C-c C-e v h
3674 @item C-c C-e v b
3675 Export only the visible part of the document.
3676 @end table
3677
3678 @cindex headline levels, for exporting
3679 In the exported version, the first 3 outline levels will become
3680 headlines, defining a general document structure. Additional levels
3681 will be exported as itemized lists. If you want that transition to occur
3682 at a different level, specify it with a prefix argument. For example,
3683
3684 @example
3685 @kbd{C-2 C-c C-e b}
3686 @end example
3687
3688 @noindent
3689 creates two levels of headings and does the rest as items.
3690
3691 If you want to include HTML tags which should be interpreted as such,
3692 mark them with @samp{@@} as in @samp{@@<b>bold text@@</b>}.
3693 Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
3694 @samp{&gt;} in HTML export.
3695
3696 @cindex links, in HTML export
3697 @cindex internal links, in HTML export
3698 @cindex external links, in HTML export
3699 Internal links (@pxref{Internal links}) will continue to work in HTML
3700 files only if they match a dedicated @samp{<<target>>}. Automatic links
3701 created by radio targets (@pxref{Radio targets}) will also work in the
3702 HTML file. Links to external files will still work if the HTML file is
3703 in the same directory as the Org-mode file. Links to other @file{.org}
3704 files will be translated into HTML links under the assumption that an
3705 HTML version also exists of the linked file. For information related to
3706 linking files while publishing them to a publishing directory see
3707 @ref{Publishing links}.
3708
3709 You can also give style information for the exported file. The HTML
3710 exporter assigns the following CSS classes to appropriate parts of the
3711 document - your style specifications may change these:
3712 @example
3713 .todo @r{TODO keywords}
3714 .done @r{the DONE keyword}
3715 .timestamp @r{time stamp}
3716 .timestamp-kwd @r{keyword associated with a time stamp, like SCHEDULED}
3717 .tag @r{tag in a headline}
3718 .target @r{target for links}
3719 @end example
3720
3721 The default style specification can be configured through the option
3722 @code{org-export-html-style}. If you want to use a file-local style,
3723 you may use file variables, best wrapped into a COMMENT section at the
3724 end of the outline tree. For example:
3725
3726 @example
3727 * COMMENT HTML style specifications
3728
3729 # Local Variables:
3730 # org-export-html-style: " <style type=\"text/css\">
3731 # p @{font-weight: normal; color: gray; @}
3732 # h1 @{color: black; @}
3733 # </style>"
3734 # End:
3735 @end example
3736
3737 Remember to execute @kbd{M-x normal-mode} after changing this to make
3738 the new style visible to Emacs. This command restarts org-mode for the
3739 current buffer and forces Emacs to re-evaluate the local variables
3740 section in the buffer.
3741
3742 @c FIXME: More about header and footer styles
3743 @c FIXME: Talk about links and targets.
3744
3745 @node XOXO export, iCalendar export, HTML export, Exporting
3746 @section XOXO export
3747 @cindex XOXO export
3748
3749 Org-mode contains an exporter that produces XOXO-style output.
3750 Currently, this exporter only handles the general outline structure and
3751 does not interpret any additional Org-mode features.
3752
3753 @table @kbd
3754 @kindex C-c C-e x
3755 @item C-c C-e x
3756 Export as XOXO file @file{myfile.html}.
3757 @kindex C-c C-e v
3758 @item C-c C-e v x
3759 Export only the visible part of the document.
3760 @end table
3761
3762 @node iCalendar export, Text interpretation, XOXO export, Exporting
3763 @section iCalendar export
3764 @cindex iCalendar export
3765
3766 Some people like to use Org-mode for keeping track of projects, but
3767 still prefer a standard calendar application for anniversaries and
3768 appointments. In this case it can be useful to have deadlines and
3769 other time-stamped items in Org-mode files show up in the calendar
3770 application. Org-mode can export calendar information in the standard
3771 iCalendar format.
3772
3773 @table @kbd
3774 @kindex C-c C-e i
3775 @item C-c C-e i
3776 Create iCalendar entries for the current file and store them in the same
3777 directory, using a file extension @file{.ics}.
3778 @kindex C-c C-e I
3779 @item C-c C-e I
3780 Like @kbd{C-c C-e i}, but do this for all files in
3781 @code{org-agenda-files}. For each of these files, a separate iCalendar
3782 file will be written.
3783 @kindex C-c C-e c
3784 @item C-c C-e c
3785 Create a single large iCalendar file from all files in
3786 @code{org-agenda-files} and write it to the file given by
3787 @code{org-combined-agenda-icalendar-file}.
3788 @end table
3789
3790 How this calendar is best read and updated, depends on the application
3791 you are using. For example, when using iCal under Apple MacOS X, you
3792 could create a new calendar @samp{OrgMode} (the default name for the
3793 calendar created by @kbd{C-c C-e c}, see the variables
3794 @code{org-icalendar-combined-name} and
3795 @code{org-combined-agenda-icalendar-file}). Then set Org-mode to
3796 overwrite the corresponding file
3797 @file{~/Library/Calendars/OrgMode.ics}. You may even use AppleScript
3798 to make iCal re-read the calendar files each time a new version of
3799 @file{OrgMode.ics} is produced. Here is the setup needed for this:
3800
3801 @cindex applescript, for calendar update
3802 @lisp
3803 (setq org-combined-agenda-icalendar-file
3804 "~/Library/Calendars/OrgMode.ics")
3805 (add-hook 'org-after-save-iCalendar-file-hook
3806 (lambda ()
3807 (shell-command
3808 "osascript -e 'tell application \"iCal\" to reload calendars'")))
3809 @end lisp
3810
3811 @node Text interpretation, , iCalendar export, Exporting
3812 @section Text interpretation by the exporter
3813
3814 The exporter backends interpret additional structure in the Org-mode file
3815 in order to produce better output.
3816
3817 @menu
3818 * Comment lines:: Some lines will not be exported
3819 * Enhancing text:: Subscripts, symbols and more
3820 * Export options:: How to influence the export settings
3821 @end menu
3822
3823 @node Comment lines, Enhancing text, Text interpretation, Text interpretation
3824 @subsection Comment lines
3825 @cindex comment lines
3826 @cindex exporting, not
3827
3828 Lines starting with @samp{#} in column zero are treated as comments
3829 and will never be exported. Also entire subtrees starting with the
3830 word @samp{COMMENT} will never be exported. Finally, any text before
3831 the first headline will not be exported either.
3832
3833 @table @kbd
3834 @kindex C-c ;
3835 @item C-c ;
3836 Toggle the COMMENT keyword at the beginning of an entry.
3837 @end table
3838
3839 @node Enhancing text, Export options, Comment lines, Text interpretation
3840 @subsection Enhancing text for export
3841 @cindex enhancing text
3842 @cindex richer text
3843
3844 Some of the export backends of Org-mode allow for sophisticated text
3845 formatting, this is true in particular for the HTML backend. Org-mode
3846 has a number of typing conventions that allow to produce a richly
3847 formatted output.
3848
3849 @itemize @bullet
3850
3851 @cindex hand-formatted lists
3852 @cindex lists, hand-formatted
3853 @item
3854 Plain lists @samp{-}, @samp{*} or @samp{+} as bullet, or with @samp{1.}
3855 or @samp{2)} as enumerator will be recognized and transformed if the
3856 backend supports lists. See @xref{Plain lists}.
3857
3858 @cindex underlined text
3859 @cindex bold text
3860 @cindex italic text
3861 @item
3862 You can make words @b{*bold*}, @i{/italic/}, _underlined_,
3863 @code{=code=}, and @samp{+strikethrough+}.
3864
3865 @cindex LaTeX fragments, export
3866 @cindex TeX macros, export
3867 @item
3868 Many @TeX{} macros and entire La@TeX{} fragments are converted into HTML
3869 entities or images (@pxref{Embedded LaTeX}).
3870
3871 @cindex tables, export
3872 @item
3873 Tables are transformed into native tables under the exporter, if the
3874 export backend supports this. Data fields before the first horizontal
3875 separator line will be formatted as table header fields.
3876
3877 @cindex fixed width
3878 @item
3879 If a headline starts with the word @samp{QUOTE}, the text below the
3880 headline will be typeset as fixed-width, to allow quoting of computer
3881 codes etc. Lines starting with @samp{:} are also typeset in
3882 fixed-width font.
3883 @table @kbd
3884 @kindex C-c :
3885 @item C-c :
3886 Toggle fixed-width for entry (QUOTE) or region, see below.
3887 @end table
3888
3889 @cindex linebreak, forced
3890 @item
3891 A double backslash @emph{at the end of a line} enforces a line break at
3892 this position.
3893 @end itemize
3894
3895 If these conversions conflict with your habits of typing ASCII text,
3896 they can all be turned off with corresponding variables (see the
3897 customization group @code{org-export-general}, and the following section
3898 which explains how to set export options with special lines in a
3899 buffer.
3900
3901
3902 @node Export options, , Enhancing text, Text interpretation
3903 @subsection Export options
3904 @cindex options, for export
3905
3906 @cindex completion, of option keywords
3907 The exporter recognizes special lines in the buffer which provide
3908 additional information. These lines may be put anywhere in the file.
3909 The whole set of lines can be inserted into the buffer with @kbd{C-c
3910 C-e t}. For individual lines, a good way to make sure the keyword is
3911 correct is to type @samp{#+} and then use @kbd{M-@key{TAB}} completion
3912 (@pxref{Completion}).
3913
3914 @table @kbd
3915 @kindex C-c C-e t
3916 @item C-c C-e t
3917 Insert template with export options, see example below.
3918 @end table
3919
3920 @example
3921 #+TITLE: the title to be shown (default is the buffer name)
3922 #+AUTHOR: the author (default taken from @code{user-full-name})
3923 #+EMAIL: his/her email address (default from @code{user-mail-address})
3924 #+LANGUAGE: language for HTML, e.g. @samp{en} (@code{org-export-default-language})
3925 #+TEXT: Some descriptive text to be inserted at the beginning.
3926 #+TEXT: Several lines may be given.
3927 #+OPTIONS: H:2 num:t toc:t \n:nil @@:t ::t |:t ^:t *:nil TeX:t LaTeX:t
3928 @end example
3929
3930 @noindent
3931 The OPTIONS line is a compact form to specify export settings. Here
3932 you can:
3933 @cindex headline levels
3934 @cindex section-numbers
3935 @cindex table of contents
3936 @cindex linebreak preservation
3937 @cindex quoted HTML tags
3938 @cindex fixed-width sections
3939 @cindex tables
3940 @cindex @TeX{}-like syntax for sub- and superscripts
3941 @cindex emphasized text
3942 @cindex @TeX{} macros
3943 @cindex La@TeX{} fragments
3944 @example
3945 H: @r{set the number of headline levels for export}
3946 num: @r{turn on/off section-numbers}
3947 toc: @r{turn on/off table of contents}
3948 \n: @r{turn on/off linebreak-preservation}
3949 @@: @r{turn on/off quoted HTML tags}
3950 :: @r{turn on/off fixed-width sections}
3951 |: @r{turn on/off tables}
3952 ^: @r{turn on/off @TeX{}-like syntax for sub- and superscripts.}
3953 *: @r{turn on/off emphasized text (bold, italic, underlined)}
3954 TeX: @r{turn on/off simple @TeX{} macros in plain text}
3955 LaTeX: @r{turn on/off La@TeX{} fragments}
3956 @end example
3957
3958 @node Publishing, Miscellaneous, Exporting, Top
3959 @chapter Publishing
3960 @cindex publishing
3961
3962 Org-mode includes@footnote{@file{org-publish.el} is not yet part of
3963 emacs, so if you are using @file{org.el} as it comes with Emacs, you
3964 need to download this file separately. Also make sure org.el is at
3965 least version 4.27.} a publishing management system
3966 that allows you to configure automatic HTML conversion of
3967 @emph{projects} composed of interlinked org files. This system is
3968 called @emph{org-publish}. You can also configure org-publish to
3969 automatically upload your exported HTML pages and related attachments,
3970 such as images and source code files, to a web server. Org-publish turns
3971 org-mode into a web-site authoring tool.
3972
3973 Org-publish has been contributed to Org-mode by David O'Toole.
3974
3975 @menu
3976 * Configuration:: Defining projects
3977 * Sample configuration:: Example projects
3978 * Triggering publication:: Publication commands
3979 @end menu
3980
3981 @node Configuration, Sample configuration, Publishing, Publishing
3982 @section Configuration
3983
3984 Publishing needs significant configuration to specify files, destination
3985 and many other properties of a project.
3986
3987 @menu
3988 * Project alist:: The central configuration variable
3989 * Sources and destinations:: From here to there
3990 * Selecting files:: What files are part of the project?
3991 * Publishing action:: Setting the function doing the publishing
3992 * Publishing options:: Tweaking HTML export
3993 * Publishing links:: Which links keep working after publishing?
3994 * Project page index:: Publishing a list of project files
3995 @end menu
3996
3997 @node Project alist, Sources and destinations, Configuration, Configuration
3998 @subsection The variable @code{org-publish-project-alist}
3999 @cindex org-publish-project-alist
4000 @cindex projects, for publishing
4001
4002 Org-publish is configured almost entirely through setting the value of
4003 one variable, called @code{org-publish-project-alist}.
4004 Each element of the list configures one project, and may be in one of
4005 the two following forms:
4006
4007 @lisp
4008 ("project-name" :property value :property value ...)
4009
4010 @r{or}
4011
4012 ("project-name" :components ("project-name" "project-name" ...))
4013
4014 @end lisp
4015
4016 In both cases, projects are configured by specifying property values.
4017 A project defines the set of files that will be published, as well as
4018 the publishing configuration to use when publishing those files. When
4019 a project takes the second form listed above, the individual members
4020 of the ``components'' property are taken to be components of the
4021 project, which group together files requiring different publishing
4022 options. When you publish such a ``meta-project'' all the components
4023 will also publish.
4024
4025 @node Sources and destinations, Selecting files, Project alist, Configuration
4026 @subsection Sources and destinations for files
4027 @cindex directories, for publishing
4028
4029 Most properties are optional, but some should always be set. In
4030 particular, org-publish needs to know where to look for source files,
4031 and where to put published files.
4032
4033 @multitable @columnfractions 0.3 0.7
4034 @item @code{:base-directory}
4035 @tab Directory containing publishing source files
4036 @item @code{:publishing-directory}
4037 @tab Directory (possibly remote) where output files will be published.
4038 @end multitable
4039 @noindent
4040
4041 @node Selecting files, Publishing action, Sources and destinations, Configuration
4042 @subsection Selecting files
4043 @cindex files, selecting for publishing
4044
4045 By default, all files with extension @file{.org} in the base directory
4046 are considered part of the project. This can be modified by setting the
4047 properties
4048 @multitable @columnfractions 0.25 0.75
4049 @item @code{:base-extension}
4050 @tab Extension (without the dot!) of source files. This actually is a
4051 regular expression.
4052
4053 @item @code{:exclude}
4054 @tab Regular expression to match file names that should not be
4055 published, even though they have been selected on the basis of their
4056 extension.
4057
4058 @item @code{:include}
4059 @tab List of files to be included regardless of @code{:base-extension}
4060 and @code{:exclude}.
4061 @end multitable
4062
4063 @node Publishing action, Publishing options, Selecting files, Configuration
4064 @subsection Publishing Action
4065 @cindex action, for publishing
4066
4067 Publishing means that a file is copied to the destination directory and
4068 possibly transformed in the process. The default transformation is to
4069 export Org-mode files as HTML files, and this is done by the function
4070 @code{org-publish-org-to-html} which calls the HTML exporter
4071 (@pxref{HTML export}). Other files like images only need to be copied
4072 to the publishing destination. For non-Org-mode files, you need to
4073 specify the publishing function.
4074
4075 @multitable @columnfractions 0.3 0.7
4076 @item @code{:publishing-function}
4077 @tab Function executing the publication of a file.
4078 @end multitable
4079
4080 The function must accept two arguments: a property list containing at
4081 least a @code{:publishing-directory} property, and the name of the file
4082 to be published. It should take the specified file, make the necessary
4083 transformation (if any) and place the result into the destination folder.
4084 You can write your own publishing function, but @code{org-publish}
4085 provides one for attachments (files that only need to be copied):
4086 @code{org-publish-attachment}.
4087
4088 @node Publishing options, Publishing links, Publishing action, Configuration
4089 @subsection Options for the HTML exporter
4090 @cindex options, for publishing
4091
4092 The property list can be used to set many export options for the HTML
4093 exporter. In most cases, these properties correspond to user variables
4094 in Org-mode. The table below lists these properties along with the
4095 variable they belong to. See the documentation string for the
4096 respective variable for details.
4097
4098 @multitable @columnfractions 0.3 0.7
4099 @item @code{:language} @tab @code{org-export-default-language}
4100 @item @code{:headline-levels} @tab @code{org-export-headline-levels}
4101 @item @code{:section-numbers} @tab @code{org-export-with-section-numbers}
4102 @item @code{:table-of-contents} @tab @code{org-export-with-toc}
4103 @item @code{:archived-trees} @tab @code{org-export-with-archived-trees}
4104 @item @code{:emphasize} @tab @code{org-export-with-emphasize}
4105 @item @code{:sub-superscript} @tab @code{org-export-with-sub-superscripts}
4106 @item @code{:TeX-macros} @tab @code{org-export-with-TeX-macros}
4107 @item @code{:LaTeX-fragments} @tab @code{org-export-with-LaTeX-fragments}
4108 @item @code{:fixed-width} @tab @code{org-export-with-fixed-width}
4109 @item @code{:timestamps} .@tab @code{org-export-with-timestamps}
4110 @item @code{:tags} .@tab @code{org-export-with-tags}
4111 @item @code{:tables} @tab @code{org-export-with-tables}
4112 @item @code{:table-auto-headline} @tab @code{org-export-highlight-first-table-line}
4113 @item @code{:style} @tab @code{org-export-html-style}
4114 @item @code{:convert-org-links} @tab @code{org-export-html-link-org-files-as-html}
4115 @item @code{:inline-images} @tab @code{org-export-html-inline-images}
4116 @item @code{:expand-quoted-html} @tab @code{org-export-html-expand}
4117 @item @code{:timestamp} @tab @code{org-export-html-with-timestamp}
4118 @item @code{:publishing-directory} @tab @code{org-export-publishing-directory}
4119 @item @code{:preamble} @tab @code{org-export-html-preamble}
4120 @item @code{:postamble} @tab @code{org-export-html-postamble}
4121 @item @code{:auto-preamble} @tab @code{org-export-html-auto-preamble}
4122 @item @code{:auto-postamble} @tab @code{org-export-html-auto-postamble}
4123 @item @code{:author} @tab @code{user-full-name}
4124 @item @code{:email} @tab @code{user-mail-address}
4125 @end multitable
4126
4127 When a property is given a value in org-publish-project-alist, its
4128 setting overrides the value of the corresponding user variable (if any)
4129 during publishing. options set within a file (@pxref{Export
4130 options}), however, override everything.
4131
4132 @node Publishing links, Project page index, Publishing options, Configuration
4133 @subsection Links between published files
4134 @cindex links, publishing
4135
4136 To create a link from one Org-mode file to another, you would use
4137 something like @samp{[[file:foo.org][The foo]]} or simply
4138 @samp{file:foo.org.} (@pxref{Hyperlinks}). Upon publishing this link
4139 becomes a link to @file{foo.html}. In this way, you can interlink the
4140 pages of your "org web" project and the links will work as expected when
4141 you publish them to HTML.
4142
4143 You may also link to related files, such as images. Provided you are
4144 careful with relative pathnames, and provided you have also configured
4145 org-publish to upload the related files, these links will work
4146 too. @ref{Complex example} for an example of this usage.
4147
4148 Sometime an Org-mode file to be published may contain links that are
4149 only valid in your production environment, but not in the publishing
4150 location. In this case, use the property
4151
4152 @multitable @columnfractions 0.4 0.6
4153 @item @code{:link-validation-function}
4154 @tab Function to validate links
4155 @end multitable
4156
4157 @noindent
4158 to define a function for checking link validity. This function must
4159 accept two arguments, the file name and a directory relative to which
4160 the file name is interpreted in the production environment. If this
4161 function returns @code{nil}, then the HTML generator will only insert a
4162 description into the HTML file, but no link. One option for this
4163 function is @code{org-publish-validate-link} which checks if the given
4164 file is part of any project in @code{org-publish-project-alist}.
4165
4166 @node Project page index, , Publishing links, Configuration
4167 @subsection Project page index
4168 @cindex index, of published pages
4169
4170 The following properties may be used to control publishing of an
4171 index of files or summary page for a given project.
4172
4173 @multitable @columnfractions 0.25 0.75
4174 @item @code{:auto-index}
4175 @tab When non-nil, publish an index during org-publish-current-project or
4176 org-publish-all.
4177
4178 @item @code{:index-filename}
4179 @tab Filename for output of index. Defaults to @file{index.org} (which
4180 becomes @file{index.html}).
4181
4182 @item @code{:index-title}
4183 @tab Title of index page. Defaults to name of file.
4184
4185 @item @code{:index-function}
4186 @tab Plugin function to use for generation of index.
4187 Defaults to @code{org-publish-org-index}, which generates a plain list
4188 of links to all files in the project.
4189 @end multitable
4190
4191 @node Sample configuration, Triggering publication, Configuration, Publishing
4192 @section Sample configuration
4193
4194 Below we provide two example configurations. The first one is a simple
4195 project publishing only a set of Org-mode files. The second example is
4196 more complex, with a multi-component project.
4197
4198 @menu
4199 * Simple example:: One-component publishing
4200 * Complex example:: A multi-component publishing example
4201 @end menu
4202
4203 @node Simple example, Complex example, Sample configuration, Sample configuration
4204 @subsection Example: simple publishing configuration
4205
4206 This example publishes a set of Org-mode files to the @file{public_html}
4207 directory on the local machine.
4208
4209 @lisp
4210 (setq org-publish-project-alist
4211 '(("org"
4212 :base-directory "~/org/"
4213 :publishing-directory "~/public_html"
4214 :section-numbers nil
4215 :table-of-contents nil
4216 :style "<link rel=stylesheet
4217 href=\"../other/mystyle.css\"
4218 type=\"text/css\">")))
4219 @end lisp
4220
4221 @node Complex example, , Simple example, Sample configuration
4222 @subsection Example: complex publishing configuration
4223
4224 This more complicated example publishes an entire website, including
4225 org files converted to HTML, image files, emacs lisp source code, and
4226 stylesheets. The publishing-directory is remote and private files are
4227 excluded.
4228
4229 To ensure that links are preserved, care should be taken to replicate
4230 your directory structure on the web server, and to use relative file
4231 paths. For example, if your org files are kept in @file{~/org} and your
4232 publishable images in @file{~/images}, you'd link to an image with
4233 @c
4234 @example
4235 file:../images/myimage.png
4236 @end example
4237 @c
4238 On the web server, the relative path to the image should be the
4239 same. You can accomplish this by setting up an "images" folder in the
4240 right place on the webserver, and publishing images to it.
4241
4242 @lisp
4243 (setq org-publish-project-alist
4244 '(("orgfiles"
4245 :base-directory "~/org/"
4246 :base-extension "org"
4247 :publishing-directory "/ssh:user@@host:~/html/notebook/"
4248 :publishing-function org-publish-org-to-html
4249 :exclude "PrivatePage.org" ;; regexp
4250 :headline-levels 3
4251 :section-numbers nil
4252 :table-of-contents nil
4253 :style "<link rel=stylesheet
4254 href=\"../other/mystyle.css\" type=\"text/css\">"
4255 :auto-preamble t
4256 :auto-postamble nil)
4257
4258 ("images"
4259 :base-directory "~/images/"
4260 :base-extension "jpg\\|gif\\|png"
4261 :publishing-directory "/ssh:user@@host:~/html/images/"
4262 :publishing-function org-publish-attachment)
4263
4264 ("other"
4265 :base-directory "~/other/"
4266 :base-extension "css\\|el"
4267 :publishing-directory "/ssh:user@@host:~/html/other/"
4268 :publishing-function org-publish-attachment)
4269 ("website" :components ("orgfiles" "images" "other"))))
4270 @end lisp
4271
4272 @node Triggering publication, , Sample configuration, Publishing
4273 @section Triggering publication
4274
4275 Once org-publish is properly configured, you can publish with the
4276 following functions:
4277
4278 @table @kbd
4279 @item C-c C-e c
4280 Prompt for a specific project and publish all files that belong to it.
4281 @item C-c C-e p
4282 Publish the project containin the current file.
4283 @item C-c C-e f
4284 Publish only the current file.
4285 @item C-c C-e a
4286 Publish all projects.
4287 @end table
4288
4289 Org uses timestamps to track when a file has changed. The above
4290 functions normally only publish changed files. You can override this and
4291 force publishing of all files by giving a prefix argument.
4292
4293 @node Miscellaneous, Extensions and Hacking, Publishing, Top
4294 @chapter Miscellaneous
4295
4296 @menu
4297 * Completion:: M-TAB knows what you need
4298 * Customization:: Adapting Org-mode to your taste
4299 * In-buffer settings:: Overview of the #+KEYWORDS
4300 * The very busy C-c C-c key:: When in doubt, press C-c C-c
4301 * Clean view:: Getting rid of leading stars in the outline
4302 * TTY keys:: Using Org-mode on a tty
4303 * Interaction:: Other Emacs packages
4304 * Bugs:: Things which do not work perfectly
4305 @end menu
4306
4307 @node Completion, Customization, Miscellaneous, Miscellaneous
4308 @section Completion
4309 @cindex completion, of @TeX{} symbols
4310 @cindex completion, of TODO keywords
4311 @cindex completion, of dictionary words
4312 @cindex completion, of option keywords
4313 @cindex completion, of CamelCase links
4314 @cindex completion, of tags
4315 @cindex @TeX{} symbol completion
4316 @cindex TODO keywords completion
4317 @cindex dictionary word completion
4318 @cindex option keyword completion
4319 @cindex CamelCase link completion
4320 @cindex tag completion
4321
4322 Org-mode supports in-buffer completion. This type of completion does
4323 not make use of the minibuffer. You simply type a few letters into
4324 the buffer and use the key to complete text right there.
4325
4326 @table @kbd
4327 @kindex M-@key{TAB}
4328 @item M-@key{TAB}
4329 Complete word at point
4330 @itemize @bullet
4331 @item
4332 At the beginning of a headline, complete TODO keywords.
4333 @item
4334 After @samp{\}, complete @TeX{} symbols supported by the exporter.
4335 @item
4336 After @samp{*}, complete CamelCase versions of all headlines in the
4337 buffer.
4338 @item
4339 After @samp{:}, complete tags used elsewhere in the buffer.
4340 @item
4341 After @samp{#+}, complete the special keywords like @samp{TYP_TODO} or
4342 @samp{OPTIONS} which set file-specific options for Org-mode. When the
4343 option keyword is already complete, pressing @kbd{M-@key{TAB}} again
4344 will insert example settings for this keyword.
4345 @item
4346 Elsewhere, complete dictionary words using ispell.
4347 @end itemize
4348 @end table
4349
4350 @node Customization, In-buffer settings, Completion, Miscellaneous
4351 @section Customization
4352 @cindex customization
4353 @cindex options, for customization
4354 @cindex variables, for customization
4355
4356 There are more than 100 variables that can be used to customize
4357 Org-mode. For the sake of compactness of the manual, we are not
4358 describing the variables here. A structured overview of customization
4359 variables is available with @kbd{M-x org-customize}. Or select
4360 @code{Browse Org Group} from the @code{Org->Customization} menu. Many
4361 settings can also be activated on a per-file basis, by putting special
4362 lines into the buffer (@pxref{In-buffer settings}).
4363
4364 @node In-buffer settings, The very busy C-c C-c key, Customization, Miscellaneous
4365 @section Summary of in-buffer settings
4366 @cindex in-buffer settings
4367 @cindex special keywords
4368
4369 Org-mode uses special lines in the buffer to define settings on a
4370 per-file basis. These lines start with a @samp{#+} followed by a
4371 keyword, a colon, and then individual words defining a setting. Several
4372 setting words can be in the same line, but you can also have multiple
4373 lines for the keyword. While these settings are described throughout
4374 the manual, here is a summary. After changing any of those lines in the
4375 buffer, press @kbd{C-c C-c} with the cursor still in the line to
4376 activate the changes immediately. Otherwise they become effective only
4377 when the file is visited again in a new Emacs session.
4378
4379 @table @kbd
4380 @item #+STARTUP:
4381 This line sets options to be used at startup of org-mode, when an
4382 Org-mode file is being visited. The first set of options deals with the
4383 initial visibility of the outline tree. The corresponding variable for
4384 global default settings is @code{org-startup-folded}, with a default
4385 value @code{t}, which means @code{overview}.
4386 @example
4387 overview @r{top-level headlines only}
4388 content @r{all headlines}
4389 showall @r{no folding at all, show everything}
4390 @end example
4391 Then there are options for aligning tables upon visiting a file. This
4392 is useful in files containing narrowed table columns. The corresponding
4393 variable is @code{org-startup-align-all-tables}, with a default value
4394 @code{nil}.
4395 @example
4396 align @r{align all tables}
4397 noalign @r{don't align tables on startup}
4398 @end example
4399 Logging when a TODO item is marked DONE (variable @code{org-log-done})
4400 can be configured using these options.
4401 @example
4402 logging @r{record a timestamp when an item is marked DONE}
4403 nologging @r{don't record when items are marked DONE}
4404 @end example
4405 Here are the options for hiding leading stars in outline headings. The
4406 corresponding variables are @code{org-hide-leading-stars} and
4407 @code{org-odd-levels-only}, both with a default setting @code{nil}
4408 (meaning @code{showstars} and @code{oddeven}).
4409 @example
4410 hidestars @r{make all but one of the stars starting a headline invisible.}
4411 showstars @r{show all stars starting a headline}
4412 odd @r{allow only odd outline levels (1,3,...)}
4413 oddeven @r{allow all outline levels}
4414 @end example
4415 @item #+SEQ_TODO: #+TYP_TODO:
4416 These lines set the TODO keywords and their interpretation in the
4417 current file. The corresponding variables are @code{org-todo-keywords}
4418 and @code{org-todo-interpretation}.
4419 @item #+TAGS: TAG1(c1) TAG2(c2)
4420 These lines (several such lines are allowed) specify the legal tags in
4421 this file, and (potentially) the corresponding @emph{fast tag selection}
4422 keys. The corresponding variable is @code{org-tag-alist}.
4423 @item #+CATEGORY:
4424 This line sets the category for the agenda file. The category applies
4425 for all subsequent lines until the next @samp{#+CATEGORY} line, or the
4426 end of the file.
4427 @item #+TBLFM:
4428 This line contains the formulas for the table directly above the line.
4429 @item #+TITLE:, #+AUTHOR:, #+EMAIL:, #+LANGUAGE:, #+TEXT:, #+OPTIONS:
4430 These lines provide settings for exporting files. For more details see
4431 @ref{Export options}.
4432 @end table
4433
4434 @node The very busy C-c C-c key, Clean view, In-buffer settings, Miscellaneous
4435 @section The very busy C-c C-c key
4436 @kindex C-c C-c
4437
4438 The key @kbd{C-c C-c} has many purposes in org-mode, which are all
4439 mentioned scattered throughout this manual. One specific function of
4440 this key is to add @emph{tags} to a headline (@pxref{Tags}). In many
4441 other circumstances it means something like @emph{Hey Org-mode, look
4442 here and update according to what you see here}. Here is a summary of
4443 what this means in different contexts.
4444
4445 @itemize @minus
4446 @item
4447 If there are highlights in the buffer from the creation of a sparse
4448 tree, or from clock display, remove these highlights.
4449 @item
4450 If the cursor is in one of the special @code{#+KEYWORD} lines, this
4451 triggers scanning the buffer for these lines and updating the
4452 information.
4453 @item
4454 If the cursor is inside a table, realign the table. This command
4455 works even if the automatic table editor has been turned off.
4456 @item
4457 If the cursor is on a @code{#+TBLFM} line, re-apply the formulas to
4458 the entire table.
4459 @item
4460 If the cursor is inside a table created by the @file{table.el} package,
4461 activate that table.
4462 @item
4463 If the current buffer is a remember buffer, close note and file it.
4464 with a prefix argument, file it without further interaction to the default
4465 location.
4466 @item
4467 If the cursor is on a @code{<<<target>>>}, update radio targets and
4468 corresponding links in this buffer.
4469 @item
4470 If the cursor is in a plain list item with a checkbox, toggle the status
4471 of the checkbox.
4472 @item
4473 If the cursor is on a numbered item in a plain list, renumber the
4474 ordered list.
4475 @end itemize
4476
4477 @node Clean view, TTY keys, The very busy C-c C-c key, Miscellaneous
4478 @section A cleaner outline view
4479 @cindex hiding leading stars
4480 @cindex clean outline view
4481
4482 Some people find it noisy and distracting that the Org-mode headlines
4483 are starting with a potentially large number of stars. For example
4484 the tree from @ref{Headlines}:
4485
4486 @example
4487 * Top level headline
4488 ** Second level
4489 *** 3rd level
4490 some text
4491 *** 3rd level
4492 more text
4493 * Another top level headline
4494 @end example
4495
4496 @noindent
4497 Unfortunately this is deeply ingrained into the code of Org-mode and
4498 cannot be easily changed. You can, however, modify the display in such
4499 a way that all leading stars become invisible and the outline more easy
4500 to read. To do this, customize the variable
4501 @code{org-hide-leading-stars} like this:
4502
4503 @lisp
4504 (setq org-hide-leading-stars t)
4505 @end lisp
4506
4507 @noindent
4508 or change this on a per-file basis with one of the lines (anywhere in
4509 the buffer)
4510
4511 @example
4512 #+STARTUP: showstars
4513 #+STARTUP: hidestars
4514 @end example
4515
4516 @noindent
4517 Press @kbd{C-c C-c} with the cursor in a @samp{STARTUP} line to activate
4518 the modifications.
4519
4520 With stars hidden, the tree becomes:
4521
4522 @example
4523 * Top level headline
4524 * Second level
4525 * 3rd level
4526 some text
4527 * 3rd level
4528 more text
4529 * Another top level headline
4530 @end example
4531
4532 @noindent
4533 Note that the leading stars are not truly replaced by whitespace, they
4534 are only fontified with the face @code{org-hide} that uses the
4535 background color as font color. If are are not using either white or
4536 black background, you may have to customize this face to get the wanted
4537 effect. Another possibility is to set this font such that the extra
4538 stars are @i{almost} invisible, for example using the color
4539 @code{grey90} on a white background.
4540
4541 Things become cleaner still if you skip all the even levels and use only
4542 odd levels 1, 3, 5..., effectively adding two stars to go from one
4543 outline level to the next:
4544
4545 @example
4546 * Top level headline
4547 * Second level
4548 * 3rd level
4549 some text
4550 * 3rd level
4551 more text
4552 * Another top level headline
4553 @end example
4554
4555 @noindent
4556 In order to make the structure editing and export commands handle this
4557 convention correctly, use
4558
4559 @lisp
4560 (setq org-odd-levels-only t)
4561 @end lisp
4562
4563 @noindent
4564 or set this on a per-file basis with one of the following lines (don't
4565 forget to press @kbd{C-c C-c} with the cursor in the startup line to
4566 activate changes immediately).
4567
4568 @example
4569 #+STARTUP: odd
4570 #+STARTUP: oddeven
4571 @end example
4572
4573 You can convert an Org-mode file from single-star-per-level to the
4574 double-star-per-level convention with @kbd{M-x org-convert-to-odd-levels
4575 RET} in that file. The reverse operation is @kbd{M-x
4576 org-convert-to-oddeven-levels}.
4577
4578 @node TTY keys, Interaction, Clean view, Miscellaneous
4579 @section Using org-mode on a tty
4580 @cindex tty keybindings
4581
4582 Org-mode uses a number of keys that are not accessible on a tty. This
4583 applies to most special keys like cursor keys, @key{TAB} and
4584 @key{RET}, when these are combined with modifier keys like @key{Meta}
4585 and/or @key{Shift}. Org-mode uses these bindings because it needs to
4586 provide keys for a large number of commands, and because these keys
4587 appeared particularly easy to remember. In order to still be able to
4588 access the core functionality of Org-mode on a tty, alternative
4589 bindings are provided. Here is a complete list of these bindings,
4590 which are obviously more cumbersome to use. Note that sometimes a
4591 work-around can be better. For example changing a time stamp is
4592 really only fun with @kbd{S-@key{cursor}} keys. On a tty you would
4593 rather use @kbd{C-c .} to re-insert the timestamp.
4594
4595 @multitable @columnfractions 0.15 0.2 0.2
4596 @item @b{Default} @tab @b{Alternative 1} @tab @b{Alternative 2}
4597 @item @kbd{S-@key{TAB}} @tab @kbd{C-u @key{TAB}} @tab
4598 @item @kbd{M-@key{left}} @tab @kbd{C-c C-x l} @tab @kbd{@key{Esc} @key{left}}
4599 @item @kbd{M-S-@key{left}} @tab @kbd{C-c C-x L} @tab
4600 @item @kbd{M-@key{right}} @tab @kbd{C-c C-x r} @tab @kbd{@key{Esc} @key{right}}
4601 @item @kbd{M-S-@key{right}} @tab @kbd{C-c C-x R} @tab
4602 @item @kbd{M-@key{up}} @tab @kbd{C-c C-x u} @tab @kbd{@key{Esc} @key{up}}
4603 @item @kbd{M-S-@key{up}} @tab @kbd{C-c C-x U} @tab
4604 @item @kbd{M-@key{down}} @tab @kbd{C-c C-x d} @tab @kbd{@key{Esc} @key{down}}
4605 @item @kbd{M-S-@key{down}} @tab @kbd{C-c C-x D} @tab
4606 @item @kbd{S-@key{RET}} @tab @kbd{C-c C-x c} @tab
4607 @item @kbd{M-@key{RET}} @tab @kbd{C-c C-x m} @tab @kbd{@key{Esc} @key{RET}}
4608 @item @kbd{M-S-@key{RET}} @tab @kbd{C-c C-x M} @tab
4609 @item @kbd{S-@key{left}} @tab @kbd{C-c C-x @key{left}} @tab
4610 @item @kbd{S-@key{right}} @tab @kbd{C-c C-x @key{right}} @tab
4611 @item @kbd{S-@key{up}} @tab @kbd{C-c C-x @key{up}} @tab
4612 @item @kbd{S-@key{down}} @tab @kbd{C-c C-x @key{down}} @tab
4613 @end multitable
4614
4615 @node Interaction, Bugs, TTY keys, Miscellaneous
4616 @section Interaction with other packages
4617 @cindex packages, interaction with other
4618 Org-mode lives in the world of GNU Emacs and interacts in various ways
4619 with other code out there.
4620
4621 @menu
4622 * Cooperation:: Packages Org-mode cooperates with
4623 * Conflicts:: Packages that lead to conflicts
4624 @end menu
4625
4626
4627 @node Cooperation, Conflicts, Interaction, Interaction
4628 @subsection Packages that Org-mode cooperates with
4629
4630 @table @asis
4631 @cindex @file{calc.el}
4632 @item @file{calc.el} by Dave Gillespie
4633 Org-mode uses the calc package for implementing spreadsheet
4634 functionality in its tables (@pxref{Table calculations}). Org-modes
4635 checks for the availability of calc by looking for the function
4636 @code{calc-eval} which should be autoloaded in your setup if calc has
4637 been installed properly. As of Emacs 22, calc is part of the Emacs
4638 distribution. Another possibility for interaction between the two
4639 packages is using calc for embedded calculations. @xref{Embedded Mode,
4640 , Embedded Mode, calc, GNU Emacs Calc Manual}.
4641 @cindex @file{constants.el}
4642 @item @file{constants.el} by Carsten Dominik
4643 In a table formula (@pxref{Table calculations}), it is possible to use
4644 names for natural constants or units. Instead of defining your own
4645 constants in the variable @code{org-table-formula-constants}, install
4646 the @file{constants} package which defines a large number of constants
4647 and units, and lets you use unit prefixes like @samp{M} for
4648 @samp{Mega} etc. You will need version 2.0 of this package, available
4649 at @url{http://www.astro.uva.nl/~dominik/Tools}. Org-mode checks for
4650 the function @code{constants-get}, which has to be autoloaded in your
4651 setup. See the installation instructions in the file
4652 @file{constants.el}.
4653 @item @file{cdlatex.el} by Carsten Dominik
4654 @cindex @file{cdlatex.el}
4655 Org-mode can make use of the cdlatex package to efficiently enter
4656 La@TeX{} fragments into Org-mode files.
4657 @file{cdlatex.el} is not part of Emacs, find it on the web.
4658 @item @file{remember.el} by John Wiegley
4659 @cindex @file{remember.el}
4660 Org mode cooperates with remember, see @ref{Remember}.
4661 @file{Remember.el} is not part of Emacs, find it on the web.
4662 @cindex @file{table.el}
4663 @item @file{table.el} by Takaaki Ota
4664 Org mode cooperates with table.el, see @ref{table.el}. @file{table.el}
4665 is part of Emacs 22.
4666 @end table
4667
4668 @node Conflicts, , Cooperation, Interaction
4669 @subsection Packages that lead to conflicts with Org-mode
4670
4671 @table @asis
4672
4673 @cindex @file{allout.el}
4674 @item @file{allout.el} by Ken Manheimer
4675 Startup of Org-mode may fail with the error message
4676 @code{(wrong-type-argument keymapp nil)} when there is an outdated
4677 version @file{allout.el} on the load path, for example the version
4678 distributed with Emacs 21.x. Upgrade to Emacs 22 and this problem will
4679 disappear. If for some reason you cannot do this, make sure that org.el
4680 is loaded @emph{before} @file{allout.el}, for example by putting
4681 @code{(require 'org)} early enough into your @file{.emacs} file.
4682
4683 @cindex @file{CUA.el}
4684 @item @file{CUA.el} by Kim. F. Storm
4685 Keybindings in Org-mode conflict with the @kbd{S-<cursor>} keys
4686 used by CUA-mode (as well as pc-select-mode and s-region-mode) to
4687 select and extend the region. If you want to use one of these
4688 packages along with Org-mode, configure the variable
4689 @code{org-CUA-compatible}. When set, Org-mode will move the following
4690 keybindings in org-mode files, and in the agenda buffer (but not
4691 during date selection).
4692
4693 @example
4694 S-UP -> M-p S-DOWN -> M-n
4695 S-LEFT -> M-- S-RIGHT -> M-+
4696 S-RET -> C-S-RET
4697 @end example
4698
4699 Yes, these are unfortunately more difficult to remember. If you want
4700 to have other replacement keys, look at the variable
4701 @code{org-disputed-keys}.
4702 @item @file{windmove.el} by Hovav Shacham
4703 @cindex @file{windmove.el}
4704 Also this package uses the @kbd{S-<cursor>} keys, so everything written
4705 in the paragraph above about CUA mode also applies here.
4706 @end table
4707
4708
4709 @node Bugs, , Interaction, Miscellaneous
4710 @section Bugs
4711 @cindex bugs
4712
4713 Here is a list of things that should work differently, but which I
4714 have found too hard to fix.
4715
4716 @itemize @bullet
4717 @item
4718 If a table field starts with a link, and if the corresponding table
4719 column is narrowed (@pxref{Narrow columns}) to a width too small to
4720 display the link, the field would look entirely empty even though it is
4721 not. To prevent this, Org-mode throws an error. The work-around is to
4722 make the column wide enough to fit the link, or to add some text (at
4723 least 2 characters) before the link in the same field.
4724 @item
4725 Narrowing table columns does not work on XEmacs, because the
4726 @code{format} function does not transport text properties.
4727 @item
4728 Text in an entry protected with the @samp{QUOTE} keyword should not
4729 autowrap.
4730 @item
4731 When the application called by @kbd{C-c C-o} to open a file link fails
4732 (for example because the application does not exist or refuses to open
4733 the file), it does so silently. No error message is displayed.
4734 @item
4735 The remote-editing commands in the agenda buffer cannot be undone with
4736 @code{undo} called from within the agenda buffer. But you can go to
4737 the corresponding buffer (using @key{TAB} or @key{RET} and execute
4738 @code{undo} there.
4739 @item
4740 Recalculating a table line applies the formulas from left to right.
4741 If a formula uses @emph{calculated} fields further down the row,
4742 multiple recalculation may be needed to get all fields consistent.
4743 @item
4744 A single letter cannot be made bold, for example @samp{*a*}.
4745 @item
4746 The exporters work well, but could be made more efficient.
4747 @end itemize
4748
4749
4750 @node Extensions and Hacking, History and Acknowledgments, Miscellaneous, Top
4751 @appendix Extensions, Hooks and Hacking
4752
4753 This appendix lists extensions for Org-mode written by other authors.
4754 It also covers some aspects where users can easily extend the
4755 functionality of Org-mode.
4756
4757 @menu
4758 * Extensions:: Existing 3rd-part extensions
4759 * Dynamic blocks:: Automatically filled blocks
4760 @end menu
4761
4762 @node Extensions, Dynamic blocks, Extensions and Hacking, Extensions and Hacking
4763 @section Third-party extensions for Org-mode
4764
4765 The following extensions for Org-mode have been written by other people:
4766
4767 @table @asis
4768 @cindex @file{org-mouse.el}
4769 @item @file{org-mouse.el} by Piotr Zielinski
4770 This package implements extended mouse functionality for Org-mode. It
4771 allows you to cycle visibility and to edit the document structure with
4772 the mouse. Best of all, it provides a context-sensitive menu on
4773 @key{mouse-3} that changes depending on the context of a mouse-click.
4774 @file{org-mouse.el} is freely available at @url{http://www.cl.cam.ac.uk/~pz215/files/org-mouse.el}.
4775 @cindex @file{org-publish.el}
4776 @item @file{org-publish.el} by David O'Toole
4777 This package provides facilities for publishing related sets of Org-mode
4778 files together with linked files like images as a webpages. It is
4779 highly configurable and can be used for other publishing purposes as
4780 well. As of Org-mode version 4.30, @file{org-publish.el} is part of the
4781 Org-mode distribution. It is not yet part of Emacs, however, a delay
4782 caused by the preparations for the 22.1 release. In the mean time,
4783 @file{org-publish.el} can be downloaded from David's site:
4784 @url{http://dto.freeshell.org/e/org-publish.el}.
4785 @cindex @file{org-blog.el}
4786 @item @file{org-blog.el} by David O'Toole
4787 A blogging plug-in for @file{org-publish.el}.
4788 @url{http://dto.freeshell.org/notebook/OrgMode.html}.
4789 @cindex @file{org-blogging.el}
4790 @item @file{org-blogging.el} by Bastien Guerry
4791 Publish Org-mode files as
4792 blogs. @url{http://www.cognition.ens.fr/~guerry/org-blogging.html}.
4793 @end table
4794
4795 @node Dynamic blocks, , Extensions, Extensions and Hacking
4796 @section Dynamic blocks
4797
4798 Org-mode documents can contain @emph{dynamic blocks}. These are
4799 specially marked regions that are updated by some user-written
4800 function. A good example for such a block is the clock table inserted
4801 by the command @kbd{C-c C-x C-r} (@pxref{Clocking work time}).
4802
4803 Dynamic block are enclosed by a BEGIN-END structure that assigns a name
4804 to the block and can also specify parameters for the function producing
4805 the content of the block.
4806
4807 @example
4808 #+BEGIN: myblock :parameter1 value1 :parameter2 value2 .....
4809
4810 #+END:
4811 @end example
4812
4813 Dynamic blocks are updated with the following commands
4814
4815 @table @kbd
4816 @kindex C-c C-x C-u
4817 @item C-c C-x C-u
4818 Update dynamic block at point.
4819 @kindex C-u C-c C-x C-u
4820 @item C-u C-c C-x C-u
4821 Update all dynamic blocks in the current file.
4822 @end table
4823
4824 Updating a dynamic block means to remove all the text between BEGIN and
4825 END, parse the BEGIN line for parameters and then call the specific
4826 writer function for this block to insert the new content. For a block
4827 with name @code{myblock}, the writer function is
4828 @code{org-dblock-write:myblock} with as only parameter a property list
4829 with the parameters given in the begin line. Here is a trivial example
4830 of a block that keeps track of when the block update function was last
4831 run:
4832
4833 @example
4834 #+BEGIN: block-update-time :format "on %m/%d/%Y at %H:%M"
4835
4836 #+END:
4837 @end example
4838
4839 @noindent
4840 The corresponding block writer function could look like this:
4841
4842 @lisp
4843 (defun org-dblock-write:block-update-time (params)
4844 (let ((fmt (or (plist-get params :format) "%d. %m. %Y")))
4845 (insert "Last block update at: "
4846 (format-time-string fmt (current-time)))))
4847 @end lisp
4848
4849 If you want to make sure that all dynamic blocks are always up-to-date,
4850 you could add the function @code{org-update-all-dblocks} to a hook, for
4851 example @code{before-save-hook}. @code{org-update-all-dblocks} is
4852 written in a way that is does nothing in buffers that are not in Org-mode.
4853
4854
4855 @node History and Acknowledgments, Index, Extensions and Hacking, Top
4856 @appendix History and Acknowledgments
4857 @cindex acknowledgments
4858 @cindex history
4859 @cindex thanks
4860
4861 The beginnings of Org-mode go back to 2003. It was borne out of
4862 frustration over the user interface of the emacs outline-mode. All I
4863 wanted was to make working with an outline tree possible without having
4864 to remember more than 10 commands just for hiding and unhiding parts of
4865 the outline tree, and to allow to restructure a tree easily. Visibility
4866 cycling and structure editing were originally implemented in the package
4867 @file{outline-magic.el}, but quickly moved to the more general
4868 @file{org.el}. TODO entries, basic time stamps, and table support were
4869 added next, and highlight the two main goals that Org-mode still has
4870 today: To create a new, outline-based, plain text mode with innovative
4871 and intuitive editing features, and to incorporate project planning
4872 functionality directly into a notes file.
4873
4874 Since the first release, hundreds of emails to me or on
4875 @code{emacs-orgmode@@gnu.org} have provided a constant stream of bug
4876 reports, feedback, new ideas, and sometimes even patches and add-on
4877 code. Many thanks to everyone who has helped to improve this package.
4878 I am trying to keep here a list of the people who had significant
4879 influence in shaping one or more aspects of Org-mode. The list may not
4880 be complete, if I have forgotten someone, please accept my apologies and
4881 let me know.
4882
4883 @itemize @bullet
4884 @item
4885 @i{Thomas Baumann} contributed the code for links to the MH-E email
4886 system.
4887 @item
4888 @i{Alex Bochannek} provided a patch for rounding time stamps.
4889 @item
4890 @i{Charles Cave}'s suggestion sparked the implementation of templates
4891 for Remember.
4892 @item
4893 @i{Pavel Chalmoviansky} influenced the agenda treatment of items with
4894 specified time.
4895 @item
4896 @i{Gregory Chernov} patched support for lisp forms into table
4897 calculations and improved XEmacs compatibility, in particular by porting
4898 @file{nouline.el} to XEmacs.
4899 @item
4900 @i{Sacha Chua} suggested to copy some linking code from Planner.
4901 @item
4902 @i{Kees Dullemond} inspired the use of narrowed tabled columns.
4903 @item
4904 @i{Christian Egli} converted the documentation into TeXInfo format,
4905 patched CSS formatting into the HTML exporter, and inspired the agenda.
4906 @item
4907 @i{Nic Ferrier} contributed mailcap and XOXO support.
4908 @item
4909 @i{Niels Giessen} had the idea to automatically archive DONE trees.
4910 @item
4911 @i{Bastien Guerry} provoded extensive feedback.
4912 @item
4913 @i{Kai Grossjohann} pointed out key-binding conflicts caused by
4914 Org-mode.
4915 @item
4916 @i{Leon Liu} asked for embedded LaTeX and tested it.
4917 @item
4918 @i{Stefan Monnier} provided a patch to keep the Emacs-Lisp compiler
4919 happy.
4920 @item
4921 @i{Todd Neal} provided patches for links to Info files and elisp forms.
4922 @item
4923 @i{Tim O'Callaghan} suggested in-file links, search options for general
4924 file links, and TAGS.
4925 @item
4926 @i{Oliver Oppitz} suggested multi-state TODO items.
4927 @item
4928 @i{Scott Otterson} sparked the introduction of descriptive text for
4929 links, among other things.
4930 @item
4931 @i{Pete Phillips} helped the development of the TAGS feature.
4932 @item
4933 @i{T.V. Raman} reported bugs and suggested improvements.
4934 @item
4935 @i{Matthias Rempe} (Oelde) provided ideas, Windows support, and quality
4936 control.
4937 @item
4938 @i{Kevin Rogers} contributed code to access VM files on remote hosts.
4939 @item
4940 @i{Frank Ruell} solved the mystery of the @code{keymapp nil} bug, a
4941 conflict with @file{allout.el}.
4942 @item
4943 @i{Philip Rooke} created the Org-mode reference card and provided lots
4944 of feedback.
4945 @item
4946 @i{Christian Schlauer} proposed angular brackets around links, among
4947 other things.
4948 @item
4949 Linking to VM/BBDB/GNUS was inspired by @i{Tom Shannon}'s
4950 @file{organizer-mode.el}.
4951 @item
4952 @i{Daniel Sinder} came up with the idea of internal archiving by locking
4953 subtrees.
4954 @item
4955 @i{David O'Toole} wrote @file{org-publish.el} and drafted the manual
4956 chapter about publishing.
4957 @item
4958 @i{J@"urgen Vollmer} contributed code generating the table of contents
4959 in HTML output.
4960 @item
4961 @i{Chris Wallace} provided a patch implementing the @samp{QUOTE}
4962 keyword.
4963 @item
4964 @i{David Wainberg} suggested archiving, and improvements to the linking
4965 system.
4966 @item
4967 @i{John Wiegley} wrote @file{emacs-wiki.el} and @file{planner.el}. The
4968 development of Org-mode was fully independent, and both systems are
4969 really different beasts in their basic ideas and implementation details.
4970 I later looked at John's code, however, and learned from his
4971 implementation of (i) links where the link itself is hidden and only a
4972 description is shown, and (ii) popping up a calendar to select a date.
4973 @item
4974 @i{Carsten Wimmer} suggested some changes and helped fix a bug in
4975 linking to GNUS.
4976 @item
4977 @i{Roland Winkler} requested additional keybindings to make Org-mode
4978 work on a tty.
4979 @item
4980 @i{Piotr Zielinski} wrote @file{org-mouse.el} and showed how to follow
4981 links with mouse-1.
4982 @end itemize
4983
4984
4985 @node Index, Key Index, History and Acknowledgments, Top
4986 @unnumbered Index
4987
4988 @printindex cp
4989
4990 @node Key Index, , Index, Top
4991 @chapter Key Index
4992
4993 @printindex ky
4994
4995 @bye
4996
4997 @ignore
4998 arch-tag: 7893d1fe-cc57-4d13-b5e5-f494a1bcc7ac
4999 @end ignore