TextMate GTD Bundle
As of 25 AUG 2006
Introduction
The TextMate GTD bundle is yet another attempt at creating the perfect
To Do List. The main concept in the development of the bundle is
"plan in projects, execute in context." What this means is that I
like to think about what I have to do by focusing on one project at a
time, but I may do a bunch of things from different projects, depending
on the context.
Overview
A quick overview of the terms may help. First, a Project
is a collection of related tasks. It may be somewhat focused,
e.g., "build a bookcase," or it may be a more general grouping, like
"things to do in the yard." Next, a Task
is a discrete action. For example, a task for building a
bookshelf would be "measure the area where I want the shelf," or "buy
the materials for the shelf." Strict adherents to David
Allen's Getting Things Done
may want more detail, like "go to the hardware store" and "buy nails"
as separate tasks, but I don't always feel that I need to document
minute steps of a project. The final concept for the GTD bundle
is Context. Context is
where or how a task is accomplished. Again, some people like
specific "office computer" and "home computer" tasks, but I tend to
aggregate them, where possible.
Now a screenshot:

This is my current setup. All of the files are part of a TextMate
project (not to be confused with a GTD project). You'll notice
that each GTD project is a seprate file, with a .gtd extension.
Still looking at the list of files, notice that the top file is
called "contexts.gtd;" this is a special file for use within the
bundle. I'll explain it in more detail later.
Within the main window, you can see the various tasks assosciated with
building a bookshelf. The first word in each line, in ALL CAPS,
is the context. A lot (most?) GTD folks like to see an ampersand
(@) at the front of a context. However, I don't feel the need - I
know its a context, so why bother with the extra character?
The part that makes this bundle usefull is how it groups tasks by context. Here is a screenshot of the list:

See how it groups tasks from different projects? If you think that's a cool idea, keep reading!
Setting up the GTD Bundle
The latest version of the GTD bundle can always be found at the textmate
repository. Additionally, you'll need two files, a contexts file
and an exclusions file. These files need to go into a folder
where you plan to place all of your .gtd files. I keep mine in
~/Documents/ToDo.
Basically, the contexts.gtd file is a list of contexts, as described
above. There are several data elements for each file, a couple of
which I no longer use, but keep so that I don't break the system.
The big things to get right are the context (first cell), the
shortcut key (second cell) and the context string (third element).
The exclusions.gtd file is a list of gtd files that you don't
want to see listed in the rollup of tasks. Why? Well, it
allows me to create project files that I can hide until I want to deal
with them. For example, I created a ookshelf.gtd file that lists
all of the tasks assosciated with building shelves in my garage.
However, I'm not ready for that project yet, so I hide it from my
rollup. I've tried to make the GTD bundle as customizable as
posssible, so while you must have the excluded.gtd file, you are free
to not use it.
Using the GTD Bundle
Now that you have downloaded the bundle and the supporting files, you
are ready to jump in! First, create a new project file in your
ToDo folder (or whatever you call it). Then begin adding tasks by
entering a shortcut and hitting the "Enter"
key - not "Return." This should replace the shortcut with the
corresponding context string from contexts.gtd. Then tab to the
data field(s) for that task and hit return to finish entering the task.
Contexts are great, but there is also a status component of the gtd
list in the GTD bundle. The normal status is how the task is
created. The two modified statuses are "WAIT" and "DONE."
To change the status of a task to "WAIT" type "w" and then the
tab key anywhere on the tasks line (just make sure it is either the
first character or there is a pace in from of the "w"). Then,
when you want to "unwait" the task, do the same thing with "u".
When a task is done, mark it as "DONE" using "d" and the tab key.
Like I said in the beginning, my objective is to plan in project,
execute in context. So, I have a couple of list views, "Active
GTD List View" and "GTD List View". The major difference between
the two is that the active list does not show completed tasks, although
it does show "WAIT" tasks. Either way, the bundle creates a nice
looking list of tasks, arranged by context.
One other subject area is additional list formatting. You can
sort all of the tasks in a project by context by pressing F5. I
personally don't like this, because my projects are generally built in
a rough sequence. I have to look up a phone number before I can
call it, for example. So, the feature is there, but I don't
really use it. There are also a couple of cleanup commands.
Cleanup (CTRL-Shift-C) moves all of the "DONE" tasks to the
bottom of a project list. Remove (CTRL-ALT-Shift-C) does what it
says; it removes completed tasks.
The Future of the GTD Bundle
The GTD Bundle is an ongoing pet project for me. It is getting
pretty close to where I want it, but there are a few little things that
I would like to do. I want to be able to print to 3x5 cards.
There are other smaller tweaks that I may do. At this
point, user feedback is a big driver. If you try the GTD Bundle
and like it, please let me know what works and what doesn't work for
you. I'm not promising anything, but I can try (and I'd be happpy
to have others add their concepts). Happy GTD'ing!