19 Jul 08:43 2010

## Org-mode release 7.01

Hi everyone,

I have just released version 7.01 of Org mode.

This is a major release, and we have worked months on getting
it together.  Most important is of cause the complete integration
of Org Babel into  Org mode.  Many thanks to Eric Schulte and
Dan Davison who have worked tirelessly to make this happen.
Thomas S. Dye gets credit here as well because he did a lot of
work on documentation and function/variable docstrings.

Also, I need to shout out my gratitude to the increasing number of
volunteers in the project.

John Wiegley's patchwork server has done wonders for streamlining the
process of reviewing and applying patches.  I have applied dozens of
patches though this process, just in the last week.

The issue tracker by David Maus has finally brought some structure
into the stream of ideas and reports on this mailing list, at a
moment when I was about to falter under the amount of work
maintaining this project means for me.  Frankly,  right now I
don't know how I would do things without David's competent and
efficient help - he has effectively and silently become
co-maintainer of this project.

Below these tips above the waterline, there is an iceberg of
contributions large and small by so many people.  We have 54 people
with FSF papers now, and more contributors of tiny patches.  Also
there are the volunteers that manage the mailing list, Worg, and
the FAQ.  I am truly humbled and made proud at the same time by
each and every contribution that the Org mode projects receives.
These contributions made Org mode the phenomenon it now is.

Thanks, thanks, thanks!

Enjoy!

- Carsten

P.S. If you are trying to find the 7.01 release on the master branch
in the repository, you will not.  The releases are now on a new branch,
called "maint", which will contain only commits that are also releases.
This will make it easier to make minor fixes to a release while
development
continues on the master branch.

P.P.S.  The feature freeze is over now.

Changes in Version 7.01
=======================

Incompatible Changes
~~~~~~~~~~~~~~~~~~~~~

Emacs 21 support has been dropped
==================================

Do not use Org mode 7.xx with Emacs 21, use [version 6.36c] instead.

[version 6.36c]: http://orgmode.org/org-6.36c.zip

XEmacs support requires the XEmacs development version
=======================================================

To use Org mode 7.xx with XEmacs, you need to run the developer
version of XEmacs.   I was about to drop XEmacs support entirely,
but Michael Sperber stepped in and made changes to XEmacs that
made it easier to keep the support.  Thanks to Michael for this
last-minute save.  I had hoped to be able to remove
xemacs/noutline.el from release 7 by moving it into XEmacs, but
this is not yet done.

Org-babel configuration changes
================================

Babel took the integration into Org-mode as an opportunity to do
some much needed house cleaning.  Most importantly we have
simplified the enabling of language support, and cleared out
unnecessary configuration variables -- which is great unless you
already have a working configuration under the old model.

The most important changes regard the /location/ and /enabling/
of Babel (both core functionality and language specific support).

Babel: Babel is now part of the core of Org-mode, so it is
now loaded along with the rest of Org-mode.  That means that
there is /no configuration/ required to enable the main
Babel functionality.  For current users, this means that
statements like

(require 'org-babel)
or

(require 'org-babel-init)
that may by lying around in your configuration must now be
removed.
load path: Babel (including all language specific files --
aside from those which are located in the =contrib/=
directory for reasons of licencing) now lives in the base of
the Org-mode lisp directory, so /no additional directories/
users this means that statements adding babel-specific
language support: It is no longer necessary to require
language specific support on a language-by-language basis.
Specific language support should now be managed through the
org-babel-load-languages' variable.  This variable can be
customized using the Emacs customization interface, or
through the addition of something like the following to your
configuration (note: any language not mentioned will /not/
be enabled, aside from =emacs-lisp= which is enabled by
default)

'((R . t)
(ditaa . t)
(dot . t)
(emacs-lisp . t)
(gnuplot . t)
(ocaml . nil)
(python . t)
(ruby . t)
(screen . nil)
(sh . t)
(sql . nil)
(sqlite . t)))

Despite this change it is still possible to add
language support through the use of =require=
statements, however to conform to Emacs file-name
regulations all Babel language files have changed
prefix from =org-babel-*= to =ob-*=, so the require
lines must also change e.g.

