GNU-devel ELPA - org-transclusion

org-transclusion Atom Feed

Description
Transclude text content via links
Latest
org-transclusion-1.4.0.0.20260115.191247.tar (.sig), 2026-Jan-15, 340 KiB
Maintainer
Noboru Ota <me@nobiot.com>
Website
https://github.com/nobiot/org-transclusion
Browse ELPA's repository
CGit or Gitweb
Badge
Manual
org-transclusion

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

Full description

GNU Emacs GNU ELPA GNU-devel ELPA GPLv3

Org-transclusion lets you insert a copy of text content via a file link or ID link within an Org file. It lets you have the same content present in different buffers at the same time without copy-and-pasting it. Edit the source of the content, and you can refresh the transcluded copies to the up-to-date state. Org-transclusion keeps your files clear of the transcluded copies, leaving only the links to the original content.

A complete user manual is available online or Emacs in-system as an Info node `(org-transclusion)': (C-h i and find the Org-transclusion node).

For installation and minimum configuration, refer to Installation below or the user manual: online or Info node `(org-transclusion)Installation'

Getting Started in the user manual will get you started in 5 minutes: online or Info node `(org-transclusion)Getting Started'.

For customization, refer to the customization group `org-transclusion' or user manual: online or Info node `(org-transclusion)Customizing'.

1. Example Use Cases & Main Features

Here are some real use cases that users have shared with the author, including his own.

Book writing
You have a collection of notes. You can quickly transclude paragraphs and sections from your notes and put together a draft. As transclusions are links, it's easy to re-organize them into different sequences to see which way works the best.
Academic writing
You have a collection of quotes and notes from your research and literature review. Transclude relevant elements of quotes and notes into different papers. You can keep your collection as the central repository of your research.
Technical writing
You write technical documents for software. Transclude relevant lines of code into the document. As the code is only transcluded, you can keep the document up-to-date as the code evolves.
Project status reports
You work on multiple projects at the same time and need to report to different project managers. Transclude relevant parts of your work notes and logs into respective project reports. You can keep a single collection of your work notes and logs.

Main Features:

  • Insert a copy of text content via a file link or ID link into an Org file
  • Work with any text file such as program source code, plain text, Markdown, or other Org files
  • With version 1.4, transclude content over network protocols like http:// (with org-transclusion-http) and hyper:// (with hyperdrive-org-transclusion). Splitting org-transclusion-add into two parts enables functions in org-transclusion-add-functions to be asynchronous.
  • Keep the file system clear of the copies of text content – Org-transclusion tries hard to save only the links to the file system
  • For Org files, use different headline levels from the source Org file
  • For Org files, use filters to include only relevant elements (e.g. filter out properties in the transclusions)
  • For program source and plain text files, transclude a certain lines or dynamically specify the from/to lines to keep the transclusion always up-to-date with the evolving source files
  • For program source files, transclude parts or whole code directly into Org's source block to leverage the rich Org features including noweb style syntax
  • Extend Org-transclusion with its extension framework

2. Installation

This package is available on:

  • GNU ELPA (releases only; equivalent to MELPA-Stable)
  • GNU-devel ELPA (unreleased development branch; equivalent to MELPA)

GNU ELPA should be already set up in your Emacs by default. If you wish to add GNU-devel ELPA, simply add its URL to package-archives like this:

