From 2daf19249c4513fb196ae0d0de9c771859f135ea Mon Sep 17 00:00:00 2001 From: Daniel Borchmann Date: Sat, 10 Dec 2022 10:48:30 +0100 Subject: [PATCH] Add experimental NOT_BEFORE filter to custom agenda views This is supposed to be the dual to DEADLINE, and shall someday release the SCHEDULED property from its semantics to not display things before a certain date (then the SCHEDULED property can be solely used to mean that things should be done on a specific date). However, the NOT_BEFORE property needs some more consistency checks, as otherwise items that have a NOT_BEFORE property that's too far in the future may be overlooked. Is this something for the monthly review? --- init.el | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/init.el b/init.el index b164344..9cd6fbb 100644 --- a/init.el +++ b/init.el @@ -1158,14 +1158,14 @@ respectively." "" ((org-agenda-entry-types '(:timestamp :sexp :scheduled :deadline)) (org-deadline-warning-days 0))) - (tags-todo "TODO={CONT\\|ATTN}-HOLD-TIMESTAMP>=\"\"-SCHEDULED>=\"\"" + (tags-todo "TODO={CONT\\|ATTN}-HOLD-TIMESTAMP>=\"\"-SCHEDULED>=\"\"-NOT_BEFORE>=\"\"" ((org-agenda-overriding-header "Things to do next (Task shortlist and WIP, TODO ∈ {CONT,ATTN}, not scheduled now or in the future)"))) (db/org-agenda-list-deadlines "" ((org-agenda-overriding-header "Deadlines") (org-agenda-sorting-strategy '(deadline-up priority-down)) (org-deadline-warning-days 30))) - (tags-todo "TODO<>\"CONT\"-HOLD-SOMEWHEN-DATE-WAIT-TEMPLATE-SCHEDULED>=\"\"" + (tags-todo "TODO<>\"CONT\"-HOLD-SOMEWHEN-DATE-WAIT-TEMPLATE-SCHEDULED>=\"\"-NOT_BEFORE>=\"\"" ((org-agenda-overriding-header "Next Actions List (not WIP, not scheduled now or in the future)") (org-tags-match-list-sublevels t))))) @@ -1179,10 +1179,13 @@ respectively." ("C" "Checks" ((tags "TODO=\"\"-HOLD-SOMEWHEN-DATE-PERIODIC-NOTE-NOP-TOPIC-TEMPLATE-GOAL" - ((org-agenda-overriding-header "Goals (i.e., complex tasks) not marked with GOAL"))))) + ((org-agenda-overriding-header "Goals (i.e., complex tasks) not marked with GOAL"))) + ;; TODO: add check that NOT_BEFORE is always before DEADLINE and before SCHEDULED + ;; TODO: add check for items whose NOT_BEFORE is too far in the future + )) ("U" "Unsupervised (Waiting, Missed Appointments, Hold)" - ((tags-todo "WAIT-HOLD-SOMEWHEN-SCHEDULED>=\"\"" + ((tags-todo "WAIT-HOLD-SOMEWHEN-SCHEDULED>=\"\"-NOT_BEFORE>=\"\"" ((org-agenda-overriding-header "Waiting For List"))) (tags-todo "DATE-TIMESTAMP>=\"\"" ((org-agenda-overriding-header "Missed appointments (DATEs with timestamp in the past)"))) @@ -1194,9 +1197,9 @@ respectively." ("S" "Somewhen (Do if nothing else to do, i.e., personal backlog)" - ((tags "TAGS={SOMEWHEN}+TODO=\"\"-TAGS={NOP\\|TOPIC}-PERIODIC-DATE-SCHEDULED>=\"\"" + ((tags "TAGS={SOMEWHEN}+TODO=\"\"-TAGS={NOP\\|TOPIC}-PERIODIC-DATE-SCHEDULED>=\"\"-NOT_BEFORE>=\"\"" ((org-agenda-overriding-header "Open Tasks to do SOMEWHEN (no TODO keyword, no PERIODIC, no DATE, no now or future SCHEDULED)"))) - (tags-todo "SOMEWHEN" + (tags-todo "SOMEWHEN-NOT_BEFORE>=\"\"" ((org-agenda-overriding-header "Things To Do SOMEWHEN") (org-agenda-todo-ignore-with-date t) (org-tags-match-list-sublevels nil))))) @@ -1204,11 +1207,11 @@ respectively." ("P" "Current Projects and Topics" ((stuck "" ((org-agenda-overriding-header "Stuck Complex Tasks"))) - (tags "TAGS={NOTE}-TODO={CANC\\|DONE\\|MRGD}-HOLD-NOP-SCHEDULED>=\"\"" + (tags "TAGS={NOTE}-TODO={CANC\\|DONE\\|MRGD}-HOLD-NOP-SCHEDULED>=\"\"-NOT_BEFORE>=\"\"" ((org-agenda-overriding-header "Project Notes (items explicitly tagged with NOTE but not NOP, not scheduled now or in the future)"))) - (tags "TAGS={TOPIC}-TODO={DONE\\|CANC\\|MRGD}-SCHEDULED>=\"\"-HOLD-WAIT" + (tags "TAGS={TOPIC}-TODO={DONE\\|CANC\\|MRGD}-SCHEDULED>=\"\"-HOLD-WAIT-NOT_BEFORE>=\"\"" ((org-agenda-overriding-header "Topics"))) - (tags "TAGS={PERIODIC}-TODO={DONE\\|CANC\\|MRGD}-HOLD-SCHEDULED>=\"\"-HOLD-WAIT" + (tags "TAGS={PERIODIC}-TODO={DONE\\|CANC\\|MRGD}-HOLD-SCHEDULED>=\"\"-HOLD-WAIT-NOT_BEFORE>=\"\"" ((org-agenda-overriding-header "Periodic Projects (PERIODIC, not scheduled in the future, not done, not on hold)"))))) ("W" "Weekly Review"