ivy-todo icon indicating copy to clipboard operation
ivy-todo copied to clipboard

Manage org-mode TODOs with ivy

#+TITLE:ivy-todo [[http://melpa.org/#/ivy-todo][file:http://melpa.org/packages/ivy-todo-badge.svg]]

With =ivy-todo= you can add or modify items in your [[http://orgmode.org][org-mode]] TODO lists using [[https://github.com/abo-abo/swiper][ivy]]. The primary use case is to quickly edit TODO items in the project you're currently working on, =ivy-todo= tries to figure out your project's name using [[https://github.com/bbatsov/projectile][projectile]] or [[https://github.com/technomancy/find-file-in-project][find-file-in-project]] or [[https://www.gnu.org/software/emacs/manual/html_node/emacs/Version-Control.html][vc.el]] (requires Emacs 25 or greater).

  • Setup

You could download =ivy-todo= from Melpa, or add =ivy-todo.el= to your load-path and require it in your init file. You might want to change the variable =ivy-todo-file= (defaults to /ivy-todo.org/ in your =org-directory=). If you do not want =ivy-todo= to guess which TODO list to use, put =(setq ivy-todo-guess-list nil)= in your init file. Example setup using [[https://github.com/jwiegley/use-package][use-package]]:

#+BEGIN_SRC emacs-lisp (use-package ivy-todo :ensure t :bind ("C-c t" . ivy-todo) :commands ivy-todo :config (setq ivy-todo-default-tags '("PROJECT"))) #+END_SRC

The variable =ivy-todo-default-tags= can be used to set a list of tags which will be applied to new project lists (it is =nil= by default).

  • Usage

Each level 1 headline in your =ivy-todo-file= is considered a TODO list. Use =M-x ivy-todo= (or bind it to a key) to manipulate the items. To change TODO list, use the universal argument (=C-u M-x ivy-todo=). To change =ivy-todo-file= use double universal argument (=C-u C-u M-x ivy-todo=).

The default ivy action is to modify the TODO state of the chosen item. You can choose different actions by using =M-o= (by default) in the ivy buffer.