(add-to-list 'package-archives
             '("gnu-devel" . "https://elpa.gnu.org/devel/") :append)

Refresh the archive with M-x package-refresh-contents RET and you can do M-x package-install RET org-transclusion to install it. Alternatively, you can use package-list-packages.

After installation, you can start using Org-transclusion with no additional configuration. Below are some example keybindings that can be put into your Emacs configuration.

(define-key global-map (kbd "<f12>") #'org-transclusion-add)
(define-key global-map (kbd "C-n t m") #'org-transclusion-transient-menu)
(define-key global-map (kbd "C-n t t") #'org-transclusion-mode)

;; An alternative with `use-package':

(use-package org-transclusion
  :bind (("S-<f12>" . org-transclusion-add)
         ("C-c t m" . org-transclusion-transient-menu)
         ("C-n t t") . org-transclusion-mode))

The #+transclusion keyword can be fontified via built-in font-lock-mode with feature org-tranclusion-font-lock. It is an extension that is turned on by default, so you normally do not need any customizing. As an option for those who prefer to defer loading packages, you can do something like this below to activate org-transclusion-font-lock-mode without loading the entire org-transclusion features.

(with-eval-after-load 'org
  (require `org-transclusion-font-lock)
  (org-transclusion-font-lock-mode +1))

;; An alternative with `use-package':

(use-package org-transclusion-font-lock
  :after org
  :config (org-transclusion-font-lock-mode +1))

For Doom users, you would need to do something like this below to install the package and configure the keybindings.

;; ~/.doom.d/package.el
(package! org-transclusion)
;; ~/.doom.d/config.el
(use-package! org-transclusion
  :after org
  :init
  (map!
   :map global-map "<f12>" #'org-transclusion-add
   :leader
   :prefix "n"
   :desc "Org Transclusion Mode" "t" #'org-transclusion-mode))
;; I'd appreciate if someone could advise how to add another command such as
;; 'org-transclusion-transient-menu

3. Contributing

  • Get involved in a discussion in Org-roam forum (the package is originally aimed for its users, the author included)
  • Create issues, discussion, and/or pull requests. All welcome.

Org-transclusion is part of GNU ELPA and thus copyrighted by the Free Software Foundation (FSF). This means that anyone who is making a substantive code contribution will need to "assign the copyright for your contributions to the FSF so that they can be included in GNU Emacs" (Org Mode website).

Thank you.

4. License

Org-transclusion is licensed under a GPLv3 license. For a full copy of the license, refer to LICENSE.

Old versions

org-transclusion-1.4.0.0.20260103.231759.tar.lz2026-Jan-0470.6 KiB
org-transclusion-1.4.0.0.20251218.161651.tar.lz2025-Dec-1863.7 KiB
org-transclusion-1.4.0.0.20251208.45108.tar.lz2025-Dec-0863.7 KiB
org-transclusion-1.4.0.0.20251119.5711.tar.lz2025-Nov-1960.1 KiB
org-transclusion-1.4.0.0.20241231.83512.tar.lz2024-Dec-3159.1 KiB
org-transclusion-1.4.0.0.20240922.152934.tar.lz2024-Sep-2258.7 KiB
org-transclusion-1.3.2.0.20240420.151651.tar.lz2024-Apr-2058.6 KiB
org-transclusion-1.2.0.0.20220528.144621.tar.lz2022-May-2851.8 KiB
org-transclusion-1.1.1.0.20220108.205254.tar.lz2022-Jan-0850.5 KiB
org-transclusion-1.0.1.0.20211228.224239.tar.lz2021-Dec-2950.0 KiB

News

* 2.0.0-rc (as of 2026-01-03)

  - Breaking Change ::

    We have done significant refactoring for the INTERNAL workings of
    transclusion logic. The intent was two-fold:

    1. Affect only internal workings. No user-facing commands and user options
       should be affected.

    2. Make custom/personal transclusion logic easy. Now transclusion should
       work as long as the Org link navigates to the link-target buffer. For
       example, the author has tested this with `orgit-file` link via `orgit`
       package (https://github.com/magit/orgit) and `notmuch:id:` link via
       `ol-notmuch` (https://github.com/tarsius/ol-notmuch), both packages by
       Jonas Bernoulli.

    No user-facing features should be affected, however, we are calling it out
    as a breaking change because:

    - The change is significant including dropping of a major function and
      changes of function signature, and
    - We are aware that some users have developed their own custom transclusion
      functions.

    We plan to increase the version nubmer to 2.0.0 to indicate this breaking
    change included in this release.

    The significant changes include the following:

    - Deprecated (and removed from the main transclusion logic):
      `org-transclusion-add-payload'

    - `org-transclusion-content-insert` signature changed to `(content)`

    - Refactored `org-transclusion-content-format-functions`.

    - Fixed extension setup hooks (`org-transclusion-*-extension-functions`)

    - All the extensions included in the package have been refactored to be
      aligned with these changes.

  - Features ::

    - New `org-transclusion-transient' feature for easier command access via
      `org-transclusion-transient-menu' command.

    - New `org-transclusion-insert' command. The command lets you insert
      #+TRANSCLUDE: from a link at point or new link to a blank line.

    - New user option `org-transclusion-insert-link-functions`, allowing
      customization of link insertion behavior for `org-transclusion-insert'
      (Commit `47ff265`).

    - Improved fringe & indentation (contribution by gggion). Significant
      refactoring to improve how fringes are displayed, especially when working
      with `org-indent-mode` and in terminal (`-nw`) environments.

    - Noweb chunk support (contribution by Andreas Matthias). You can now
      transclude specific chunks from noweb files. See the user manual for
      detail.

    - New translclusion `"auto"` value for `:level` property. Leaving the
      property value blank also behaves as `"auto"` It sets the level of the
      transcluded headlines to be one level deeper than the current headline.

    - New transclusion property `no-first-heading`. It will remove the first
      headline of a subtree. This is useful when you wish to merge a subtree
      into another headline.

  - Fixes ::

    - fix: #261 Extensions have been refactored into proper minor modes, making
      them easily removable and togglable. Setup hooks are now cleaner and
      reversible.

    - fix: #237 `ID` links with search options (compatible with Org 9.7+). You
      can also use Org-link's `::number` search-option. `::/regex/` does not
      fail but as it normally opens an "Occur" buffer which expects an user
      interaction, and thus does not work as intended. Commits 4764739, c910289

    - Fix: removing transclusions would incorrectly flag the buffer as modified
      Commit 59fe5cc.

    - fix: #177 Infinite loop when saving buffer with transclusions. See commit
      f6fd666 for detail.

* 1.4.0 (2024-05-20)

  - Features ::

    Transclude content over network protocols like http:// (with
    org-transclusion-http: https://git.sr.ht/ushin/org-transclusion-http) and
    hyper:// (with hyperdrive-org-transclusion:
    https://git.sr.ht/~ushin/hyperdrive-org-transclusion).  Splitting
    org-transclusion-add into two parts enables functions in
    org-transclusion-add-functions to be asynchronous.
...
...