(please remove leading spaces from code excerpts)
You’d like to use the Org Mode for Emacs to manage your tasks. In this
blog post, I’ll cover the absolute minimum you need to get started.
We’ll assume that you already have GNU Emacs 22 and that you’re reasonably
familiar with using Emacs, including installing external modules and
adding them to your load path.
There are a million ways to plan, but we’re going to focus on two. The
first approach is Getting Things Done (GTD), described by David Allen
in the book of the same title. GTD focuses on next actions (the very
next thing you can do) and uses context lists to keep things
manageable. Popular ways to do GTD are with index cards, recycled
business cards, or software programs. If most of your tasks are in
your head or scattered on scraps of paper, GTD will probably give you
the most organizational bang for the least effort.
The second approach is day planning. You plan your week based on your
projects and priorities, write your tasks onto the pages for each day,
and copy unfinished tasks over to the next day. If you’ve used one of
those Filofax, Franklin-Covey or Dayrunner personal organizers, you’re
probably used to this way of planning.
As you learn more about Emacs and task management, you’ll probably
develop your own way of doing things. These two are a good place to
start, though. (Don’t recognize how you plan your day, but
interested in using Emacs anyway? Please get in touch with me! I may
know of something that fits, and I’d certainly love to hear about the
way you work.)
If you use GTD, read on. Otherwise, read the Setup and then wait for
the next blog post! =)
Org is part of Emacs 22. To make it even easier to collect tasks and
notes, install a separate package called Remember.
First, download and unpack Remember. As of this writing, Remember is
at version 1.9. You can get the TAR.GZ from
http://download.gna.org/remember-el/remember-1.9.tar.gz or the ZIP
archive from http://download.gna.org/remember-el/remember-1.9.zip . If
these instructions are out of date, check
http://www.emacswiki.org/cgi-bin/wiki/RememberMode to find out where to get Remember.
Then add this basic configuration for Org and Remember to your ~/.emacs,
(add-to-list 'load-path "~/elisp/remember-1.9") ;; (1) (require 'remember-autoloads) (setq org-remember-templates '(("Tasks" ?t "* TODO %?\n %i\n %a" "~/organizer.org") ;; (2) ("Appointments" ?a "* Appointment: %?\n%^T\n%i\n %a" "~/organizer.org"))) (setq remember-annotation-functions '(org-remember-annotation)) (setq remember-handler-functions '(org-remember-handler)) (eval-after-load 'remember '(add-hook 'remember-mode-hook 'org-remember-apply-template)) (global-set-key (kbd "C-c r") 'remember) ;; (3) (require 'org) (add-to-list 'auto-mode-alist '("\\.org$" . org-mode)) ;; (4) (global-set-key (kbd "C-c a") 'org-agenda) ;; (5) (setq org-todo-keywords '("TODO" "STARTED" "WAITING" "DONE")) ;; (6) (setq org-agenda-include-diary t) ;; (7) (setq org-agenda-include-all-todo t) ;; (8)
After you evaluate that code by calling M-x eval-buffer or restarting Emacs, you’re ready to create an Org file.
Read on to find out how to use your new Org file for GTD, or skip ahead to the section on Day Planning to find out how to plan by day!
So you’ve read David Allen’s book about Getting Things Done (or any of
the countless summaries of it on the Net), and you’d like to get
started with Emacs and Org mode. I’ll show you the bare minimum you
need to support the five phases in the GTD task workflow:
|Collect||Capture everything you need to do.||Collect all your bits of paper or put everything into your inbox|
|Process||Actionable? Yes: do, delegate, or defer; no: file, throw, or incubate||Put tasks on your list, track delegated tasks|
|Organize||Next actions, projects, waiting for, someday/maybe||Tag tasks, view tasks by tag|
|Review||Daily, weekly, etc.||Agenda view|
|Do||Actually do the work!||No, Emacs won’t do the work for you… (But it can brew coffee!)|
The first thing you need to do is get all the tasks out of your head,
off scraps of paper, out of your e-mail, and so on. If this is the
first time you’re putting tasks into Org, you have a lot of tasks to
collect. The best way to collect lots of tasks is to open your Org
agenda file (~/organizer.org) and put this heading at the end of the
Now go to the end of the file, and type in ** TODO and the first task
you can think of, like this:
** TODO Buy milk
Press C-M-RET and keep typing other tasks. Keep going until you’ve
gone through all the things in your head and all the scraps of paper
lying around. Do not get distracted. Your goal is to write all the
tasks down. If you are as easily distracted as I am, do not even open
up a browser window or look at your e-mail. It can be a real struggle
sometimes to focus long enough to get everything down, especially when
you’re writing down all these tasks that you can work on. DO NOT DO A
TASK UNLESS IT TAKES LESS THAN TWO MINUTES TO DO. In fact, if you are
just starting out with GTD, you might find it better to resist all
temptations to do tasks during this step. Get it all out.
Now that you’ve gotten your tasks out of your head and into your
organizer.org file, breathe. There’s less stress in your brain now,
because you don’t have to worry about forgetting things (as long as
you remember to check your Org file, that is!).
DO NOT FILL YOUR BRAIN BACK UP WITH OTHER THINGS TO DO. The brain is a
wonderful thing, but it’s not good at remembering what you need to do.
Whenever a task comes your wayâ€”through e-mail, in conversation, in
the showerâ€”put it in your ~/organizer.org. Well, you probably don’t
want to drip all over the computer, so sometimes you’ll need to hang
on to an ideaâ€”but get it out of your head and into your organizer as
quickly as possible.
To collect tasks within Emacs as they come up, use Remember. With the
basic configuration you set up in the previous section, you can use
C-c r t (or M-x remember and “t” for the Tasks template) to pop up a
buffer where you can type in the task description and some notes.
## Filing location: Select interactively, default, or last used: ## C-u C-c C-c to select file and header location interactively. ## C-c C-c "~/notebook/personal/organizer.org" -> "* Tasks" ## C-u C-u C-c C-c "???" -> "* ???" ## To switch templates, use `M-x org-remember'. * TODO
And if you’re lucky, there will even be a hyperlink to the file or
e-mail you were looking at when you called C-c r t (remember, tasks).
If you brain-dump your tasks and use C-c r t to collect tasks as they
come up, you can free up your brain for other things, such as
contemplating the meaning of life.
Now that you’ve collected all those tasks into your inbox, you can
process them. Open your Org agenda file and go to your inbox.
For every item there, decide if it’s something that you need to act
on. Is it really just a note? If so, take out the TODO keyword and
organize it like you would store other notes. If it’s a true-blue
task, decide if it’s something you can do within the next two minutes,
delegate to someone else, or leave on your task list. Go through your
list systematically, delegating and eliminating whenever possible.
If you delegate the task, change it to WAITING by moving your cursor
to the headline with the TODO keyword and typing S-r (org-shiftright)
until it changes to WAITING. To keep track of who you delegated it to,
just edit the task description to reflect it. Your organizer file will
look like this:
** WAITING Buy milk - WJY
You have a list of tasks that _you_ need to act on. If you’ve
braindumped everything that people have asked you to do and that
you’ve thought of doing, this is probably a very long list.
Intimidatingly long. The next step in restoring sanity to your life is
to organize your list into next actions, projects, things you’re
waiting for, and someday/maybe tasks.
Review that task list. For each task, decide if it’s something you can
do immediately. Is it something you can do in one sitting, and do you
have everything you need in order to do it? If so, great! It’s a next
action. Leave it on your task list.
If you can’t immediately work on a task, it may be a project in
disguise, and it needs to be broken down into smaller, concrete next
actions. For example, the task:
** TODO Write a book about Emacs
would probably result in me getting complete writer’s block. If you’re
faced with a big task like this, move it out of your inbox and make it
a project. Then you can think of the very next action you need to do.
Your Org file could look something like this:
* Projects ** Emacs book *** TODO Write about basic Org and GTD * Inbox ** TODO ... lots of other things go here ... ** TODO ... lots of other things go here ... ** TODO ... lots of other things go here ...
A task might also be stuck because you need to wait for someone else.
For example, I’m currently working on renewing my visa, but I need to
wait for the embassy. Mark those stuck tasks as WAITING with S-right
Someday/maybe tasks are nice to think about once in a while, but you
don’t want to clutter your day-to-day tasks with them. A basic way to
deal with this is to move those tasks into a separate Organizer file
such as ~/someday.org . Another is to use tags, which we’ll cover in
the section on intermediate Org. For now, just move them to another
You’ve gone from a whole bunch of tasks in your brain and on pieces of
paper to one text file containing everything you need to do, with an
easy way to get to just the things you can do right now. To view all
your tasks, type C-c a t (org-agenda, tasks). You’ll get something
that looks like this:
Global list of TODO items of type: ALL Available with `N r': (0)ALL (1)TODO (2)STARTED (3)WAITING (4)DONE TODO Write about basic Org and GTD TODO Blog TODO Answer my mail TODO Alter slacks ...
Type “1 r” to show only the active tasks, and review what you’re
waiting for with “3 r”. Review this WAITING list every so often
to make sure that nothing falls through the cracks.
Type “f” to start follow mode, which displays the relevant lines from
your Org agenda file as you move around. This is helpful for quickly
reviewing your task list.
All of the above should take you less than fifteen minutes of planning
each day. The rest of the time, you can focus on doing the work,
undistracted by shiny new tasks that pop up because you can get them
out of your way with C-c r t.
To work, review your task list with either C-c a t (org-agenda, tasks)
or C-a a (org-agenda, agenda). From the agenda view, type “t”
(org-agenda-todo) to change the task status. I find it helpful to mark
a task as STARTED because it helps me remember what I was working on
in case I get distracted by something urgent, but you can also use C-u
t to jump to a status without cycling through the ones in between
(say, marking a task as DONE). You can also press ENTER to jump to the
task headline and edit it directly.
Going back to reviews: As you mark tasks done, you’ll also want to do
daily and weekly reviews. You can see those with C-c a a (org-agenda,
org-agenda-list), which opens an Org agenda view. To see completed
tasks in the Org agenda view, type l (org-agenda-log-mode). To switch
to the day view, type d (org-agenda-day-view). To switch to the week
view, type w (org-agenda-week-view). The basic configuration I’ve
suggested here will automatically include unfinished tasks at the
beginning of the agenda. Scroll up to review your tasks, and press
ENTER on a line to jump to it.
There’s a lot more you can do with Org to make it support GTD, but
here’s a basic configuration that can get you started on collecting,
processing, organizing, managing, and actually doing your tasks. Stay
tuned for the intermediate Org article for more tips on setting up
repeated tasks, clocking time, working with projects, and tagging
Random Emacs symbol: bbdb-edit-current-field – Command: Edit the contents of the Insidious Big Brother Database field displayed on
UPDATE: Thanks, Victor, for catching the bug! Changed org-install to org.
If you’re the kind of person who likes scribbling free-form tasks and
notes in your day planner, then Planner might be a good fit for you.
In this blog post, I’ll show you how to use Planner to organize the
things you need to do by the day you need to do them, check the things
you need to do, mark tasks complete, and review what you’ve finished.
I assume that you’ve already got GNU Emacs 22 installed and that
you’re comfortable with using Emacs as a text editor, although it
might not yet be your way of life. (Just you wait! Planner was the
thing that pushed me over the edge. ;) )
Here’s the bare minimum you need in order to use Planner to manage
your tasks day by day. You’ll need Planner, which is a separate
package that you can get from http://www.gna.org/projects/planner-el
. As of this writing, Planner is at version 3.41. You’ll also need
Muse, the markup engine that Planner is based on. You can get Muse
from https://gna.org/projects/muse-el . As of this writing, Muse is at
Download the latest versions of Planner and Muse, and unpack them. If
you don’t know where to unpack them, I suggest creating an ~/elisp
directory and extracting the archives to that directory. You should
end up with two new directories: ~/elisp/planner-3.41 and
Here’s how to configure Planner:
1. Create a directory such as ~/Plans . This is where your Planner pages will be.
2. Add the following to your .emacs:
;; Load paths - change as necessary (add-to-list 'load-path "~/elisp/planner-3.41") (add-to-list 'load-path "~/elisp/muse-3.11/lisp") ;; (1) ;; Basic configuration (require 'muse-project) (require 'planner-autoloads) (setq planner-project "WikiPlanner") ;; Adjust this if you already have other Muse projects (setq muse-project-alist '(("WikiPlanner" ("~/Plans" ;; (2) :default "TaskPool" ;; (3) :major-mode planner-mode :visit-link planner-visit-link))) ;; Some handy keyboard shortcuts (global-set-key (kbd "C-c d") 'planner-goto) ;; (4) (global-set-key (kbd "C-c t") 'planner-create-task-from-buffer) (global-set-key (kbd "<f9> d") 'planner-goto) ;; (5) (global-set-key (kbd "<f9> t") 'planner-create-task-from-buffer) (global-set-key (kbd "<f9> <f9>") 'planner-goto-today) ;; (6) (global-set-key (kbd "<f9> <f8>") 'planner-goto-yesterday) ;; (7) (global-set-key (kbd "<f9> <f10>") 'planner-goto-tomorrow) (plan) ;; (8)
Evaluate the code with M-x eval-buffer, or restart Emacs. Then you’re
ready to plan!
The first thing you need to learn is how to get to day pages
quickly. Planner needs to be at least as fast as opening a paper-based
day planner and finding the right page. Here are the two keybindings
from the previous section on setting up Planner:
|F9 d(ate) or C-c d||planner-goto||Jumps to any day’s page|
|F9 F9||planner-goto-today||Shows today’s page|
F9 d (planner-goto) is smart. You can click on a date in the calendar
that pops up, or navigate to a date and press RET. Typing in the date
is much faster. The date format is yyyy.mm.dd, and it understands
partial dates (mm.dd, or just dd).
For example, if the date today is December 28, 2007, here’s what
|30||2007.12.30||Which day in the current month|
|1.30||2007.01.30||Which day and month in the current year|
|2008.01.30||2008.01.30||The full date|
planner-goto also understands relative dates, and this is where things
get more interesting. If you are looking at a day page, dates are
calculated based on the day you’re currently looking at, or today if
you’re not looking at a day page. This allows you to use “+2fri” to
jump to successive paydays or use -1 to see the day before the one
you’re reading. Here are some examples that will show you what you can do:
(If you ever find yourself using a date shortcut like the one in (6),
please e-mail me, as I put that code in just for fun. =) )
Practice jumping around to different dates using F9 d or C-c d, the
two shortcuts we set up earlier. If one of those shortcuts feels more
natural to you, go ahead and use it. (Or bind it to something else, if
you want.) While you’re opening different day pages, write a few
reminders to yourself.
The basic configuration I suggested also has some handy shortcuts for
going to the previous and next days. Press F9 F8
(planner-goto-yesterday) to go to the day before the one that’s
currently displayed, and F9 F10 (planner-goto-tomorrow) to go to the
day after the one that’s displayed. You’ll find this handy when doing
your weekly planning. The standard shortcuts are C-c C-j C-y and C-c
C-j C-t. You may find those easier to type, but they were like a game
of Twister on my tiny keyboard. (This is also the reason why I’ve
remapped most of my keybindings. I simply can’t do the
So now you know how to open different day pages. You can stop here and
already have a decent, minimalist day planner, using it like a
collection of text files that just happen to have useful navigational
commands. However, with a little more structure and some handy
shortcuts, you can be even more effective at managing your tasks.
Two of the keyboard shortcuts in the sample configuration are C-c t
and F9 t, both bound to planner-create-task-from-buffer. This is an
incredibly useful function, and it gets even better as you set up more
parts of Planner. The key idea behind planner-create-task-from-buffer
is that you should be able to quickly jot down a task and GET BACK TO
WORK RIGHT AWAY. No need to fiddle around with other files or dig your
planner out of your backpack. No switching to another application (at
least, if you do most of your work within Emacs). And if you set it
up, you even get hyperlinks back to whatever you were looking at,
saving you time in searching for the file you wanted to work on or the
e-mail you wanted to answer.
Try it for yourself. Use C-c t, F9 t, or M-x
planner-create-task-from-buffer to create a task. Type in the task
description. For now, accept the default date and plan page. The task
will be created on today’s page. The task will also be copied to the
TaskPool page. To view today’s page, type F9 F9. You can use TAB
(muse-next-reference) to move the cursor to the next hyperlink, and
RET to visit the link.
planner-create-task-from-buffer understands all the date shortcuts
that planner-goto does, so you can easily schedule a task for this
Saturday (+sat) or three days from now (+3). If you create a task
that’s scheduled for some other day, you can either open the day page
with F9 d (planner-goto), or review it on the TaskPool.
Okay. You’ve got day pages. You’ve got tasks. You probably want to
find out how to mark tasks as done before your growing TODO list turns
into a monster and eats you.
When you finish a task, go to the day page or the plan page it’s on
and use C-c C-x (planner-task-done) to mark it as finished. Think of
it as marking completed tasks with a big X. In addition to the
satisfaction of seeing completed tasks grayed and crossed out, you’ll
also see the completed tasks drop to the bottom of your task list when
you save the file. This makes it easy to see what else you need to
do. Just pick the next item off your list and keep working.
Not quite done? You can mark it as pending with C-c C-p
(planner-task-pending). You can think of it as Pending or Postponed or
Realized that you didn’t need to do it after all? Either delete the
task with M-x planner-delete-task, or mark it as cancelled with C-c
M-C-x (planner-task-cancelled). Think of C-c M-C-x as similar to C-c
C-x (planner-task-done), but even better—you’ve gotten away without
doing something. C-c M-C-x doesn’t work on all terminals, so if your
computer gets confused and marks the task as done, call M-x
NOTE: If your task is on both a day page and a plan page, make sure
you use these Planner commands and M-x planner-edit-task-description
in order to change the task status or description, and M-x
planner-delete-task to delete the task. These commands update the
linked page as well. If not, your tasks could get out of sync.
Even with your newfound powers of Planner task management, you’ll
probably still be left with unfinished business at the end of the day.
Unfortunately, Planner does not have a M-x planner-dilate-time command,
so you’ll just have to reschedule the tasks for another day.
If you wrote your tasks into your calendar using a paper-based
planner, you’d have to copy unfinished tasks to the next day one by
one. This is a powerful incentive to trim your task list and keep it
short. Planner can automatically copy unfinished tasks from the
previous days onto today’s page, saving you a lot of scribbling. Do
not let this tempt you into procrastination.
If you go back to the basic configuration, you’ll notice that it ends
with one command:
This reviews the past few days of pages for unfinished tasks, carrying
them over to today’s page. By default, the past 3 days are checked,
which should be enough to get you through a blissful no-computer
weekend. If you’re in the habit of going for long spans of time
without opening Emacs (like 4 days! *gasp*), you may want to change
the line in your ~/.emacs to something like
(plan 5) ;; Check the last 5 days
(plan t) ;; Check all days. Can be slow!
You can also call this interactively with something like C-u 5 M-x
plan, which checks the last 5 days.
plan carries unfinished tasks from previous days to today. What if you
want to trim today’s task list to a manageable size by proactively and
intentionally procrastinating things that you don’t need to do today?
That’s where planner-copy-or-move-task comes in.
To reschedule a task, move your cursor to the task on the day or plan
page. Type C-c C-c (planner-copy-or-move-task) and specify the
date. Again, planner-copy-or-move-task understands all the Planner
date shortcuts. If you reschedule a task from a day page, remember
that relative dates will be calculated based on the day page. For
example, if you’re on 2008.08.12 and you want to reschedule a task, +1
means 2008.08.13. If you reschedule a task from a plan page, dates are
relative to today.
If you want to reschedule many tasks, you might find it more
convenient to use M-x planner-copy-or-move-region. Move to the
beginning of the first task you want to move, press C-SPC to mark the
beginning of the region, move to the end of the last task you want to
move, and call M-x planner-copy-or-move-region.
Ruthlessly reschedule until your task list for today looks
manageable. A large task list can be overwhelming. It feels better to
complete everything on your task list and then add some more, than to
end each day with many unfinished tasks.
You’ve got your day pages. You’ve added and scheduled tasks. You’ve
checked them off. At the end of the week, you’re wondering where all
the time went. Just hit F9 F9 (planner-goto-today) to jump to today’s
page, and then use F9 F8 (planner-goto-yesterday) and F9 F10
(planner-goto-tomorrow) to navigate around. (See, those keybindings
were there for a reason!)
But wait, there’s more! I’ll cover projects, timeclocking, and other
Planner goodies in an intermediate article on using Planner, so stay
Random Emacs symbol: gnus-various – Group: Other Gnus options.
It takes me about 3 1/2 hours to write 2000 words. That works out to roughly 10 words a minute. I type a lot faster than that on a regular basis. The bottleneck isn’t typing, it’s my brain. Part of it is getting a handle on what I want to say and how I want to say it. I work with an outline. It’s really helpful, but I find it difficult to work in the breadth-first matter suggested by other writers. I have a hard time going from the outline to a more detailed outline and to an even more detailed outline, and so on. I find it easier to think of things in terms of a conversation. I find it easier to write a blog post than to successively refine outlines. This explains the recent spate of 2000-word blog posts on my blog. I don’t normally write this much, but it’s the best way for me to get the information out of my head and into a form that I can read.
The Dragon NaturallySpeaking box arrived today, and I’ve installed it in my computer. I’m excited about trying it out, although it’s quite interesting getting used to dictation. I’m finding out that I can’t really talk off the cuff yet. I think it will be good training for me, as dictation encourages you to think things through before you start talking. Theoretically, as I read more to the computer, or dictate more to the computer, that is, it’ll get more used to how I say things. There’s still a long way to go before I can use it to transcribe recordings, though.
So my life for the past few days and the next few days — it’s just full of words. From working on a wiki in the morning to working on my book in the evening, I’m writing a heck of a lot and I really really love it. I enjoy thinking about what I’ve learned, thinking about the questions that I want to ask, trying to organize all that information in a way that makes sense to other people who might not be familiar with the topic. And by golly, I think I’m getting the hang of it. 2000 words is roughly the size of, say, a LinuxJournal article. And yet this is the second day straight that I’ve managed to turn out one of those. Granted, the posts are on material that I know and have written about before. This is where all the blog posts helped because even if I didn’t copy and paste what I’d written before, I’d had some practice in thinking things through. And I’ll get better and better as I keep talking, keep writing, keep figuring things out.
Speaking of getting the hang of writing, too, I spent some time earlier putting together a Perl script that downloaded all the posts from my company blog and formatted them into a something I could turn into a miniature book. I wanted to review all the blog posts in preparation for an upcoming interview. It was surprisingly easy to do. I loved being able to look at all my entries and see what I’d been thinking over the past year. I was surprised to find out that I had written almost 50,000 words through the year. 140 pages. 50,000 words is about the number of words that people strive for in the NaNoWriMo contest. NaNoWriMo is the National Novel Writing Month, when people try to write that novel that they’ve always been planning to write but never got to around to. 50,000 words. Of course, they try to do all of that in one month, which is a bit more of a timeframe than I’d want to commit to. Still, I’ve written that in the last year, just the casual stuff, just the stories, just me saying, okay this is what I’m working on, this is what I’m doing today, this is what I’m wondering about…
If I can do 2000 words in 3.5 hours, which is roughly all the writing time I have in one day, and then multiply that by 30 days… If I manage to write consistently for 30 days, then I’ll be like Stephen King, turning out a book in a month. Although maybe I won’t quit ebe there yet… I need to get this book out. One thing at a time…