Manage org-mode TODOs for your projectile projects
#+ATTR_HTML: title="Join the chat at https://gitter.im/IvanMalison/org-projectile" [[https://github.com/colonelpanic8/org-project-capture/actions/workflows/build.yml][file:https://github.com/colonelpanic8/org-project-capture/actions/workflows/build.yml/badge.svg]] [[https://gitter.im/IvanMalison/org-project-capture?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge][file:https://badges.gitter.im/Join%20Chat.svg]] [[http://melpa.org/#/org-project-capture][file:http://melpa.org/packages/org-project-capture-badge.svg]] [[http://stable.melpa.org/#/org-project-capture][file:http://stable.melpa.org/packages/org-project-capture-badge.svg]]
org-project-capture
integrates org-mode
TODOs with both projectile
and project.el
. This permits the maintenance of TODO lists for specific projects.
** Installation
Install using the package instructions for your Emacs setup. If you're using MELPA:
#+BEGIN_SRC emacs-lisp M-x package-install org-project-capture #+END_SRC
For those intending to use the projectile
backend, also install org-projectile
:
#+BEGIN_SRC emacs-lisp M-x package-install org-projectile #+END_SRC
** Setup
*** Backend Selection
You need to set the backend for org-project-capture
using its class-based structure.
For project.el
:
#+BEGIN_SRC emacs-lisp (setq org-project-capture-default-backend (make-instance 'org-project-capture-project-backend)) #+END_SRC
If using projectile
via org-projectile
:
#+BEGIN_SRC emacs-lisp (setq org-project-capture-default-backend (make-instance 'org-project-capture-projectile-backend)) #+END_SRC
*** File Configuration
Specify the location for storing project-specific TODOs:
#+BEGIN_SRC emacs-lisp (setq org-project-capture-projects-file "~/org/projects.org") #+END_SRC
*** Keybindings
Establish a keybinding for easy capturing:
#+BEGIN_SRC emacs-lisp (global-set-key (kbd "C-c n p") 'org-project-capture-project-todo-completing-read) #+END_SRC
*** Capture Strategy
Determine if TODOs should be in a single file or across individual projects:
#+BEGIN_SRC emacs-lisp (org-project-capture-single-file) ;; OR (org-project-capture-per-project) #+END_SRC
**** Combine both strategies, but prefer single file (projects will only use their own file if they already have one) #+BEGIN_SRC emacs-lisp (setq org-project-capture-strategy (make-instance 'org-project-capture-combine-strategies :strategies (list (make-instance 'org-project-capture-single-file-strategy) (make-instance 'org-project-capture-per-project-strategy)))) #+END_SRC
** use-package
Configuration
For those utilizing use-package
, here's a streamlined setup:
#+BEGIN_SRC emacs-lisp (use-package org-project-capture :bind (("C-c n p" . org-project-capture-project-todo-completing-read)) :ensure t :config (progn (setq org-project-capture-backend (make-instance 'YOUR-CHOSEN-BACKEND)) ; Replace with your backend of choice (setq org-project-capture-projects-file "~/org/projects.org") (org-project-capture-single-file)) #+END_SRC
** Customization
There are numerous customization options for org-project-capture
:
#+BEGIN_SRC emacs-lisp M-x customize-group RET org-project-capture RET #+END_SRC