[ en - fr - ja ]

Org mode for Emacs – Release notes

Table of Contents

Org mode is for keeping notes, maintaining TODO lists, planning projects, and authoring documents with a fast and effective plain-text system.

Version 9.2

Incompatible changes

Removal of OrgStruct mode mode and radio lists

OrgStruct minor mode and radio lists mechanism (org-list-send-list and org-list-radio-lists-templates) are removed from the code base.

Note that only radio lists have been removed, not radio tables.

If you want to manipulate lists like in Org in other modes, we suggest to use orgalist.el, which you can install from GNU ELPA.

If you want to use Org folding outside of Org buffers, you can have a look at the outshine package in the MELPA repository.

Change in the structure template expansion

Org 9.2 comes with a new template expansion mechanism, combining org-insert-structure-template bound to C-c C-,.

If you customized the org-structure-template-alist option manually, you probably need to udpate it, see the docstring for accepted values.

If you prefer using previous patterns, e.g. <s, you can activate them again by requiring Org Tempo library:

(require 'org-tempo)

or add it to org-modules.

If you need complex templates, look at the tempo-define-template function or at solutions like Yasnippet.

Change to Noweb expansion

Expansion check :noweb-ref only if no matching named block is found in the buffer. As a consequence, any :noweb-ref value matching the name of a source block in the buffer is ignored. A simple fix is to give every concerned source-block, including the named one, a new, unique, Noweb reference.

#+NAME: foo
#+BEGIN_SRC emacs-lisp
  1
#+END_SRC

#+BEGIN_SRC emacs-lisp :noweb-ref foo
  2
#+END_SRC

#+BEGIN_SRC emacs-lisp :noweb yes
  <<foo>>
#+END_SRC

should become

#+NAME: foo
#+BEGIN_SRC emacs-lisp :noweb-ref bar
  1
#+END_SRC

#+BEGIN_SRC emacs-lisp :noweb-ref bar
  2
#+END_SRC

#+BEGIN_SRC emacs-lisp :noweb yes
  <<bar>>
#+END_SRC

Default/accepted values of org-calendar-to-agenda-key

The default value and accepted value of org-calendar-to-agenda-key changed. This is an excerpt of the new docstring:

When set to ‘default’, bind the function to ‘c’, but only if it is
available in the Calendar keymap.  This is the default choice because
‘c’ can then be used to switch back and forth between agenda and calendar.

When nil, ‘org-calendar-goto-agenda’ is not bound to any key.

Check the full docstring for more.

Change the signature of the org-set-effort function

Here is the new docstring:

(org-set-effort &optional INCREMENT VALUE)

Set the effort property of the current entry.
If INCREMENT is non-nil, set the property to the next allowed
value.  Otherwise, if optional argument VALUE is provided, use
it.  Eventually, prompt for the new value if none of the previous
variables is set.

Placeholders in (eval ...) macros are always strings

Within (eval ...) macros, $1-like placeholders are always replaced with a string. As a consequence, they must not be enclosed within quotes. As an illustration, consider the following, now valid, examples:

#+macro: join (eval (concat $1 $2))
#+macro: sum (eval (+ (string-to-number $1) (string-to-number $2)))

{{{join(a,b)}}} => ab
{{{sum(1,2)}}}  => 3

However, there is no change in non-eval macros:

#+macro: disp argument: $1

{{{disp(text)}}} => argument: text

align STARTUP value no longer narrow table columns

Columns narrowing (or shrinking) is now dynamic. See Dynamically narrow table columns for details. In particular, it is decoupled from aligning.

If you need to automatically shrink columns upon opening an Org document, use shrink value instead, or in addition to align:

#+STARTUP: align shrink

org-get-tags meaning change

Function org-get-tags used to return local tags to the current headline. It now returns all the inherited tags in addition to the local tags. In order to get the old behaviour back, you can use:

(org-get-tags nil t)

Alphabetic sorting in tables and lists

When sorting alphabetically, org-table-sort-lines and org-sort-list now sort according to the locale’s collation rules instead of by code-point.

Change the name of the :tags clocktable option to :match

The :match (renamed from :tags) option allows to limit clock entries to those matching a todo-tags matcher.

The old :tags option can be set to t to display a headline's tags in a dedicated column.

This is consistent with the naming of org-dblock-write:columnview options, where :match is also used as a headlines filter.

New features

Add :results link support for Babel

With this output format, create a link to the file specified in :file header argument, without actually writing any result to it:

#+begin_src shell :dir "data/tmp" :results link :file "crackzor_1.0.c.gz"
wget -c "http://ben.akrin.com/crackzor/crackzor_1.0.c.gz"
#+end_src

#+results:
[[file:data/tmp/crackzor_1.0.c.gz]]

Add :session support of ob-js for js-comint

console.log("stardiviner")

Add :session support of ob-js for Indium

console.log("stardiviner")

Add :session support of ob-js for skewer-mode

console.log("stardiviner")

Add support for links to LaTeX equations in HTML export

Use MathJax links when enabled (by org-html-with-latex), otherwise add a label to the rendered equation.

Org Tempo may used for snippet expansion of structure template.

See manual and the commentary section in org-tempo.el for details.

Exclude unnumbered headlines from table of contents

Set their UNNUMBERED property to the special notoc value. See manual for details.

org-archive functions update status cookies

Archiving headers through org-archive-subtree and org-archive-to-archive-sibling such as the ones listed below:

* Top [1/2]
** DONE Completed
** TODO Working

Will update the status cookie in the top level header.

Disable org-agenda-overriding-header by setting to empty string

The org-agenda-overriding-header inserted into agenda views can now be disabled by setting it to an empty string.

Dynamically narrow table columns

With C-c TAB, it is now possible to narrow a column to the width specified by a width cookie in the column, or to 1 character if there is no such cookie. The same keybinding expands a narrowed column to its previous state.

Editing the column automatically expands the whole column to its full size.

org-columns-summary-types entries can take an optional COLLECT function

You can use this to make collection of a property from an entry conditional on another entry. E.g. given this configuration:

(defun custom/org-collect-confirmed (property)
  "Return `PROPERTY' for `CONFIRMED' entries"
  (let ((prop (org-entry-get nil property))
        (confirmed (org-entry-get nil "CONFIRMED")))
    (if (and prop (string= "[X]" confirmed))
        prop
      "0")))

(setq org-columns-summary-types
      '(("X+" org-columns--summary-sum
         custom/org-collect-confirmed)))

