Outline-based notes management and organizer
org-9.7pre0.20230920.112231.tar, 2023-Sep-20, 9.43 MiB
Bastien Guerry <>
Browse ELPA's repository
CGit or Gitweb

To install this package from Emacs, use package-install or list-packages.

Full description

This is a distribution of Org Mode, a major mode for keeping notes, authoring documents, computational notebooks, literate programming, maintaining to-do lists, planning projects, and more — in a fast and effective plain text system.

Check the Org Mode website for more.

1. Install Org

Org is part of GNU Emacs: you probably don't need to install it.

To install a more recent version, please do it from GNU ELPA by running this command: M-x package-install RET org RET

2. Join the GNU Project

Org is part of GNU Emacs and GNU Emacs is part of the GNU Operating System, developed by the GNU Project.

If you are the author of an awesome program and want to join us in writing Free (libre) Software, please consider making it an official GNU program and become a GNU Maintainer. Instructions on how to do this are here

Don't have a program to contribute? Look at all the other ways to help:

And to learn more about Free (libre) Software in general, please read and share this page:

3. License

Org-mode is published under the GNU GPLv3 license or any later version, the same as GNU Emacs.

Org-mode is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

GNU Emacs is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with Org mode. If not, see

Old versions

org-9.7pre0.20230919.124909.tar.lz2023-Sep-191.58 MiB
org-9.7pre0.20230918.100842.tar.lz2023-Sep-181.58 MiB
org-9.7pre0.20230909.105702.tar.lz2023-Sep-091.58 MiB
org-9.7pre0.20230901.110339.tar.lz2023-Sep-011.58 MiB
org-9.7pre0.20230831.112736.tar.lz2023-Aug-311.58 MiB
org-9.7pre0.20230430.195554.tar.lz2023-May-011.56 MiB
org- MiB
org- MiB
org-0.20171225.tar.lz2017-Dec-251.17 MiB
org-0.20121231.tar.lz2012-Dec-311017 KiB


ORG NEWS -- history of user-visible changes.   -*- mode: org; coding: utf-8 -*-

#+STARTUP: overview

#+LINK: doc
#+LINK: msg
#+LINK: git

Copyright (C) 2012-2023 Free Software Foundation, Inc.
See the end of the file for license conditions.

Please send Org bug reports to

* Version 9.7 (not released yet)
** Important announcements and breaking changes
*** New export option ~org-export-expand-links~

The new option makes Org expand environment variables in link and INCLUDE paths.
The option is on by default.

Users who do not want variable expansion can set
~org-export-expand-links~ variable to nil or provide
=expand-links:nil= in-file export option.

*** ~org-store-link~ now moves an already stored link to front of the ~org-stored-links~

Previously, when the link to be stored were stored already,
~org-store-link~ displayed a message and did nothing.

Now, ~org-store-link~ moves the stored link to front of the list of
stored links.  This way, the link will show up first in the completion
and when inserting all the stored links with ~org-insert-all-links~.

*** Major changes and additions to Org API
**** New term: "syntax node"

To reduce confusion with "element" referring to both "syntax element"
and "element/object" class, we now prefer using "syntax node" when
referring to generic Org syntax elements.  "Elements" and "objects"
now refer to different syntax node classes of paragraph-like nodes and
markup-like nodes.

**** New element type ~anonymous~

Secondary strings can now be recognized as ~anonymous~ type to
distinguish from non-elements.  With a new optional argument,
~org-element-type~ will return ~anonymous~ for secondary strings
instead of nil.

The new element type can be used in ~org-element-lineage~,
~org-element-map~, and other functions that filter by element type.

**** Internal structure of Org parse tree has been changed

The code relying upon the previously used =(TYPE PROPERTIES-PLIST CONTENTS-LIST)=
structure may no longer work.  Please use ~org-element-create~,
~org-element-property~, and other Org element API functions to work
with Org syntax trees.

Some syntax node properties are no longer stored as property list elements.
Instead, they are kept in a special vector value of a new
=:standard-properties= property.  This is done to improve performance.

If there is a need to traverse all the node properties, a new API
function ~org-element-properties-map~ can be used.

Properties and their values can now be deferred to avoid overheads
when parsing.  They are calculated lazily, when the value/property is
requested by ~org-element-property~ and other getter functions.  Using
~plist-get~ to retrieve values of =PROPERTIES-PLIST= is not
recommended as deferred properties will not be resolved in such

New special property =:secondary= is used internally to record which
properties store secondary objects.

New special property =:deferred= is used to keep information how to
calculate property names lazily.

See the commentary in =lisp/org-element-ast.el= for more details.

**** Multiple affiliated keyword values are now stored in the order they appear in buffer


: #+caption: foo
: #+caption: bar
: Paragraph

would have its =:caption= property set to ~(("bar") ("foo"))~ in reverse order.

Now, the order is not reversed: ~(("foo") ("bar"))~.

**** Some property values may now be calculated lazily and require original Org buffer to be live

~org-element-at-point~, ~org-element-context~, and
~org-element-at-point-no-context~ may now not calculate all the
property values at the call time.  Instead, the calculation will be
deferred until ~org-element-property~ or the equivalent getter
function is called.  The property names may not all be calculated as

It may often be necessary to have the original Org buffer open when
resolving the deferred values.