aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-06-20 12:11:06 -0400
committerCraig Jennings <c@cjennings.net>2026-06-20 12:11:06 -0400
commit654d1a0c6f4acd05ca88ea30bf304ac008fd2f7a (patch)
tree0b3633194ba924e8e5f8c4f14c029c75d4b3c453 /modules
parent2b257d426f5e98219cdd6ac191d259b74a31d87e (diff)
downloaddotemacs-654d1a0c6f4acd05ca88ea30bf304ac008fd2f7a.tar.gz
dotemacs-654d1a0c6f4acd05ca88ea30bf304ac008fd2f7a.zip
refactor(org-agenda): extract the agenda base-file list
The fixed base list (inbox, schedule, and the three calendars) was spelled out as a literal in cj/--org-agenda-scan-files, cj/todo-list-single-project, and the chime initializer. Extract cj/--org-agenda-base-files so adding a calendar source is a one-place change; the single-project view prepends its todo.org with cons. Adds a test for the helper's contents and order.
Diffstat (limited to 'modules')
-rw-r--r--modules/org-agenda-config.el15
1 files changed, 10 insertions, 5 deletions
diff --git a/modules/org-agenda-config.el b/modules/org-agenda-config.el
index 704eaac9a..d5d610f27 100644
--- a/modules/org-agenda-config.el
+++ b/modules/org-agenda-config.el
@@ -179,11 +179,18 @@ Only checks DIRECTORY/*/todo.org — does not recurse deeper."
;; builds the org agenda list from all agenda targets with caching.
;; agenda targets is the schedule, contacts, project todos,
;; inbox, and org roam projects.
+(defun cj/--org-agenda-base-files ()
+ "Return the fixed base files for the agenda: inbox, schedule, and calendars.
+The single source of the base list shared by the agenda builders and the chime
+initializer, so adding a calendar source is a one-place change. Per-project
+todo.org files are layered on separately."
+ (list inbox-file schedule-file gcal-file pcal-file dcal-file))
+
(defun cj/--org-agenda-scan-files ()
"Scan disk for the agenda files list. Pure-ish: no caching, no logging.
Returns the list to assign to `org-agenda-files'. Slow -- walks
`projects-dir' for per-project todo.org files."
- (let ((files (list inbox-file schedule-file gcal-file pcal-file dcal-file)))
+ (let ((files (cj/--org-agenda-base-files)))
;; cj/add-files-to-org-agenda-files-list mutates org-agenda-files; let-bind
;; it for the duration of the helper, then return whatever it produced.
(let ((org-agenda-files files))
@@ -262,9 +269,7 @@ scoped to that project's todo.org plus calendars, schedule, and inbox."
(chosen (completing-read "Show agenda for project: " project-names nil t))
(todo-file (expand-file-name "todo.org"
(expand-file-name chosen projects-dir)))
- (org-agenda-files (list todo-file
- inbox-file schedule-file
- gcal-file pcal-file dcal-file)))
+ (org-agenda-files (cons todo-file (cj/--org-agenda-base-files))))
(org-agenda "a" "d")))
(global-set-key (kbd "C-<f8>") #'cj/todo-list-single-project)
@@ -424,7 +429,7 @@ This allows a line to show in an agenda without being scheduled or a deadline."
:init
;; Initialize org-agenda-files with base files before chime loads
;; The full list will be built asynchronously later
- (setq org-agenda-files (list inbox-file schedule-file gcal-file pcal-file dcal-file))
+ (setq org-agenda-files (cj/--org-agenda-base-files))
;; Debug mode (keep set to nil, but available for troubleshooting)
(setq chime-debug nil)