You can have a file bananas.org containing:

#+columns: %ITEM %CONFIRMED %Bananas{+} %Bananas(Confirmed Bananas){X+}

* All shipments
** Shipment 1
   :PROPERTIES:
   :CONFIRMED: [X]
   :Bananas:  4
   :END:

** Shipment 2
   :PROPERTIES:
   :CONFIRMED: [ ]
   :BANANAS:  7
   :END:

… and when going to the top of that file and entering column view you should expect to see something like:

ITEM CONFIRMED Bananas Confirmed Bananas
All shipments   11 4
Shipment 1 [X] 4 4
Shipment 2 [ ] 7 7
#+STARTUP: shrink

Allow to filter by tags/property when capturing colview

You can now use :match to filter entries using a todo/tags/properties matcher.

Add support for Oracle's database alias in Babel blocks

ob-sql library already support running SQL blocks against an Oracle database using sqlplus. Now it's possible to use alias names defined in TNSNAMES file instead of specifying full connection parameters. See example bellow.

you can use the previous full connection parameters
#+BEGIN_SRC sql :engine oracle :dbuser me :dbpassword my_insecure_password :database my_db_name :dbhost my_db_host :dbport 1521
select sysdate from dual;
#+END_SRC

or the alias defined in your TNSNAMES file
#+BEGIN_SRC sql :engine oracle :dbuser me :dbpassword my_insecure_password :database my_tns_alias
select sysdate from dual;
#+END_SRC

org-agenda-set-restriction-lock toggle agenda restriction at point

You can set an agenda restriction lock with C-x C-x < or with < at the beginning of a headline when using Org speed commands. Now, if there is already a restriction at point, hitting < again (or C-x C-x <) will remove it.

New commands and functions

org-insert-structure-template

This function can be used to wrap existing text of Org elements in a #+BEGINFOO/#+ENDFOO block. Bound to C-c C-x w by default.

org-export-excluded-from-toc-p

See docstring for details.

org-timestamp-to-time

org-timestamp-from-string

org-timestamp-from-time

org-attach-dired-to-subtree

See docstring for details.

org-toggle-narrow-to-subtree

Toggle the narrowing state of the buffer: when in a narrowed state, widen, otherwise call org-narrow-to-subtree to narrow.

This is attached to the "s" speed command, so that hitting "s" twice will go back to the widen state.

org-browse-news

Browse https://orgmode.org/Changes.html to let users read informations about the last major release.

There is a new menu entry for this in the "Documentation" menu item.

org-info-find-node

From an Org file or an agenda switch to a suitable info page depending on the context.

The function is bound to C-c C-x I.

Removed commands and functions

org-outline-overlay-data

Use org-save-outline-visibility instead.

org-set-outline-overlay-data

Use org-save-outline-visibility instead.

org-get-string-indentation

It was not used throughout the code base.

org-fix-indentation

It was not used throughout code base.

org-context-p

Use org-element-at-point instead.

org-preserve-lc

It is no longer used in the code base.

org-try-structure-completion

Org Tempo may be used as a replacement. See details above.

Removed options

org-babel-use-quick-and-dirty-noweb-expansion

See Change to Noweb expansion for explanations.

Miscellaneous

New default value for org-texinfo-table-scientific-notation

It is now nil, which means numbers in scientific notation are not handled specially by default.

New default value for org-latex-table-scientific-notation

It is now nil, which means numbers in scientific notation are not handled specially by default.

New face: org-upcoming-distant-deadline

It is meant to be used as the face for distant deadlines, see org-agenda-deadline-faces

org-paste-subtree no longer breaks sections

Unless point is at the beginning of a headline, org-paste-subtree now pastes the tree before the next visible headline. If you need to break the section, use org-yank instead.

org-table-insert-column inserts a column to the right

It used to insert it on the left. With this change, org-table-insert-column and org-table-delete-column are reciprocal.

org-publish-resolve-external-link accepts a new optional argument.

org-irc.el now supports exporting irc: links properly

Previously, irc links were exported by ox-md and ox-html as normal file links, which lead to them being broken in web browsers. Now both of these exporters will properly export to irc: links, which will open properly in irc clients from web browsers.

org-comment-dwim (bound to M-;) now comments headings, if point is on a heading

Add support for open source block in window below

Set option org-src-window-setup to split-window-below.

Alphabetic sorting in headings and tags now uses the locale’s sorting rules

When sorting alphabetically, org-sort-entries and org-tags-sort-function now sort according to the locale’s collation rules instead of by code-point.

New speed command "k" to kill (cut) the subtree at point

Older changes

For older Changes, see old changes.