diff options
| author | Craig Jennings <c@cjennings.net> | 2026-06-29 08:42:10 -0400 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-06-29 08:42:10 -0400 |
| commit | dc457ce89a3e78e78d56d6380ef699c05a744137 (patch) | |
| tree | e6049a44b70e61a960806b90d74dd039f689b407 /modules/org-agenda-config.el | |
| parent | def740f809db9ebaf0774e5c8f5d7541f07343b5 (diff) | |
| download | dotemacs-dc457ce89a3e78e78d56d6380ef699c05a744137.tar.gz dotemacs-dc457ce89a3e78e78d56d6380ef699c05a744137.zip | |
feat(completion): annotate the file-basename pickers with size and date
Eight completing-read pickers listed bare file basenames, so marginalia had no directory to resolve and couldn't annotate them. Add cj/completion-file-annotator to system-lib — an annotation-function factory that takes a candidate->path resolver and yields a size + modification-date suffix (or "dir" for directories, nil for missing files). Wire each picker through cj/completion-table-annotated with a per-site category and resolver: timer sounds, drill flashcards, Info files, the test-runner focus add/remove, vc clone dirs, hugo drafts, and agenda projects (the project's todo.org mtime). music-config's existing completion table gains the category and annotator inline, keeping its sort metadata.
The candidate strings and every return value are unchanged — this only adds completion metadata — so all downstream logic is untouched. The six modules that didn't already pull in system-lib now require it.
Tests: cj/completion-file-annotator gets Normal/Boundary/Error coverage (file, directory, nil path, missing file). Full suite green at 5394.
Claude-Session: https://claude.ai/code/session_014fyKMTTqLrZpL3rDF3dYc3
Diffstat (limited to 'modules/org-agenda-config.el')
| -rw-r--r-- | modules/org-agenda-config.el | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/modules/org-agenda-config.el b/modules/org-agenda-config.el index 51f26909..207c286e 100644 --- a/modules/org-agenda-config.el +++ b/modules/org-agenda-config.el @@ -245,7 +245,16 @@ scoped to that project's todo.org plus calendars, schedule, and inbox." (file-exists-p (expand-file-name "todo.org" dir)))) all-dirs)) (project-names (mapcar #'file-name-nondirectory project-dirs)) - (chosen (completing-read "Show agenda for project: " project-names nil t)) + (chosen (completing-read + "Show agenda for project: " + (cj/completion-table-annotated + 'cj-agenda-project + (cj/completion-file-annotator + (lambda (c) + (expand-file-name "todo.org" + (expand-file-name c projects-dir)))) + project-names) + nil t)) (todo-file (expand-file-name "todo.org" (expand-file-name chosen projects-dir))) (org-agenda-files (cons todo-file (cj/--org-agenda-base-files)))) |
