# -*- mode: org; fill-column: 65 -*- #+STARTUP: showstars #+TITLE: Org-mode list of user-visible changes #+AUTHOR: Carsten Dominik #+EMAIL: carsten at orgmode dot org #+OPTIONS: H:3 num:nil toc:nil \n:nil @:t ::t |:t ^:{} *:t TeX:t LaTeX:nil f:nil #+INFOJS_OPT: view:info toc:1 path:org-info.js tdepth:2 ftoc:t #+LINK_UP: index.html #+LINK_HOME: http://orgmode.org * Version 6.20 :PROPERTIES: :VISIBILITY: content :END: ** Details *** Support for simple TODO dependencies John Wiegley's code for enforcing simple TODO dependencies has been integrated into Org-mode. Thanks John! The structure of Org files (hierarchy and lists) makes it easy to define TODO dependencies. A parent TODO task should not be marked DONE until all subtasks (defined as children tasks) are marked as DONE. And sometimes there is a logical sequence to a number of (sub)tasks, so that one task cannot be acted upon before all siblings above it are done. If you customize the variable =org-enforce-todo-dependencies=, Org will block entries from changing state while they have children that are not DONE. Furthermore, if an entry has a property =ORDERED=, each of its children will be blocked until all earlier siblings are marked DONE. Here is an example: #+begin_src org ,* TODO Blocked until (two) is done ,** DONE one ,** TODO two ,* Parent , :PROPERTIES: , :ORDERED: t , :END: ,** TODO a ,** TODO b, needs to wait for (a) ,** TODO c, needs to wait for (a) and (b) #+end_src The variable =org-agenda-dim-blocked-tasks= controls how blocked entries should appear in the agenda, where they can be dimmed or even made invisible. *** Support for shift-selection in Emacs 23 Customize the variable =org-support-shift-select= to use S-cursor key for selecting text. Make sure that you carefully read the docstring of that variable first. * Version 6.19 ** Overview - Improved behavior of conversion commands =C-c -= and =C-c *= - Table formulas may now reference fields in other tables - A final hline is imagined in each table, for the sake of references - A tags-todo search can now ignore timestamped items - =\par= can be used to force a paragraph break, also in footnotes ** Details *** Improved behavior of conversion commands =C-c -= and =C-c *= The conversion commands =C-c -= and =C-c *= are now better behaved and therefore more useful, I hope. If there is an active region, these commands will act on the region, otherwise on the current line. - C-c - :: This command turns headings or normal lines into items, or items into normal lines. When there is a region, everything depends on the first line of the region: - if it is a item, turn all items in the region into normal lines. - if it is a headline, turn all headlines in the region into items. - if it is a normal line, turn all lines into items. - special case: if there is no active region and the current line is an item, cycle the bullet type of the current list. - C-c * :: This command turns items and normal lines into headings, or headings into normal lines. When there is a region, everything depends on the first line of the region: - if it is a item, turn all items in the region into headlines. - if it is a headline, turn all headlines in the region into normal lines. - if it is a normal line, turn all lines into headlines. *** Table formulas may now reference fields in other tables You may now reference constants, fields and ranges from a different table, either in the current file or even in a different file. The syntax is : remote(NAME-OR-ID,REF) where /NAME/ can be the name of a table in the current file as set by a =#+TBLNAME: NAME= line before the table. It can also be the ID of an entry, even in a different file, and the reference then refers to the first table in that entry. /REF/ is an absolute field or range reference, valid in the referenced table. Note that since there is no "current filed" for the remote table, all row and column references must be absolute, not relative. *** A final hline is imagined in each table, for the sake of references Even if a table does not end with a hline (mine never do because I think it is not pretty), for the sake of references you can assume there is one. So in the following table #+begin_src org | a | b | |---+---| | 1 | 2 | | 3 | 4 | #+end_src a reference like =@I$1..@II$2= will now work. *** A tags-todo search can now ignore timestamped items The variables =org-agenda-todo-ignore-with-date=, =org-agenda-todo-ignore-with-date=, and =org-agenda-todo-ignore-with-date= make it possible to exclude TODO entries which have this kind of planning info associated with them. This is most useful for people who schedule everything, and who use the TODO list mainly to find things that are not yet scheduled. Thomas Morgan pointed out that also the tags-todo search may serve exactly this purpose, and that it might be good to have a way to make these variables also apply to the tags-todo search. I can see that, but could not convince myself to make this the default. A new variable must be set to make this happen: =org-agenda-tags-todo-honor-ignore-options=. *** =\par= can be used to force a paragraph break, also in footnotes The LaTeX idiom =\par= will insert a paragraph break at that location. Normally you would simply leave an empty line to get such a break, but this is useful for footnotes whose definitions may not contain empty lines. * Version 6.18 ** Incompatible changes *** Short examples must have a space after the colon Short literal examples can be created by preceding lines with a colon. Such lines must now have a space after the colon. I believe this is already general practice, but now it must be like this. The only exception are lines what are empty except for the colon. ** Details *** Include files can now also process switches The example and src switches like =-n= can now also be added to include file statements: : #+INCLUDE "~/.emacs" src emacs-lisp -n -r Thanks to Manish for pointing out that this was not yet supported. *** Examples can be exported to HTML as text areas You can now specify a =-t= switch to an example or src block, to make it export to HTML as a text area. To change the defaults for height (number of lines in the example) and width of this area (80), use the =-h= and =-w= switches. Thanks to Ulf Stegemann for driving this development. *** LaTeX_CLASS can be given as a property When exporting a single subtree by selecting it as a region before export, the LaTeX class for the export will be taken from the =LaTeX_CLASS= property of the entry if present. Thanks to Robert Goldman for this request. *** Better handling of inlined images in different backends Two new variables govern which kind of files can be inlined during export. These are =org-export-html-inline-image-extensions= and =org-export-latex-inline-image-extensions=. Remember that links are turned into an inline image if they are a pure link with no description. HTML files can inline /.png/, /.jpg/, and /.gif/ files, while LaTeX files, when processed with /pdflatex/, can inline /.png/, /.jpg/, and /.pdf/ files. These also represent the default settings for the new variables. Note that this means that pure links to /.pdf/ files will be inlined - to avoid this for a particular link, make sure that the link has a description part which is not equal to the link part. *** Links by ID now continue to work in HTML exported files If you make links by ID, these links will now still work in HTML exported files, provided that you keep the relative path from link to target file the same. Thanks to Friedrich Delgado Friedrichs for pushing this over the line. *** The relative timer can be paused The new command `C-c C-x ,' will pause the relative timer. When the relative timer is running, its value will be shown in the mode line. To get rid of this display, you need to really stop the timer with `C-u C-c C-x ,'. Thanks to Alan Davis for driving this change. *** The attachment directory may now be chosen by the user Instead of using the automatic, unique directory related to the entry ID, you can also use a chosen directory for the attachments of an entry. This directory is specified by the ATTACH_DIR property. You can use `C-c C-a s' to set this property. Thanks to Jason Jackson for this proposal. *** You can use a single attachment directory for a subtree By setting the property ATTACH_DIR_INHERIT, you can now tell Org that children of the entry should use the same directory for attachments, unless a child explicitly defines its own directory with the ATTACH_DIR property. You can use the command `C-c C-a i' to set this property in an entry. * Version 6.17 ** Overview - Footnote support - Line numbers and references in literal examples - New hooks for export preprocessing - Capture column view into a different file ** Details *** Footnote support Org-mode now directly supports the creation of footnotes. In contrast to the /footnote.el/ package, Org-mode's footnotes are designed for work on a larger document, not only for one-off documents like emails. The basic syntax is similar to the one used by /footnote.el/, i.e. a footnote is defined in a paragraph that is started by a footnote marker in square brackets in column 0, no indentation allowed. The footnote reference is simply the marker in square brackets inside text. For example: #+begin_src org The Org homepage[fn:1] now looks a lot better than it used to. ... [fn:1] The link is: http://orgmode.org #+end_src Org-mode extends the number-based syntax to /named/ footnotes and optional inline definition. Using plain numbers as markers is supported for backward compatibility, but not encouraged because of possible conflicts with LaTeX syntax. Here are the valid references: - [1] :: A plain numeric footnote marker. - [fn:name] :: A named footnote reference, where `name' is a unique label word or, for simplicity of automatic creation, a number. - [fn:: This is the inline definition of this footnote] :: A LaTeX-like anonymous footnote where the definition is given directly at the reference point. - [fn:name: a definition] :: An inline definition of a footnote, which also specifies a name for the note. Since Org allows multiple references to the same note, you can then use use `[fn:name]' to create additional references. Footnote labels can be created automatically, or you create names yourself. This is handled by the variable =org-footnote-auto-label= and its corresponding =#+STARTUP= keywords, see the docstring of that variable for details. The following command handles footnotes: - C-c C-x f :: The footnote action command. When the cursor is on a footnote reference, jump to the definition. When it is at a definition, jump to the (first) reference. Otherwise, create a new footnote. Depending on the variable `org-footnote-define-inline' (with associated =#+STARTUP= options =fninline= and =nofninline=), the definitions will be placed right into the text as part of the reference, or separately into the location determined by the variable =org-footnote-section=. When this command is called with a prefix argument, a menu of additional options is offered: - s :: Sort the footnote definitions by reference sequence. During editing, Org makes no effort to sort footnote definitions into a particular sequence. If you want them sorted, use this command, which will also move entries according to =org-footnote-section=. - n :: Normalize the footnotes by collecting all definitions (including inline definitions) into a special section, and then numbering them in sequence. The references will then also be numbers. This is meant to be the final step before finishing a document (e.g. sending off an email). The exporters do this automatically, and so could something like `message-send-hook'. - d :: Delete the footnote at point, and all references to it. - C-c C-c :: If the cursor is on a footnote reference, jump to the definition. If it is a the definition, jump back to the reference. When called with a prefix argument at either location, offer the same menu as `C-u C-c C-x f'. - C-c C-o or mouse-1/2 :: Footnote labels are also links to the corresponding definition/reference, and you can use the usual commands to follow these links. Org-mode's footnote support is designed so that it should also work in buffers that are not in Org-mode, for example in email messages. Just bind =org-footnote-action= to a global key like =C-c f=. The main trigger for this development came from a hook function written by Paul Rivier, to implement named footnotes and to convert them to numbered ones before export. Thanks, Paul! Thanks also to Scot Becker for a thoughtful post bringing this subject back onto the discussion table, and to Matt Lundin for the idea of named footnotes and his prompt testing of the new features. *** Line numbers and references in literal examples Literal examples introduced with =#+BEGIN_EXAMPLE= or =#+BEGIN_SRC= do now allow optional line numbering in the example. Furthermore, links to specific code lines are supported, greatly increasing Org-mode's utility for writing tutorials and other similar documents. Code references use special labels embedded directly into the source code. Such labels look like "(ref:name)" and must be unique within a document. Org-mode links with "(name)" in the link part will be correctly interpreted, both while working with an Org file (internal links), and while exporting to the different backends. Line numbering and code references are supported for all three major backends, HTML, LaTeX, and ASCII. In the HTML backend, hovering the mouse over a link to a source line will remote-highlight the referenced code line. The options for the BEGIN lines are: - -n :: Number the lines in the example - +n :: Like -n, but continue numbering from where the previous example left off. - -r :: Remove the coderef cookies from the example, and replace links to this reference with line numbers. This option takes only effect if either -n or +n are given as well. If -r is not given, coderefs simply use the label name. - -l "fmt" :: Define a local format for coderef labels, see the variable =org-coderef-label-format= for details. Use this of the default syntax causes conflicts with the code in the code snippet you are using. Here is an example: #+begin_example -k #+begin_src emacs-lisp -n -r (defmacro org-unmodified (&rest body) (ref:def) "Execute body without changing `buffer-modified-p'." `(set-buffer-modified-p (ref:back) (prog1 (buffer-modified-p) ,@body))) #+end_src [[(def)][Line (def)]] contains the macro name. Later at line [[(back)]], backquoting is used. #+end_example When exported, this is translated to: #+begin_src emacs-lisp -n -r (defmacro org-unmodified (&rest body) (ref:def) "Execute body without changing `buffer-modified-p'." `(set-buffer-modified-p (ref:back) (prog1 (buffer-modified-p) ,@body))) #+end_src [[(def)][Line (def)]] contains the macro name. Later at line [[(back)]], backquoting is used. Thanks to Ilya Shlyakhter for proposing this feature set. Thanks to Sebastian Rose for the key Javascript element that made the remote highlighting possible. *** New hooks for export preprocessing The export preprocessor now runs more hooks, to allow better-timed tweaking by user functions: - =org-export-preprocess-hook= :: Pretty much the first thing in the preprocessor. But org-mode is already active in the preprocessing buffer. - =org-export-preprocess-after-include-files-hook= :: This is run after the contents of included files have been inserted. - =org-export-preprocess-after-tree-selection-hook= :: This is run after selection of trees to be exported has happened. This selection includes tags-based selection, as well as removal of commented and archived trees. - =org-export-preprocess-before-backend-specifics-hook= :: Hook run before backend-specific functions are called during preprocessing. - =org-export-preprocess-final-hook= :: Hook for preprocessing an export buffer. This is run as the last thing in the preprocessing buffer, just before returning the buffer string to the backend. *** Capture column view into a different file The :id parameter for the dynamic block capturing column view can now truly be an ID that will also be found in a different file. Also, it can be like =file:path/to/file=, to capture the global column view from a different file. Thanks to Francois Lagarde for his report that IDs outside the current file would not work. * Version 6.16 Cleanup of many small bugs, and one new feature. ** Details *** References to last table row with special names Fields in the last row of a table can now be referenced with $LR1, $LR2, etc. These references can appear both on the left hand side and right hand side of a formula. * Version 6.15f This version reverses the introduction of @0 as a reference to the last rwo in a table, because of a conflict with the use of @0 for the current row. * Version 6.15 ** Overview - All known LaTeX export issues fixed - Captions and attributes for figures and tables. - Better implementation for entry IDs - Spreadsheet references to the last table line. - Old syntax for link attributes abandoned ** Incompatible changes *** Old syntax for link attributes abandoned There used to be a syntax for setting link attributes for HTML export by enclosing the attributes into double braces and adding them to the link itself, like #+begin_example [[./img/a.jpg{{alt="an image"}}] ] #+end_example This syntax is not longer supported, use instead #+begin_src org ,#+ATTR_HTML: alt="an image" [[./img/a.jpg] ] #+end_src ** Details *** All known LaTeX export issues fixed All the remaining issues with the LaTeX exporter have hopefully been addressed in this release. In particular, this covers quoting of special characters in tables and problems with exporting files where the headline is in the first line, or with an active region. *** Captions and attributes for figures and tables. Tables, and Hyperlinks that represent inlined images, can now be equipped with additional information that will be used during export. The information will be taken from the following special lines in the buffer and apply to the first following table or link. - #+CAPTION: :: The caption of the image or table. This string should be processed according to the export backend, but this is not yet done. - #+LABEL: :: A label to identify the figure/table for cross references. For HTML export, this string will become the ID for the ~
C-c '@
(that is =C-c= followed by a
single quote) can now also be used to switch to a special
editing mode for fixed-width sections. The default mode is
=artist-mode= which allows you to create ASCII drawings.
It works like this: Enter the editing mode with
@C-c '@
. An indirect buffer will be created and
narrowed to the fixed-width region. Edit the drawing, and
press @C-c '@
again to exit.
Lines in a fixed-width region should be preceded by a colon
followed by at least one space. These will be removed during
editing, and then added back when you exit the editing mode.
Using the command in an empty line will create a new
fixed-width region.
This new feature arose from a discussion involving Scott
Otterson, Sebastian Rose and Will Henney.
*** /org-plot.el/ is now part of Org.
You can run it by simple calling org-plot/gnuplot.
Documentation is not yet included with Org, please refer to
http://github.com/eschulte/org-plot/tree/master until we have
moved the docs into Org or Worg.
Thanks to Eric Schulte for this great contribution.
*** Tags can be used to select the export part of a document
You may now use tags to select parts of a document for
inclusion into the export, and to exclude other parts. This
behavior is governed by two new variables:
=org-export-select-tags= and =org-export-exclude-tags=.
These default to =("export")= and =("noexport")=, but can be
changed, even to include a list of several tags.
Org first checks if any of the /select/ tags is present in
the buffer. If yes, all trees that do not carry one of these
tags will be excluded. If a selected tree is a subtree, the
heading hierarchy above it will also be selected for export,
but not the text below those headings. If none of the select
tags is found anywhere in the buffer, the whole buffer will
be selected for export. Finally, all subtrees that are
marked by any of the /exclude/ tags will be removed from the
export buffer.
You may set these tags with in-buffer options
=EXPORT_SELECT_TAGS= and =EXPORT_EXCLUDE_TAGS=.
I love this feature. Thanks to Richard G Riley for coming
up with the idea.
*** Prefix interpretation when storing remember notes
The prefix argument to the `C-c C-c' command that finishes a
remember process is now interpreted differently:
: C-c C-c Store the note to predefined file and headline
: C-u C-c C-c Like C-c C-c, but immediately visit the note
: in its new location.
: C-1 C-c C-c Select the storage location interactively
: C-0 C-c C-c Re-use the last used location
This was requested by John Wiegley.
*** Yanking inserts folded subtrees
If the kill is a subtree or a sequence of subtrees, yanking
them with =C-y= will leave all the subtrees in a folded
state. This basically means, that kill and yank are now
much more useful in moving stuff around in your outline. If
you do not like this, customize the variable
=org-yank-folded-subtrees=.
Right now, I am only binding =C-y= to this new function,
should I modify all bindings of yank? Do we need to amend
=yank-pop= as well?
This feature was requested by John Wiegley.
*** Column view capture tables can have formulas, plotting info
If you attach formulas and plotting instructions to a table
capturing column view, these extra lines will now survive an
update of the column view capture, and any formulas will be
re-applied to the captured table. This works by keeping any
continuous block of comments before and after the actual
table.
*** In column view, date stamps can be changed with S-cursor keys
If a property value is a time stamp, S-left and S-right can
now be used to shift this date around while in column view.
This was a request by Chris Randle.
*** The note buffer for clocking out now mentions the task
This was a request by Peter Frings.
*** Sorting entries alphabetically ignores TODO keyword and priority
Numerical and alphanumerical sorting now skips any TODO
keyword or priority cookie when constructing the comparison
string. This was a request by Wanrong Lin.
*** Agenda views can sort entries by TODO state
You can now define a sorting strategy for agenda entries that
does look at the TODO state of the entries. Sorting by TODO
entry does first separate the non-done from the done states.
Within each class, the entries are sorted not alphabetically,
but in definition order. So if you have a sequence of TODO
entries defined, the entries will be sorted according to the
position of the keyword in this sequence.
This follows an idea and sample implementation by Christian
Egli.
*** New face =org-scheduled= for entries scheduled in the future.
This was a request by Richard G Riley.
*** Remember templates for gnus links can now use the :to escape.
Thanks to Tommy Lindgren for a patch to this effect.
*** The file specification in a remember template may now be a function
Thanks to Gregory Sullivan for a patch to this effect.
*** Categories in iCalendar export now include local tags
The locally defined tags are now listed as categories when
exporting to iCalendar format. Org's traditional file/tree
category is now the last category in this list. Configure
the variable =org-icalendar-categories= to modify or revert
this behavior.
This was a request by Charles Philip Chan.
*** It is now possible to define filters for column view
The filter can modify the value that will be displayed in a
column, for example it can cut out a part of a time stamp.
For more information, look at the variable
=org-columns-modify-value-for-display-function=.
*** Disabling integer increment during table field copy
Prefix arg 0 to S-RET does the trick.
This was a request by Chris Randle.
* Older changes
For older Changes, see [[file:Changes_old.org]]