06.20.06
Yet another GTD bundle
Mike Mellor has been doing a lot of great work with the GTD bundle, which I must say I have not really followed, basically because I’ve had no time and my own ideas about how a GTD bundle should be. Here in fact is my take on it. It is kind of inspired by Kinkless I guess.
IMPORTANT UPDATE: The GTDAlt bundle now lives in the Subversion Repository of Bundles for TextMate. You can find details on how to access bundles this way here. The version on my website linked to in the previous paragraph will NOT be updated any more.
I apologize for the inconvenience to those of you not using subversion, but I can assure you that following the above instructions is pretty painless, and the benefits to my sanity and general state of mind are too numerous to list here.
Update: Added support for notes, and corrected errors because of empty lines (thanks Alan). Here’s a new and improved screencast, with sound. I still have problems with the sound though, it goes faster than the video. It’s quite irritating. There’s a new screenshot at the end.
Update2: Simplified the language grammar, and refined the syntax highlight a bit. Also, there is now a script to convert the Kinkless file to this format.
Update3: Fixed some bugs with the document parser.
Update4: Incorporated additions by Alan Schussman for archiving and moving lines around.
Update5: Totally revamped. A lot of documentation added here. Also added RDoc documentation for the ruby classes underlying the bundle. It can be found inside the bundle, under Support/bin/doc/index.html.
Update6: Added GTDFile.next_actions, GTDFile#next_actions and Project#next_action. Rearranged the menu. Added command for generating an HTML of all next actions.
Update7: Fixed grammar to work at end of line.
- One could have lots of gtd files in the same directory, they are all being processed.
- Each gtd file could contain any number of projects.
- It should be easy to edit things, dates etc.
- Easy way to set contexts.
So first of all, you are free to group your projects among various gtd files as you like. This offers a lot of freedom to the user. The only condition is that they should all be in the same directory, and the variable TM_GTD_DIRECTORY should point there.
Of course, you can use whatever contexts you want. The bundle remembers all contexts already in use, and you can also set the TM_GTD_CONTEXTS variable to a comma separated list of the contexts you want, e.g. “home,email,errands,work,computer,programming” and so on.
The way to set contexts is as follows. When you first create an action, it automatically gets the context “email”. In order to change context, you simply press Ctrl-C a number of times. Each time you press it it changes the context to the next context in alphabetical order. One could also easily create a drop-down list, though I have not yet implemented this.
Setting a due date is also easy. When you set a due date for an item, you are asked for a text describing the due date. You can follow a number of conventions there (though perhaps a bit U.S. oriented I’m afraid), for instance you could separate the entries by slashes, dashes etc. It also understands a couple of phrases, like “next tuesday”, “in 3 weeks”, “6 months“ and so on.
The nice thing though now is that it is very easy to adjust the due date. For instance to bring the due date one month earlier, you would press ctrl-shift-, and so on.
You can also mark actions as completed, in fact you can toggle the completion status on/off. The completion date is also marked.
I had also prepared a little screencast to demonstrate things, but it went horribly bad. For some reason, the sound has been accelerated, so it is all out of sync. So for now, here is the screencast with no sound, but with my apologies for a trully horrible job.
And here’s a little screenshot:

Update: Now you can add a note for each action, “markdown style”. Only restriction is that each note should be in a single line. Here’s the new screenshot:

