A TODO.org file is one of the first things I create when starting a new project. I use this file to organize all of the project's milestones and tasks, as well as to track time spent on different items.
One disadvantage with this approach is that scheduled tasks will not appear in
org-agenda without adding the TODO.org's path to
this by hand can be tedious, especially with a lot of projects.
- I can jump to the TODO list for a project quickly.
- I can capture tasks for the current project with a few key presses.
- All of my project TODO.org files can be added to my agenda with a few lines of code. This makes scheduling project tasks much easier.
I made a couple of changes to integrate it better with my setup. By default
org-projectile adds every registered
projectile project, but not everything
projectile has a TODO.org file.
This small function filter the list to only projects that exist:
(defun sodaware/org-projectile-todo-files () "Fetch a list of org TODO files for projects that actually exist." (seq-filter #'file-exists-p (org-projectile-todo-files))) ;; Add org-projectile files to org. (setq org-agenda-files (append org-agenda-files (sodaware/org-projectile-todo-files)))
I also created a helper function to open the TODO.org file for the current project:
(defun sodaware/org-projectile-goto-project-file () "Open the TODO.org file for the current project." (interactive) (org-projectile-goto-location-for-project (projectile-project-name)))
org-projectile configuration looks like this:
(use-package org-projectile :after (org) :config (org-projectile-per-project) :custom (org-projectile-per-project-filepath "TODO.org")) (use-package org-projectile-helm :after org-projectile :bind (("C-c n p" . org-projectile-helm-template-or-project) ("C-c p O" . sodaware/org-projectile-goto-project-file)))