summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Dominik <dominik@nb-dominik2.science.uva.nl>2008-01-31 11:31:51 +0100
committerCarsten Dominik <dominik@nb-dominik2.science.uva.nl>2008-01-31 11:31:51 +0100
commit7cde0aa39176a34b20c5ddd895ba2ccb33526cbe (patch)
tree7d14a8d6fa953a548e3af93b7d69b7aa7d60a671
parent9b9f2f607084dce8f656aa75c9731e6a644b20ea (diff)
downloadorg-mode-7cde0aa39176a34b20c5ddd895ba2ccb33526cbe.tar.gz
Release 4.33release_4.33
-rw-r--r--README16
-rw-r--r--org713
-rw-r--r--org-publish.el134
-rw-r--r--org.el653
-rw-r--r--org.pdfbin514310 -> 527714 bytes
-rw-r--r--org.texi346
-rw-r--r--orgcard.pdfbin58097 -> 57994 bytes
-rw-r--r--orgcard.tex11
8 files changed, 1165 insertions, 708 deletions
diff --git a/README b/README
index 39ffe5c..2c350f1 100644
--- a/README
+++ b/README
@@ -1,18 +1,4 @@
-The is the distribution of org-mode, version 3.14
+The is a distribution of org-mode
The homepage of org-mode is at http://www.astro.uva.nl/~domnik/Tools/org/
-INSTALLATION
-------------
-
-The installation instructions are in the documentation, org.pdf
-
-FILES IN THE DISTRIBUTION
--------------------------
-
-org.el The Emacs lisp code
-org.texi Documentation source file
-org.pdf Documentation in PDF format
-org Documentation in Info format
-orgcard.pdf Refcard, PDF format
-orgcard.tex TeX source for refcard.pdf
diff --git a/org b/org
index 4d03747..ebefa4f 100644
--- a/org
+++ b/org
@@ -5,7 +5,7 @@ START-INFO-DIR-ENTRY
* Org Mode: (org). outline-based notes management and organizer
END-INFO-DIR-ENTRY
- This manual is for Org-mode (version 4.30).
+ This manual is for Org-mode (version 4.33).
Copyright (C) 2004, 2005, 2006 Free Software Foundation
@@ -27,7 +27,7 @@ File: org, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
Org Mode Manual
***************
-This manual is for Org-mode (version 4.30).
+This manual is for Org-mode (version 4.33).
Copyright (C) 2004, 2005, 2006 Free Software Foundation
@@ -54,7 +54,7 @@ This manual is for Org-mode (version 4.30).
* Tags:: Tagging headlines and matching sets of tags
* Agenda views:: Collecting information into views
* Exporting:: Sharing and publishing of notes
-* Publishing::
+* Publishing:: Create a web site of linked Org-mode files
* Miscellaneous:: All the rest which did not fit elsewhere
* Index:: The fast road to specific information
* Key Index:: Key bindings and where they are described
@@ -177,9 +177,9 @@ Configuration
* Project alist:: The central configuration variable
* File sources and destinations:: From here to there
* Selecting files:: What files are part of the project?
-* Publishing action::
+* Publishing action:: Setting the function doing the publishing
* Publishing options:: Tweaking HTML export
-* Links:: Linking between files of a project
+* Publishing links:: Which links keep working after publishing?
* Project page index:: Publishing a list of project files
Sample configuration
@@ -477,7 +477,7 @@ File: org, Node: Structure editing, Next: Archiving, Prev: Motion, Up: Docum
command is used in the middle of a line, the line is split and the
rest of the line becomes the new headline. If the command is used
at the beginning of a headline, the new headline is created before
- the current line. It at the beginning of any other line, the
+ the current line. If at the beginning of any other line, the
content of that line is made the new heading.
`M-S-<RET>'
@@ -564,7 +564,7 @@ basic one is `org-occur':
body are made visible. In order to provide minimal context, also
the full hierarchy of headlines above the match is shown, as well
as the headline following the match. Each match is also
- highlighted, the highlights disappear when the buffer is changed
+ highlighted; the highlights disappear when the buffer is changed
with an editing command.
For frequently used sparse trees of specific search strings, you can
use the variable `org-agenda-custom-commands' to define fast keyboard
@@ -578,8 +578,8 @@ For example:
will define the key `C-c a f' as a shortcut for creating a sparse tree
matching the string `FIXME'.
- Other commands are using sparse trees as well. For example `C-c
-C-v' creates a sparse TODO tree (*note TODO basics::).
+ Other commands use sparse trees as well. For example `C-c C-v'
+creates a sparse TODO tree (*note TODO basics::).
To print a sparse tree, you can use the Emacs command
`ps-print-buffer-with-faces' which does not print invisible parts of
@@ -602,7 +602,7 @@ File: org, Node: Plain lists, Prev: Sparse trees, Up: Document structure
Headlines define both the structure of the Org-mode file, and also lists
(for example, TODO items (*note TODO items::) should be created using
-headline levels). However, when taking notes, the plain text is
+headline levels). When taking notes, however, the plain text is
sometimes easier to read with hand-formatted lists. Org-mode supports
editing such lists, and the HTML exporter (*note Exporting::) does
parse and format them.
@@ -628,16 +628,16 @@ is indented like the bullet/number, or less. For example:
But in the end, not individual scenes matter but the film as a whole.
Org-mode supports these lists by tuning filling and wrapping commands
-to correctly deal with them.
+to deal with them correctly.
Every item in a plain list can be made a checkbox by starting it with
-the string `[_]'. The checkbox status can conveniently be toggled with
+the string `[ ]'. The checkbox status can conveniently be toggled with
`C-c C-c'.
- * Shopping list
- - [_] Milk
- - [X] Butter
- - [_] bred
+ * Stupid mistakes when distributing a new version
+ - [ ] update also Emacs CVS
+ - [X] forget to update index.html on the website
+ - [X] leaving a `(debug)' form in the code
The following commands act on items when the cursor is in the first
line of an item (the line with the bullet or number).
@@ -645,8 +645,8 @@ line of an item (the line with the bullet or number).
`<TAB>'
Items can be folded just like headline levels if you set the
variable `org-cycle-include-plain-lists'. The level of an item is
- then given by the indentation of the bullet/number. However,
- items are always subordinate to real headlines, the hierarchies
+ then given by the indentation of the bullet/number. Items are
+ always subordinate to real headlines, however; the hierarchies
remain completely separated.
`M-<RET>'
@@ -657,8 +657,14 @@ line of an item (the line with the bullet or number).
_whitespace before a bullet or number_, the new item is created
_before_ the current item. If the command is executed in the
white space before the text that is part of an item but does not
- contain the bullet, a bullet is added to the current line. If the
- current item has a checkbox, so will the newly created item.
+ contain the bullet, a bullet is added to the current line.
+
+`M-S-<RET>'
+ Insert a new item with a checkbox.
+
+`S-<up>'
+`S-<down>'
+ Jump to the previous/next item in the current list.
`M-S-<up>'
`M-S-<down>'
@@ -686,7 +692,7 @@ line of an item (the line with the bullet or number).
be seen as top-level headlines. Also, when you are hiding leading
stars to get a clean outline view, plain list items starting with a
star are visually indistinguishable from true headlines. In short:
-even though `*' is supported, it may be better to not use it for plain
+even though `*' is supported, it may be better not to use it for plain
list items

@@ -755,7 +761,7 @@ Creation and conversion
consecutive spaces required to identify a field separator
(default: just one).
If there is no active region, this command creates an empty
- Org-mode table. However, it's easier to just start typing, like
+ Org-mode table. But it's easier just to start typing, like
`|Name|Phone|Age <RET> |- <TAB>'.
Re-aligning and field motion
@@ -918,7 +924,7 @@ off with
(setq org-enable-table-editor nil)
-The only table command which then still works is `C-c C-c' to do a
+Then the only table command that still works is `C-c C-c' to do a
manual re-align.

@@ -1049,8 +1055,8 @@ the final result. A few examples:
---------- Footnotes ----------
(1) By default, Org-mode uses the standard calc modes (precision 12,
-angular units degrees, fraction and symbolic modes off). However, the
-display format has been changed to `(float 5)' to keep tables compact.
+angular units degrees, fraction and symbolic modes off). The display
+format, however, has been changed to `(float 5)' to keep tables compact.
The default settings can be configured using the variable
`org-calc-default-modes'.
@@ -1060,11 +1066,11 @@ File: org, Node: Lisp formulas, Next: Column formulas, Prev: Formula syntax,
3.3.2 Emacs Lisp forms as formulas
----------------------------------
-It is also possible to write a formula in Emacs lisp, this can be useful
+It is also possible to write a formula in Emacs lisp; this can be useful
for string manipulation and control structures. If a formula starts
with a single quote followed by an opening parenthesis, then it is
evaluated as a lisp form. The evaluation should return either a string
-or a number. Just like with `calc' formulas, you can provide a format
+or a number. Just as with `calc' formulas, you can provide a format
specifier after a semicolon. A few examples:
swap the first two characters of the content of column 1
@@ -1137,7 +1143,7 @@ collects exam results of students and makes use of these features:
#+TBLFM: $6=vsum($P1..$P3)::$7=10*$Tot/$max;%.1f::$at=vmean(&II);%.1f
Important: Please note that for these special tables, recalculating the
-table with `C-u C-c *' will only affect rows which are marked `#' or
+table with `C-u C-c *' will only affect rows that are marked `#' or
`*', and named fields. The column formulas are not applied in rows
with empty first field.
@@ -1236,7 +1242,7 @@ File: org, Node: Appetizer, Prev: Editing/debugging formulas, Up: Table calcu
3.3.7 Appetizer
---------------
-Finally, just to wet your appetite on what can be done with the
+Finally, just to whet your appetite on what can be done with the
fantastic `calc' package, here is a table that computes the Taylor
series for a couple of functions (homework: try that with Excel :-)
@@ -1259,7 +1265,7 @@ File: org, Node: orgtbl-mode, Next: table.el, Prev: Table calculations, Up:
=========================
If you like the intuitive way the Org-mode table editor works, you
-might want to use it also in other modes like text-mode or mail-mode.
+might also want to use it in other modes like text-mode or mail-mode.
The minor mode Orgtbl-mode makes this possible. You can always toggle
the mode with `M-x orgtbl-mode'. To turn it on by default, for example
in mail mode, use
@@ -1298,7 +1304,7 @@ File: org, Node: Hyperlinks, Next: TODO items, Prev: Tables, Up: Top
************
Just like HTML, Org-mode provides links inside a file, and external
-links to other files, Usenet articles, emails and much more.
+links to other files, Usenet articles, emails, and much more.
* Menu:
@@ -1317,7 +1323,7 @@ File: org, Node: Link format, Next: Internal links, Prev: Hyperlinks, Up: Hy
===============
Org-mode will recognize plain URL-like links and activate them as
-clickable links. However, the general link format looks like this:
+clickable links. The general link format, however, looks like this:
[[link][description]] or alternatively [[link]]
@@ -1334,9 +1340,9 @@ not description) or the `description' part. To edit also the invisible
the displayed text and press <BACKSPACE>, you will remove the
(invisible) bracket at that location. This makes the link incomplete
and the internals are again displayed as plain text. Inserting the
-missing bracket does hide the link internals again. To show the
-internal structure of all links, use the menu entry
-`Org->Hyperlinks->Literal links'.
+missing bracket hides the link internals again. To show the internal
+structure of all links, use the menu entry `Org->Hyperlinks->Literal
+links'.

File: org, Node: Internal links, Next: External links, Prev: Link format, Up: Hyperlinks
@@ -1349,14 +1355,14 @@ the current file. Links such as `[[My Target]]' or `[[My Target][Find
my target]]' lead to a text search in the current file. The link can
be followed with `C-c C-o' when the cursor is on the link, or with a
mouse click (*note Handling links::). The preferred match for such a
-link is a dedicated target: The same string in double angular brackets.
-Targets may be located anywhere, often it is convenient to put them
-into a comment line, for example
+link is a dedicated target: the same string in double angular brackets.
+Targets may be located anywhere; often it is convenient to put them
+into a comment line. For example
# <<My Target>>
In HTML export (*note HTML export::), such targets will become named
-anchors for direct access through `http' links.
+anchors for direct access through `http' links(1).
If no dedicated target exists, Org-mode will search for the words in
the link. In the above example the search would be for `my target'.
@@ -1385,6 +1391,11 @@ earlier.
* Radio targets:: Make targets trigger links in plain text.
* CamelCase links:: Activating CamelCase words as links
+ ---------- Footnotes ----------
+
+ (1) Note that text before the first headline will never be exported,
+so the first such target must be after the first headline.
+