Later
dekay said,
June 20, 2006 at 1:59 am
I havent tested it yet, but it sounds very much like what I was looking for (and I was/am in the process of learning ruby to do so)…
alan said,
June 20, 2006 at 4:42 pm
I dig it. A lot. Inspired by Mike’s work on the GTD bundle, I’ve been thinking about ways to bring some of the emacs-planner-style tools into TextMate using a GTD methodology — and this is a huge step ahead of what I had been working on. Awesome again, Haris.
After thought » The GTD format said,
June 22, 2006 at 7:40 am
[…] This post has two purposes, first to describe the kinkless to gtdalt converter, and second to describe my gtd format as it currently stands and is used in the GTDAlt bundle. Let’s start with the converter: […]
codesmith said,
June 23, 2006 at 4:53 am
I am getting errors when trying to change context (Ctrl-C) or do an Actions for Context…. The file looks like this:
project Learning Lisp
@reading Read Chapter 20 The Special Operators
@email Read Chapter 21 Programming in the Large Packages and Symbols
@email Read Chapter 22 LOOP for Black Belts
@email Do Chapter 23 Practical A Spam Filter
@email Do Chapter 24 Practical Parsing Binary Files
@email Do Chapter 25 Practical An ID3 Parser
@email Do Chapter 26 Practical Web Programming with AllegroServe
@email Do Chapter 27 Practical An MP3 Database
@email Do Chapter 28 Practical A Shoutcast Server
@email Do Chapter 29 Practical An MP3 Browser
@email Do Chapter 30 Practical An HTML Generation Library, the Interpreter
@email Do Chapter 31 Practical An HTML Generation Library, the Compiler
@email Read Chapter 32 Conclusion What’s Next?
end
When I press Ctrl-C (Change Context), I get the following error:
project Learning Lisp
/Users/skubik/Library/Application Support/TextMate/Bundles/GTDAlt.tmbundle/bin/GTD.rb:127:in
parse': Parse error: @reading Read Chapter 20 The Special Operators (RuntimeError)processdirectory’from /Users/skubik/Library/Application Support/TextMate/Bundles/GTDAlt.tmbundle/bin/GTD.rb:107:in
from /Users/skubik/Library/Application Support/TextMate/Bundles/GTDAlt.tmbundle/bin/GTD.rb:104:in
each'processdirectory’from /Users/skubik/Library/Application Support/TextMate/Bundles/GTDAlt.tmbundle/bin/GTD.rb:104:in
from /Users/skubik/Library/Application Support/TextMate/Bundles/GTDAlt.tmbundle/bin/GTD.rb:206
from /tmp/temptextmate.0xoq7L:2:in `require’
from /tmp/temptextmate.0xoq7L:2
” @reading Read Chapter 20 The Special Operators “
end
which appears to be a case wherein the line in question fails to match any of the regex expressions in the parse(data) function in GTD.rb.
I love the idea of using TM to do my GTD, but I cannot get past this error…
Thanks.
Richard said,
June 23, 2006 at 6:35 am
I’m really curious about this as well, but find I’m getting lots of parse errors as well. It seems they occur on actions that have certain characters in them, such as @, $, :, : etc
If I remove these characters from my actions, then I can display the html list of actions by context.
Richard said,
June 23, 2006 at 6:42 am
Haris said,
June 23, 2006 at 9:32 am
@Richard and @codesmith
thank you both for your feedback and helping me nail down those bugs, in these early days of the bundle. In the original version of the system, I was requiring that all contexts and actions consist of only word characters, a stupid specialization I must admit. I just uploaded a new version that should have fixed all these problem, so please download the zip file again and install the new one, and tell me if you are still having problems. The new one should allow for any character other than [ in the action name, and any non-space character for the context. (hm, I think this means you might even get away with a context like @@twoampersands!, but I haven’t really tried that.)
Richard said,
June 23, 2006 at 2:55 pm
Great - that’s working nicely! Any chance of including this bundle in the subversion repository with all the other TextMate bundles so subsequent updates can be checked out in one go?
Oh, I’m still getting that error about Smart Crash Reports and CocoaDialog mentioned in my other post above.
And thanks for your work on this!
Richard said,
June 23, 2006 at 3:05 pm
Me again - not sure if this is the appropriate place to leave bug reports, but after downloading the updated bundle, I’m getting this error when I try and view actions by context in html:
/usr/lib/ruby/1.8/Date.rb:650:in
new_with_hash': invalid date (ArgumentError) from /usr/lib/ruby/1.8/Date.rb:695:inparse’ from /Users/richard/Library/Application Support/TextMate/Bundles/GTDAlt.tmbundle/bin/GTD.rb:179:inhtml_actions_for_context' from /Users/richard/Library/Application Support/TextMate/Bundles/GTDAlt.tmbundle/bin/GTD.rb:177:ineach’ from /Users/richard/Library/Application Support/TextMate/Bundles/GTDAlt.tmbundle/bin/GTD.rb:177:in `htmlactionsforcontext’ from /tmp/temptextmate.RwtZYU:28Not sure what this means!
Haris said,
June 23, 2006 at 3:30 pm
Hi Richard, this is a fine place to leave reports, you can also email me directly. It\\’s a small edit, so you can either get the file again or open the file bin/GTD.rb from withing the bundle (it won\\’t be visible from the bundle editor, you would probably need to use the terminal to find it) and on line 123 change the part that says
to make it say
.
Richard said,
June 23, 2006 at 3:52 pm
Done. Many thanks.
Haris said,
June 23, 2006 at 4:08 pm
If you are still getting the Smart Crash Reports - CocoaDialog errors, you might want to email the TextMate mailing list, there’s more people there would could help with that. I’m not running Smart Crash Reports, so I can’t really test this.
Haris said,
June 23, 2006 at 6:58 pm
As for adding this to the subversion repository, I’ll consider doing it if there are enough people expressing interest. It would definitely make life easier for me, but we don’t want to fill the repository with everyone’s “personal bundles”
Ron Rosson said,
June 24, 2006 at 7:33 am
Is there any dependencies needed for the bundle to work properly. I am trying to try it the bundle out but I keep getty ruby errors. Is there plans for a README and maybe a help file.
TIA
Haris said,
June 24, 2006 at 9:13 am
@Ron
I emailed you about the loading problems, that sounds like a problem with your Ruby install/environment settings. I only load standard libraries, so they should be there. Plus you should be having problems with other bundles as well in that case.
For now I\’m afraid these posts are the README/help, though I am planning to add one. The bundle is still a bit rough on the edges, but the new version coming out soon will hopefully be a little cleaner.
Ron Rosson said,
June 25, 2006 at 4:58 am
Got your replies and read your updates. Downloaded the latest from your website this morning and noticed that the require statement for pathname beginned with an uppercase “P”. Once I changed that All is working fine.
Keep up the good work
codesmith said,
June 26, 2006 at 11:44 am
I am getting a new error which says:
To reproduce this:
This seems to be a case where a note no longer has an action associated with it. If you delete the note created in step 1, then the error does not happen.
BTW - I think all the bundles, even the “personal” ones should be in the repository, it would make updating much easier and those that don’t want it can simply filter it out in the Bundle Editor.
After thought » Details on the GTDAlt bundle said,
June 26, 2006 at 11:55 am
[…] You can also find some pretty lame screencasts here, as well as a converter to convert your Kinkless GTD project to this format here. […]
PanaGeek » Blog Archive » Why it’s been quiet here said,
June 26, 2006 at 12:09 pm
[…] I’ve been pretty busy lately, and when I get home I still have a lot to do. I bought TextMate about a month ago as a better editor for learning Cocoa. Then I found that it’s plugin features make it great for customization, and it had a bundle called TODO, which is a tool for commenting code. Since then I’ve been building a GTD bundle for TextMate. It started as something for me, but I added it to the TextMate repository, and it has garnered some interest. Look for a more detailed write-up as my next post. […]
Haris said,
June 26, 2006 at 12:10 pm
@codesmith
the Clean Completed Tasks is deprecated, use Clean up Current File instead. In any case, I think the problem was that the command does not save the file before being executed. If you make that change it should all work fine. The problem is as you describe, but I am fairly certain I fixed it in the latest version, the updates were coming out fairly often in the last couple of days.
btw, the bundle will shortly be added to the repository, as per your numerous requests
(not just you that is, other people too, and it makes my life immensely easier.)
Richard said,
June 26, 2006 at 7:44 pm
This is working really nicely! Many thanks.
After thought » GTDAlt and Quicksilver, finally together! said,
June 27, 2006 at 12:40 pm
[…] The GTDALT bundle now contains a script that processes an “Inbox file” for actions, and distributes them to appropriate places. The purpose of this script is to be used in conjunction with a program like Quicksilver. You use Quicksilver to append such lines to the inbox as described here. Then when you are ready to review things, you run the script. The script has not been tested extensively, so be careful the first couple of times you use it. It keeps backups, so theoretically you would not lose data. […]
krh said,
June 27, 2006 at 3:50 pm
I love what I’ve seen so far but I can’t seem to get this to work. When I hit ctrl-C on the file nothing happens and if I hit it again I get:
I also am not getting my contexts recognized by the script, even with the TMGTDCONTEXTS variable set so this is probably why I’m seeing this problem. My interpretation of this is that the method that looks for contexts is hanging or taking some time to execute and that pressing ctrl-c again when it is still running will try to kill the command.
It seems like Ctrl-C already has a pretty standard global role in TextMate which might cause confusion for some users or fast key pressers.
Haris said,
June 27, 2006 at 4:46 pm
@krh
two things. First of all make sure that you don’t have any local modifications to the bundle, and that you have uploaded the latest version of the bundle from the repository.
Second, does the command work if you call it directly from the gear/bundle menu? If none of these work, then please send me an example file and the exact behavior you are experiencing.
TextMate - Blogging and GTD said,
July 24, 2006 at 2:08 pm
[…] Another Bundle to assist with GTD has emerged from the TextMate users community. The bundle is referred to as GTDAlt at the moment by its author Haris Skiadas. The current link talking about this bundle can be found here. Currently Haris does not have it in the bundle subversion repository so his website at this time is the only place to get it. This along with Mike Mellor’s bundle (included in the bundle repository) gives us two choices for the time being on how we can use TextMate in GTD. […]
oneinsane dot net : TextMate - Blogging and GTD said,
August 29, 2006 at 1:25 pm
[…] Another Bundle to assist with GTD has emerged from the TextMate users community. The bundle is referred to as GTDAlt at the moment by its author Haris Skiadas. The current link talking about this bundle can be found here. Currently Haris does not have it in the bundle subversion repository so his website at this time is the only place to get it. This along with Mike Mellor’s bundle (included in the bundle repository) gives us two choices for the time being on how we can use TextMate in GTD. […]
links for 2006-09-21 at i’m a richardson daht cahm said,
September 21, 2006 at 6:46 pm
[…] After thought » Yet another GTD bundle (tags: textmate rubyonrails ruby rails bundles gtd plugins) […]
Append To Inbox Quicksilver Action by Graham English said,
December 9, 2007 at 12:50 pm
[…] I’ve recently started using TextMate’s GTDAlt bundle for a number of reasons. While I’ve loved using Kinkless, I spend more time in TextMate. Using GTDAlt gives me the opportunity to really master this app. And GTDAlt imports Kinkless files so there’s no downtime. Plus, I’ve never really liked how I had to have OmniOutliner open to send things to my inbox. So while I patiently wait to give OmniFocus a try, I’m going to spend some time romancing TextMate. […]