2

I have a long list of inactive projects in my org agenda file.

I want to give each inactive project a date for next review, so I can spend less time on them, on average, in my weekly review.

I don't want the solution to this to cause:

  1. Items from inactive projects to show up in the global "List of all TODO entries" view (but switching to use some custom/special view instead of that might be OK, though I don't know how to do that yet). Currently I have no TODO items in my inactive projects.
  2. Calendar items for inactive projects to appear in the "Agenda for current week or day" view (again, creating a custom/special view for that instead might be OK).

How can I achieve that?

1

First:

  • Tag your active and inactive projects lists say :PROJECTS: and :INACTIVE: respectively
  • Mark each inactive project SCHEDULED: with the date when you want to next review it

Example:

* projects :PROJECTS:
** clean carpets
* inactive projects :INACTIVE:
** get better at org-agenda
SCHEDULED: <2018-11-03 Sat>
** take over the world
SCHEDULED: <2018-11-10 Sat>

Then, add a custom agenda view to list the inactive projects to review (the following makes use of this answer about how to filter based on SCHEDULED dates):

(defun my/org-agenda-skip-if-scheduled-later ()
  (ignore-errors
    (let ((subtree-end (save-excursion (org-end-of-subtree t)))
          (scheduled-seconds
           (time-to-seconds
            (org-time-string-to-time
             (org-entry-get nil "SCHEDULED"))))
          (now (time-to-seconds (current-time))))
      (and scheduled-seconds
           (>= scheduled-seconds now)
           subtree-end))))

(setq org-agenda-custom-commands
      '(("i" "Inactive projects review" tags "+INACTIVE+LEVEL=2"
         ((org-agenda-skip-function '(my/org-agenda-skip-if-scheduled-later))))
        ))

Finally, prevent the inactive projects appearing as calendar items in the global agenda view (based on this answer):

(defun my/org-agenda-list-exclude-tags-advice (orig-fn &rest args)
  (let ((org-agenda-tag-filter-preset '("-INACTIVE")))
    (funcall orig-fn args)))
(advice-add #'org-agenda-list :around #'my/org-agenda-list-exclude-tags-advice)

Note that, because I don't currently keep any TODO items in my inactive projects list, nothing above tries to exclude those from the global TODO list (it would probably be easiest to add another custom tags-todo view to exclude INACTIVE for that).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.