File: org, Node: Radio targets, Next: CamelCase links, Prev: Internal links, Up: Internal links
@@ -1419,28 +1430,31 @@ File: org, Node: External links, Next: Handling links, Prev: Internal links,
4.3 External links
==================
-Org-mode supports links to files, websites, Usenet and email messages;
-and BBDB database entries. External links are URL-like locators. The
-following list shows examples for each link type.
-
- http://www.astro.uva.nl/~dominik on the web
- file:/home/dominik/images/jupiter.jpg file, absolute path
- file:papers/last.pdf file, relative path
- news:comp.emacs Usenet link
- mailto:adent@galaxy.net Mail link
- vm:folder VM folder link
- vm:folder#id VM message link
- vm://myself@some.where.org/folder#id VM on remote machine
- wl:folder WANDERLUST folder link
- wl:folder#id WANDERLUST message link
- mhe:folder MH-E folder link
- mhe:folder#id MH-E message link
- rmail:folder RMAIL folder link
- rmail:folder#id RMAIL message link
- gnus:group GNUS group link
- gnus:group#id GNUS article link
- bbdb:Richard Stallman BBDB link
- shell:ls *.org A shell command
+Org-mode supports links to files, websites, Usenet and email messages,
+and BBDB database entries. External links are URL-like locators. They
+start with a short identifying string followed by a colon. There can be
+no space after the colon. The following list shows examples for each
+link type.
+
+ http://www.astro.uva.nl/~dominik on the web
+ file:/home/dominik/images/jupiter.jpg file, absolute path
+ file:papers/last.pdf file, relative path
+ news:comp.emacs Usenet link
+ mailto:adent@galaxy.net Mail link
+ vm:folder VM folder link
+ vm:folder#id VM message link
+ vm://myself@some.where.org/folder#id VM on remote machine
+ wl:folder WANDERLUST folder link
+ wl:folder#id WANDERLUST message link
+ mhe:folder MH-E folder link
+ mhe:folder#id MH-E message link
+ rmail:folder RMAIL folder link
+ rmail:folder#id RMAIL message link
+ gnus:group GNUS group link
+ gnus:group#id GNUS article link
+ bbdb:Richard Stallman BBDB link
+ shell:ls *.org A shell command
+ elisp:(find-file-other-frame "Elisp.org") An elisp form to evaluate
A link should be enclosed in double brackets and may contain a
descriptive text to be displayed instead of the url (*note Link
@@ -1450,8 +1464,8 @@ format::), for example:
Org-mode also finds external links in the normal text and activates
them as links. If spaces must be part of the link (for example in
-`bbdb:Richard Stallman') or to remove ambiguities about the end of the
-link, enclose them in angular brackets.
+`bbdb:Richard Stallman'), or you need to remove ambiguities about the
+end of the link, enclose them in angular brackets.

File: org, Node: Handling links, Next: Search options, Prev: External links, Up: Hyperlinks
@@ -1469,15 +1483,15 @@ insert it into an org-mode file, and to follow the link.
For Org-mode files, if there is a `<<target>>' at the cursor, the
link points to the target. Otherwise it points to the current
headline. For VM, RMAIL, WANDERLUST, MH-E, GNUS and BBDB buffers,
- the link will indicate to the current article/entry. For W3 and
- W3M buffers, the link goes to the current URL. For any other
- files, the link will point to the file, with a search string
- (*note Search options::) pointing to the contents of the current
- line. If there is an active region, the selected words will form
- the basis of the search string. If the automatically created link
- is not working correctly or accurately enough, you can write
- custom functions to select the search string and to do the search
- for particular file types - see *Note Custom searches::. The key
+ the link will indicate the current article/entry. For W3 and W3M
+ buffers, the link goes to the current URL. For any other files,
+ the link will point to the file, with a search string (*note
+ Search options::) pointing to the contents of the current line.
+ If there is an active region, the selected words will form the
+ basis of the search string. If the automatically created link is
+ not working correctly or accurately enough, you can write custom
+ functions to select the search string and to do the search for
+ particular file types - see *Note Custom searches::. The key
binding `C-c l' is only a suggestion - see *Note Installation and
activation::.
@@ -1509,15 +1523,15 @@ insert it into an org-mode file, and to follow the link.
`C-u' prefixes.
`C-c C-l with cursor on existing link'
- When the cursor is on an existing link, `C-c C-l' allows to edit
- the link and description parts of the link.
+ When the cursor is on an existing link, `C-c C-l' allows you to
+ edit the link and description parts of the link.
`C-c C-o'
Open link at point. This will launch a web browser for URLs (using
`browse-url-at-point'), run vm/mh-e/wanderlust/rmail/gnus/bbdb for
the corresponding links, and execute the command in a shell link.
When the cursor is on an internal link, this commands runs the
- corresponding search. When the cursor is on a TAGS list in a
+ corresponding search. When the cursor is on a TAG list in a
headline, it creates the corresponding TAGS view. If the cursor
is on a time stamp, it compiles the agenda for that date.
Furthermore, it will visit text files in `file:' links with Emacs
@@ -1528,7 +1542,7 @@ insert it into an org-mode file, and to follow the link.
`mouse-2'
`mouse-1'
- On links, `mouse-2' will open the link just like `C-c C-o' would.
+ On links, `mouse-2' will open the link just as `C-c C-o' would.
Under Emacs 22, also `mouse-1' will follow a link.
`mouse-3'
@@ -1573,7 +1587,7 @@ link, together with an explanation:
Search for a link target `<<My Target>>', or do a text search for
`my target', similar to the search in internal links, see *Note
Internal links::. In HTML export (*note HTML export::), such a
- file link will become an html reference to the corresponding named
+ file link will become an HTML reference to the corresponding named
anchor in the linked file.
`*My Target'
@@ -1587,7 +1601,7 @@ link, together with an explanation:
As a degenerate case, a file link with an empty file name can be used
to search the current file. For example, `<file:::find me>' does a
-search for `find me' in the current file, just like `[[find me]]' would.
+search for `find me' in the current file, just as `[[find me]]' would.
---------- Footnotes ----------
@@ -1628,10 +1642,10 @@ quick notes with little interruption of your work flow. See
`http://www.emacswiki.org/cgi-bin/wiki/RememberMode' for more
information. The notes produced by _Remember_ can be stored in
different ways, and Org-mode files are a good target. Org-mode allows
-to file away notes either to a default file, or directly to the correct
-location in your Org-mode outline tree. The following customization
-will tell _Remember_ to use org files as target, and to create
-annotations compatible with Org-mode links.
+you to file away notes either to a default file, or directly to the
+correct location in your Org-mode outline tree. The following
+customization will tell _Remember_ to use org files as target, and to
+create annotations compatible with Org-mode links.
(setq org-directory "~/path/to/my/orgfiles/")
(setq org-default-notes-file "~/.notes")
@@ -1743,6 +1757,12 @@ The most important commands to work with TODO entries are:
The same rotation can also be done "remotely" from the timeline and
agenda buffers with the `t' command key (*note Agenda commands::).
+`S-<right>'
+`S-<left>'
+ Select the following/preceding TODO state, similar to cycling.
+ Mostly useful if more than two TODO states are possible (*note
+ TODO extensions::).
+
`C-c C-v'
View TODO items in a _sparse tree_ (*note Sparse trees::). Folds
the entire buffer, but shows all TODO items and the headings
@@ -1811,7 +1831,7 @@ of working on an item, for example:
(setq org-todo-keywords '("TODO" "FEEDBACK" "VERIFY" "DONE")
org-todo-interpretation 'sequence)
- Changing these variables becomes only effective in a new Emacs
+ Changing these variables only becomes effective in a new Emacs
session. With this setup, the command `C-c C-t' will cycle an entry
from TODO to FEEDBACK, then to VERIFY, and finally to DONE. You may
also use a prefix argument to quickly select a specific state. For
@@ -1876,7 +1896,7 @@ To make sure you are using the correct keyword, type `#+' into the
buffer and then use `M-<TAB>' completion.
Remember that the last keyword must always mean that the item is DONE
-(you may use a different word, though). Also note that in each file,
+(although you may use a different word). Also note that in each file,
only one of the two aspects of TODO keywords can be used. After
changing one of these lines, use `C-c C-c' with the cursor still in the
line to make the changes known to Org-mode(1).
@@ -1915,18 +1935,18 @@ treated as priority `B'. Priorities make a difference only in the
agenda (*note Weekly/Daily agenda::).
`C-c ,'
- Set the priority of the current item. The command prompts for a
- priority character `A', `B' or `C'. When you press <SPC> instead,
- the priority cookie is removed from the headline. The priorities
- can also be changed "remotely" from the timeline and agenda buffer
- with the `,' command (*note Agenda commands::).
+ Set the priority of the current headline. The command prompts for
+ a priority character `A', `B' or `C'. When you press <SPC>
+ instead, the priority cookie is removed from the headline. The
+ priorities can also be changed "remotely" from the timeline and
+ agenda buffer with the `,' command (*note Agenda commands::).
`S-<up>'
`S-<down>'
- Increase/decrease priority of current item. Note that these keys
- are also used to modify time stamps (*note Creating timestamps::).
- Furthermore, these keys are also used by CUA-mode (*note
- Conflicts::).
+ Increase/decrease priority of current headline. Note that these
+ keys are also used to modify time stamps (*note Creating
+ timestamps::). Furthermore, these keys are also used by CUA-mode
+ (*note Conflicts::).

File: org, Node: Timestamps, Next: Tags, Prev: TODO items, Up: Top
@@ -1954,7 +1974,7 @@ A time stamp can appear anywhere in the headline or body of an org-tree
entry. Its presence allows entries to be shown on specific dates in
the agenda (*note Weekly/Daily agenda::). We distinguish:
-TIMESTAMP
+PLAIN TIME STAMP
A simple time stamp just assigns a date/time to an item. This is
just like writing down an appointment in a paper agenda, or like
writing down an event in a diary, when you want to take not of
@@ -1962,7 +1982,7 @@ TIMESTAMP
headline of an entry associated with a plain time stamp will be
shown exactly on that date.
-TIMERANGE
+TIME STAMP RANGE
Two time stamps connected by `--' denote a time range. The
headline will be shown on the first and last day of the range, and
on any dates that are displayed and fall in the range. Here is an
@@ -1971,7 +1991,7 @@ TIMERANGE
** Meeting in Amsterdam
<2004-08-23 Mon>--<2004-08-26 Thu>
-SCHEDULED
+TIME STAMP WITH SCHEDULED KEYWORD
If a time stamp is preceded by the word `SCHEDULED:', it means you
are planning to start working on that task on the given date. So
this is not about recording an event, but about planning your
@@ -1984,7 +2004,7 @@ SCHEDULED
*** TODO Call Trillian for a date on New Years Eve.
SCHEDULED: <2004-12-25 Sat>
-DEADLINE
+TIME STAMP WITH DEADLINE KEYWORD
If a time stamp is preceded by the word `DEADLINE:', the task
(most likely a TODO item) is supposed to be finished on that date,
and it will be listed then. In addition, the compilation for
@@ -1996,6 +2016,12 @@ DEADLINE
The editor in charge is <bbdb:Ford Prefect>
DEADLINE: <2004-02-29 Sun>
+TIME STAMP WITH CLOSED KEYWORD
+ When `org-log-done' is non-nil, Org-mode will automatically insert
+ a special time stamp each time a TODO entry is marked done (*note
+ Progress logging::). This time stamp is enclosed in square
+ brackets instead of angular brackets.
+

File: org, Node: Creating timestamps, Prev: Time stamps, Up: Timestamps
@@ -2034,7 +2060,8 @@ format.
(*note Weekly/Daily agenda::).
`C-c C-d'
- Insert `DEADLINE' keyword along with a stamp.
+ Insert `DEADLINE' keyword along with a stamp. The insertion will
+ happen in the line directly following the headline.
`C-c C-w'
Create a sparse tree with all deadlines that are either past-due,
@@ -2044,7 +2071,9 @@ format.
all deadlines due tomorrow.
`C-c C-s'
- Insert `SCHEDULED' keyword along with a stamp.
+ Insert `SCHEDULED' keyword along with a stamp. The insertion will
+ happen in the line directly following the headline. Any CLOSED
+ timestamp will be removed.
`S-<left>'
`S-<right>'
@@ -2107,9 +2136,9 @@ File: org, Node: Tags, Next: Agenda views, Prev: Timestamps, Up: Top
7 Tags
******
-If you wish to implement a system to cross-correlate information, an
-excellent way is to assign tags to headline. Org-mode has extensive
-support for using tags.
+If you wish to implement a system of labels and contexts for
+cross-correlating information, an excellent way is to assign tags to
+headlines. Org-mode has extensive support for using tags.
Every headline can contain a list of tags, at the end of the
headline. Tags are normal words containing letters, numbers, `_', and
@@ -2140,8 +2169,8 @@ the final heading will have the tags `:WORK:', `:BOSS:', `:NOTES:', and
`:ACTION:'. When executing tag searches and Org-mode finds that a
certain headline matches the search criterion, it will not check any
sublevel headline, assuming that these likely also match, and that the
-list of matches can become very long. However, this may not be what
-you want, and you can influence inheritance and searching using the
+list of matches can become very long. This may not be what you want,
+however, and you can influence inheritance and searching using the
variables `org-use-tag-inheritance' and `org-tags-match-list-sublevels'.

@@ -2150,21 +2179,61 @@ File: org, Node: Setting tags, Next: Tag searches, Prev: Tag inheritance, Up
7.2 Setting tags
================
-As Org-mode deals with plain text files, tags can simply be typed into
-the buffer. After a colon, `M-<TAB>' offers completion on all tags
-being used in the current buffer. There is also a special command for
-inserting tags:
+Tags can simply be typed into the buffer at the end of a headline.
+After a colon, `M-<TAB>' offers completion on tags. There is also a
+special command for inserting tags:
`C-c C-c'
- Enter new tags for the current headline. The minibuffer will
- prompt for a list of tags and offer completion with respect to all
- other tags used in the current buffer. Several tags, separated by
- colons, may be specified at the prompt. After pressing <RET>, the
- tags will be inserted and aligned to `org-tags-column'. When
- called with a `C-u' prefix, all tags in the current buffer will be
- aligned to that column, just to make things look nice. TAGS are
- automatically realigned after promotion, demotion, and TODO state
- changes (*note TODO basics::).
+ Enter new tags for the current headline. Org-mode will either
+ offer completion or a special single-key interface for setting
+ tags, see below. After pressing <RET>, the tags will be inserted
+ and aligned to `org-tags-column'. When called with a `C-u'
+ prefix, all tags in the current buffer will be aligned to that
+ column, just to make things look nice. TAGS are automatically
+ realigned after promotion, demotion, and TODO state changes (*note
+ TODO basics::).
+
+ Org will support tag insertion based on a _list of tags_. By
+default this list is constructed dynamically, containing all tags
+currently used in the buffer. You may also globally specify a hard list
+of tags with the variable `org-tag-alist'. Finally you can set the
+allowed tags for a given file with lines like
+
+ #+TAGS: @WORK @HOME @TENNISCLUB
+ #+TAGS: Laptop Car PC Sailboat
+
+ The default method Org-mode uses to support setting tags is
+completion. However, it also implements a much better method: _fast tag
+selection_. This method allows to select and deselect tags with a
+single key per tag. To function efficiently, you need to assign unique
+keys to all tags. This can be done globally with
+
+ (setq org-tag-alist '(("@WORK" . ?w) ("@HOME" . ?h) ("Laptop" . ?l)))
+
+or on a per-file basis with
+
+ #+TAGS: @WORK(w) @HOME(h) @TENNISCLUB(t)
+ #+TAGS: Laptop(l) Car(c) PC(p) Sailboat(s)
+
+Don't forget to press `C-c C-c' with the cursor in one of these lines
+to activate any changes.
+
+ If selection keys have been configured, pressing `C-c C-c' will
+automatically present you with a special interface, listing inherited
+tags, the tags of the current headline, and a list of all legal tags
+with corresponding keys. Pressing keys for the tags will add or remove
+them from the list of tags in the current line. <SPC> clears all tags
+for this line, `RET' accepts the modified set, and `C-g' aborts without
+installing changes. This method lets you assing tags to a headline
+with very few keys. With the above setup, you could clear the current
+tags and set `@HOME', `Laptop' and `PC' tags with just the following
+keys: `C-c C-c <SPC> h l p <RET>'.
+
+ What if you have globally defined your preferred set of tags using
+the variable `org-tag-alist', but would like to use a dynamic tag list
+in a specific file? Just add and empty TAGS option line to that file:
+
+ #+TAGS:

File: org, Node: Tag searches, Prev: Setting tags, Up: Tags
@@ -2694,7 +2763,7 @@ Remote editing
`i'
Insert a new entry into the diary. Prompts for the type of entry
(day, weekly, monthly, yearly, anniversary, cyclic) and creates a
- new entry in the diary, just like `i d' etc. would do in the
+ new entry in the diary, just as `i d' etc. would do in the
calendar. The date is taken from the cursor position.
Calendar commands
@@ -2747,7 +2816,7 @@ File: org, Node: Exporting, Next: Publishing, Prev: Agenda views, Up: Top
Org-mode documents can be exported into a variety of other formats. For
printing and sharing of notes, ASCII export produces a readable and
-simple version of an Org-mode file. HTML export allows to publish a
+simple version of an Org-mode file. HTML export allows you to publish a
notes file on the web, while the XOXO format provides a solid base for
exchange with a broad range of other applications. To incorporate
entries with associated times like deadlines or appointments into a
@@ -2826,12 +2895,22 @@ example,
creates two levels of headings and does the rest as items.
If you want to include HTML tags which should be interpreted as such,
-mark them with a `@' like in `@<b>bold text@</b>'. Plain `<' and `>'
-are always transformed to `&lt;' and `&gt;' in HTML export.
+mark them with `@' as in `@<b>bold text@</b>'. Plain `<' and `>' are
+always transformed to `&lt;' and `&gt;' in HTML export.
+
+ Internal links (*note Internal links::) will continue to work in HTML
+files only if they match a dedicated `<<target>>'. Automatic links
+created by radio targets (*note Radio targets::) will also work in the
+HTML file. Links to external files will still work if the HTML file is
+in the same directory as the Org-mode file. Links to other `.org'
+files will be translated into HTML links under the assumption that an
+HTML version also exists of the linked file. For information related to
+linking files while publishing them to a publishing directory see *Note
+Publishing links::.
You can also give style information for the exported file. The HTML
-exporter asigns the following CSS classes to appropriate parts of the
-document - your style specifications may change these.
+exporter assigns the following CSS classes to appropriate parts of the
+document - your style specifications may change these:
.todo TODO keywords
.done the DONE keyword
.timestamp time stamp
@@ -2839,7 +2918,7 @@ document - your style specifications may change these.
.tag tag in a headline
.target target for links
- The default specification can be configured through the option
+ The default style specification can be configured through the option
`org-export-html-style'. If you want to use a file-local style, you
may use file variables, best wrapped into a COMMENT section at the end
of the outline tree. For example:
@@ -3020,7 +3099,7 @@ you can:
num: turn on/off section-numbers
toc: turn on/off table of contents
\n: turn on/off linebreak-preservation
- @: turn on/off quoted html tags
+ @: turn on/off quoted HTML tags
:: turn on/off fixed-width sections
|: turn on/off tables
^: turn on/off TeX-like syntax for sub- and superscripts.
@@ -3034,7 +3113,7 @@ File: org, Node: Publishing, Next: Miscellaneous, Prev: Exporting, Up: Top
*************
Org-mode includes(1) a publishing management system that allows you to
-configure automatic html conversion of _projects_ composed of
+configure automatic HTML conversion of _projects_ composed of
interlinked org files. This system is called _org-publish_. You can
also configure org-publish to automatically upload your exported HTML
pages and related attachments, such as images and source code files, to
@@ -3069,9 +3148,9 @@ and many other properties of a project.
* Project alist:: The central configuration variable
* File sources and destinations:: From here to there
* Selecting files:: What files are part of the project?
-* Publishing action::
+* Publishing action:: Setting the function doing the publishing
* Publishing options:: Tweaking HTML export
-* Links:: Linking between files of a project
+* Publishing links:: Which links keep working after publishing?
* Project page index:: Publishing a list of project files

@@ -3157,7 +3236,7 @@ provides one for attachments (files that only need to be copied):
`org-publish-attachment'.

-File: org, Node: Publishing options, Next: Links, Prev: Publishing action, Up: Configuration
+File: org, Node: Publishing options, Next: Publishing links, Prev: Publishing action, Up: Configuration
10.1.5 Options for the HTML exporter
------------------------------------
@@ -3197,11 +3276,11 @@ respective variable for details.
When a property is given a value in org-publish-project-alist, its
setting overrides the value of the corresponding user variable (if any)
-during publishing. However, options set within a file (*note Export
-options::) override everything.
+during publishing. options set within a file (*note Export options::),
+however, override everything.

-File: org, Node: Links, Next: Project page index, Prev: Publishing options, Up: Configuration
+File: org, Node: Publishing links, Next: Project page index, Prev: Publishing options, Up: Configuration
10.1.6 Links between published files
------------------------------------
@@ -3219,7 +3298,7 @@ org-publish to upload the related files, these links will work too.
*Note Complex example:: for an example of this usage.

-File: org, Node: Project page index, Prev: Links, Up: Configuration
+File: org, Node: Project page index, Prev: Publishing links, Up: Configuration
10.1.7 Project page index
-------------------------
@@ -3454,6 +3533,11 @@ file is visited again in a new Emacs session.
current file. The corresponding variables are `org-todo-keywords'
and `org-todo-interpretation'.
+`#+TAGS: TAG1(c1) TAG2(c2)'
+ These lines (several such lines are allowed) specify the legal
+ tags in this file, and (potionally) the corresponding _fast tag
+ selection_ keys. The corresponding variable is `org-tag-alist'.
+
`#+CATEGORY:'
This line sets the category for the agenda file. The category
applies for all subsequent lines until the next `#+CATEGORY' line,
@@ -3477,7 +3561,7 @@ The key `C-c C-c' has many purposes in org-mode, which are all
mentioned scattered throughout this manual. One specific function of
this key is to add _tags_ to a headline (*note Tags::). In many other
circumstances it means something like _Hey Org-mode, look here and
-update according to what you see here_. Here is a summary what this
+update according to what you see here_. Here is a summary of what this
means in different contexts.
- If the cursor is in one of the special `#+KEYWORD' lines, this
@@ -3697,18 +3781,19 @@ File: org, Node: FAQ, Next: Interaction, Prev: TTY keys, Up: Miscellaneous
(setq org-link-style 'plain
org-link-format "<%s>")
- 8. When I am executing shell links I always get a confirmation prompt
- and need to type `yes <RET>', that's 4 key presses! Can I get rid
- of this?
+ 8. When I am executing shell/elisp links I always get a confirmation
+ prompt and need to type `yes <RET>', that's 4 key presses! Can I
+ get rid of this?
The confirmation is there to protect you from unwantingly execute
potentially dangerous commands. For example, imagine a link
`[[shell:rm -rf ~/*][Google Search]]'. In an Org-mode buffer, this
command would look like `Google Search', but really it would remove
your home directory. If you wish, you can make it easier to
- respond to the query by setting `org-confirm-shell-links' to
- `y-or-n-p'. Then a single `y' keypress will be enough to confirm
- shell links. It is also possible to turn off this check entirely,
- but I do not recommend to do this. Be warned.
+ respond to the query by setting `org-confirm-shell-link-function'
+ and/or `org-confirm-elisp-link-function' to `y-or-n-p'. Then a
+ single `y' keypress will be enough to confirm those links. It is
+ also possible to turn off this check entirely, but I do not
+ recommend to do this. Be warned.
9. All these stars are driving me mad, I just find the Emacs outlines
unreadable. Can't you just put white space and a single star as a
@@ -3791,11 +3876,11 @@ File: org, Node: FAQ, Next: Interaction, Prev: TTY keys, Up: Miscellaneous
If you now launch the calendar and press `d' to display a diary,
the headlines of entries containing a timestamp, date range,
schedule, or deadline referring to the selected date will be
- listed. Just like in Org-mode's agenda view, the diary for
- _today_ contains additional entries for overdue deadlines and
- scheduled items. See also the documentation of the `org-diary'
- function. Under XEmacs, it is not possible to jump back from the
- diary to the org, this works only in the agenda buffer.
+ listed. Just like Org-mode's agenda view, the diary for _today_
+ contains additional entries for overdue deadlines and scheduled
+ items. See also the documentation of the `org-diary' function.
+ Under XEmacs, it is not possible to jump back from the diary to
+ the org, this works only in the agenda buffer.

@@ -3833,7 +3918,7 @@ The following extensions for Org-mode have been written by other people:
It allows you to cycle visibility and to edit the document
structure with the mouse. Best of all, it provides a
context-sensitive menu on <mouse-3> that changes depending on the
- context of a mouse-click. `org-mouse.el' is freely avaliable at
+ context of a mouse-click. `org-mouse.el' is freely available at
`http://www.cl.cam.ac.uk/~pz215/files/org-mouse.el'.
`org-publish.el' by David O'Toole
@@ -3841,8 +3926,8 @@ The following extensions for Org-mode have been written by other people:
Org-mode files together with linked files like images as a
webpages. It is highly configurable and can be used for other
publishing purposes as well. As of Org-mode version 4.30,
- `org-publish.el' is part of the Org-mode distribution. However,
- it is not yet part of Emacs due to a pending copyright assignment.
+ `org-publish.el' is part of the Org-mode distribution. It is not
+ yet part of Emacs, however, due to a pending copyright assignment.
In the mean time, `org-publish.el' can be downloaded from David's
site: `http://dto.freeshell.org/e/org-publish.el'.
@@ -3959,7 +4044,7 @@ found too hard to fix.
If a formula uses _calculated_ fields further down the row,
multiple recalculation may be needed to get all fields consistent.
- * Several words in a rom may *be made bold*, but this does not work
+ * Several words in a row may *be made bold*, but this does not work
if the string is distributed over two lines.
* The exporters work well, but could be made more efficient.
@@ -4006,6 +4091,8 @@ Org-mode would not be what it is without your input.
* Stefan Monnier provided a patch to keep the Emacs-Lisp compiler
happy.
+ * Todd Neal provided patches for links to Info files and elisp forms.
+
* Tim O'Callaghan suggested in-file links, search options for
general file links, and TAGS.
@@ -4049,10 +4136,10 @@ Org-mode would not be what it is without your input.
* John Wiegley wrote `emacs-wiki.el' and `planner.el'. The
development of Org-mode was fully independent, and both systems are
really different beasts in their basic ideas and implementation
- details. However, I have later looked at John's code and learned
- from his implementation of (i) links where the link itself is
- hidden and only a description is shown, and (ii) popping up a
- calendar to select a date.
+ details. I later looked at John's code, however, and learned from
+ his implementation of (i) links where the link itself is hidden
+ and only a description is shown, and (ii) popping up a calendar to
+ select a date.
* Carsten Wimmer suggested some changes and helped fix a bug in
linking to GNUS.
@@ -4086,7 +4173,7 @@ File: org, Node: Index, Next: Key Index, Prev: Miscellaneous, Up: Top
* agenda, for single file: Timeline. (line 6)
* allout.el: Conflicts. (line 6)
* allout.el, conflict with: FAQ. (line 8)
-* angular brackets, around links: External links. (line 35)
+* angular brackets, around links: External links. (line 38)
* applescript, for calendar update: iCalendar export. (line 38)
* archive locations: Archiving. (line 13)
* archiving: Archiving. (line 6)
@@ -4105,7 +4192,7 @@ File: org, Node: Index, Next: Key Index, Prev: Miscellaneous, Up: Top
(line 135)
* calendar integration: Calendar/Diary integration.
(line 6)
-* calendar, for selecting date: Creating timestamps. (line 68)
+* calendar, for selecting date: Creating timestamps. (line 71)
* CamelCase link completion: Completion. (line 6)
* CamelCase links: Internal links. (line 6)
* CamelCase links, completion of: CamelCase links. (line 6)
@@ -4113,6 +4200,7 @@ File: org, Node: Index, Next: Key Index, Prev: Miscellaneous, Up: Top
* checkboxes: Plain lists. (line 36)
* children, subtree visibility state: Visibility cycling. (line 10)
* clean outline view: Clean view. (line 6)
+* CLOSED keyword: Time stamps. (line 55)
* column formula: Column formulas. (line 6)
* commands, in agenda buffer: Agenda commands. (line 6)
* comment lines: Comment lines. (line 6)
@@ -4125,7 +4213,7 @@ File: org, Node: Index, Next: Key Index, Prev: Miscellaneous, Up: Top
* completion, of option keywords: Export options. (line 6)
* Completion, of option keywords: Per file keywords. (line 17)
* completion, of tags <1>: Completion. (line 6)
-* completion, of tags: Setting tags. (line 12)
+* completion, of tags: Setting tags. (line 11)
* completion, of TeX symbols <1>: Completion. (line 6)
* completion, of TeX symbols: Enhancing text. (line 19)
* completion, of TODO keywords <1>: Completion. (line 6)
@@ -4144,7 +4232,7 @@ File: org, Node: Index, Next: Key Index, Prev: Miscellaneous, Up: Top
* cycling, visibility: Visibility cycling. (line 6)
* dangerous commands: FAQ. (line 70)
* date stamps: Time stamps. (line 6)
-* date, reading in minibuffer: Creating timestamps. (line 68)
+* date, reading in minibuffer: Creating timestamps. (line 71)
* DEADLINE keyword: Time stamps. (line 43)
* deadlines: Time stamps. (line 6)
* demotion, of subtrees: Structure editing. (line 6)
@@ -4158,14 +4246,16 @@ File: org, Node: Index, Next: Key Index, Prev: Miscellaneous, Up: Top
* editing tables: Tables. (line 6)
* editing, of table formulas: Editing/debugging formulas.
(line 6)
+* elisp links: External links. (line 6)
* emphasized text: Export options. (line 25)
* enhancing text: Enhancing text. (line 6)
-* evaluate time range: Creating timestamps. (line 63)
+* evaluate time range: Creating timestamps. (line 66)
* exporting: Exporting. (line 6)
-* exporting a subtree: FAQ. (line 111)
+* exporting a subtree: FAQ. (line 112)
* exporting, not: Comment lines. (line 6)
* extended TODO keywords: TODO extensions. (line 6)
* external links: External links. (line 6)
+* external links, in HTML export: HTML export. (line 35)
* FAQ: FAQ. (line 6)
* feedback: Feedback. (line 6)
* file links: External links. (line 6)
@@ -4209,13 +4299,15 @@ File: org, Node: Index, Next: Key Index, Prev: Miscellaneous, Up: Top
* iCalendar export: iCalendar export. (line 6)
* in-buffer settings: Summary of in-buffer settings.
(line 6)
-* indentation, of tables: FAQ. (line 135)
-* indirect buffers: FAQ. (line 87)
+* indentation, of tables: FAQ. (line 136)
+* indirect buffers: FAQ. (line 88)
+* Info links: External links. (line 6)
* inheritance, of tags: Tag inheritance. (line 6)
* inserting links: Handling links. (line 28)
* installation: Installation and activation.
(line 6)
* internal links: Internal links. (line 6)
+* internal links, in HTML export: HTML export. (line 35)
* introduction: Introduction. (line 6)
* italic text: Enhancing text. (line 15)
* jumping, to headlines: Motion. (line 6)
@@ -4227,15 +4319,16 @@ File: org, Node: Index, Next: Key Index, Prev: Miscellaneous, Up: Top
* link completion: Handling links. (line 28)
* link format: Link format. (line 6)
* links, external: External links. (line 6)
+* links, in HTML export: HTML export. (line 35)
* links, internal: Internal links. (line 6)
* links, returning to: Handling links. (line 85)
-* Lisp forms, as table fomulas: Lisp formulas. (line 6)
+* Lisp forms, as table formulas: Lisp formulas. (line 6)
* lists, hand-formatted: Enhancing text. (line 11)
* lists, ordered: Plain lists. (line 6)
* lists, plain: Plain lists. (line 6)
* logging, of progress: Progress logging. (line 6)
* maintainer: Feedback. (line 6)
-* make-indirect-buffer: FAQ. (line 87)
+* make-indirect-buffer: FAQ. (line 88)
* mark ring: Handling links. (line 81)
* marking characters, tables: Advanced features. (line 34)
* matching, of tags: Matching headline tags.
@@ -4270,14 +4363,14 @@ File: org, Node: Index, Next: Key Index, Prev: Miscellaneous, Up: Top
* pasting, of subtrees: Structure editing. (line 6)
* per file keywords: Per file keywords. (line 6)
* plain lists: Plain lists. (line 6)
-* plain text external links: External links. (line 35)
+* plain text external links: External links. (line 38)
* printing sparse trees: Sparse trees. (line 39)
* priorities: Priorities. (line 6)
* priorities, of agenda items: Sorting of agenda items.
(line 6)
* progress logging: Progress logging. (line 6)
* promotion, of subtrees: Structure editing. (line 6)
-* quoted html tags: Export options. (line 25)
+* quoted HTML tags: Export options. (line 25)
* ranges, time: Time stamps. (line 6)
* recomputing table fields: Column formulas. (line 27)
* region, active <1>: HTML export. (line 10)
@@ -4302,8 +4395,8 @@ File: org, Node: Index, Next: Key Index, Prev: Miscellaneous, Up: Top
* single file summary: Timeline. (line 6)
* sorting, of agenda items: Sorting of agenda items.
(line 6)
-* sparse tree, for deadlines: Creating timestamps. (line 38)
-* sparse tree, for TODO: TODO basics. (line 20)
+* sparse tree, for deadlines: Creating timestamps. (line 41)
+* sparse tree, for TODO: TODO basics. (line 26)
* sparse tree, tag based: Tags. (line 6)
* sparse trees: Sparse trees. (line 6)
* special keywords: Summary of in-buffer settings.
@@ -4340,11 +4433,11 @@ File: org, Node: Index, Next: Key Index, Prev: Miscellaneous, Up: Top
* TeX-like syntax for sub- and superscripts: Export options. (line 25)
* thanks: Acknowledgments. (line 6)
* time stamps: Time stamps. (line 6)
-* time, reading in minibuffer: Creating timestamps. (line 68)
+* time, reading in minibuffer: Creating timestamps. (line 71)
* time-sorted view: Timeline. (line 6)
* timeline, single file: Timeline. (line 6)
* timerange: Time stamps. (line 21)
-* timestamp: Time stamps. (line 12)
+* timestamp: Time stamps. (line 13)
* timestamps, creating: Creating timestamps. (line 6)
* TODO items: TODO items. (line 6)
* TODO keywords completion: Completion. (line 6)
@@ -4387,10 +4480,10 @@ File: org, Node: Key Index, Prev: Index, Up: Top
* -: Agenda commands. (line 126)
* .: Agenda commands. (line 91)
* :: Agenda commands. (line 109)
-* <: Creating timestamps. (line 75)
+* <: Creating timestamps. (line 78)
* <left>: Agenda commands. (line 88)
* <RET> <1>: Agenda commands. (line 41)
-* <RET> <2>: Creating timestamps. (line 100)
+* <RET> <2>: Creating timestamps. (line 103)
* <RET>: Built-in table editor.
(line 64)
* <right>: Agenda commands. (line 83)
@@ -4401,7 +4494,7 @@ File: org, Node: Key Index, Prev: Index, Up: Top
* <TAB> <3>: Plain lists. (line 48)
* <TAB>: Visibility cycling. (line 10)
* > <1>: Agenda commands. (line 148)
-* >: Creating timestamps. (line 76)
+* >: Creating timestamps. (line 79)
* C: Agenda commands. (line 178)
* c: Agenda commands. (line 162)
* C-#: Built-in table editor.
@@ -4453,18 +4546,18 @@ File: org, Node: Key Index, Prev: Index, Up: Top
* C-c a m: Tag searches. (line 10)
* C-c a T: Global TODO list. (line 15)
* C-c a t <1>: Global TODO list. (line 9)
-* C-c a t: TODO basics. (line 27)
+* C-c a t: TODO basics. (line 33)
* C-c C-a: Visibility cycling. (line 31)
* C-c C-b: Motion. (line 15)
* C-c C-c <1>: The very busy C-c C-c key.
(line 6)
-* C-c C-c <2>: Setting tags. (line 11)
+* C-c C-c <2>: Setting tags. (line 10)
* C-c C-c <3>: table.el. (line 6)
* C-c C-c <4>: Editing/debugging formulas.
(line 16)
* C-c C-c <5>: Built-in table editor.
(line 54)
-* C-c C-c: Plain lists. (line 79)
+* C-c C-c: Plain lists. (line 85)
* C-c C-d <1>: Agenda commands. (line 133)
* C-c C-d: Creating timestamps. (line 37)
* C-c C-f: Motion. (line 12)
@@ -4480,11 +4573,11 @@ File: org, Node: Key Index, Prev: Index, Up: Top
(line 119)
* C-c C-r: Timeline. (line 13)
* C-c C-s <1>: Agenda commands. (line 130)
-* C-c C-s: Creating timestamps. (line 47)
+* C-c C-s: Creating timestamps. (line 48)
* C-c C-t: TODO basics. (line 13)
* C-c C-u: Motion. (line 18)
-* C-c C-v: TODO basics. (line 20)
-* C-c C-w: Creating timestamps. (line 38)
+* C-c C-v: TODO basics. (line 26)
+* C-c C-w: Creating timestamps. (line 41)
* C-c C-x a: ASCII export. (line 9)
* C-c C-x b: HTML export. (line 11)
* C-c C-x c: iCalendar export. (line 20)
@@ -4509,7 +4602,7 @@ File: org, Node: Key Index, Prev: Index, Up: Top
* C-c C-x v a: ASCII export. (line 13)
* C-c C-x v b: HTML export. (line 14)
* C-c C-x v h: HTML export. (line 14)
-* C-c C-y: Creating timestamps. (line 63)
+* C-c C-y: Creating timestamps. (line 66)
* C-c l: Handling links. (line 9)
* C-c |: Built-in table editor.
(line 40)
@@ -4544,25 +4637,26 @@ File: org, Node: Key Index, Prev: Index, Up: Top
(line 82)
* M-S-<down> <1>: Built-in table editor.
(line 89)
-* M-S-<down> <2>: Plain lists. (line 64)
+* M-S-<down> <2>: Plain lists. (line 70)
* M-S-<down>: Structure editing. (line 33)
-* M-S-<left> <1>: Creating timestamps. (line 97)
+* M-S-<left> <1>: Creating timestamps. (line 100)
* M-S-<left> <2>: Built-in table editor.
(line 76)
-* M-S-<left> <3>: Plain lists. (line 70)
+* M-S-<left> <3>: Plain lists. (line 76)
* M-S-<left>: Structure editing. (line 24)
+* M-S-<RET> <1>: Plain lists. (line 63)
* M-S-<RET>: Structure editing. (line 15)
-* M-S-<right> <1>: Creating timestamps. (line 94)
+* M-S-<right> <1>: Creating timestamps. (line 97)
* M-S-<right> <2>: Built-in table editor.
(line 79)
-* M-S-<right> <3>: Plain lists. (line 70)
+* M-S-<right> <3>: Plain lists. (line 76)
* M-S-<right>: Structure editing. (line 27)
* M-S-<up> <1>: Built-in table editor.
(line 86)
-* M-S-<up> <2>: Plain lists. (line 64)
+* M-S-<up> <2>: Plain lists. (line 70)
* M-S-<up>: Structure editing. (line 30)
* mouse-1 <1>: Agenda commands. (line 35)
-* mouse-1 <2>: Creating timestamps. (line 79)
+* mouse-1 <2>: Creating timestamps. (line 82)
* mouse-1: Handling links. (line 73)
* mouse-2 <1>: Agenda commands. (line 35)
* mouse-2: Handling links. (line 73)
@@ -4577,20 +4671,24 @@ File: org, Node: Key Index, Prev: Index, Up: Top
* r: Global TODO list. (line 21)
* S: Agenda commands. (line 173)
* S-<down> <1>: Agenda commands. (line 126)
-* S-<down> <2>: Creating timestamps. (line 55)
-* S-<down>: Priorities. (line 25)
+* S-<down> <2>: Creating timestamps. (line 58)
+* S-<down> <3>: Priorities. (line 25)
+* S-<down>: Plain lists. (line 66)
* S-<left> <1>: Agenda commands. (line 144)
-* S-<left>: Creating timestamps. (line 50)
+* S-<left> <2>: Creating timestamps. (line 53)
+* S-<left>: TODO basics. (line 20)
* S-<RET>: Built-in table editor.
(line 170)
* S-<right> <1>: Agenda commands. (line 136)
-* S-<right>: Creating timestamps. (line 50)
+* S-<right> <2>: Creating timestamps. (line 53)
+* S-<right>: TODO basics. (line 20)
* S-<TAB> <1>: Built-in table editor.
(line 61)
* S-<TAB>: Visibility cycling. (line 22)
* S-<up> <1>: Agenda commands. (line 120)
-* S-<up> <2>: Creating timestamps. (line 55)
-* S-<up>: Priorities. (line 25)
+* S-<up> <2>: Creating timestamps. (line 58)
+* S-<up> <3>: Priorities. (line 25)
+* S-<up>: Plain lists. (line 66)
* T: Agenda commands. (line 104)
* t: Agenda commands. (line 100)
* w: Agenda commands. (line 62)
@@ -4600,119 +4698,120 @@ File: org, Node: Key Index, Prev: Index, Up: Top

Tag Table:
Node: Top959
-Node: Introduction8559
-Node: Summary8873
-Node: Installation and activation11129
-Node: Feedback12787
-Node: Document structure13573
-Node: Outlines14339
-Node: Headlines14999
-Node: Visibility cycling15622
-Ref: Visibility cycling-Footnote-117097
-Ref: Visibility cycling-Footnote-217155
-Node: Motion17205
-Node: Structure editing17989
-Node: Archiving20098
-Node: Sparse trees20958
-Ref: Sparse trees-Footnote-122943
-Ref: Sparse trees-Footnote-223035
-Node: Plain lists23150
-Ref: Plain lists-Footnote-126868
-Node: Tables27225
-Node: Built-in table editor27773
-Node: Narrow columns35386
-Ref: Narrow columns-Footnote-137325
-Node: Table calculations37371
-Node: Formula syntax38691
-Ref: Formula syntax-Footnote-141596
-Node: Lisp formulas41895
-Node: Column formulas42686
-Node: Advanced features44447
-Node: Named-field formulas47702
-Node: Editing/debugging formulas48342
-Node: Appetizer50100
-Node: orgtbl-mode51202
-Node: table.el51693
-Node: Hyperlinks52670
-Node: Link format53374
-Node: Internal links54671
-Node: Radio targets56621
-Node: CamelCase links57336
-Node: External links57834
-Node: Handling links59759
-Node: Search options64312
-Ref: Search options-Footnote-166088
-Node: Custom searches66169
-Node: Remember67217
-Node: TODO items70903
-Node: TODO basics71826
-Node: Progress logging73167
-Node: TODO extensions73953
-Node: Workflow states74753
-Node: TODO types75621
-Ref: TODO types-Footnote-177279
-Node: Per file keywords77361
-Ref: Per file keywords-Footnote-178814
-Node: Priorities79042
-Node: Timestamps80249
-Node: Time stamps80570
-Node: Creating timestamps82998
-Node: Tags86123
-Node: Tag inheritance86858
-Node: Setting tags87795
-Node: Tag searches88757
-Node: Agenda views89966
-Node: Agenda files91505
-Ref: Agenda files-Footnote-192465
-Ref: Agenda files-Footnote-292614
-Node: Agenda dispatcher92806
-Node: Weekly/Daily agenda94936
-Node: Categories96071
-Node: Time-of-day specifications96719
-Node: Calendar/Diary integration98695
-Node: Sorting of agenda items100072
-Node: Global TODO list100904
-Node: Matching headline tags102319
-Node: Timeline103262
-Node: Agenda commands104135
-Node: Exporting109605
-Node: ASCII export110734
-Node: HTML export111624
-Node: XOXO export113850
-Node: iCalendar export114289
-Node: Text interpretation116112
-Node: Comment lines116589
-Node: Enhancing text117058
-Node: Export options118889
-Node: Publishing120491
-Ref: Publishing-Footnote-1121287
-Node: Configuration121483
-Node: Project alist122144
-Node: File sources and destinations123202
-Node: Selecting files123754
-Node: Publishing action124507
-Node: Publishing options125621
-Node: Links127648
-Node: Project page index128440
-Node: Sample configuration129207
-Node: Simple example129699
-Node: Complex example130372
-Node: Triggering publication132406
-Node: Miscellaneous133062
-Node: Completion133821
-Node: Customization134817
-Node: Summary of in-buffer settings135424
-Node: The very busy C-c C-c key138429
-Node: Clean view139941
-Node: TTY keys142518
-Node: FAQ144119
-Node: Interaction151860
-Node: Extensions152320
-Node: Cooperation153889
-Node: Conflicts155583
-Node: Bugs157175
-Node: Acknowledgments159073
-Node: Index162442
-Node: Key Index184323
+Node: Introduction8679
+Node: Summary8993
+Node: Installation and activation11249
+Node: Feedback12907
+Node: Document structure13693
+Node: Outlines14459
+Node: Headlines15119
+Node: Visibility cycling15742
+Ref: Visibility cycling-Footnote-117217
+Ref: Visibility cycling-Footnote-217275
+Node: Motion17325
+Node: Structure editing18109
+Node: Archiving20218
+Node: Sparse trees21078
+Ref: Sparse trees-Footnote-123057
+Ref: Sparse trees-Footnote-223149
+Node: Plain lists23264
+Ref: Plain lists-Footnote-127162
+Node: Tables27519
+Node: Built-in table editor28067
+Node: Narrow columns35674
+Ref: Narrow columns-Footnote-137613
+Node: Table calculations37659
+Node: Formula syntax38979
+Ref: Formula syntax-Footnote-141884
+Node: Lisp formulas42184
+Node: Column formulas42973
+Node: Advanced features44734
+Node: Named-field formulas47988
+Node: Editing/debugging formulas48628
+Node: Appetizer50386
+Node: orgtbl-mode51489
+Node: table.el51980
+Node: Hyperlinks52957
+Node: Link format53662
+Node: Internal links54956
+Ref: Internal links-Footnote-156945
+Node: Radio targets57077
+Node: CamelCase links57792
+Node: External links58290
+Node: Handling links60421
+Node: Search options64971
+Ref: Search options-Footnote-166745
+Node: Custom searches66826
+Node: Remember67874
+Node: TODO items71564
+Node: TODO basics72487
+Node: Progress logging74015
+Node: TODO extensions74801
+Node: Workflow states75601
+Node: TODO types76469
+Ref: TODO types-Footnote-178127
+Node: Per file keywords78209
+Ref: Per file keywords-Footnote-179663
+Node: Priorities79891
+Node: Timestamps81107
+Node: Time stamps81428
+Node: Creating timestamps84201
+Node: Tags87522
+Node: Tag inheritance88284
+Node: Setting tags89221
+Node: Tag searches91942
+Node: Agenda views93151
+Node: Agenda files94690
+Ref: Agenda files-Footnote-195650
+Ref: Agenda files-Footnote-295799
+Node: Agenda dispatcher95991
+Node: Weekly/Daily agenda98121
+Node: Categories99256
+Node: Time-of-day specifications99904
+Node: Calendar/Diary integration101880
+Node: Sorting of agenda items103257
+Node: Global TODO list104089
+Node: Matching headline tags105504
+Node: Timeline106447
+Node: Agenda commands107320
+Node: Exporting112788
+Node: ASCII export113921
+Node: HTML export114811
+Node: XOXO export117627
+Node: iCalendar export118066
+Node: Text interpretation119889
+Node: Comment lines120366
+Node: Enhancing text120835
+Node: Export options122666
+Node: Publishing124268
+Ref: Publishing-Footnote-1125064
+Node: Configuration125260
+Node: Project alist125981
+Node: File sources and destinations127039
+Node: Selecting files127591
+Node: Publishing action128344
+Node: Publishing options129458
+Node: Publishing links131497
+Node: Project page index132300
+Node: Sample configuration133078
+Node: Simple example133570
+Node: Complex example134243
+Node: Triggering publication136277
+Node: Miscellaneous136933
+Node: Completion137692
+Node: Customization138688
+Node: Summary of in-buffer settings139295
+Node: The very busy C-c C-c key142537
+Node: Clean view144052
+Node: TTY keys146629
+Node: FAQ148230
+Node: Interaction156027
+Node: Extensions156487
+Node: Cooperation158057
+Node: Conflicts159751
+Node: Bugs161343
+Node: Acknowledgments163241
+Node: Index166680
+Node: Key Index188999

End Tag Table
diff --git a/org-publish.el b/org-publish.el
index 2a1ba58..ab39b3f 100644
--- a/org-publish.el
+++ b/org-publish.el
@@ -6,7 +6,7 @@
;; Keywords: hypermedia, outlines
;; Version:
-;; $Id: org-publish.el,v 1.61 2006/05/19 12:03:51 dto Exp $
+;; $Id: org-publish.el,v 1.64 2006/05/19 19:45:34 dto Exp dto $
;; This file is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
@@ -152,11 +152,8 @@
;;; Code:
-;; these lines get code for function "eshell/cp" loaded
-(require 'eshell)
-(require 'esh-maint)
-(require 'em-unix)
-(require 'org)
+(eval-when-compile
+ (require 'cl))
(defgroup org-publish nil
"Options for publishing a set of Org-mode and related files."
@@ -315,60 +312,35 @@ whether file should be published."
(let ((timestamp (org-publish-timestamp-filename filename)))
(set-file-times timestamp)))
+;;;; Getting project information out of org-publish-project-alist
-;;;; Utilities
+(defun org-publish-meta-project-p (element)
+ "Tell whether an ELEMENT of org-publish-project-alist is a metaproject."
+ (plist-get (cdr element) :components))
-(defun org-publish-get-project (project-name)
- "Return project object for project PROJECT-NAME."
- (let ((project (assoc project-name org-publish-project-alist)))
- (if project
- (cdr project)
- nil)))
-
-
-(defun org-publish-get-project-component (project-name component-name)
- "Return plist for project component COMPONENT-NAME within project PROJECT-NAME."
- (let* ((components (org-publish-get-project project-name))
- (c nil)
- (plist nil))
- (while (setq c (pop components))
- (when (and (stringp (car c)) (string= component-name (car c)))
- (setq plist (cdr c))))
- plist))
-
-
-(defun org-publish-composite-project-p (element)
- "Tell whether an ELEMENT of org-publish-project-alist is composite."
- (listp (car (cdr element))))
-
-
-(defun org-publish-iterate-project-plists (action &optional project-name)
- "Call function ACTION for each project component.
-ACTION should accept two arguments: the name of the enclosing
-project, and the property list associated with the project
-component. If PROJECT-NAME is set, iterate only over components
-of that project."
- (let ((alist (if project-name
- `((,project-name ,@(org-publish-get-project project-name)))
+(defun org-publish-get-plists (&optional project-name)
+ "Return a list of property lists for project PROJECT-NAME.
+When argument is not given, return all property lists for all projects."
+ (let ((alist (if project-name
+ (list (assoc project-name org-publish-project-alist))
org-publish-project-alist))
- (project nil))
+ (project nil)
+ (plists nil))
(while (setq project (pop alist))
- (if (org-publish-composite-project-p project)
- ;;
- ;; handle composite project
- (let ((components (cdr project))
- (c nil))
- (while (setq c (pop components))
- (let ((plist (cdr c)))
- (funcall action (car project) plist))))
- ;;
- ;; handle normal project
- (let ((plist (cdr project)))
- (funcall action (car project) plist))))))
-
-
+ (if (org-publish-meta-project-p project)
+ ;; meta project
+ (let* ((components (plist-get (cdr project) :components))
+ (components-plists (mapcar 'org-publish-get-plists components)))
+ (setq plists (append plists components-plists)))
+ ;; normal project
+ (let ((p (cdr project)))
+ (setq p (plist-put p :project-name (car project)))
+ (setq plists (append plists (list (cdr project)))))))
+ ;;
+ plists))
+
(defun org-publish-get-base-files (plist &optional exclude-regexp)
"Return a list of all files in project defined by PLIST.
If EXCLUDE-REGEXP is set, this will be used to filter out
@@ -401,22 +373,24 @@ matching filenames."
Filename should contain full path. Returns name of project, or
nil if not found."
(let ((found nil))
- (org-publish-iterate-project-plists
- (lambda (project-name project-plist)
- (let ((files (org-publish-get-base-files project-plist)))
+ (mapcar
+ (lambda (plist)
+ (let ((files (org-publish-get-base-files plist)))
(if (member (expand-file-name filename) files)
- (setq found project-name)))))
+ (setq found (plist-get plist :project-name)))))
+ (org-publish-get-plists))
found))
(defun org-publish-get-plist-from-filename (filename)
"Return publishing configuration plist for file FILENAME."
(let ((found nil))
- (org-publish-iterate-project-plists
- (lambda (project-name project-plist)
- (let ((files (org-publish-get-base-files project-plist)))
+ (mapcar
+ (lambda (plist)
+ (let ((files (org-publish-get-base-files plist)))
(if (member (expand-file-name filename) files)
- (setq found project-plist)))))
+ (setq found plist))))
+ (org-publish-get-plists))
found))
@@ -427,6 +401,7 @@ nil if not found."
"Publish an org file to HTML.
PLIST is the property list for the given project.
FILENAME is the filename of the org file to be published."
+ (require 'org)
(let* ((arg (plist-get plist :headline-levels)))
(progn
(find-file filename)
@@ -439,11 +414,15 @@ FILENAME is the filename of the org file to be published."
"Publish a file with no transformation of any kind.
PLIST is the property list for the given project.
FILENAME is the filename of the file to be published."
+ ;; make sure eshell/cp code is loaded
+ (require 'eshell)
+ (require 'esh-maint)
+ (require 'em-unix)
(let ((destination (file-name-as-directory (plist-get plist :publishing-directory))))
(eshell/cp filename destination)))
-;;;; Publishing files, projects, and indices
+;;;; Publishing files, sets of files, and indices
(defun org-publish-file (filename)
@@ -458,8 +437,8 @@ FILENAME is the filename of the file to be published."
(org-publish-update-timestamp filename))))
-(defun org-publish-project-plist (plist)
- "Publish all base files in project defined by PLIST.
+(defun org-publish-plist (plist)
+ "Publish all files in set defined by PLIST.
If :auto-index is set, publish the index too."
(let* ((exclude-regexp (plist-get plist :exclude))
(publishing-function (or (plist-get plist :publishing-function) 'org-publish-org-to-html))
@@ -482,7 +461,7 @@ FILENAME is the filename of the file to be published."
(defun org-publish-org-index (plist &optional index-filename)
- "Create an index of pages in project PLIST.
+ "Create an index of pages in set defined by PLIST.
Optionally set the filename of the index with INDEX-FILENAME;
default is 'index.org'."
(let* ((dir (file-name-as-directory (plist-get plist :base-directory)))
@@ -505,7 +484,12 @@ default is 'index.org'."
"]]\n")))))
(write-file index-filename)
(kill-buffer (current-buffer)))))
-
+
+
+;(defun org-publish-meta-index (meta-plist &optional index-filename)
+; "Create an index for a metaproject."
+; (let* ((plists (
+
;;;; Interactive publishing functions
@@ -514,11 +498,9 @@ default is 'index.org'."
(defun org-publish (project-name &optional force)
"Publish the project PROJECT-NAME."
(interactive "sProject name: \nP")
- (let ((org-publish-use-timestamps-flag (if force nil t)))
- (org-publish-iterate-project-plists
- (lambda (ignore project-plist)
- (org-publish-project-plist project-plist))
- project-name)))
+ (let ((org-publish-use-timestamps-flag (if force nil t))
+ (plists (org-publish-get-plists project-name)))
+ (mapcar 'org-publish-plist plists)))
;;;###autoload
@@ -549,11 +531,9 @@ With prefix argument, force publish the file."
With prefix argument, force publish all files."
(interactive "P")
(let ((org-publish-use-timestamps-flag
- (if force nil t)))
- (org-publish-iterate-project-plists
- (lambda (project-name project-plist)
- (org-publish-project-plist project-plist)))))
-
+ (if force nil t))
+ (plists (org-publish-get-plists)))
+ (mapcar 'org-publish-plist plists)))
diff --git a/org.el b/org.el
index 444180a..6e11e57 100644
--- a/org.el
+++ b/org.el
@@ -5,7 +5,7 @@
;; Author: Carsten Dominik <dominik at science dot uva dot nl>
;; Keywords: outlines, hypermedia, calendar, wp
;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/
-;; Version: 4.30
+;; Version: 4.33
;;
;; This file is part of GNU Emacs.
;;
@@ -82,6 +82,23 @@
;;
;; Changes since version 4.10:
;; ---------------------------
+;; Version 4.33
+;; - New commands to move through plain lists: S-up and S-down.
+;; - Bug fixes and documentation update.
+;;
+;; Version 4.32
+;; - Fast (single-key-per-tag) interface for setting TAGS.
+;; - The list of legal tags can be configured globally and locally.
+;; - Elisp and Info links (thanks to Todd Neal).
+;; - `org-export-publishing-directory' can be an alist, with different
+;; directories for different export types.
+;; - All context-sensitive commands use `call-interactively' to dispatch.
+;; - `org-confirm-shell-links' renamed to `org-confirm-shell-link-function'.
+;; - Bug fixes.
+;;
+;; Version 4.31
+;; - Bug fixes.
+;;
;; Version 4.30
;; - Modified installation: Autoloads have been collected in org-install.el.
;; - Logging (org-log-done) is now a #+STARTUP option.
@@ -172,7 +189,7 @@
;;; Customization variables
-(defvar org-version "4.29"
+(defvar org-version "4.33"
"The version number of the file org.el.")
(defun org-version ()
(interactive)
@@ -967,15 +984,32 @@ When nil, an error will be generated."
:group 'org-link-follow
:type 'boolean)
-(defcustom org-confirm-shell-links 'yes-or-no-p
+(defcustom org-confirm-shell-link-function 'yes-or-no-p
"Non-nil means, ask for confirmation before executing shell links.
Shell links can be dangerous, just thing about a link
[[shell:rm -rf ~/*][Google Search]]
This link would show up in your Org-mode document as \"Google Search\"
-but really it would remove your entire home directory. Dangerous indeed.
-Therefore I *definitely* advise agains setting this varaiable to nil.
+but really it would remove your entire home directory.
+Therefore I *definitely* advise against setting this variable to nil.
+Just change it to `y-or-n-p' of you want to confirm with a single key press
+rather than having to type \"yes\"."
+ :group 'org-link-follow
+ :type '(choice
+ (const :tag "with yes-or-no (safer)" yes-or-no-p)
+ (const :tag "with y-or-n (faster)" y-or-n-p)
+ (const :tag "no confirmation (dangerous)" nil)))
+
+(defcustom org-confirm-elisp-link-function 'yes-or-no-p
+ "Non-nil means, ask for confirmation before executing elisp links.
+Elisp links can be dangerous, just thing about a link
+
+ [[elisp:(shell-command \"rm -rf ~/*\")][Google Search]]
+
+This link would show up in your Org-mode document as \"Google Search\"
+but really it would remove your entire home directory.
+Therefore I *definitely* advise against setting this variable to nil.
Just change it to `y-or-n-p' of you want to confirm with a single key press
rather than having to type \"yes\"."
:group 'org-link-follow
@@ -1242,6 +1276,32 @@ moved to the new date."
:tag "Org Tags"
:group 'org)
+(defcustom org-tag-alist nil
+ "List of tags allowed in Org-mode files.
+When this list is nil, Org-mode will base TAG input on what is already in the
+buffer.
+The value of this variable is an alist, the car may be (and should) be a
+character that is used to select that tag through the fast-tag-selection
+interface. See the manual for details."
+ :group 'org-tags
+ :type '(repeat
+ (cons (character) (string :tag "Tag"))))
+
+(defcustom org-use-fast-tag-selection 'auto
+ "Non-nil means, use fast tag selection scheme.
+This is a special interface to select and deselect tags with single keys.
+When nil, fast selection is never used.
+When the symbol `auto', fast selection is used if and only if selection
+characters for tags have been configured, either through the variable
+`org-tag-alist' or through a #+TAGS line in the buffer.
+When t, fast selection is always used and selection keys are assigned
+automatically if necessary."
+ :group 'org-tags
+ :type '(choice
+ (const :tag "Always" t)
+ (const :tag "Never" nil)
+ (const :tag "When selection characters are configured" 'auto)))
+
(defcustom org-tags-column 48
"The column to which tags should be indented in a headline.
If this number is positive, it specifies the column. If it is negative,
@@ -1347,8 +1407,7 @@ match What to search for:
(const :tag "Occur tree in current buffer" occur-tree))
(string :tag "Match"))))
-;; Fixme: Need a way to toggle this variable, maybe a mode in the
-;; agenda buffer?
+;; FIXME: Need a toggle for this variable, maybe a mode in the agenda buffer?
(defcustom org-agenda-todo-list-sublevels t
"Non-nil means, check also the sublevels of a TODO entry for TODO entries.
When nil, the sublevels of a TODO entry are not checked, resulting in
@@ -1600,7 +1659,7 @@ See also the variables `org-agenda-remove-times-when-in-prefix' and
Depending on which command was used last, this may be the compiled version
of `org-agenda-prefix-format' or `org-timeline-prefix-format'.")
-;; FIXME: There seem to be situations where this does no work.
+;; FIXME: There seem to be situations where this does not work.
(defcustom org-agenda-remove-times-when-in-prefix t
"Non-nil means, remove duplicate time specifications in agenda items.
When the format `org-agenda-prefix-format' contains a `%t' specifier, a
@@ -1641,9 +1700,19 @@ When this is the symbol `prefix', only remove tags when
(defcustom org-export-publishing-directory "."
"Path to the location where exported files should be located.
This path may be relative to the directory where the Org-mode file lives.
-The default is to put them into the same directory as the Org-mode file."
+The default is to put them into the same directory as the Org-mode file.
+The variable may also be an alist with export types `:html', `:ascii',
+`:ical', or `:xoxo' and the corresponding directories. If a direcoty path
+is relative, it is interpreted relative to the directory where the exported
+Org-mode files lives."
:group 'org-export-general
- :type 'directory)
+ :type '(choice
+ (directory)
+ (repeat
+ (cons
+ (choice :tag "Type"
+ (const :html) (const :ascii) (const :ical) (const :xoxo))
+ (directory)))))
(defcustom org-export-language-setup
'(("en" "Author" "Date" "Table of Contents")
@@ -1866,8 +1935,7 @@ Otherwise the buffer will just be saved to a file and stay hidden."
:group 'org-export)
;; FIXME: I am told XOXO is not XML, it is semantic-only HTML.
-
-(defcustom org-export-xml-type 'xoxo ;kw, if we have only one.
+(defcustom org-export-xml-type 'xoxo
"The kind of XML to be produced by the XML exporter.
Allowed values are:
xoxo The XOXO exporter."
@@ -1995,7 +2063,8 @@ Otherwise, the buffer will just be saved to a file and stay hidden."
(defcustom org-combined-agenda-icalendar-file "~/org.ics"
"The file name for the iCalendar file covering all agenda files.
-This file is created with the command \\[org-export-icalendar-all-agenda-files]."
+This file is created with the command \\[org-export-icalendar-all-agenda-files].
+The file name should be absolute."
:group 'org-export-icalendar
:type 'file)
@@ -2151,7 +2220,7 @@ color of the frame."
(org-compatible-face
'((((class color) (min-colors 16) (background light)) (:foreground "Orchid"))
(((class color) (min-colors 16) (background dark)) (:foreground "LightSteelBlue"))
- (((class color) (min-colors 8)) (:foreground "blue")))) ;; FIXME: for dark bg?
+ (((class color) (min-colors 8)) (:foreground "blue"))))
"Face used for level 7 headlines."
:group 'org-faces)
@@ -2272,7 +2341,7 @@ This face is only used if `org-fontify-done-headline' is set."
(org-compatible-face
'((((class color) (min-colors 16) (background light)) (:foreground "DarkGoldenrod"))
(((class color) (min-colors 16) (background dark)) (:foreground "LightGoldenrod"))
- (((class color) (min-colors 8)) (:foreground "yellow" :weight light)))) ; FIXME: turn off???
+ (((class color) (min-colors 8)) (:foreground "yellow" :weight light))))
"Face used for time grids."
:group 'org-faces)
@@ -2352,20 +2421,35 @@ This face is only used if `org-fontify-done-headline' is set."
"Matches a timestamp, possibly preceeded by a keyword.")
(make-variable-buffer-local 'org-keyword-time-regexp)
+(defconst org-rm-props '(invisible t face t keymap t intangible t mouse-face t
+ mouse-map t)
+ "Properties to remove when a string without properties is wanted.")
+
+(defsubst org-match-string-no-properties (num &optional string)
+ (if (featurep 'xemacs)
+ (let ((s (match-string num string)))
+ (remove-text-properties 0 (length s) org-rm-props s)
+ s)
+ (match-string-no-properties num string)))
+
+(defsubst org-no-properties (s)
+ (remove-text-properties 0 (length s) org-rm-props s)
+ s)
+
(defun org-set-regexps-and-options ()
"Precompute regular expressions for current buffer."
(when (eq major-mode 'org-mode)
(let ((re (org-make-options-regexp
'("CATEGORY" "SEQ_TODO" "PRI_TODO" "TYP_TODO"
- "STARTUP" "ARCHIVE")))
+ "STARTUP" "ARCHIVE" "TAGS")))
(splitre "[ \t]+")
- kwds int key value cat arch)
+ kwds int key value cat arch tags)
(save-excursion
(save-restriction
(widen)
(goto-char (point-min))
(while (re-search-forward re nil t)
- (setq key (match-string 1) value (match-string 2))
+ (setq key (match-string 1) value (org-match-string-no-properties 2))
(cond
((equal key "CATEGORY")
(if (string-match "[ \t]+$" value)
@@ -2380,6 +2464,8 @@ This face is only used if `org-fontify-done-headline' is set."
((equal key "TYP_TODO")
(setq int 'type
kwds (append kwds (org-split-string value splitre))))
+ ((equal key "TAGS")
+ (setq tags (append tags (org-split-string value splitre))))
((equal key "STARTUP")
(let ((opts (org-split-string value splitre))
(set '(("fold" org-startup-folded t)
@@ -2410,7 +2496,20 @@ This face is only used if `org-fontify-done-headline' is set."
(and cat (set (make-local-variable 'org-category) cat))
(and kwds (set (make-local-variable 'org-todo-keywords) kwds))
(and arch (set (make-local-variable 'org-archive-location) arch))
- (and int (set (make-local-variable 'org-todo-interpretation) int)))
+ (and int (set (make-local-variable 'org-todo-interpretation) int))
+ (when tags
+ (let (e tg c tgs)
+ (while (setq e (pop tags))
+ (if (string-match "^\\([0-9a-zA-Z_@]+\\)(\\(.\\))$" e)
+ (push (cons (match-string 1 e)
+ (string-to-char (match-string 2 e)))
+ tgs)
+ (push (list e) tgs)))
+ (set (make-local-variable 'org-tag-alist) nil)
+ (while (setq e (pop tgs))
+ (or (assoc (car e) org-tag-alist)
+ (push e org-tag-alist))))))
+
;; Compute the regular expressions and other local variables
(setq org-todo-kwd-priority-p (equal org-todo-interpretation 'priority)
org-todo-kwd-max-priority (1- (length org-todo-keywords))
@@ -2498,6 +2597,9 @@ This face is only used if `org-fontify-done-headline' is set."
(defvar annotation) ; from remember.el, dynamically scoped in `remember-mode'
(defvar initial) ; from remember.el, dynamically scoped in `remember-mode'
(defvar orgtbl-mode) ; defined later in this file
+(defvar Info-current-file) ; from info.el
+(defvar Info-current-node) ; from info.el
+
;;; Define the mode
(defvar org-mode-map
@@ -2605,24 +2707,13 @@ The following commands are available:
(let ((this-command 'org-cycle) (last-command 'org-cycle))
(org-cycle '(4)) (org-cycle '(4))))))))
+(defsubst org-call-with-arg (command arg)
+ "Call COMMAND interactively, but pretend prefix are was ARG."
+ (let ((current-prefix-arg arg)) (call-interactively command)))
+
(defsubst org-current-line (&optional pos)
(+ (if (bolp) 1 0) (count-lines (point-min) (or pos (point)))))
-(defconst org-rm-props '(invisible t face t keymap t intangible t mouse-face t
- mouse-map t)
- "Properties to remove when a string without properties is wanted.")
-
-(defsubst org-match-string-no-properties (num &optional string)
- (if (featurep 'xemacs)
- (let ((s (match-string num string)))
- (remove-text-properties 0 (length s) org-rm-props s)
- s)
- (match-string-no-properties num string)))
-
-(defsubst org-no-properties (s)
- (remove-text-properties 0 (length s) org-rm-props s)
- s)
-
(defun org-current-time ()
"Current time, possibly rounded to `org-time-stamp-rounding-minutes'."
(if (> org-time-stamp-rounding-minutes 0)
@@ -2663,7 +2754,7 @@ that will be added to PLIST. Returns the string that was modified."
(defconst org-non-link-chars "]\t\n\r<>")
(defconst org-link-types '("https?" "ftp" "mailto" "file" "news" "bbdb" "vm"
- "wl" "mhe" "rmail" "gnus" "shell"))
+ "wl" "mhe" "rmail" "gnus" "shell" "info" "elisp"))
(defconst org-link-re-with-space
(concat
"<?\\(" (mapconcat 'identity org-link-types "\\|") "\\):"
@@ -2924,9 +3015,7 @@ between words."
(if em (list org-italic-re 2 ''italic 'prepend))
(if em (list org-underline-re 2 ''underline 'prepend))
;; Checkboxes, similar to Frank Ruell's org-checklet.el
- '("^[ \t]*\\([-+*]\\|[0-9]+[.)]\\) +\\(\\[_\\]\\)"
- 2 'bold prepend)
- '("^[ \t]*\\([-+*]\\|[0-9]+[.)]\\) +\\(\\[X\\]\\)"
+ '("^[ \t]*\\([-+*]\\|[0-9]+[.)]\\) +\\(\\[[ X]\\]\\)"
2 'bold prepend)
;; COMMENT
(list (concat "^\\*+[ \t]*\\<\\(" org-comment-string
@@ -3035,7 +3124,7 @@ between words."
(progn
(if arg (org-table-edit-field t)
(org-table-justify-field-maybe)
- (org-table-next-field)))))
+ (call-interactively 'org-table-next-field)))))
((eq arg t) ;; Global cycling
@@ -3090,10 +3179,10 @@ between words."
(outline-next-heading))
;; Find out what to do next and set `this-command'
(cond
- ((= eos eoh)
+ ((and (= eos eoh)
;; Nothing is hidden behind this heading
(message "EMPTY ENTRY")
- (setq org-cycle-subtree-status nil))
+ (setq org-cycle-subtree-status nil)))
((>= eol eos)
;; Entire subtree is hidden in one line: open it
(org-show-entry)
@@ -3291,7 +3380,6 @@ or nil."
(kill-buffer "*org-goto*")
org-selected-point))
-;; FIXME: It may not be a good idea to temper with the prefix argument...
(defun org-goto-ret (&optional arg)
"Finish `org-goto' by going to the new location."
(interactive "P")
@@ -3363,7 +3451,7 @@ the current headline."
(unless (= (point) pos) (just-one-space) (backward-delete-char 1))
(run-hooks 'org-insert-heading-hook)))))
-(defun org-insert-item ()
+(defun org-insert-item (&optional checkbox)
"Insert a new item at the current level.
Return t when things worked, nil when we are not in an item."
(when (save-excursion
@@ -3373,14 +3461,11 @@ Return t when things worked, nil when we are not in an item."
(org-at-item-p)
t)
(error nil)))
- (debug)
(let* ((bul (match-string 0))
(end (match-end 0))
(eow (save-excursion (beginning-of-line 1) (looking-at "[ \t]*")
(match-end 0)))
(eowcol (save-excursion (goto-char eow) (current-column)))
- (checkboxp (save-excursion (goto-char end)
- (looking-at "[ \t]*\\[[_X]\\]")))
pos)
(cond
((and (org-at-item-p) (<= (point) eow))
@@ -3390,7 +3475,7 @@ Return t when things worked, nil when we are not in an item."
((<= (point) eow)
(beginning-of-line 1))
(t (newline)))
- (insert bul (if checkboxp "[_]" ""))
+ (insert bul (if checkbox "[ ]" ""))
(just-one-space)
(setq pos (point))
(end-of-line 1)
@@ -3403,18 +3488,19 @@ Return t when things worked, nil when we are not in an item."
If the heading has no TODO state, or if the state is DONE, use the first
state (TODO by default). Also with prefix arg, force first state."
(interactive "P")
- (org-insert-heading)
- (save-excursion
- (org-back-to-heading)
- (if org-noutline-p
- (outline-previous-heading)
- (outline-previous-visible-heading t))
- (looking-at org-todo-line-regexp))
- (if (or arg
- (not (match-beginning 2))
- (equal (match-string 2) org-done-string))
- (insert (car org-todo-keywords) " ")
- (insert (match-string 2) " ")))
+ (when (not (org-insert-item 'checkbox))
+ (org-insert-heading)
+ (save-excursion
+ (org-back-to-heading)
+ (if org-noutline-p
+ (outline-previous-heading)
+ (outline-previous-visible-heading t))
+ (looking-at org-todo-line-regexp))
+ (if (or arg
+ (not (match-beginning 2))
+ (equal (match-string 2) org-done-string))
+ (insert (car org-todo-keywords) " ")
+ (insert (match-string 2) " "))))
(defun org-promote-subtree ()
"Promote the entire subtree.
@@ -3756,13 +3842,14 @@ If optional TXT is given, check this string instead of the current kill."
(save-excursion
(goto-char (match-end 0))
(skip-chars-forward " \t")
- (looking-at "\\[[_X]\\]"))))
+ (looking-at "\\[[ X]\\]"))))
(defun org-toggle-checkbox ()
"Toggle the checkbox in the current line."
+ (interactive)
(save-excursion
- (if (org-at-item-checklet-p)
- (replace-match (if (equal (match-string 0) "[_]") "[X]" "[_]") t t))))
+ (if (org-at-item-checkbox-p)
+ (replace-match (if (equal (match-string 0) "[ ]") "[X]" "[ ]") t t))))
(defun org-get-indentation ()
"Get the indentation of the current line, interpreting tabs."
@@ -3774,6 +3861,7 @@ If optional TXT is given, check this string instead of the current kill."
(defun org-beginning-of-item ()
"Go to the beginning of the current hand-formatted item.
If the cursor is not in an item, throw an error."
+ (interactive)
(let ((pos (point))
(limit (save-excursion (org-back-to-heading)
(beginning-of-line 2) (point)))
@@ -3799,6 +3887,7 @@ If the cursor is not in an item, throw an error."
(defun org-end-of-item ()
"Go to the end of the current hand-formatted item.
If the cursor is not in an item, throw an error."
+ (interactive)
(let ((pos (point))
(limit (save-excursion (outline-next-heading) (point)))
(ind (save-excursion
@@ -3818,11 +3907,47 @@ If the cursor is not in an item, throw an error."
(goto-char pos)
(error "Not in an item"))))
-(defun org-move-item-down (arg)
+(defun org-next-item ()
+ "Move to the beginning of the next item in the current plain list.
+Error if not at a plain list, or if this is the last item in the list."
+ (interactive)
+ (let (beg end ind ind1 (pos (point)) txt)
+ (org-beginning-of-item)
+ (setq beg (point))
+ (setq ind (org-get-indentation))
+ (org-end-of-item)
+ (setq end (point))
+ (setq ind1 (org-get-indentation))
+ (unless (and (org-at-item-p) (= ind ind1))
+ (goto-char pos)
+ (error "This is already the last item in the list"))))
+
+(defun org-previous-item ()
+ "Move to the beginning of the previous item in the current plain list.
+Error if not at a plain list, or if this is the last item in the list."
+ (interactive)
+ (let (beg end ind ind1 (pos (point)) txt)
+ (org-beginning-of-item)
+ (setq beg (point))
+ (setq ind (org-get-indentation))
+ (goto-char beg)
+ (catch 'exit
+ (while t
+ (beginning-of-line 0)
+ (if (looking-at "[ \t]*$")
+ nil
+ (if (<= (setq ind1 (org-get-indentation)) ind)
+ (throw 'exit t)))))
+ (condition-case nil
+ (org-beginning-of-item)
+ (error (goto-char pos)
+ (error "This is already the first item in the list")))))
+
+(defun org-move-item-down ()
"Move the plain list item at point down, i.e. swap with following item.
Subitems (items with larger indentation) are considered part of the item,
so this really moves item trees."
- (interactive "p")
+ (interactive)
(let (beg end ind ind1 (pos (point)) txt)
(org-beginning-of-item)
(setq beg (point))
@@ -3956,24 +4081,24 @@ with something like \"1.\" or \"2)\"."
(interactive "p")
(unless (org-at-item-p)
(error "Not on an item"))
- (let (beg end ind ind1)
- (if (memq last-command '(org-shiftmetaright org-shiftmetaleft))
+ (save-excursion
+ (let (beg end ind ind1)
+ (if (memq last-command '(org-shiftmetaright org-shiftmetaleft))
(setq beg org-last-indent-begin-marker
end org-last-indent-end-marker)
- (org-beginning-of-item)
- (setq beg (move-marker org-last-indent-begin-marker (point)))
- (org-end-of-item)
- (setq end (move-marker org-last-indent-end-marker (point))))
- (goto-char beg)
- (skip-chars-forward " \t") (setq ind (current-column))
- (if (< (+ arg ind) 0) (error "Cannot outdent beyond margin"))
- (while (< (point) end)
- (beginning-of-line 1)
- (skip-chars-forward " \t") (setq ind1 (current-column))
- (delete-region (point-at-bol) (point))
- (indent-to-column (+ ind1 arg))
- (beginning-of-line 2))
- (goto-char beg)))
+ (org-beginning-of-item)
+ (setq beg (move-marker org-last-indent-begin-marker (point)))
+ (org-end-of-item)
+ (setq end (move-marker org-last-indent-end-marker (point))))
+ (goto-char beg)
+ (skip-chars-forward " \t") (setq ind (current-column))
+ (if (< (+ arg ind) 0) (error "Cannot outdent beyond margin"))
+ (while (< (point) end)
+ (beginning-of-line 1)
+ (skip-chars-forward " \t") (setq ind1 (current-column))
+ (delete-region (point-at-bol) (point))
+ (indent-to-column (+ ind1 arg))
+ (beginning-of-line 2)))))
;;; Archiving
@@ -4134,7 +4259,7 @@ At all other locations, this simply calls `ispell-complete-word'."
tbl)))
tbl)
(tag (setq type :tag beg beg1)
- (org-get-buffer-tags))
+ (or org-tag-alist (org-get-buffer-tags)))
(t (progn (ispell-complete-word arg) (throw 'exit nil)))))
(pattern (buffer-substring-no-properties beg end))
(completion (try-completion pattern table)))
@@ -5302,13 +5427,9 @@ C Configure your own agenda commands")
((equal c ?C) (customize-variable 'org-agenda-custom-commands))
((equal c ?a) (call-interactively 'org-agenda-list))
((equal c ?t) (call-interactively 'org-todo-list))
- ((equal c ?T)
- (setq current-prefix-arg (or arg '(4)))
- (call-interactively 'org-todo-list))
+ ((equal c ?T) (org-call-with-arg 'org-todo-list (or arg '(4))))
((equal c ?m) (call-interactively 'org-tags-view))
- ((equal c ?M)
- (setq current-prefix-arg (or arg '(4)))
- (call-interactively 'org-tags-view))
+ ((equal c ?M) (org-call-with-arg 'org-tags-view (or arg '(4))))
((setq entry (assoc (char-to-string c) org-agenda-custom-commands))
(setq type (nth 1 entry) string (nth 2 entry))
(cond
@@ -6672,11 +6793,23 @@ only the correctly processes TXT should be returned - this is used by
(if s1 (setq s1 (org-get-time-of-day s1 'string)))
(if s2 (setq s2 (org-get-time-of-day s2 'string))))
- (when (and (or (eq org-agenda-remove-tags-when-in-prefix t)
- (and org-agenda-remove-tags-when-in-prefix
- org-prefix-has-tag))
- (string-match ":[a-zA-Z_@0-9:]+:[ \t]*$" txt))
- (setq txt (replace-match "" t t txt)))
+; (when (and (or (eq org-agenda-remove-tags-when-in-prefix t)
+; (and org-agenda-remove-tags-when-in-prefix
+; org-prefix-has-tag))
+; (string-match ":[a-zA-Z_@0-9:]+:[ \t]*$" txt))
+; (setq txt (replace-match "" t t txt)))
+
+ ;; FIXME!!!
+ (when (string-match "\\([ \t]+\\)\\(:[a-zA-Z_@0-9:]+:\\)[ \t]*$" txt)
+ ;; Tags are in the string
+ (if (or (eq org-agenda-remove-tags-when-in-prefix t)
+ (and org-agenda-remove-tags-when-in-prefix
+ org-prefix-has-tag))
+ (setq txt (replace-match "" t t txt))
+ (setq txt (replace-match
+ (concat (make-string (max (- 50 (length txt)) 1) ?\ )
+ (match-string 2 txt))
+ t t txt))))
;; Create the final string
(if noprefix
@@ -6855,7 +6988,8 @@ and by additional input from the age of a schedules or deadline entry."
(interactive)
(let* ((tags (get-text-property (point-at-bol) 'tags)))
(if tags
- (message "Tags are :%s:" (mapconcat 'identity tags ":"))
+ (message "Tags are :%s:"
+ (org-no-properties (mapconcat 'identity tags ":")))
(message "No tags associated with this line"))))
(defun org-agenda-goto (&optional highlight)
@@ -7054,7 +7188,9 @@ the tags of the current headline come last."
(condition-case nil
(while t
(if (looking-at "[^\r\n]+?:\\([a-zA-Z_@0-9:]+\\):[ \t]*\\([\n\r]\\|\\'\\)")
- (setq tags (append (org-split-string (match-string 1) ":") tags)))
+ (setq tags (append (org-split-string
+ (org-match-string-no-properties 1) ":")
+ tags)))
(or org-use-tag-inheritance (error ""))
(org-up-heading-all 1))
(error nil))))
@@ -7491,11 +7627,11 @@ The prefix arg TODO-ONLY limits the search to TODO entries."
(defun org-set-tags (&optional arg just-align)
"Set the tags for the current headline.
With prefix ARG, realign all tags in headings in the current buffer."
- (interactive)
- (let* (;(inherit (org-get-inherited-tags))
- (re (concat "^" outline-regexp))
+ (interactive "P")
+ (let* ((re (concat "^" outline-regexp))
(col (current-column))
(current (org-get-tags))
+ table current-tags inherited-tags ; computed below when needed
tags hd empty invis)
(if arg
(save-excursion
@@ -7505,15 +7641,22 @@ With prefix ARG, realign all tags in headings in the current buffer."
(message "All tags realigned to column %d" org-tags-column))
(if just-align
(setq tags current)
- (setq org-last-tags-completion-table
- (or (org-get-buffer-tags)
- org-last-tags-completion-table))
- (setq tags
- (let ((org-add-colon-after-tag-completion t))
- (completing-read "Tags: " 'org-tags-completion-function
- nil nil current 'org-tags-history)))
+ (setq table (or org-tag-alist (org-get-buffer-tags))
+ org-last-tags-completion-table table
+ current-tags (org-split-string current ":")
+ inherited-tags (nreverse
+ (nthcdr (length current-tags)
+ (nreverse (org-get-tags-at))))
+ tags
+ (if (or (eq t org-use-fast-tag-selection)
+ (and org-use-fast-tag-selection (cdar table)))
+ (org-fast-tag-selection current-tags inherited-tags table)
+ (let ((org-add-colon-after-tag-completion t))
+ (completing-read "Tags: " 'org-tags-completion-function
+ nil nil current 'org-tags-history))))
(while (string-match "[-+&]+" tags)
(setq tags (replace-match ":" t t tags))))
+
;; FIXME: still optimize this by not checking when JUST-ALIGN?
(unless (setq empty (string-match "\\`[\t ]*\\'" tags))
(unless (string-match ":$" tags) (setq tags (concat tags ":")))
@@ -7564,6 +7707,79 @@ With prefix ARG, realign all tags in headings in the current buffer."
(assoc s2 ctable)))
))
+(defun org-fast-tag-insert (kwd tags face &optional end)
+ "Insert KDW, and the TAGS, the latter with face FACE. Also inser END."
+ (insert (format "%-12s" (concat kwd ":"))
+ (org-add-props (mapconcat 'identity tags " ") nil 'face face)
+ (or end "")))
+
+(defun org-fast-tag-selection (current inherited table)
+ "Fast tag selection with single keys.
+CURRENT is the current list of tags in the headline, INHERITED is the
+list of inherited tags, and TABLE is an alist of tags and corresponding keys.
+If the keys are nil, a-z are automatically assigned.
+Returns the new tags string, or nil to not change the current settings."
+ (let* ((maxlen (apply 'max (mapcar (lambda (x)
+ (string-width (car x))) table)))
+ (fwidth (+ maxlen 3 1 3))
+ (ncol (/ (window-width) fwidth))
+ (i-face 'org-done)
+ (c-face 'org-tag)
+ tg cnt e c char ntable tbl rtn)
+ (save-window-excursion
+ (delete-other-windows)
+ (split-window-vertically)
+ (switch-to-buffer-other-window (get-buffer-create " *Org tags*"))
+ (erase-buffer)
+ (org-fast-tag-insert "Inherited" inherited i-face "\n")
+ (org-fast-tag-insert "Current" current c-face "\n\n")
+ (setq tbl table char (1- ?a) cnt 0)
+ (while (setq e (pop tbl))
+ (setq tg (car e) c (or (cdr e) (setq char (1+ char))))
+ (setq tg (org-add-props tg nil 'face
+ (cond
+ ((member tg current) c-face)
+ ((member tg inherited) i-face)
+ (t nil))))
+ (insert "[" c "] " tg (make-string
+ (- fwidth 4 (length tg)) ?\ ))
+ (push (cons tg c) ntable)
+ (when (= (setq cnt (1+ cnt)) ncol)
+ (insert "\n")
+ (setq cnt 0)))
+ (insert "\n")
+ (goto-char (point-min))
+ (if (fboundp 'fit-window-to-buffer) (fit-window-to-buffer))
+ (setq rtn
+ (catch 'exit
+ (while t
+ (message "[key]:Toggle SPC: clear current RET accept")
+ (setq c (read-char-exclusive))
+ (cond
+ ((= c ?\r) (throw 'exit t))
+ ((= c ?\C-g) (throw 'exit nil))
+ ((= c ?\ ) (setq current nil))
+ (t (setq e (rassoc c ntable) tg (car e))
+ (if (member tg current)
+ (setq current (delete tg current))
+ (setq current (append current (list tg))))))
+ (goto-char (point-min))
+ (beginning-of-line 2)
+ (delete-region (point) (point-at-eol))
+ (org-fast-tag-insert "Current" current c-face)
+ (while (re-search-forward "\\[.\\] \\([a-zA-Z0-9_@]+\\)" nil t)
+ (setq tg (match-string 1))
+ (add-text-properties (match-beginning 1) (match-end 1)
+ (list 'face
+ (cond
+ ((member tg current) c-face)
+ ((member tg inherited) i-face)
+ (t nil)))))
+ (goto-char (point-min)))))
+ (if rtn
+ (mapconcat 'identity current ":")
+ nil))))
+
(defun org-get-tags ()
"Get the TAGS string in the current headline."
(unless (org-on-heading-p)
@@ -7752,6 +7968,9 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
((string= type "bbdb")
(org-follow-bbdb-link path))
+ ((string= type "info")
+ (org-follow-info-link path))
+
((string= type "gnus")
(let (group article)
(if (not (string-match "\\`\\([^#]+\\)\\(#\\(.*\\)\\)?" path))
@@ -7799,8 +8018,8 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
(setq cmd (replace-match "<" t t cmd)))
(while (string-match "@}" cmd)
(setq cmd (replace-match ">" t t cmd)))
- (if (or (not org-confirm-shell-links)
- (funcall org-confirm-shell-links
+ (if (or (not org-confirm-shell-link-function)
+ (funcall org-confirm-shell-link-function
(format "Execute \"%s\" in shell? "
(org-add-props cmd nil
'face 'org-warning))))
@@ -7809,6 +8028,16 @@ optional argument IN-EMACS is non-nil, Emacs will visit the file."
(shell-command cmd))
(error "Abort"))))
+ ((string= type "elisp")
+ (let ((cmd path))
+ (if (or (not org-confirm-elisp-link-function)
+ (funcall org-confirm-elisp-link-function
+ (format "Execute \"%s\" as elisp? "
+ (org-add-props cmd nil
+ 'face 'org-warning))))
+ (message "%s => %s" cmd (eval (read cmd)))
+ (error "Abort"))))
+
(t
(browse-url-at-point))))))
@@ -7862,10 +8091,6 @@ in all files."
(org-camel-to-words s)
(org-split-string s "[ \n\r\t]+"))
re0 (concat "\\(<<" (regexp-quote s0) ">>\\)")
- ;; FIXME: The word delimiters in the following are not quite correct.
-; re2 (concat "\\<" (mapconcat 'downcase words "[ \t]+") "\\>")
-; re2a (concat "\\<" (mapconcat 'downcase words "[ \t\r\n]+") "\\>")
-; re4 (concat "\\<" (mapconcat 'downcase words "[^a-zA-Z_\r\n]+") "\\>")
re2 (concat "[ \t\r\n]\\(" (mapconcat 'downcase words "[ \t]+") "\\)[ \t\r\n]")
re2a (concat "[ \t\r\n]\\(" (mapconcat 'downcase words "[ \t\r\n]+") "\\)[ \t\r\n]")
re4 (concat "[^a-zA-Z_]\\(" (mapconcat 'downcase words "[^a-zA-Z_\r\n]+") "\\)[^a-zA-Z_]")
@@ -8019,6 +8244,18 @@ onto the ring."
(delete-window (get-buffer-window "*BBDB*"))
(error "No matching BBDB record")))))
+
+(defun org-follow-info-link (name)
+ "Follow an info file & node link to NAME."
+ (if (or (string-match "\\(.*\\)::?\\(.*\\)" name)
+ (string-match "\\(.*\\)" name))
+ (progn
+ (require 'info)
+ (if (match-string 2 name) ; If there isn't a node, choose "Top"
+ (Info-find-node (match-string 1 name) (match-string 2 name))
+ (Info-find-node (match-string 1 name) "Top")))
+ (message (concat "Could not open: " name))))
+
(defun org-follow-gnus-link (&optional group article)
"Follow a Gnus link to GROUP and ARTICLE."
(require 'gnus)
@@ -8382,6 +8619,13 @@ For file links, arg negates `org-context-in-file-links'."
(bbdb-record-company (bbdb-current-record))))
link (org-make-link cpltxt)))
+ ((eq major-mode 'Info-mode)
+ (setq link (org-make-link "info:"
+ (file-name-nondirectory Info-current-file)
+ ":" Info-current-node))
+ (setq cpltxt (concat (file-name-nondirectory Info-current-file)
+ ":" Info-current-node)))
+
((eq major-mode 'calendar-mode)
(let ((cd (calendar-cursor-to-date)))
(setq link
@@ -11436,6 +11680,13 @@ ones and overrule settings in the other lists."
(setq rtn (plist-put rtn p v))))
rtn))
+(defun org-export-directory (type plist)
+ (let* ((val (plist-get plist :publishing-directory))
+ (dir (if (listp val)
+ (or (cdr (assoc type val)) ".")
+ val)))
+ dir))
+
(defun org-export-find-first-heading-line (list)
"Remove all lines from LIST which are before the first headline."
(let ((orig-list list)
@@ -11899,7 +12150,7 @@ underlined headlines. The default is 3."
(umax nil)
(case-fold-search nil)
(filename (concat (file-name-as-directory
- (plist-get opt-plist :publishing-directory))
+ (org-export-directory :ascii opt-plist))
(file-name-sans-extension
(file-name-nondirectory buffer-file-name))
".txt"))
@@ -12157,6 +12408,7 @@ Does include HTML export options as well as TODO and CATEGORY stuff."
#+SEQ_TODO: %s
#+TYP_TODO: %s
#+STARTUP: %s %s %s %s %s %s
+#+TAGS: %s
#+ARCHIVE: %s
"
(buffer-name) (user-full-name) user-mail-address org-export-default-language
@@ -12184,6 +12436,7 @@ Does include HTML export options as well as TODO and CATEGORY stuff."
(if org-hide-leading-stars "hidestars" "showstars")
(if org-startup-align-all-tables "align" "noalign")
(if org-log-done "logging" "nologging")
+ (if org-tag-alist (mapconcat 'car org-tag-alist " ") "")
org-archive-location
))
@@ -12288,7 +12541,7 @@ org-mode's default settings, but still inferior to file-local settings."
(level 0) (line "") (origline "") txt todo
(umax nil)
(filename (concat (file-name-as-directory
- (plist-get opt-plist :publishing-directory))
+ (org-export-directory :html opt-plist))
(file-name-sans-extension
(file-name-nondirectory buffer-file-name))
".html"))
@@ -12397,7 +12650,8 @@ org-mode's default settings, but still inferior to file-local settings."
level (org-tr-level level)
txt (save-match-data
(org-html-expand
- (match-string 3 line)))
+ (org-html-cleanup-toc-line
+ (match-string 3 line))))
todo
(or (and org-export-mark-todo-in-toc
(match-beginning 2)
@@ -12507,6 +12761,7 @@ org-mode's default settings, but still inferior to file-local settings."
;; replace "&" by "&amp;", "<" and ">" by "&lt;" and "&gt;"
;; handle @<..> HTML tags (replace "@&gt;..&lt;" by "<..>")
+ ;; Also handle sub_superscripts and checkboxes FIXME
(setq line (org-html-expand line))
;; Format the links
@@ -12566,7 +12821,7 @@ org-mode's default settings, but still inferior to file-local settings."
(not descp))))
(concat "<img src=\"" thefile "\"/>")
(concat "<a href=\"" thefile "\">" desc "</a>")))))
- ((member type '("bbdb" "vm" "wl" "mhe" "rmail" "gnus" "shell"))
+ ((member type '("bbdb" "vm" "wl" "mhe" "rmail" "gnus" "shell" "info" "elisp"))
(setq rpl (concat "<i>&lt;" type ":"
(save-match-data (org-link-unescape path))
"&gt;</i>"))))
@@ -12622,13 +12877,13 @@ org-mode's default settings, but still inferior to file-local settings."
(insert (org-format-table-html table-buffer table-orig-buffer))))
(t
;; Normal lines
- (when (and (string-match
- (cond
- ((eq llt t) "^\\([ \t]*\\)\\(\\([-+*]\\)\\|\\([0-9]+[.)]\\) \\)?\\( *[^ \t\n\r]\\|[ \t]*$\\)")
- ((= llt ?.) "^\\([ \t]*\\)\\(\\([-+*]\\)\\|\\([0-9]+\\.\\) \\)?\\( *[^ \t\n\r]\\|[ \t]*$\\)")
- ((= llt ?\)) "^\\( \t]*\\)\\(\\([-+*]\\)\\|\\([0-9]+)\\) \\)?\\( *[^ \t\n\r]\\|[ \t]*$\\)")
- (t (error "Invalid value of `org-plain-list-ordered-item-terminator'")))
- line))
+ (when (string-match
+ (cond
+ ((eq llt t) "^\\([ \t]*\\)\\(\\([-+*]\\)\\|\\([0-9]+[.)]\\) \\)?\\( *[^ \t\n\r]\\|[ \t]*$\\)")
+ ((= llt ?.) "^\\([ \t]*\\)\\(\\([-+*]\\)\\|\\([0-9]+\\.\\) \\)?\\( *[^ \t\n\r]\\|[ \t]*$\\)")
+ ((= llt ?\)) "^\\( \t]*\\)\\(\\([-+*]\\)\\|\\([0-9]+)\\) \\)?\\( *[^ \t\n\r]\\|[ \t]*$\\)")
+ (t (error "Invalid value of `org-plain-list-ordered-item-terminator'")))
+ line)
(setq ind (org-get-string-indentation line)
start-is-num (match-beginning 4)
starter (if (match-beginning 2)
@@ -12655,7 +12910,15 @@ org-mode's default settings, but still inferior to file-local settings."
(setq in-local-list t))
(starter
;; continue current list
- (insert "<li>\n"))))
+ (insert "<li>\n")))
+ (if (string-match "^[ \t]*\\[\\([X ]\\)\\]" line)
+ (setq line
+ (replace-match
+ (if (equal (match-string 1 line) "X")
+ "<b>[X]</b>"
+ "<b>[<span style=\"visibility:hidden;\">X</span>]</b>")
+ t t line))))
+
;; Empty lines start a new paragraph. If hand-formatted lists
;; are not fully interpreted, lines starting with "-", "+", "*"
;; also start a new paragraph.
@@ -12854,8 +13117,8 @@ But it has the disadvantage, that Org-mode's HTML conversions cannot be used."
(if (match-end 1)
(format "@<span class=\"timestamp-kwd\">%s @</span>"
(match-string 1 s)))
- (format "@<span class=\"timestamp\">%s@</span>"
- (match-string 3 s)))
+ (format " @<span class=\"timestamp\">%s@</span>"
+ (substring (match-string 3 s) 1 -1)))
s (substring s (match-end 0)))))
;; Line break of line started and ended with time stamp stuff
(if (not r)
@@ -12877,6 +13140,14 @@ But it has the disadvantage, that Org-mode's HTML conversions cannot be used."
(setq s (replace-match "&gt;" t t s))))
s)
+(defun org-html-cleanup-toc-line (s)
+ "Remove tags and time staps from lines going into the toc."
+ (if (string-match " +:[a-zA-Z0-9_@:]+: *$" s)
+ (setq s (replace-match "" t t s)))
+ (while (string-match org-maybe-keyword-time-regexp s)
+ (setq s (replace-match "" t t s)))
+ s)
+
(defun org-html-expand (string)
"Prepare STRING for HTML export. Applies all active conversions.
If there are links in the string, don't modify these."
@@ -12937,6 +13208,7 @@ stacked delimiters is N. Escaping delimiters is not possible."
"\\(" (org-create-multibrace-regexp "(" ")" org-match-sexp-depth) "\\)"
"\\|"
"\\(\\(?:\\*\\|[-+]?[^-+*!@#$%^_ \t\r\n,:\"?<>~;./{}=()]+\\)\\)\\)")
+;;;;;;;;;;;;;;;;;;;;;;;;;^ FIXME
"The regular expression matching a sub- or superscript.")
(defun org-export-html-convert-sub-super (string)
@@ -13083,8 +13355,8 @@ The XOXO buffer is named *xoxo-<source buffer name>*"
(goto-char (point-min)) ;; CD: beginning-of-buffer is not allowed.
(let* ((opt-plist (org-combine-plists (org-default-export-plist)
(org-infile-export-plist)))
- (filename (concat (file-name-as-directory
- (plist-get opt-plist :publishing-directory))
+ (filename (concat (file-name-as-directory
+ (org-export-directory :xoxo opt-plist))
(file-name-sans-extension
(file-name-nondirectory buffer-file-name))
".html"))
@@ -13170,19 +13442,29 @@ The file is stored under the name `org-combined-agenda-icalendar-file'."
If COMBINE is non-nil, combine all calendar entries into a single large
file and store it under the name `org-combined-agenda-icalendar-file'."
(save-excursion
- (let* (file ical-file ical-buffer category started org-agenda-new-buffers)
+ (let* ((dir (org-export-directory
+ :ical (list :publishing-directory
+ org-export-publishing-directory)))
+ file ical-file ical-buffer category started org-agenda-new-buffers)
+
(when combine
- (setq ical-file org-combined-agenda-icalendar-file
+ (setq ical-file
+ (if (file-name-absolute-p org-combined-agenda-icalendar-file)
+ org-combined-agenda-icalendar-file
+ (expand-file-name org-combined-agenda-icalendar-file dir))
ical-buffer (org-get-agenda-file-buffer ical-file))
(set-buffer ical-buffer) (erase-buffer))
(while (setq file (pop files))
(catch 'nextfile
(org-check-agenda-file file)
+ (set-buffer (org-get-agenda-file-buffer file))
(unless combine
- (setq ical-file (concat (file-name-sans-extension file) ".ics"))
+ (setq ical-file (concat (file-name-as-directory dir)
+ (file-name-sans-extension
+ (file-name-nondirectory buffer-file-name))
+ ".ics"))
(setq ical-buffer (org-get-agenda-file-buffer ical-file))
- (set-buffer ical-buffer) (erase-buffer))
- (set-buffer (org-get-agenda-file-buffer file))
+ (with-current-buffer ical-buffer (erase-buffer)))
(setq category (or org-category
(file-name-sans-extension
(file-name-nondirectory buffer-file-name))))
@@ -13559,8 +13841,8 @@ on context.
See the individual commands for more information."
(interactive)
(cond
- ((org-at-table-p) (org-table-previous-field))
- (t (org-global-cycle))))
+ ((org-at-table-p) (call-interactively 'org-table-previous-field))
+ (t (call-interactively 'org-global-cycle))))
(defun org-shiftmetaleft ()
"Promote subtree or delete table column.
@@ -13568,8 +13850,8 @@ Calls `org-promote-subtree' or `org-table-delete-column', depending on context.
See the individual commands for more information."
(interactive)
(cond
- ((org-at-table-p) (org-table-delete-column))
- ((org-on-heading-p) (org-promote-subtree))
+ ((org-at-table-p) (call-interactively 'org-table-delete-column))
+ ((org-on-heading-p) (call-interactively 'org-promote-subtree))
((org-at-item-p) (call-interactively 'org-outdent-item))
(t (org-shiftcursor-error))))
@@ -13579,8 +13861,8 @@ Calls `org-demote-subtree' or `org-table-insert-column', depending on context.
See the individual commands for more information."
(interactive)
(cond
- ((org-at-table-p) (org-table-insert-column))
- ((org-on-heading-p) (org-demote-subtree))
+ ((org-at-table-p) (call-interactively 'org-table-insert-column))
+ ((org-on-heading-p) (call-interactively 'org-demote-subtree))
((org-at-item-p) (call-interactively 'org-indent-item))
(t (org-shiftcursor-error))))
@@ -13591,9 +13873,9 @@ Calls `org-move-subtree-up' or `org-table-kill-row' or
for more information."
(interactive "P")
(cond
- ((org-at-table-p) (org-table-kill-row))
- ((org-on-heading-p) (org-move-subtree-up arg))
- ((org-at-item-p) (org-move-item-up arg))
+ ((org-at-table-p) (call-interactively 'org-table-kill-row))
+ ((org-on-heading-p) (call-interactively 'org-move-subtree-up))
+ ((org-at-item-p) (call-interactively 'org-move-item-up))
(t (org-shiftcursor-error))))
(defun org-shiftmetadown (&optional arg)
"Move subtree down or insert table row.
@@ -13602,9 +13884,9 @@ Calls `org-move-subtree-down' or `org-table-insert-row' or
commands for more information."
(interactive "P")
(cond
- ((org-at-table-p) (org-table-insert-row arg))
- ((org-on-heading-p) (org-move-subtree-down arg))
- ((org-at-item-p) (org-move-item-down arg))
+ ((org-at-table-p) (call-interactively 'org-table-insert-row))
+ ((org-on-heading-p) (call-interactively 'org-move-subtree-down))
+ ((org-at-item-p) (call-interactively 'org-move-item-down))
(t (org-shiftcursor-error))))
(defun org-metaleft (&optional arg)
@@ -13614,9 +13896,10 @@ With no specific context, calls the Emacs default `backward-word'.
See the individual commands for more information."
(interactive "P")
(cond
- ((org-at-table-p) (org-table-move-column 'left))
- ((or (org-on-heading-p) (org-region-active-p)) (org-do-promote))
- (t (backward-word (prefix-numeric-value arg)))))
+ ((org-at-table-p) (org-call-with-arg 'org-table-move-column 'left))
+ ((or (org-on-heading-p) (org-region-active-p))
+ (call-interactively 'org-do-promote))
+ (t (call-interactively 'backward-word))))
(defun org-metaright (&optional arg)
"Demote subtree or move table column to right.
@@ -13625,9 +13908,10 @@ With no specific context, calls the Emacs default `forward-word'.
See the individual commands for more information."
(interactive "P")
(cond
- ((org-at-table-p) (org-table-move-column nil))
- ((or (org-on-heading-p) (org-region-active-p)) (org-do-demote))
- (t (forward-word (prefix-numeric-value arg)))))
+ ((org-at-table-p) (call-interactively 'org-table-move-column))
+ ((or (org-on-heading-p) (org-region-active-p))
+ (call-interactively 'org-do-demote))
+ (t (call-interactively 'forward-word))))
(defun org-metaup (&optional arg)
"Move subtree up or move table row up.
@@ -13636,9 +13920,9 @@ Calls `org-move-subtree-up' or `org-table-move-row' or
for more information."
(interactive "P")
(cond
- ((org-at-table-p) (org-table-move-row 'up))
- ((org-on-heading-p) (org-move-subtree-up arg))
- ((org-at-item-p) (org-move-item-up arg))
+ ((org-at-table-p) (org-call-with-arg 'org-table-move-row 'up))
+ ((org-on-heading-p) (call-interactively 'org-move-subtree-up))
+ ((org-at-item-p) (call-interactively 'org-move-item-up))
(t (org-shiftcursor-error))))
(defun org-metadown (&optional arg)
@@ -13648,43 +13932,46 @@ Calls `org-move-subtree-down' or `org-table-move-row' or
commands for more information."
(interactive "P")
(cond
- ((org-at-table-p) (org-table-move-row nil))
- ((org-on-heading-p) (org-move-subtree-down arg))
- ((org-at-item-p) (org-move-item-down arg))
+ ((org-at-table-p) (call-interactively 'org-table-move-row))
+ ((org-on-heading-p) (call-interactively 'org-move-subtree-down))
+ ((org-at-item-p) (call-interactively 'org-move-item-down))
(t (org-shiftcursor-error))))
(defun org-shiftup (&optional arg)
- "Increase item in timestamp or increase priority of current item.
+ "Increase item in timestamp or increase priority of current headline.
Calls `org-timestamp-up' or `org-priority-up', depending on context.
See the individual commands for more information."
(interactive "P")
(cond
- ((org-at-timestamp-p) (org-timestamp-up arg))
- (t (org-priority-up))))
+ ((org-at-timestamp-p) (call-interactively 'org-timestamp-up))
+ ((org-on-heading-p) (call-interactively 'org-priority-up))
+ ((org-at-item-p) (call-interactively 'org-previous-item))
+ (t (call-interactively 'org-beginning-of-item) (beginning-of-line 1))))
(defun org-shiftdown (&optional arg)
- "Decrease item in timestamp or decrease priority of current item.
+ "Decrease item in timestamp or decrease priority of current headline.
Calls `org-timestamp-down' or `org-priority-down', depending on context.
See the individual commands for more information."
(interactive "P")
(cond
- ((org-at-timestamp-p) (org-timestamp-down arg))
- (t (org-priority-down))))
+ ((org-at-timestamp-p) (call-interactively 'org-timestamp-down))
+ ((org-on-heading-p) (call-interactively 'org-priority-down))
+ (t (call-interactively 'org-next-item))))
(defun org-shiftright ()
"Next TODO keyword or timestamp one day later, depending on context."
(interactive)
(cond
- ((org-at-timestamp-p) (org-timestamp-up-day))
- ((org-on-heading-p) (org-todo 'right))
+ ((org-at-timestamp-p) (call-interactively 'org-timestamp-up-day))
+ ((org-on-heading-p) (org-call-with-arg 'org-todo 'right))
(t (org-shiftcursor-error))))
(defun org-shiftleft ()
"Previous TODO keyword or timestamp one day earlier, depending on context."
(interactive)
(cond
- ((org-at-timestamp-p) (org-timestamp-down-day))
- ((org-on-heading-p) (org-todo 'left))
+ ((org-at-timestamp-p) (call-interactively 'org-timestamp-down-day))
+ ((org-on-heading-p) (org-call-with-arg 'org-todo 'left))
(t (org-shiftcursor-error))))
(defun org-copy-special ()
@@ -13749,23 +14036,23 @@ This command does many different things, depending on context:
((and (local-variable-p 'org-finish-function (current-buffer))
(fboundp org-finish-function))
(funcall org-finish-function))
- ((org-on-target-p) (org-update-radio-target-regexp))
- ((org-on-heading-p) (org-set-tags arg))
+ ((org-on-target-p) (call-interactively 'org-update-radio-target-regexp))
+ ((org-on-heading-p) (call-interactively 'org-set-tags))
((org-at-table.el-p)
(require 'table)
(beginning-of-line 1)
(re-search-forward "|" (save-excursion (end-of-line 2) (point)))
- (table-recognize-table))
+ (call-interactively 'table-recognize-table))
((org-at-table-p)
(org-table-maybe-eval-formula)
(if arg
- (org-table-recalculate t)
+ (call-interactively 'org-table-recalculate)
(org-table-maybe-recalculate-line))
- (org-table-align))
+ (call-interactively 'org-table-align))
((org-at-item-checkbox-p)
- (org-toggle-checkbox))
+ (call-interactively 'org-toggle-checkbox))
((org-at-item-p)
- (org-renumber-ordered-list (prefix-numeric-value arg)))
+ (call-interactively 'org-renumber-ordered-list))
((save-excursion (beginning-of-line 1) (looking-at "#\\+\\([A-Z]+\\)"))
(cond
((equal (match-string 1) "TBLFM")
@@ -13773,9 +14060,10 @@ This command does many different things, depending on context:
(save-excursion
(beginning-of-line 1)
(skip-chars-backward " \r\n\t")
- (if (org-at-table-p) (org-table-recalculate t))))
+ (if (org-at-table-p)
+ (org-call-with-arg 'org-table-recalculate t))))
(t
- (org-mode-restart))))
+ (call-interactively 'org-mode-restart))))
(t (error "C-c C-c can do nothing useful at this location.")))))
(defun org-mode-restart ()
@@ -13793,7 +14081,7 @@ See the individual commands for more information."
(cond
((org-at-table-p)
(org-table-justify-field-maybe)
- (org-table-next-row))
+ (call-interactively 'org-table-next-row))
(t (newline))))
(defun org-meta-return (&optional arg)
@@ -13803,8 +14091,8 @@ See the individual commands for more information."
(interactive "P")
(cond
((org-at-table-p)
- (org-table-wrap-region arg))
- (t (org-insert-heading arg))))
+ (call-interactively 'org-table-wrap-region))
+ (t (call-interactively 'org-insert-heading))))
;;; Menu entries
@@ -14313,10 +14601,9 @@ When ENTRY is non-nil, show the entire entry."
(if entry
(progn
(org-show-entry)
- (save-excursion ;; FIXME: Is this the fix for points in the -|
- ;; middle of text? |
- (and (outline-next-heading) ;; |
- (org-flag-heading nil)))) ; show the next heading _|
+ (save-excursion
+ (and (outline-next-heading)
+ (org-flag-heading nil))))
(outline-flag-region (max 1 (1- (point)))
(save-excursion (outline-end-of-heading) (point))
(if org-noutline-p
@@ -14401,3 +14688,7 @@ Show the heading too, if it is currently invisible."
;; arch-tag: e77da1a7-acc7-4336-b19e-efa25af3f9fd
;;; org.el ends here
+(defun test ()
+ ""
+ (interactive)
+ (org-up-heading-all 1)) \ No newline at end of file
diff --git a/org.pdf b/org.pdf
index a08ef03..3920e11 100644
--- a/org.pdf
+++ b/org.pdf
Binary files differ
diff --git a/org.texi b/org.texi
index d60b37e..c3b8759 100644
--- a/org.texi
+++ b/org.texi
@@ -5,7 +5,7 @@
@c @setfilename ../info/org
@settitle Org Mode Manual
-@set VERSION 4.30
+@set VERSION 4.33
@set DATE May 2006
@dircategory Emacs
@@ -85,7 +85,7 @@ Software Foundation raise funds for GNU development.''
* Tags:: Tagging headlines and matching sets of tags
* Agenda views:: Collecting information into views
* Exporting:: Sharing and publishing of notes
-* Publishing::
+* Publishing:: Create a web site of linked Org-mode files
* Miscellaneous:: All the rest which did not fit elsewhere
* Index:: The fast road to specific information
* Key Index:: Key bindings and where they are described
@@ -209,9 +209,9 @@ Configuration
* Project alist:: The central configuration variable
* File sources and destinations:: From here to there
* Selecting files:: What files are part of the project?
-* Publishing action::
+* Publishing action:: Setting the function doing the publishing
* Publishing options:: Tweaking HTML export
-* Links:: Linking between files of a project
+* Publishing links:: Which links keep working after publishing?
* Project page index:: Publishing a list of project files
Sample configuration
@@ -555,7 +555,7 @@ creation of a new headline, use a prefix arg, or first press @key{RET}
to get to the beginning of the next line. When this command is used in
the middle of a line, the line is split and the rest of the line becomes
the new headline. If the command is used at the beginning of a
-headline, the new headline is created before the current line. It at
+headline, the new headline is created before the current line. If at
the beginning of any other line, the content of that line is made the
new heading.
@kindex M-S-@key{RET}
@@ -658,7 +658,7 @@ If the match is in a headline, the headline is made visible. If the
match is in the body of an entry, headline and body are made visible.
In order to provide minimal context, also the full hierarchy of
headlines above the match is shown, as well as the headline following
-the match. Each match is also highlighted, the highlights disappear
+the match. Each match is also highlighted; the highlights disappear
when the buffer is changed with an editing command.
@end table
@noindent
@@ -676,7 +676,7 @@ For example:
@noindent will define the key @kbd{C-c a f} as a shortcut for creating
a sparse tree matching the string @samp{FIXME}.
-Other commands are using sparse trees as well. For example @kbd{C-c
+Other commands use sparse trees as well. For example @kbd{C-c
C-v} creates a sparse TODO tree (@pxref{TODO basics}).
@kindex C-c C-x v
@@ -699,7 +699,7 @@ part of the document and print the resulting file.
Headlines define both the structure of the Org-mode file, and also lists
(for example, TODO items (@pxref{TODO items}) should be created using
-headline levels). However, when taking notes, the plain text is
+headline levels). When taking notes, however, the plain text is
sometimes easier to read with hand-formatted lists. Org-mode supports
editing such lists, and the HTML exporter (@pxref{Exporting}) does
parse and format them.
@@ -710,7 +710,7 @@ bullet, lines must be indented or they will be seen as top-level
headlines. Also, when you are hiding leading stars to get a clean
outline view, plain list items starting with a star are visually
indistinguishable from true headlines. In short: even though @samp{*}
-is supported, it may be better to not use it for plain list items} as
+is supported, it may be better not to use it for plain list items} as
bullets. Ordered list items start with @samp{1.} or @samp{1)}. Items
belonging to the same list must have the same indentation on the first
line. In particular, if an ordered list reaches number @samp{10.}, then
@@ -735,18 +735,18 @@ But in the end, not individual scenes matter but the film as a whole.
@end example
Org-mode supports these lists by tuning filling and wrapping commands
-to correctly deal with them.
+to deal with them correctly.
@cindex checkboxes
Every item in a plain list can be made a checkbox by starting it with
-the string @samp{[_]}. The checkbox status can conveniently be toggled
+the string @samp{[ ]}. The checkbox status can conveniently be toggled
with @kbd{C-c C-c}.
@example
-* Shopping list
- - [_] Milk
- - [X] Butter
- - [_] bred
+* Stupid mistakes when distributing a new version
+ - [ ] update also Emacs CVS
+ - [X] forget to update index.html on the website
+ - [X] leaving a `(debug)' form in the code
@end example
The following commands act on items when the cursor is in the first line
@@ -757,8 +757,8 @@ of an item (the line with the bullet or number).
@item @key{TAB}
Items can be folded just like headline levels if you set the variable
@code{org-cycle-include-plain-lists}. The level of an item is then
-given by the indentation of the bullet/number. However, items are
-always subordinate to real headlines, the hierarchies remain
+given by the indentation of the bullet/number. Items are always
+subordinate to real headlines, however; the hierarchies remain
completely separated.
@kindex M-@key{RET}
@item M-@key{RET}
@@ -769,8 +769,15 @@ item. If this command is executed in the @emph{whitespace before a bullet or
number}, the new item is created @emph{before} the current item. If the
command is executed in the white space before the text that is part of
an item but does not contain the bullet, a bullet is added to the
-current line. If the current item has a checkbox, so will the newly
-created item.
+current line.
+@kindex M-S-@key{RET}
+@item M-S-@key{RET}
+Insert a new item with a checkbox.
+@kindex S-@key{up}
+@kindex S-@key{down}
+@item S-@key{up}
+@itemx S-@key{down}
+Jump to the previous/next item in the current list.
@kindex M-S-@key{up}
@kindex M-S-@key{down}
@item M-S-@key{up}
@@ -864,7 +871,7 @@ If not, lines are split at whitespace into fields. You can use a prefix
argument to indicate the minimum number of consecutive spaces required
to identify a field separator (default: just one).@*
If there is no active region, this command creates an empty Org-mode
-table. However, it's easier to just start typing, like
+table. But it's easier just to start typing, like
@kbd{|Name|Phone|Age @key{RET} |- @key{TAB}}.
@tsubheading{Re-aligning and field motion}
@@ -1048,7 +1055,7 @@ it off with
(setq org-enable-table-editor nil)
@end lisp
-@noindent The only table command which then still works is
+@noindent Then the only table command that still works is
@kbd{C-c C-c} to do a manual re-align.
@node Narrow columns, Table calculations, Built-in table editor, Tables
@@ -1167,8 +1174,8 @@ described below, see @ref{Advanced features}.
A formula can contain an optional mode string after a semicolon. This
string consists of flags to influence calc's modes@footnote{By
default, Org-mode uses the standard calc modes (precision 12, angular
-units degrees, fraction and symbolic modes off). However, the display
-format has been changed to @code{(float 5)} to keep tables compact.
+units degrees, fraction and symbolic modes off). The display format,
+however, has been changed to @code{(float 5)} to keep tables compact.
The default settings can be configured using the variable
@code{org-calc-default-modes}.} during execution, e.g. @samp{p20} to
switch the internal precision to 20 digits, @samp{n3}, @samp{s3},
@@ -1194,13 +1201,13 @@ taylor($3,x=7,2) @r{taylor series of $3, at x=7, second degree}
@node Lisp formulas, Column formulas, Formula syntax, Table calculations
@subsection Emacs Lisp forms as formulas
-@cindex Lisp forms, as table fomulas
+@cindex Lisp forms, as table formulas
-It is also possible to write a formula in Emacs lisp, this can be useful
+It is also possible to write a formula in Emacs lisp; this can be useful
for string manipulation and control structures. If a formula starts
with a single quote followed by an opening parenthesis, then it is
evaluated as a lisp form. The evaluation should return either a string
-or a number. Just like with @file{calc} formulas, you can provide a
+or a number. Just as with @file{calc} formulas, you can provide a
format specifier after a semicolon. A few examples:
@example
@@ -1280,7 +1287,7 @@ features:
@noindent @b{Important}: Please note that for these special tables,
recalculating the table with @kbd{C-u C-c *} will only affect rows
-which are marked @samp{#} or @samp{*}, and named fields. The column
+that are marked @samp{#} or @samp{*}, and named fields. The column
formulas are not applied in rows with empty first field.
@cindex marking characters, tables
@@ -1377,7 +1384,7 @@ Detailed information will be displayed.
@node Appetizer, , Editing/debugging formulas, Table calculations
@subsection Appetizer
-Finally, just to wet your appetite on what can be done with the fantastic
+Finally, just to whet your appetite on what can be done with the fantastic
@file{calc} package, here is a table that computes the Taylor series
for a couple of functions (homework: try that with Excel :-)
@@ -1403,7 +1410,7 @@ for a couple of functions (homework: try that with Excel :-)
@cindex minor mode for tables
If you like the intuitive way the Org-mode table editor works, you
-might want to use it also in other modes like text-mode or mail-mode.
+might also want to use it in other modes like text-mode or mail-mode.
The minor mode Orgtbl-mode makes this possible. You can always toggle
the mode with @kbd{M-x orgtbl-mode}. To turn it on by default, for
example in mail mode, use
@@ -1447,7 +1454,7 @@ possible.
@cindex hyperlinks
Just like HTML, Org-mode provides links inside a file, and external
-links to other files, Usenet articles, emails and much more.
+links to other files, Usenet articles, emails, and much more.
@menu
* Link format:: How links in Org-mode are formatted
@@ -1465,7 +1472,7 @@ links to other files, Usenet articles, emails and much more.
@cindex format, of links
Org-mode will recognize plain URL-like links and activate them as
-clickable links. However, the general link format looks like this:
+clickable links. The general link format, however, looks like this:
@example
[[link][description]] @r{or alternatively} [[link]]
@@ -1485,7 +1492,7 @@ If you place the cursor at the beginning or just behind the end of the
displayed text and press @key{BACKSPACE}, you will remove the
(invisible) bracket at that location. This makes the link incomplete
and the internals are again displayed as plain text. Inserting the
-missing bracket does hide the link internals again. To show the
+missing bracket hides the link internals again. To show the
internal structure of all links, use the menu entry
@code{Org->Hyperlinks->Literal links}.
@@ -1500,16 +1507,18 @@ the current file. Links such as @samp{[[My Target]]} or @samp{[[My
Target][Find my target]]} lead to a text search in the current file.
The link can be followed with @kbd{C-c C-o} when the cursor is on the
link, or with a mouse click (@pxref{Handling links}). The preferred
-match for such a link is a dedicated target: The same string in double
-angular brackets. Targets may be located anywhere, often it is
-convenient to put them into a comment line, for example
+match for such a link is a dedicated target: the same string in double
+angular brackets. Targets may be located anywhere; often it is
+convenient to put them into a comment line. For example
@example
# <<My Target>>
@end example
@noindent In HTML export (@pxref{HTML export}), such targets will become
-named anchors for direct access through @samp{http} links.
+named anchors for direct access through @samp{http} links@footnote{Note
+that text before the first headline will never be exported, so the first
+such target must be after the first headline.}.
If no dedicated target exists, Org-mode will search for the words in the
link. In the above example the search would be for @samp{my target}.
@@ -1580,30 +1589,35 @@ text search such that @samp{CamelCaseLink} is equivalent to
@cindex MH-E links
@cindex USENET links
@cindex SHELL links
+@cindex Info links
+@cindex elisp links
-Org-mode supports links to files, websites, Usenet and email messages;
-and BBDB database entries. External links are URL-like locators. The
-following list shows examples for each link type.
+Org-mode supports links to files, websites, Usenet and email messages,
+and BBDB database entries. External links are URL-like locators. They
+start with a short identifying string followed by a colon. There can be
+no space after the colon. The following list shows examples for each
+link type.
@example
-http://www.astro.uva.nl/~dominik @r{on the web}
-file:/home/dominik/images/jupiter.jpg @r{file, absolute path}
-file:papers/last.pdf @r{file, relative path}
-news:comp.emacs @r{Usenet link}
-mailto:adent@@galaxy.net @r{Mail link}
-vm:folder @r{VM folder link}
-vm:folder#id @r{VM message link}
-vm://myself@@some.where.org/folder#id @r{VM on remote machine}
-wl:folder @r{WANDERLUST folder link}
-wl:folder#id @r{WANDERLUST message link}
-mhe:folder @r{MH-E folder link}
-mhe:folder#id @r{MH-E message link}
-rmail:folder @r{RMAIL folder link}
-rmail:folder#id @r{RMAIL message link}
-gnus:group @r{GNUS group link}
-gnus:group#id @r{GNUS article link}
-bbdb:Richard Stallman @r{BBDB link}
-shell:ls *.org @r{A shell command}
+http://www.astro.uva.nl/~dominik @r{on the web}
+file:/home/dominik/images/jupiter.jpg @r{file, absolute path}
+file:papers/last.pdf @r{file, relative path}
+news:comp.emacs @r{Usenet link}
+mailto:adent@@galaxy.net @r{Mail link}
+vm:folder @r{VM folder link}
+vm:folder#id @r{VM message link}
+vm://myself@@some.where.org/folder#id @r{VM on remote machine}
+wl:folder @r{WANDERLUST folder link}
+wl:folder#id @r{WANDERLUST message link}
+mhe:folder @r{MH-E folder link}
+mhe:folder#id @r{MH-E message link}
+rmail:folder @r{RMAIL folder link}
+rmail:folder#id @r{RMAIL message link}
+gnus:group @r{GNUS group link}
+gnus:group#id @r{GNUS article link}
+bbdb:Richard Stallman @r{BBDB link}
+shell:ls *.org @r{A shell command}
+elisp:(find-file-other-frame "Elisp.org") @r{An elisp form to evaluate}
@end example
A link should be enclosed in double brackets and may contain a
@@ -1618,7 +1632,7 @@ format}), for example:
@cindex plain text external links
Org-mode also finds external links in the normal text and activates them
as links. If spaces must be part of the link (for example in
-@samp{bbdb:Richard Stallman}) or to remove ambiguities about the end of
+@samp{bbdb:Richard Stallman}), or you need to remove ambiguities about the end of
the link, enclose them in angular brackets.
@node Handling links, Search options, External links, Hyperlinks
@@ -1637,7 +1651,7 @@ stored for later insertion into an Org-mode buffer (see below). For
Org-mode files, if there is a @samp{<<target>>} at the cursor, the link
points to the target. Otherwise it points to the current headline. For
VM, RMAIL, WANDERLUST, MH-E, GNUS and BBDB buffers, the link will
-indicate to the current article/entry. For W3 and W3M buffers, the link
+indicate the current article/entry. For W3 and W3M buffers, the link
goes to the current URL. For any other files, the link will point to
the file, with a search string (@pxref{Search options}) pointing to the
contents of the current line. If there is an active region, the
@@ -1680,7 +1694,7 @@ is used, if possible with @samp{~/} for your home directory. You can
force an absolute path with two @kbd{C-u} prefixes.
@item C-c C-l @r{with cursor on existing link}
-When the cursor is on an existing link, @kbd{C-c C-l} allows to edit the
+When the cursor is on an existing link, @kbd{C-c C-l} allows you to edit the
link and description parts of the link.
@cindex following links
@@ -1690,7 +1704,7 @@ Open link at point. This will launch a web browser for URLs (using
@command{browse-url-at-point}), run vm/mh-e/wanderlust/rmail/gnus/bbdb
for the corresponding links, and execute the command in a shell link.
When the cursor is on an internal link, this commands runs the
-corresponding search. When the cursor is on a TAGS list in a headline,
+corresponding search. When the cursor is on a TAG list in a headline,
it creates the corresponding TAGS view. If the cursor is on a time
stamp, it compiles the agenda for that date. Furthermore, it will visit
text files in @samp{file:} links with Emacs and select a suitable
@@ -1703,7 +1717,7 @@ override the default application and visit the file with Emacs, use a
@kindex mouse-1
@item mouse-2
@itemx mouse-1
-On links, @kbd{mouse-2} will open the link just like @kbd{C-c C-o}
+On links, @kbd{mouse-2} will open the link just as @kbd{C-c C-o}
would. Under Emacs 22, also @kbd{mouse-1} will follow a link.
@kindex mouse-3
@@ -1757,7 +1771,7 @@ Jump to line 255.
Search for a link target @samp{<<My Target>>}, or do a text search for
@samp{my target}, similar to the search in internal links, see
@ref{Internal links}. In HTML export (@pxref{HTML export}), such a file
-link will become an html reference to the corresponding named anchor in
+link will become an HTML reference to the corresponding named anchor in
the linked file.
@item *My Target
In an Org-mode file, restrict search to headlines.
@@ -1772,7 +1786,7 @@ sparse tree with the matches.
As a degenerate case, a file link with an empty file name can be used
to search the current file. For example, @code{<file:::find me>} does
-a search for @samp{find me} in the current file, just like
+a search for @samp{find me} in the current file, just as
@samp{[[find me]]} would.
@node Custom searches, Remember, Search options, Hyperlinks
@@ -1808,7 +1822,7 @@ store quick notes with little interruption of your work flow. See
@uref{http://www.emacswiki.org/cgi-bin/wiki/RememberMode} for more
information. The notes produced by @emph{Remember} can be stored in
different ways, and Org-mode files are a good target. Org-mode allows
-to file away notes either to a default file, or directly to the correct
+you to file away notes either to a default file, or directly to the correct
location in your Org-mode outline tree. The following customization
will tell @emph{Remember} to use org files as target, and to create
annotations compatible with Org-mode links.
@@ -1938,6 +1952,12 @@ Rotate the TODO state of the current item between
The same rotation can also be done ``remotely'' from the timeline and
agenda buffers with the @kbd{t} command key (@pxref{Agenda commands}).
+@kindex S-@key{right}
+@kindex S-@key{left}
+@item S-@key{right}
+@itemx S-@key{left}
+Select the following/preceding TODO state, similar to cycling. Mostly
+useful if more than two TODO states are possible (@pxref{TODO extensions}).
@kindex C-c C-v
@cindex sparse tree, for TODO
@item C-c C-v
@@ -2012,7 +2032,7 @@ of working on an item, for example:
@end lisp
@cindex completion, of TODO keywords
-Changing these variables becomes only effective in a new Emacs session.
+Changing these variables only becomes effective in a new Emacs session.
With this setup, the command @kbd{C-c C-t} will cycle an entry from
TODO to FEEDBACK, then to VERIFY, and finally to DONE. You may also
use a prefix argument to quickly select a specific state. For example
@@ -2081,7 +2101,7 @@ anywhere in the file:
@cindex DONE, final TODO keyword
Remember that the last keyword must always mean that the item is DONE
-(you may use a different word, though). Also note that in each file,
+(although you may use a different word). Also note that in each file,
only one of the two aspects of TODO keywords can be used. After
changing one of these lines, use @kbd{C-c C-c} with the cursor still
in the line to make the changes known to Org-mode@footnote{Org-mode
@@ -2122,7 +2142,7 @@ difference only in the agenda (@pxref{Weekly/Daily agenda}).
@table @kbd
@kindex @kbd{C-c ,}
@item @kbd{C-c ,}
-Set the priority of the current item. The command prompts for a
+Set the priority of the current headline. The command prompts for a
priority character @samp{A}, @samp{B} or @samp{C}. When you press
@key{SPC} instead, the priority cookie is removed from the headline.
The priorities can also be changed ``remotely'' from the timeline and
@@ -2132,10 +2152,9 @@ agenda buffer with the @kbd{,} command (@pxref{Agenda commands}).
@kindex S-@key{down}
@item S-@key{up}
@itemx S-@key{down}
-Increase/decrease priority of current item. Note that these keys are
-also used to modify time stamps (@pxref{Creating timestamps}).
-Furthermore, these keys are also used by CUA-mode
-(@pxref{Conflicts}).
+Increase/decrease priority of current headline. Note that these keys
+are also used to modify time stamps (@pxref{Creating timestamps}).
+Furthermore, these keys are also used by CUA-mode (@pxref{Conflicts}).
@end table
@node Timestamps, Tags, TODO items, Top
@@ -2165,15 +2184,15 @@ of an org-tree entry. Its presence allows entries to be shown on specific
dates in the agenda (@pxref{Weekly/Daily agenda}). We distinguish:
@table @var
+@item Plain time stamp
@cindex timestamp
-@item TIMESTAMP
A simple time stamp just assigns a date/time to an item. This is just
like writing down an appointment in a paper agenda, or like writing down
an event in a diary, when you want to take not of when something
happened. In the timeline and agenda displays, the headline of an entry
associated with a plain time stamp will be shown exactly on that date.
-@item TIMERANGE
+@item Time stamp range
@cindex timerange
Two time stamps connected by @samp{--} denote a time range. The
headline will be shown on the first and last day of the range, and on
@@ -2185,7 +2204,7 @@ example:
<2004-08-23 Mon>--<2004-08-26 Thu>
@end example
-@item SCHEDULED
+@item Time stamp with SCHEDULED keyword
@cindex SCHEDULED keyword
If a time stamp is preceded by the word @samp{SCHEDULED:}, it means you
are planning to start working on that task on the given date. So this is
@@ -2200,7 +2219,7 @@ automatically be forwarded until completed.
SCHEDULED: <2004-12-25 Sat>
@end example
-@item DEADLINE
+@item Time stamp with DEADLINE keyword
@cindex DEADLINE keyword
If a time stamp is preceded by the word @samp{DEADLINE:}, the task
(most likely a TODO item) is supposed to be finished on that date, and
@@ -2214,6 +2233,12 @@ continuing until the entry is marked DONE. An example:
The editor in charge is <bbdb:Ford Prefect>
DEADLINE: <2004-02-29 Sun>
@end example
+@item Time stamp with CLOSED keyword
+@cindex CLOSED keyword
+When @code{org-log-done} is non-nil, Org-mode will automatically insert
+a special time stamp each time a TODO entry is marked done
+(@pxref{Progress logging}). This time stamp is enclosed in square
+brackets instead of angular brackets.
@end table
@node Creating timestamps, , Time stamps, Timestamps
@@ -2260,7 +2285,10 @@ Access the agenda for the date given by the time stamp at point
@kindex C-c C-d
@item C-c C-d
-Insert @samp{DEADLINE} keyword along with a stamp.
+Insert @samp{DEADLINE} keyword along with a stamp. The insertion will
+happen in the line directly following the headline.
+@c FIXME Any CLOSED timestamp will be removed.????????
+
@kindex C-c C-w
@cindex sparse tree, for deadlines
@item C-c C-w
@@ -2272,7 +2300,9 @@ all deadlines due tomorrow.
@kindex C-c C-s
@item C-c C-s
-Insert @samp{SCHEDULED} keyword along with a stamp.
+Insert @samp{SCHEDULED} keyword along with a stamp. The insertion will
+happen in the line directly following the headline. Any CLOSED
+timestamp will be removed.
@kindex S-@key{left}
@kindex S-@key{right}
@@ -2350,9 +2380,9 @@ Choose date in calendar (only if nothing typed into minibuffer).
@cindex matching, tags
@cindex sparse tree, tag based
-If you wish to implement a system to cross-correlate information, an
-excellent way is to assign @i{tags} to headline. Org-mode has
-extensive support for using tags.
+If you wish to implement a system of labels and contexts for
+cross-correlating information, an excellent way is to assign @i{tags} to
+headlines. Org-mode has extensive support for using tags.
Every headline can contain a list of tags, at the end of the headline.
Tags are normal words containing letters, numbers, @samp{_}, and
@@ -2384,8 +2414,8 @@ the final heading will have the tags @samp{:WORK:}, @samp{:BOSS:},
@samp{:NOTES:}, and @samp{:ACTION:}. When executing tag searches and
Org-mode finds that a certain headline matches the search criterion, it
will not check any sublevel headline, assuming that these likely also
-match, and that the list of matches can become very long. However, this
-may not be what you want, and you can influence inheritance and
+match, and that the list of matches can become very long. This may
+not be what you want, however, and you can influence inheritance and
searching using the variables @code{org-use-tag-inheritance} and
@code{org-tags-match-list-sublevels}.
@@ -2394,25 +2424,75 @@ searching using the variables @code{org-use-tag-inheritance} and
@cindex setting tags
@kindex M-@key{TAB}
-As Org-mode deals with plain text files, tags can simply be typed into
-the buffer. After a colon, @kbd{M-@key{TAB}} offers completion on all
-tags being used in the current buffer. There is also a special command
-for inserting tags:
+Tags can simply be typed into the buffer at the end of a headline.
+After a colon, @kbd{M-@key{TAB}} offers completion on tags. There is
+also a special command for inserting tags:
@table @kbd
@kindex C-c C-c
@item C-c C-c
@cindex completion, of tags
-Enter new tags for the current headline. The minibuffer will prompt for
-a list of tags and offer completion with respect to all other tags used
-in the current buffer. Several tags, separated by colons, may be
-specified at the prompt. After pressing @key{RET}, the tags will be
-inserted and aligned to @code{org-tags-column}. When called with a
-@kbd{C-u} prefix, all tags in the current buffer will be aligned to that
-column, just to make things look nice. TAGS are automatically realigned
-after promotion, demotion, and TODO state changes (@pxref{TODO basics}).
+Enter new tags for the current headline. Org-mode will either offer
+completion or a special single-key interface for setting tags, see
+below. After pressing @key{RET}, the tags will be inserted and aligned
+to @code{org-tags-column}. When called with a @kbd{C-u} prefix, all
+tags in the current buffer will be aligned to that column, just to make
+things look nice. TAGS are automatically realigned after promotion,
+demotion, and TODO state changes (@pxref{TODO basics}).
@end table
+Org will support tag insertion based on a @emph{list of tags}. By
+default this list is constructed dynamically, containing all tags
+currently used in the buffer. You may also globally specify a hard list
+of tags with the variable @code{org-tag-alist}. Finally you can set
+the allowed tags for a given file with lines like
+
+@example
+#+TAGS: @@WORK @@HOME @@TENNISCLUB
+#+TAGS: Laptop Car PC Sailboat
+@end example
+
+The default method Org-mode uses to support setting tags is completion.
+However, it also implements a much better method: @emph{fast tag
+selection}. This method allows to select and deselect tags with a
+single key per tag. To function efficiently, you need to assign unique
+keys to all tags. This can be done globally with
+
+@lisp
+(setq org-tag-alist '(("@@WORK" . ?w) ("@@HOME" . ?h) ("Laptop" . ?l)))
+@end lisp
+
+@noindent or on a per-file basis with
+
+@example
+#+TAGS: @@WORK(w) @@HOME(h) @@TENNISCLUB(t)
+#+TAGS: Laptop(l) Car(c) PC(p) Sailboat(s)
+@end example
+
+@noindent Don't forget to press @kbd{C-c C-c} with the cursor in one of
+these lines to activate any changes.
+
+If selection keys have been configured, pressing @kbd{C-c C-c} will
+automatically present you with a special interface, listing inherited
+tags, the tags of the current headline, and a list of all legal tags
+with corresponding keys. Pressing keys for the tags will add or remove
+them from the list of tags in the current line. @key{SPC} clears all
+tags for this line, @kbd{RET} accepts the modified set, and @kbd{C-g}
+aborts without installing changes. This method lets you assing tags to
+a headline with very few keys. With the above setup, you could clear
+the current tags and set @samp{@@HOME}, @samp{Laptop} and @samp{PC} tags
+with just the following keys: @kbd{C-c C-c @key{SPC} h l p @key{RET}}.
+
+What if you have globally defined your preferred set of tags using the
+variable @code{org-tag-alist}, but would like to use a dynamic tag list
+in a specific file? Just add and empty TAGS option line to that file:
+
+@example
+#+TAGS:
+@end example
+
+
+
@node Tag searches, , Setting tags, Tags
@section Tag searches
@cindex tag searches
@@ -2984,7 +3064,7 @@ on my keyboard.
@item i
Insert a new entry into the diary. Prompts for the type of entry
(day, weekly, monthly, yearly, anniversary, cyclic) and creates a new
-entry in the diary, just like @kbd{i d} etc. would do in the calendar.
+entry in the diary, just as @kbd{i d} etc. would do in the calendar.
The date is taken from the cursor position.
@tsubheading{Calendar commands}
@@ -3038,7 +3118,7 @@ visit org files will not be removed.
Org-mode documents can be exported into a variety of other formats. For
printing and sharing of notes, ASCII export produces a readable and
-simple version of an Org-mode file. HTML export allows to publish a
+simple version of an Org-mode file. HTML export allows you to publish a
notes file on the web, while the XOXO format provides a solid base for
exchange with a broad range of other applications. To incorporate
entries with associated times like deadlines or appointments into a
@@ -3131,13 +3211,26 @@ at a different level, specify it with a prefix argument. For example,
creates two levels of headings and does the rest as items.
If you want to include HTML tags which should be interpreted as such,
-mark them with a @samp{@@} like in @samp{@@<b>bold text@@</b>}.
+mark them with @samp{@@} as in @samp{@@<b>bold text@@</b>}.
Plain @samp{<} and @samp{>} are always transformed to @samp{&lt;} and
@samp{&gt;} in HTML export.
+@cindex links, in HTML export
+@cindex internal links, in HTML export
+@cindex external links, in HTML export
+Internal links (@pxref{Internal links}) will continue to work in HTML
+files only if they match a dedicated @samp{<<target>>}. Automatic links
+created by radio targets (@pxref{Radio targets}) will also work in the
+HTML file. Links to external files will still work if the HTML file is
+in the same directory as the Org-mode file. Links to other @file{.org}
+files will be translated into HTML links under the assumption that an
+HTML version also exists of the linked file. For information related to
+linking files while publishing them to a publishing directory see
+@ref{Publishing links}.
+
You can also give style information for the exported file. The HTML
-exporter asigns the following CSS classes to appropriate parts of the
-document - your style specifications may change these.
+exporter assigns the following CSS classes to appropriate parts of the
+document - your style specifications may change these:
@example
.todo @r{TODO keywords}
.done @r{the DONE keyword}
@@ -3147,9 +3240,7 @@ document - your style specifications may change these.
.target @r{target for links}
@end example
-
-The
-default specification can be configured through the option
+The default style specification can be configured through the option
@code{org-export-html-style}. If you want to use a file-local style,
you may use file variables, best wrapped into a COMMENT section at the
end of the outline tree. For example:
@@ -3370,7 +3461,7 @@ you can:
@cindex section-numbers
@cindex table of contents
@cindex linebreak preservation
-@cindex quoted html tags
+@cindex quoted HTML tags
@cindex fixed-width sections
@cindex tables
@cindex @TeX{}-like syntax for sub- and superscripts
@@ -3381,7 +3472,7 @@ H: @r{set the number of headline levels for export}
num: @r{turn on/off section-numbers}
toc: @r{turn on/off table of contents}
\n: @r{turn on/off linebreak-preservation}
-@@: @r{turn on/off quoted html tags}
+@@: @r{turn on/off quoted HTML tags}
:: @r{turn on/off fixed-width sections}
|: @r{turn on/off tables}
^: @r{turn on/off @TeX{}-like syntax for sub- and superscripts.}
@@ -3396,7 +3487,7 @@ Org-mode includes@footnote{@file{org-publish.el} is not yet part of
emacs, so if you are using @file{org.el} as it comes with Emacs, you
need to download this file separately. Also make sure org.el is at
least version 4.27.} a publishing management system
-that allows you to configure automatic html conversion of
+that allows you to configure automatic HTML conversion of
@emph{projects} composed of interlinked org files. This system is
called @emph{org-publish}. You can also configure org-publish to
automatically upload your exported HTML pages and related attachments,
@@ -3421,9 +3512,9 @@ and many other properties of a project.
* Project alist:: The central configuration variable
* File sources and destinations:: From here to there
* Selecting files:: What files are part of the project?
-* Publishing action::
+* Publishing action:: Setting the function doing the publishing
* Publishing options:: Tweaking HTML export
-* Links:: Linking between files of a project
+* Publishing links:: Which links keep working after publishing?
* Project page index:: Publishing a list of project files
@end menu
@@ -3513,7 +3604,7 @@ You can write your own publishing function, but @code{org-publish}
provides one for attachments (files that only need to be copied):
@code{org-publish-attachment}.
-@node Publishing options, Links, Publishing action, Configuration
+@node Publishing options, Publishing links, Publishing action, Configuration
@subsection Options for the HTML exporter
The property list can be used to set many export options for the HTML
@@ -3551,10 +3642,10 @@ respective variable for details.
When a property is given a value in org-publish-project-alist, its
setting overrides the value of the corresponding user variable (if any)
-during publishing. However, options set within a file (@pxref{Export
-options}) override everything.
+during publishing. options set within a file (@pxref{Export
+options}), however, override everything.
-@node Links, Project page index, Publishing options, Configuration
+@node Publishing links, Project page index, Publishing options, Configuration
@subsection Links between published files
To create a link from one Org-mode file to another, you would use
@@ -3569,7 +3660,7 @@ careful with relative pathnames, and provided you have also configured
org-publish to upload the related files, these links will work
too. @ref{Complex example} for an example of this usage.
-@node Project page index, , Links, Configuration
+@node Project page index, , Publishing links, Configuration
@subsection Project page index
The following properties may be used to control publishing of an
@@ -3824,6 +3915,10 @@ oddeven @r{allow all outline levels}
These lines that the TODO keywords and their interpretation in the
current file. The corresponding variables are @code{org-todo-keywords}
and @code{org-todo-interpretation}.
+@item #+TAGS: TAG1(c1) TAG2(c2)
+These lines (several such lines are allowed) specify the legal tags in
+this file, and (potionally) the corresponding @emph{fast tag selection}
+keys. The corresponding variable is @code{org-tag-alist}.
@item #+CATEGORY:
This line sets the category for the agenda file. The category applies
for all subsequent lines until the next @samp{#+CATEGORY} line, or the
@@ -3843,7 +3938,7 @@ The key @kbd{C-c C-c} has many purposes in org-mode, which are all
mentioned scattered throughout this manual. One specific function of
this key is to add @emph{tags} to a headline (@pxref{Tags}). In many
other circumstances it means something like @emph{Hey Org-mode, look
-here and update according to what you see here}. Here is a summary what
+here and update according to what you see here}. Here is a summary of what
this means in different contexts.
@itemize @minus
@@ -4094,7 +4189,7 @@ Would I let you down like that? If you must, you can do this
org-link-format "<%s>")
@end lisp
-@item @b{When I am executing shell links I always get a
+@item @b{When I am executing shell/elisp links I always get a
confirmation prompt and need to type @kbd{yes @key{RET}}, that's 4 key
presses! Can I get rid of this?}@*
@c
@@ -4105,10 +4200,11 @@ potentially dangerous commands. For example, imagine a link
@samp{[[shell:rm -rf ~/*][Google Search]]}. In an Org-mode buffer, this
command would look like @samp{Google Search}, but really it would remove
your home directory. If you wish, you can make it easier to respond to
-the query by setting @code{org-confirm-shell-links} to @code{y-or-n-p}.
-Then a single @kbd{y} keypress will be enough to confirm shell links.
-It is also possible to turn off this check entirely, but I do not
-recommend to do this. Be warned.
+the query by setting @code{org-confirm-shell-link-function} and/or
+@code{org-confirm-elisp-link-function} to @code{y-or-n-p}. Then a
+single @kbd{y} keypress will be enough to confirm those links. It is
+also possible to turn off this check entirely, but I do not recommend to
+do this. Be warned.
@item @b{All these stars are driving me mad, I just find the Emacs
outlines unreadable. Can't you just put white space and a single star as a
@@ -4213,7 +4309,7 @@ You may also select specific files with
If you now launch the calendar and press @kbd{d} to display a diary, the
headlines of entries containing a timestamp, date range, schedule, or
-deadline referring to the selected date will be listed. Just like in
+deadline referring to the selected date will be listed. Just like
Org-mode's agenda view, the diary for @emph{today} contains additional
entries for overdue deadlines and scheduled items. See also the
documentation of the @command{org-diary} function. Under XEmacs, it is
@@ -4253,14 +4349,14 @@ This package implements extended mouse functionality for Org-mode. It
allows you to cycle visibility and to edit the document structure with
the mouse. Best of all, it provides a context-sensitive menu on
@key{mouse-3} that changes depending on the context of a mouse-click.
-@file{org-mouse.el} is freely avaliable at @url{http://www.cl.cam.ac.uk/~pz215/files/org-mouse.el}.
+@file{org-mouse.el} is freely available at @url{http://www.cl.cam.ac.uk/~pz215/files/org-mouse.el}.
@cindex @file{org-publish.el}
@item @file{org-publish.el} by David O'Toole
This package provides facilities for publishing related sets of Org-mode
files together with linked files like images as a webpages. It is
highly configurable and can be used for other publishing purposes as
well. As of Org-mode version 4.30, @file{org-publish.el} is part of
-the Org-mode distribution. However, it is not yet part of Emacs due to
+the Org-mode distribution. It is not yet part of Emacs, however, due to
a pending copyright assignment. In the mean time, @file{org-publish.el}
can be downloaded from David's site:
@url{http://dto.freeshell.org/e/org-publish.el}.
@@ -4382,7 +4478,7 @@ Recalculating a table line applies the formulas from left to right.
If a formula uses @emph{calculated} fields further down the row,
multiple recalculation may be needed to get all fields consistent.
@item
-Several words in a rom may @b{*be made bold*}, but this does not work if
+Several words in a row may @b{*be made bold*}, but this does not work if
the string is distributed over two lines.
@item
The exporters work well, but could be made more efficient.
@@ -4427,6 +4523,8 @@ Kai Grossjohann pointed out key-binding conflicts caused by Org-mode.
@item
Stefan Monnier provided a patch to keep the Emacs-Lisp compiler happy.
@item
+Todd Neal provided patches for links to Info files and elisp forms.
+@item
Tim O'Callaghan suggested in-file links, search options for
general file links, and TAGS.
@item
@@ -4469,7 +4567,7 @@ system.
John Wiegley wrote @file{emacs-wiki.el} and @file{planner.el}. The
development of Org-mode was fully independent, and both systems are
really different beasts in their basic ideas and implementation details.
-However, I have later looked at John's code and learned from his
+I later looked at John's code, however, and learned from his
implementation of (i) links where the link itself is hidden and only a
description is shown, and (ii) popping up a calendar to select a date.
@item
diff --git a/orgcard.pdf b/orgcard.pdf
index 9e9d926..71190f2 100644
--- a/orgcard.pdf
+++ b/orgcard.pdf
Binary files differ
diff --git a/orgcard.tex b/orgcard.tex
index 72fccaa..4922bff 100644
--- a/orgcard.tex
+++ b/orgcard.tex
@@ -1,5 +1,5 @@
% Reference Card for Org Mode
-\def\orgversionnumber{4.30}
+\def\orgversionnumber{4.33}
\def\year{2006}
%
%**start of header
@@ -294,6 +294,7 @@ are preserved on all copies.
\key{previous heading, same level}{C-c C-b}
\key{backward to higher level heading}{C-c C-u}
\key{jump to another place in document}{C-c C-j}
+\key{previous/next plain list item}{S-UP/DOWN$^3$}
\section{Structure Editing}
@@ -380,7 +381,7 @@ To set archive location for current file, add a line like$^2$:
\key{open file links in emacs (\kbd{C-u} : in emacs)}{C-c C-o}
\key{open link at point (3: in emacs)}{mouse-2/3}
%\key{open file links in emacs}{mouse-3}
-\key{record a position in mark ring}{C-c \%}
+%\key{record a position in mark ring}{C-c \%}
\key{jump back to last followed link(s)}{C-c \&}
{\bf Internal Links}
@@ -397,16 +398,18 @@ To set archive location for current file, add a line like$^2$:
\key{\kbd{file:papers/last.pdf}}{\rm file, relative}
\key{\kbd{file:projects.org::*that text}}{\rm find headline}
\key{\kbd{file:projects.org::find me}}{\rm find tgt/string}
-\key{\kbd{file:projects.org::/regexp/}}{\rm regexp search}
+%\key{\kbd{file:projects.org::/regexp/}}{\rm regexp search}
\key{\kbd{http://www.astro.uva.nl/~dominik}}{\rm on the web}
\key{\kbd{mailto:adent@galaxy.net}}{\rm EMail address}
\key{\kbd{news:comp.emacs}}{\rm Usenet group}
\key{\kbd{bbdb:Richard Stallman}}{\rm BBDB person}
-\key{\kbd{shell:ls *.org}}{\rm shell command}
\key{\kbd{gnus:group}}{\rm GNUS group}
\key{\kbd{gnus:group\#id}}{\rm GNUS message}
\key{\kbd{vm|wl|mhe|rmail:folder}}{\rm Mail folder}
\key{\kbd{vm|wl|mhe|rmail:folder\#id}}{\rm Mail message}
+\key{\kbd{info:emacs:Regexps}}{\rm Info file:node}
+\key{\kbd{shell:ls *.org}}{\rm shell command}
+\key{\kbd{elisp:(calendar)}}{\rm elisp form}
\metax{\kbd{[[external link][description]]}}{\rm optional link text}
%\key{\kbd{vm://myself@some.where.org/folder\#id}}{\rm VM remote}