@peccul is peccu

(love peccu '(emacs lisp cat outdoor bicycle mac linux coffee))

org-clockの今日のログを眺めたい

org-clockはタスクごとにレポートしたりできるのですが、今日はどんなタスクをしたのかがわかりにくいと思います。

そういう関数を見つけられなかったので、コマンドで書いてみました。 他のエレガントな実装方法があれば教えて欲しいです。

実装

awkgrepとsortをshell-commandで利用できる前提です。

  • awkでタスク名と計時ログをつなぐ
  • grepで今日の分にフィルタ
  • sortで逆順に並べ替える
  (shell-command
   (concat "awk '"
               ;; keep task name
               "(/\\* /){"
                 "$1=\"\";task=$0;"
               "}"
               ;; print clock log and task name
               "(/[C]LOCK:/){"
                 "printf(\"%s %s\\n\",$0,task);"
               "}"
             "' " (buffer-file-name)
           ;; filter today's log
           "|grep '" (format-time-string "%Y-%m-%d") "'"
           ;; sort reverse by date
           "|sort -nr")
   t)

出力

上記S式の後ろでC-x C-eなど実行して評価すると、下記のような出力が入力されます。

    CLOCK: [2015-05-00 Thu 09:46]  Emacs Lisp Writing
    CLOCK: [2015-05-00 Thu 09:40]--[2015-05-00 Thu 09:46] =>  0:06  Sub Task B-1
    CLOCK: [2015-05-00 Thu 08:57]--[2015-05-00 Thu 09:40] =>  0:43  Sub Task A-2
    CLOCK: [2015-05-00 Thu 08:51]--[2015-05-00 Thu 08:57] =>  0:06  Task B
    CLOCK: [2015-05-00 Thu 08:26]--[2015-05-00 Thu 08:51] =>  0:25  Sub Task A-1
    CLOCK: [2015-05-00 Thu 08:15]--[2015-05-00 Thu 08:26] =>  0:11  Task A

関数にしてキーバインドを追加しても、バッファに表示してpopwinしてもいいとおもいます。

gistにおいてみた