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

#+STARTUP: overview

#+LINK: doc https://orgmode.org/worg/doc.html#%s
#+LINK: msg https://list.orgmode.org/%s/
#+LINK: git https://git.savannah.nongnu.org/cgit/org-mode.git/commit/?id=%s
#+macro: kbd (eval (org-texinfo-kbd-macro $1))

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

Please send Org bug reports to mailto:emacs-orgmode@gnu.org.

# Remember that we only export the first entry from this file
# into https://orgmode.org/Changes.html
# This means that links pointing to earlier changelog entries
# will be broken.

* Version 10.0 (not released yet)

** Important announcements and breaking changes

# Here, we list the *most important* changes and changes that _likely_
# require user action for most Org mode users.
# Sorted from most important to least important.

*** ~org-mouse~ tag and priority menus are now separate

The "Tags and Priorities" section of the global context menu is split
into a "Tags" section and a "Priorities" section.

*** ~org-babel-tangle-single-block~ may return multiple target files

When called with non-nil ONLY-THIS-BLOCK,
~org-babel-tangle-single-block~ can now return multiple target file
entries if a source block tangles to more than one file.

Previously, the returned list always contained exactly one element.
The return value structure is unchanged, but callers should no longer
assume that the outer list has length one, which means ~(car
(org-babel-tangle-single-block ...))~ is not guaranteed to return
the correct ~(FILE . ...)~ cons.

** New features

# We list the most important features, and the features that may
# require user action to be used.

*** Column view now has quick help

Column view has a quick-help popup, available with =?= when point is
in the column view display.  It lists commonly used column view
bindings.

*** Link targets can be used as search option in =id:= links

When storing an =id:= link to target, the target will now be used as a
search option. This mirrors what happens with =file:= links.
You need to set ~org-id-link-to-org-use-id~ to make Org store =id:=
link by default.

See also ~org-id-link-use-context~ and ~org-link-context-for-files~.

For example, link to =<<target>>=

: * Heading
: :PROPERTIES:
: :ID: foo
: :END:
: Some text with <<target>>.

will be stored as
: [[id:foo::target][target]]

*** New actions in the ~org-mouse~ priority menus

Priorities can now be increased, decreased, set to the default, and
set interactively from the priority context menus.

*** ob-tangle.el now supports tangling to multiple targets

Source blocks can now be tangled to multiple target files using
the ~:tangle~ header argument.  The following forms are now supported:

- =:tangle "file1.el"= (existing behavior)
- =:tangle '("file1.el" "file2.el")= (new: list of files)
- =:tangle (get-tangle-targets)= (new: function returning paths)
- =:tangle 'tangle-targets= (new: variable returning paths)

Additionally, the new ~:tangle-directory~ header argument specifies
base directories for relative tangle paths:

- =:tangle-directory "/tmp"= (single directory)
- =:tangle-directory '("/tmp/a" "/tmp/b")= (multiple directories)
- =:tangle-directory (get-tangle-dirs)= (function returning directories)
- =:tangle-directory 'tangle-dirs= (variable returning directories)

When both ~:tangle-directory~ and multiple ~:tangle~ files are specified,
the block is tangled to all combinations of directories and files.

Example:
#+begin_example
,#+begin_src emacs-lisp :tangle '("config.el" "backup.el") :tangle-directory '("~/.config" "/backup")
(message "Tangling to multiple targets specified by :tangle and :tangle-directory")
,#+end_src
#+end_example

This tangles the block to four files:
- ~/.config/config.el
- ~/.config/backup.el
- /backup/config.el
- /backup/backup.el

*** iCalendar export blocks and keywords

The iCalendar exporter now allows using export blocks and keywords
...
...
