nvim-orgmode / nvim-orgmode/orgmode

Implement #+BEGIN: clocktable dynamic block

Open
#1,089 2 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
Lua
Stars
3.9k
Forks
190
Avg merge
2d 13h
Merged PRs (30d)
7

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:

  1. Scanning CLOCK entries in the requested scope (file, subtree, etc.)
  2. Aggregating by headline
  3. Computing totals
  4. 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:
  1. Recognize blocks of the form:
#+BEGIN: clocktable :scope file
#+END:
  1. Add a command (e.g. :Org CreateDynamicClockTable or :Org UpdateDynamicClockTable ) that parses the block.
  2. Calls the existing clock-report logic.
  3. Replaces the block body with a rendered table

Even a first version that supports only:

  1. :scope file
  2. `: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.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by tracing the existing agenda clock-report logic and scope resolution through org_agenda_files. Define how clocktable blocks are recognized and updated, then verify that :scope file and :scope subtree produce rendered tables in place from the existing clock data.

Written by the indexing model from the issue text.

Assessment

Tech stack
lua
Domain
tooling
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.