OSXのリマインダーにEmacsから一発登録
Emacs の scratch buffer に ToDo をメモっておいたのに、Emacsを再起動させてしまって人生の指針を失ってしまうのは、だれもが通る道だと思います(;・∀・)
そんなことをグチグチといっていったら、Mac の大先生より「リマインダー使え、さもなくば死ね(一部誇張があります)」というありがたいお告げを頂いたので、早速リマインダーを使うことにしました。Emacsから。
"Calendar and Reminders Programming Guide" を読んでみましたが、Objective-C を使うのも牛刀なかんじだったので、さくっと諦めて Automator を使うことにします。
Automator を作る
Automator っていわゆるひとつの Apple Script 実行環境です(よね?)
今回は引数のファイルの中身をリマインダーのタイトルに使って、リマインダーへ新規に登録する Automator を作ります。
- Automator を起動します。「アプリケーション」を「選択」します。
- アクションライブラリから「新規リマインダー項目」を右のワークフローにドラッグ&ドロップします。
- 同様に「シェルスクリプトを実行」を先頭にドラッグ&ドロップします。
- シェルを「/bin/sh」に、入力の引渡し方法を「引数として」に設定します。
- シェルスクリプトの内容を "cat $@" のみにします。
- これに名前をつけて保存します。
今回は、"createreminder.app"として保存しました。
Emacsから使う
Emacsから先ほどのAutometorを呼ぶ関数を定義します。
(defun send-reminder () (interactive (save-excursion (let ((tempfile (make-temp-name (expand-file-name "createreminder" temporary-file-directory))) (crem-prog "/Users/izawa/Documents/createreminder.app") (title (read-string "Reminder: "))) (with-temp-buffer (insert (concat title "\n")) (write-region (point-min) (point-max) tempfile)) (call-process "/usr/bin/automator" nil nil nil "-i" tempfile crem-prog) (delete-file tempfile)))))
これを C-c # から呼べるようにします。
(global-set-key [(?\C-c) (\#)] 'send-reminder)
これで、Emacsのミニバッファに入力した内容がリマインダーに登録されるようになります。
リマインダーをチェックする癖を付けないといけないという噂もありやなしや…。