この記事ではEmacsのorg-modeからリマインダー.app(Mac OS X or iPhone)にタスクを渡す方法について紹介します。
私はタスク管理にorg-modeを使うのですが、最近は買い物リストもorgに書き込んでいます。
イオンやイトーヨーカドーに行くときに、Macを持っていくわけにはいきません。
そこで、Mac OS Xのリマインダー.appにその買い物リストを転送して、
iCloud経由でiPhoneと同期させ、iPhoneの「リマインダー」アプリで、その買い物リストを見るようにしています。
セットアップ
- reminders-cliをインストールする
- 後述するhoge.elを追加する
reminders-cliを使うと、コマンドライン操作でタスクをリマインダー.appに登録することができます。
そして、下記のelispを使うことで、Emacsからリマインダー.appにタスクが追加できるようになります。
hoge.el
(defun add-org-task-to-reminder ()
(interactive)
(when (eq major-mode 'org-mode)
(setq reminder-list-name "リマインダー")
(setq element (org-element-at-point)) ;; カーソル位置のタスク(エレメント)を取得する
(setq title (org-element-property :title element)) ;; そのタスク(エレメント)から名前を取得する
(setq command (format "reminders add %s %s" reminder-list-name title))
(shell-command-to-string command)))
上記のコードは、Org Element APIでタスクの名前を取得し、reminders-cliをシェルで実行します。
使い方
Emacsで以下の操作をして、リマインダー.appにタスクを追加します。
- リマインダー.appに登録したいorg-modeのタスクにカーソルを合わせる
- M-x add-org-task-to-reminder を実行する
今後の課題
- reminders-cliを改良して日時、優先順位の情報もコマンドラインでリマインダー.appに渡せるようにする
- Emacsからリマインダー.appにタスクを渡す際に、リマインダー.appのリスト名をインタラクティブに指定できるようにする
- Emacsから複数のタスクを一括でリマインダー.appに渡せるようにする