Emacsで書いたorg文書とToodledoを同期するorg-toodledo

今までTodo管理にToodledoを使っていたが,これをEmacsで管理できないだろうかと思った.でも,Emacsが使えない環境でもTodoの確認をしたり,Toodledoと同期するiPhoneアプリも使い続けたいので,org文書に書いたTodoリストとToodledoのTodoリストを同期できる方法を探してみた.

同じことを考える人は多いようで,複数の実装が見つかった.しかも全部「org-toodledo.el」という名前.その中で,今もメンテナンスされているっぽいchristopherjwhite氏の org-toodledo.el を試してみたので導入方法を紹介する.使用する場合は自己責任で.

まず,org-toodledo をダウンロードしてくる.gitが使えるなら下のコマンドを叩く.

$ git clone git://github.com/hayamiz/twittering-mode.git

展開したディレクトリをロードパスに加えて,.emacsに以下を記述.

(require 'org-toodledo)
(setq org-toodledo-userid "<toodledo-userid>") ;; emailじゃなく,ToodledoのSettingsから見られる「Unique ID」を記述
(setq org-toodledo-password "<toodled-password>")

;; Useful key bindings for org-mode
(add-hook 'org-mode-hook
          (lambda ()
            (local-unset-key "\C-o")
            (local-set-key "\C-od" 'org-toodledo-mark-task-deleted)
            (local-set-key "\C-os" 'org-toodledo-sync)))
(add-hook 'org-agenda-mode-hook
          (lambda ()
            (local-unset-key "\C-o")
            (local-set-key "\C-od" 'org-toodledo-agenda-mark-task-deleted)))

これで同期の準備は完了.

もしもの時のためにToodledoをエクスポートしたら,新しいorg文書を作成し,M-x org-toodledo-initialize を実行.すると「TASKS」という項目が新規作成され,そこにToodledoで既に登録されているTodoがずらずら並ぶはずだ.

そのorgファイルに「** 新しいタスク」を追加し,C-c C-t を押して TODO マークをつけたら,ファイルをセーブする.すると,同期するか聞かれるので y を押すと,内容が Toodledo に反映され,同時に org 文書には Toodledo での詳細設定を記述する :PROPERTIES: も追加される.この :PROPERTIES: の書き方は逆に Toodledo に Todo を追加した後 org 文書で C-o s で同期したらある程度わかるだろう.

org-modeでのTodoリストの使い方は,

Emacs org-modeを使ってみる: (5) TODOリスト - 屯遁のパズルとプログラミングの日記

でも参考にするといい.Todo リスト以外の org-mode の使い方についてもよくまとまっている.とりあえず私はこれで快適な Todo 管理ができそうだ.