org-agenda が計算されるたびに、org-agenda の出力をテキスト ファイルに保存したいと思います。このようにして、外部プログラム (Windows の ATNotes や Linux の conky など) を使用して、このテキスト ファイルを取得し、デスクトップに表示することができます。
これどうやってするの?
あなたがこのコードを切り取って書くのに苦労した後、私はあなたのパレードに雨が降っているように感じます(そして周りのアドバイスも使用しました!)が、実際にはこの機能はすでにorg-modeに組み込まれており、マニュアル。必要なコマンドはorg-write-agenda
(アジェンダバッファーのCx Cw)です。「アジェンダビューのエクスポート」というタイトルのorg-mode情報のセクションを参照してください。
emacs を開いている間に実行したい場合は、(orgmode がバインドされているため) 経由save-buffer
で*Agenda*
バッファを呼び出すことができます。必要に応じて、.M-x save-buffer
C-x C-s
org-save-all-org-buffer.
save-buffer
org-mode-map
cron 経由で実行したい場合は、org-mode メーリング リストのこのスレッドのスニペットを使用して、出力をファイルにパイプできるはずです。私は過去にこれを使用しました:
emacs -batch -eval '(org-batch-agenda "a" org-agenda-ndays 7 org-agenda-include-diary nil org-agenda-files (quote ("~/org/todo.org")))' > agenda.txt
それで私はついにemacslispマニュアルを開いて、これを自分で理解することにしました。私はこのコードを書きましたが、これは問題なく機能しているようです。:)
;; Save the org-agenda for display with conky
(defadvice org-todo-list (after saveorgagenda activate)
"save this output to my todo file"
(get-buffer-create "todo")
(with-current-buffer "todo"
(set-buffer-modified-p nil))
(kill-buffer "todo")
(write-file "~/todo"))
編集理由:
1)kill-bufferがない場合、defadviceはorg-todo-listの実行ごとに新しいtodoバッファーを作成します。これはかなりイライラします。
2)get-buffer-create関数がないと、その時点でtodoという名前のバッファーがないため、kill-buffersは最初に失敗します。
3)set-buffer-modified-pがないと、関数は「todoバッファーが変更されました。本当にそれを強制終了しますか?(yまたはn)」と通知し続けます。これは、目的全体を実際に無効にします。
ふぅ!私は実際にこれを理解するために時間と労力を費やしたのでとても幸せです!:D