Make an open source to-do list with Emacs
Harness the power of Emacs to organise your work, as well as some options to track your to-do list when you’re on the go
Part of planning is estimating how long each of your tasks will take. You can set this by setting the effort property with the keyboard shortcut ‘C-c C-x e’. This effort can be used in several different functions, including ones you may write yourself.
Adding files to your agenda
Org-mode has the concept of an agenda. Agenda functions use files include in the agenda list to calculate the jobs for a given time. You can add the current open org file to the list with the shortcut ‘C-c [’. Or you can manually add the files by editing the values stored in the variable ‘org-
agenda-files’ in your ‘.emacs’ file.
Looking at your agenda
There are several built-in agenda functions available. The default agenda view is compiled using the shortcut ‘C-c a a’. This will give you a list for the week. If you want a list of all of your to-dos, use ‘C-c a t’. This agenda is interactive, allowing you to edit the tasks involved. You can also create your own agenda views, tailored to your workflow.
Planning your day
Now that you are able to set deadlines, schedule tasks and view your agendas, you can plan out your day’s work and actually get some things done now. This is the real reason for all task management systems.
This will get you working on tasks on your desktop system, but what if you want to go mobile? There is an app, available on both iOS and Android, called MobileOrg. This app can synchronise with your org files via Dropbox, WebDAV or an SD card.
Setting up Toodledo
While it is fully functional, some people do not like the workflow MobileOrg uses on your mobile device. There are many different apps available which provide different layouts and workflows. Most of these apps synchronise with various web apps. One popular web app is Toodledo, and there are several mobile apps giving you access to your tasks. If you wish to use this, you will need to synchronise org-mode with Toodledo. The first step is to go and sign up and get your Toodledo account. Once you do, you can get Emacs configured.
The project org-toodledo is hosted on GitHub, where you can download zip files or grab a copy of the Git repository. Once you download it, you need to add the directory to the Emacs search path with ‘(push “/path/to/ org-toodledo” load-path)’. You will also want to add the variables ‘org-toodledo-userid’ and ‘org-toodledo-password’ to allow access to your Toodledo account.
Depending on your version of Emacs, you may need to patch some of the functions in the url-http file. If you installed from source, simply apply the patches before compiling and installing. If you install from your distribution, you will only have compiled elisp files. You will need to download the source files for your version from the Emacs site, patch the file url_http.el, then copy it over to the installed location.
Initialising a file for Toodledo
The first step is to create and initialise a file to use for the interface to Toodledo. Create a new file, open it and run the command ‘A-x org- toodledo-initialize’. This will log into your Toodledo account, create a new heading called ‘TASKS’ and do an initial pull of all of the tasks you have createdthere.
Setting task states
Task states need to be synchronised between Toodledo and your org-mode setup. You will want to be sure that your org file has all of the task states from Toodledo. These can be set by including the line:
#+SEQ_TODO: TODO(t) DELEGATED(g) SOMEDAY(s) WAITING(w) | DONE(d) CANCELLED(c) REFERENCE(r)
…somewhere in your org file.
Any time you make changes to your org file and try to write them, org-toodledo will ask you whether you want to synchronise to Toodledo. If you want to force a sync, say at startup, you can run ‘A-x org-toodledo-sync’. With Emacs, you can set a keyboard shortcut, or incorporate this synchronisation into some other function or trigger.
Mapping time properties
There are different time properties, both in Toodledo and org-mode. This means that there needs to be some form of mapping. The org-mode deadline maps to the duedate and duetime in Toodledo, while the scheduled value in org-mode maps to the startdate and starttime in Toodledo.
Getting rid of old tasks
You can’t cheat and delete tasks from your org file. If you do so, then they will reappear during the next sync. You need to mark them as done and then synchronise with Toodledo in order to propagate the change. Once that has happened, you can archive the done tasks with the shortcut ‘C-c C-x C-s’.
Now that you’re synchronising to Toodledo, you can go to your respective app store and find an app that matches your style of working on your mobile device. Our personal choice is DGT, but there are many more to chose from.
Where to now?
This article only covered the most basic functions available in org-mode. Emacs is essentially a full running LISP machine, so you can always change the functionality to match your own personal workflow. Check out the links and see what else you can do.