-
-
Notifications
You must be signed in to change notification settings - Fork 171
Description
Does this feature exist in Emacs orgmode core?
Yes, Here’s the official Emacs Org Mode documentation for the clocktable dynamic block.
Orgmode link (https://orgmode.org/manual/The-clock-table.html)
This page explains:
- How to insert and update #+BEGIN: clocktable … #+END: blocks
- How clock tables automatically summarize clocked time by headline
- How to set options like :scope file, :maxlevel, :block, etc.
clocktable is a core feature of Emacs Org, not an add-on. It’s the bridge between raw CLOCK:LOGS and derived, in-file analytics. Right now, nvim-orgmode already has all the primitives components required for this.
- CLOCK entries with LOGBOOK support
- Accurate duration computation
- Agenda clock reports via
<space>oaR - Formatting via
gqgq - Scope resolution via
org_agenda_files
What’s missing is the Glue the dynamic block evaluator that lets a file contain a projection of its own data.
In Emacs Org:
#+BEGIN: clocktable :scope file
#+END:
generates an in-file table by:
- Scanning CLOCK entries in the requested scope (file, subtree, etc.)
- Aggregating by headline
- Computing totals
- Rendering a table in place
raw facts → derived views in the same document by this clocktable feature.
In nvim-orgmode, the same data already exists and is already aggregated in Agenda. The engine that computes clock reports exists. The missing piece is exposing that engine as a dynamic block renderer inside files.
Proposed minimal MVP:
- Recognize blocks of the form:
#+BEGIN: clocktable :scope file
#+END:
- Add a command (e.g.
:Org CreateDynamicClockTableor:Org UpdateDynamicClockTable) that parses the block. - Calls the existing clock-report logic.
- Replaces the block body with a rendered table
Even a first version that supports only:
:scope file- `:scope subtree'
would unlock a major part of Org’s workflow.
This is not a “nice-to-have”.
It is one of Org’s core features, and nvim-orgmode already has 90% of the machinery. Implementing this would complete the loop between logging and reflection inside the same document.