13 KB

<div id="top"><p><em>Org mode is for keeping notes, maintaining TODO lists, planning
projects, and authoring documents with a fast and effective plain-text system.</em></p></div>

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

  ,#+BEGIN_SRC emacs-lisp :noweb-ref foo

  ,#+BEGIN_SRC emacs-lisp :noweb yes

should become

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

  ,#+BEGIN_SRC emacs-lisp :noweb-ref bar

  ,#+BEGIN_SRC emacs-lisp :noweb yes

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

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

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 "" ,#+end_src

,#+results: data/tmp/crackzor_1.0.c.gz

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


Add :session support of ob-js for Indium


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


Org Tempo may used for snippet expansion of structure template.

Exclude unnumbered headlines from table of contents

org-archive functions update status cookies

Use MathJax links when enabled (by org-html-with-latex), otherwise add a label to the rendered equation. See manual and the commentary section in org-tempo.el for details. Set their UNNUMBERED property to the special notoc value. See manual for details.

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))

  (setq org-columns-summary-types
	'(("X+" org-columns--summary-sum

You can have a file containing:

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

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

  ,** Shipment 2
     :CONFIRMED: [ ]
     :BANANAS:  7

... 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;

  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;

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


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


See docstring for details.





See docstring for details.


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.


Browse to let users read informations about the last major release.

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


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








Removed options

Use org-save-outline-visibility instead. Use org-save-outline-visibility instead. It was not used throughout the code base. It was not used throughout code base. Use org-element-at-point instead. It is no longer used in the code base. Org Tempo may be used as a replacement. See details above.


See Change to Noweb expansion for explanations.


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.

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

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

Older changes

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.

For older Changes, see old changes.