aboutsummaryrefslogtreecommitdiff
path: root/modules/org-agenda-config.el
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-13 20:14:41 -0500
committerCraig Jennings <c@cjennings.net>2026-05-13 20:14:41 -0500
commit9a8a2096303c702f86f5175cb332e0938dd420d0 (patch)
tree30d989a28a2d1904f5f32f8abb28aa596a0030da /modules/org-agenda-config.el
parent541318c8f0747c1784cae9e429ea7120316961ca (diff)
downloaddotemacs-9a8a2096303c702f86f5175cb332e0938dd420d0.tar.gz
dotemacs-9a8a2096303c702f86f5175cb332e0938dd420d0.zip
feat(org-agenda): add VERIFICATION and IN-PROGRESS blocks around SCHEDULE
The main "d" agenda view grows two new blocks. A VERIFICATION block lists tasks in the VERIFY TODO state, placed just above the day's SCHEDULE. An IN-PROGRESS block lists tasks in the DOING TODO state, placed just under SCHEDULE. The full block order is now: OVERDUE -> HIGH PRIORITY -> VERIFICATION -> SCHEDULE -> IN-PROGRESS -> PRIORITY B. Scope matches the other blocks (every entry in `org-agenda-files`). Scheduled and deadlined entries are included -- a VERIFY task with a date appears in both VERIFICATION and SCHEDULE, mirroring how HIGH PRIORITY behaves. Habits are skipped via `cj/org-skip-subtree-if-habit`; PROJECT-keyword parents wouldn't match `(todo "VERIFY")` exact-state filters anyway, so no extra skip there. Two new header defvars (`cj/main-agenda-verify-title`, `cj/main-agenda-doing-title`) for symmetry with the existing four. Both blocks reference the shared `cj/--main-agenda-prefix-format` so a format tweak still lands in one place. Five new tests in `test-org-agenda-config-skip-functions.el` lock the block order, each new block's header / prefix-format / skip-function, and the include-scheduled-entries contract.
Diffstat (limited to 'modules/org-agenda-config.el')
-rw-r--r--modules/org-agenda-config.el25
1 files changed, 22 insertions, 3 deletions
diff --git a/modules/org-agenda-config.el b/modules/org-agenda-config.el
index 9ff2fd72..9e64a04b 100644
--- a/modules/org-agenda-config.el
+++ b/modules/org-agenda-config.el
@@ -279,11 +279,22 @@ If the current buffer isn't an org buffer, inform the user."
(defvar cj/main-agenda-tasks-title "PRIORITY B"
"String to announce the schedule section of the main agenda.")
+(defvar cj/main-agenda-verify-title "VERIFICATION"
+ "String to announce the VERIFY section of the main agenda.
+Lists tasks in the VERIFY TODO state waiting on a manual check.
+Block sits above the day's schedule.")
+
+(defvar cj/main-agenda-doing-title "IN-PROGRESS"
+ "String to announce the DOING section of the main agenda.
+Lists tasks in the DOING TODO state -- work actively in flight.
+Block sits just under the day's schedule.")
+
(defvar cj/--main-agenda-prefix-format " %i %-15:c%?-15t% s"
"Prefix format string shared by all blocks of the main daily agenda.
-Inlined across the overdue / high-priority / schedule / priority-B
-blocks of `org-agenda-custom-commands' before the extraction. Keep
-the four blocks pointing here so a format tweak lands in one place.")
+Inlined across the overdue / high-priority / VERIFICATION / schedule /
+IN-PROGRESS / priority-B blocks of `org-agenda-custom-commands' before
+the extraction. Keep the six blocks pointing here so a format tweak
+lands in one place.")
(defun cj/org-skip-subtree-if-habit ()
"Skip an agenda entry if it has a STYLE property equal to \"habit\"."
@@ -342,6 +353,10 @@ KEYWORDS must be a list of strings."
((org-agenda-skip-function '(org-agenda-skip-entry-if 'todo 'done))
(org-agenda-overriding-header cj/main-agenda-hipri-title)
(org-agenda-prefix-format cj/--main-agenda-prefix-format)))
+ (todo "VERIFY"
+ ((org-agenda-skip-function 'cj/org-skip-subtree-if-habit)
+ (org-agenda-overriding-header cj/main-agenda-verify-title)
+ (org-agenda-prefix-format cj/--main-agenda-prefix-format)))
(agenda ""
((org-agenda-start-day "0d")
(org-agenda-span 8)
@@ -352,6 +367,10 @@ KEYWORDS must be a list of strings."
'(org-agenda-skip-entry-if 'todo '("CANCELLED")))
(org-agenda-overriding-header cj/main-agenda-schedule-title)
(org-agenda-prefix-format cj/--main-agenda-prefix-format)))
+ (todo "DOING"
+ ((org-agenda-skip-function 'cj/org-skip-subtree-if-habit)
+ (org-agenda-overriding-header cj/main-agenda-doing-title)
+ (org-agenda-prefix-format cj/--main-agenda-prefix-format)))
(alltodo ""
((org-agenda-skip-function '(or (cj/org-skip-subtree-if-habit)
(cj/org-skip-subtree-if-priority ?A)