@peccul is peccu

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

= ポモドーロ in Emacs

[2012-12-26 18:11:51]

syohexさんのEmacsでポモドーロテクニック - Life is very shortをみて,使ってみました.

フックの設定

D-BUS動かない(設定できるのか?)のと,私はtodochiku.elでGrowl通知しているのでこんな感じの設定になりました.

(require 'pomodoro)
(setq pomodoro:file "~/org/todo.org")
;; hook関数関連
(require 'todochiku)
(defun* my/pomodoro-notification (&key (title "Pomodoro")
                                       body
                                       (icon 'default))
  (todochiku-message title body (todochiku-icon icon)))

;; 作業終了後の hook
(add-hook 'pomodoro:finish-work-hook
          (lambda ()
            (my/pomodoro-notification :body "Work is Finish" :icon 'star)))

;; 休憩終了後の hook
(add-hook 'pomodoro:finish-rest-hook
          (lambda ()
            (my/pomodoro-notification :body "Break time is finished" :icon 'alarm)))

;; 長期休憩前の hook
(add-hook 'pomodoro:long-rest-hook
          (lambda ()
            (my/pomodoro-notification :body "Long Break time now" :icon 'music)))

コード見てて気づいたんですが,syohexさんの記事では"長期休憩後のhook"となってるところ,どうも長期休憩に入る直前に呼び出される気がします.

finish-work-hook が呼び出されて,すぐに long-rest-hook が呼び出されて休憩開始のイメージです.

あと,なかなか気づかなかったんですが,フックでエラーが発生する*1と,タイマーの時間再設定が呼び出されず,0:00で止まっちゃうことがわかりました.

追加設定

特に必要ないと思いますが,何回繰り返したら長期休憩に入るかを変えられるようにしてみました.

;; 何回繰り返せば長めの休憩に入るか
(defcustom pomodoro:when-long-rest 4
  "When take long rest"
  :group 'pomodoro
  :type 'integer)

;; 長めの休憩に入る回数を変更できるように変更
(defun pomodoro:long-rest-p ()
  (zerop (mod pomodoro:work-count pomodoro:when-long-rest)))

できたらやりたいこと

  • pomodoro:next みたいな関数を作って,それが呼び出されるまではカウントアップする(work/restを何分延長してるかがわかる)
  • pomodoro:file を開いた時に,何分実行したかを挿入する関数を用意するか,追記します?とか聞いてくるようにする

状態を追加して, pomodoro:tick と pomodoro:expire あたりをいじればいいのかなぁ

(とか考えてる間に25分たったので,今日はここまで)

*1:私の場合はnotifications-notifyが動かなかった