aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-04-09 21:04:11 -0500
committerCraig Jennings <c@cjennings.net>2026-04-09 21:04:11 -0500
commitc17c455be6a43effc3c6fb8d27ffd95bc96b3d8a (patch)
tree7a78ce2373dac3f00357092767168c224819627f
parent04addf42cff28e0099264f3e9a83843ea50286b8 (diff)
downloaddotemacs-c17c455be6a43effc3c6fb8d27ffd95bc96b3d8a.tar.gz
dotemacs-c17c455be6a43effc3c6fb8d27ffd95bc96b3d8a.zip
feat(agenda): add project-filtered agenda view on C-f8
New cj/todo-list-single-project prompts for a project, then shows the daily agenda scoped to that project's todo.org plus calendars and inbox. Moved cj/todo-list-all-agenda-files from C-f8 to s-f8.
-rw-r--r--assets/abbrev_defs9
-rw-r--r--modules/org-agenda-config.el33
2 files changed, 36 insertions, 6 deletions
diff --git a/assets/abbrev_defs b/assets/abbrev_defs
index 4d8c7134..50927804 100644
--- a/assets/abbrev_defs
+++ b/assets/abbrev_defs
@@ -240,14 +240,14 @@
("instaances" "instances" nil :count 0)
("inteligence" "intelligence" nil :count 0)
("intelligance" "intelligence" nil :count 0)
- ("jsut" "just" nil :count 6)
+ ("jsut" "just" nil :count 7)
("kernal" "kernel" nil :count 0)
("keybidning" "keybinding" nil :count 0)
("knwo" "know" nil :count 0)
("knwoing" "knowing" nil :count 0)
("knwoledgeable" "knowledgeable" nil :count 0)
("labelled" "labeled" nil :count 0)
- ("laer" "later" nil :count 2)
+ ("laer" "later" nil :count 3)
("lawyear" "lawyer" nil :count 0)
("liason" "liaison" nil :count 0)
("libaries" "libraries" nil :count 1)
@@ -303,7 +303,7 @@
("oppositiion" "opposition" nil :count 0)
("opppsite" "opposite" nil :count 0)
("orignal" "original" nil :count 0)
- ("ot" "to" nil :count 44)
+ ("ot" "to" nil :count 45)
("otehr" "other" nil :count 3)
("otes" "notes" nil :count 0)
("outgoign" "outgoing" nil :count 0)
@@ -404,7 +404,7 @@
("takss" "tasks" nil :count 3)
("talekd" "talked" nil :count 0)
("talkign" "talking" nil :count 6)
- ("teh" "the" nil :count 170)
+ ("teh" "the" nil :count 173)
("tehir" "their" nil :count 7)
("tehre" "there" nil :count 3)
("testimentary" "testamentary" nil :count 1)
@@ -419,6 +419,7 @@
("ture" "true" nil :count 0)
("twelth" "twelfth" nil :count 0)
("tyrany" "tyranny" nil :count 0)
+ ("tyrrany" "tyranny" nil :count 0)
("uers" "users" nil :count 0)
("ultimtely" "ultimately" nil :count 0)
("underate" "underrate" nil :count 0)
diff --git a/modules/org-agenda-config.el b/modules/org-agenda-config.el
index 36a3c139..f68bb4ca 100644
--- a/modules/org-agenda-config.el
+++ b/modules/org-agenda-config.el
@@ -28,7 +28,11 @@
;; - the weekly schedule, including the habit consistency graph
;; - all priority B tasks
;;
-;; C-f8 - TASK LIST containing all tasks from all agenda targets.
+;; C-f8 - PROJECT AGENDA showing the main agenda filtered to a single project.
+;; Prompts for project selection, then shows overdue/hi-pri/schedule/B tasks
+;; scoped to that project's todo.org plus all calendars and inbox.
+;;
+;; s-f8 - TASK LIST containing all tasks from all agenda targets.
;;
;; M-f8 - TASK LIST containing all tasks from just the current org-mode buffer.
;;
@@ -184,7 +188,32 @@ files that have project in their filetag."
(interactive)
(cj/build-org-agenda-list)
(org-agenda "a" "t"))
-(global-set-key (kbd "C-<f8>") #'cj/todo-list-all-agenda-files)
+(global-set-key (kbd "s-<f8>") #'cj/todo-list-all-agenda-files)
+
+;; ----------------------- Agenda List Single Project --------------------------
+;; an agenda showing the main daily view filtered to a single project.
+
+(defun cj/todo-list-single-project ()
+ "Display the main agenda filtered to a single project.
+Prompts for a project from ~/projects/ (only those containing todo.org),
+then shows the daily agenda (overdue, high-pri, schedule, priority B)
+scoped to that project's todo.org plus calendars, schedule, and inbox."
+ (interactive)
+ (let* ((all-dirs (directory-files projects-dir t "^[^.]"))
+ (project-dirs (seq-filter
+ (lambda (dir)
+ (and (file-directory-p dir)
+ (file-exists-p (expand-file-name "todo.org" dir))))
+ all-dirs))
+ (project-names (mapcar #'file-name-nondirectory project-dirs))
+ (chosen (completing-read "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 "a" "d")))
+(global-set-key (kbd "C-<f8>") #'cj/todo-list-single-project)
;; ------------------------- Agenda List Current Buffer ------------------------
;; an agenda listing tasks from just the current buffer.