(require 'org-babel-R)
should be changed to

(require 'ob-R)

We have eliminated the =org-babel-tangle-w-comments= variable as
well as the two main internal lists of languages, namely
- =org-babel-interpreters= and
- =org-babel-tangle-langs=

so any config lines which mention those variables, can/should be
stripped out in their entirety.  This includes any calls to the
=org-babel-add-interpreter= function, whose sole purpose was to
add languages to the =org-babel-interpreters= variable.

With those calls stripped out, we may still in some cases want to
associate a file name extension with certain languages, for
example we want all of our emacs-lisp files to end in a =.el=, we
can do this will the =org-babel-tangle-lang-exts= variable.  In
general you shouldn't need to touch this as it already has
defaults for most common languages, and if a language is not
present in org-babel-tangle-langs, then babel will just use the
language name, so for example a file of =c= code will have a =.c=
extension by default, shell-scripts (identified with =sh=) will
have a =.sh= extension etc...

The configuration of /shebang/ lines now lives in header
arguments.  So the shebang for a single file can be set at the
code block level, e.g.

#+begin_src clojure :shebang #!/usr/bin/env clj
(println "with a shebang line, I can be run as a script!")
#+end_src

Note that whenever a file is tangled which includes a /shebang/
line, Babel will make the file executable, so there is good
reason to only add /shebangs/ at the source-code block level.
However if you're sure that you want all of your code in some
language (say shell scripts) to tangle out with shebang lines,
then you can customize the default header arguments for that
language, e.g.

;; ensure this variable is defined defined

'(:shebang . "#!/bin/bash"))

The final important change included in this release is the
addition of new security measures into Babel.  These measures are
in place to protect users from the accidental or uninformed
execution of code.  Along these lines /every/ execution of a code
block will now require an explicit confirmation from the user.
These confirmations can be stifled through customization of the
org-confirm-babel-evaluate' variable, e.g.

;; I don't want to be prompted on every code block evaluation
(setq org-confirm-babel-evaluate nil)

In addition, it is now possible to remove code block evaluation
form the C-c C-c keybinding.  This can be done by setting the
org-babel-no-eval-on-ctrl-c-ctrl-c variable to a non-nil value,
e.g.

;; I don't want to execute code blocks with C-c C-c
(setq org-babel-no-eval-on-ctrl-c-ctrl-c t)

evaluation, namely C-c C-v e.

Whew! that seems like a lot of effort for a /simplification/ of
configuration.

New keys for TODO sparse trees
===============================

The key =C-c C-v= is now reserved for Org Babel action.  TODO
sparse trees can still be made with =C-c / t= (all not-done
states) and =C-c / T= (specific states).

Customizable variable changes for DocBook exporter
===================================================

To make it more flexible for users to provide DocBook exporter
related commands, we start to use format-spec to format the
commands in this release.  If you use DocBook exporter and use it
to export Org files to PDF and/or FO format, the settings of the
following two customizable variables need to be changed:

- =org-export-docbook-xslt-proc-command=
- =org-export-docbook-xsl-fo-proc-command=

Instead of using =%s= in the format control string for all
arguments, now we use /three/ different format spec characters:

- =%i=: input file argument
- =%o=: output file argument
- =%s=: XSLT stylesheet argument

For example, if you set =org-export-docbook-xslt-proc-command= to

java com.icl.saxon.StyleSheet -o %s %s /path/to/docbook.xsl

in the past, now you need to change it to

java com.icl.saxon.StyleSheet -o %o %i %s

and set a new customizable variable called
=org-export-docbook-xslt-stylesheet= to =/path/to/docbook.xsl=.

Please check the documentation of these two variables for more
details and other examples.

Along with the introduction of variable
=org-export-docbook-xslt-stylesheet=, we also added a new
in-buffer setting called =#+XSLT:=.  You can use this setting to
specify the XSLT stylesheet that you want to use on a per-file
basis.  This setting overrides
=org-export-docbook-xslt-stylesheet=.

Details
~~~~~~~~

Org Babel is now part of the Org core
======================================
See [Org-babel configuration changes] for instructions on how to

The most significant result of this change is that Babel now has
documentation!  It is part of Org-mode's documentation, see
Chapter 14 [Working With Source Code].  The Babel keybindings
are now listed in the refcard, and can be viewed from any
Org-mode buffer by pressing =C-c C-v h=.  In addition this
integration has included a number of bug fixes, and a significant
amount of internal code cleanup.

[Org-babel configuration changes]: #ob-configuration-changes
[Working With Source Code]: http://orgmode.org/manual/Working-with-source-code.html#Working-with-source-code

The default capture system for Org mode is now called org-capture
==================================================================

This replaces the earlier system org-remember.  The manual only
describes org-capture, but for people who prefer to continue to
use org-remember, we keep a static copy of the former manual

The new system has a technically cleaner implementation and more
possibilities for capturing different types of data.  See
[Carsten's announcement] for more details.

To switch over to the new system:

1. Run

M-x org-capture-import-remember-templates RET

to get a translated version of your remember templates into the
new variable =org-capture-templates=.  This will "mostly" work,
but maybe not for all cases.  At least it will give you a good
place to modify your templates.  After running this command,
enter the customize buffer for this variable with

M-x customize-variable RET org-capture-templates RET

and convince yourself that everything is OK.  Then save the
customization.

2. Bind the command =org-capture= to a key, similar to what you did
with org-remember:

(define-key global-map "\C-cc" 'org-capture)

If your fingers prefer =C-c r=, you can also use this key once
you have decided to move over completely to the new
implementation.  During a test time, there is nothing wrong
with using both system in parallel.

Implement pretty display of entities, sub-, and superscripts.
==============================================================

The command =C-c C-x \= toggles the display of Org's special
entities like =\alpha= as pretty unicode characters.  Also, sub
and superscripts are displayed in a pretty way (raised/lower
display, in a smaller font).  If you want to exclude sub- and
superscripts, see the variable
=org-pretty-entities-include-sub-superscripts=.

Thanks to Eric Schulte and Ulf Stegeman for making this possible.

Help system for finding entities
=================================

The new command =M-x org-entities-help= creates a structured
buffer that lists all entities available in Org.  Thanks to Ulf
Stegeman for adding the necessary structure to the internal
entity list.

New module to create Gantt charts
==================================

Christian Egli's /org-taskjuggler.el/ module is now part of Org.
He also wrote a [tutorial] for it.

Refile targets can now be cached
=================================

You can turn on caching of refile targets by setting the variable
=org-refile-use-cache=.  This should speed up refiling if you
have many eligible targets in many files.  If you need to update
the cache because Org misses a newly created entry or still
offers a deleted one, press =C-0 C-c C-w=.

Enhanced functionality of the clock resolver
=============================================

Here are the new options for the clock resolver:

i/q/C-g  Ignore this question; the same as keeping all the idle time.

k/K      Keep X minutes of the idle time (default is all).  If this
amount is less than the default, you will be clocked out
that many minutes after the time that idling began, and then
clocked back in at the present time.
g/G      Indicate that you \"got back\" X minutes ago.  This is quite
different from 'k': it clocks you out from the beginning of
the idle period and clock you back in X minutes ago.
s/S      Subtract the idle time from the current clock.  This is the
same as keeping 0 minutes.
C        Cancel the open timer altogether.  It will be as though you
never clocked in.

For all these options, using uppercase makes your final state
to be CLOCKED OUT.  Thanks to John Wiegley for making these
changes.

A property value of "nil" now means to unset a property
========================================================

This can be useful in particular with property inheritance, if
some upper level has the property, and some grandchild of it
would like to have the default settings (i.e. not overruled by a
property) back.

Thanks to Robert Goldman and Bernt Hansen for suggesting this
change.

The problem with comment syntax has finally been fixed
=======================================================

Thanks to Leo who has been on a year-long quest to get this fixed
and finally found the right way to do it.

Make it possible to protect hidden subtrees from being killed by =C-k=
=======================================================================

This was a request by Scott Otterson.
See the new variable =org-ctrl-k-protect-subtree=.

===================================

This module allows to grab links to all kinds of applications on
a mac.  It is available in the contrib directory.

Thanks to Anthony Lander for this contribution.

LaTeX export: Implement table* environment for wide tables
===========================================================

Thanks to Chris Gray for a patch to this effect.

When cloning entries, remove or renew ID property
==================================================

Thanks to David Maus for this change.

- Carsten

_______________________________________________
Emacs-orgmode mailing list
`