
kitchen-timer.el は Emacs をタイマにする Elisp です。

こんなかんじ。
kt-image-dir に数字の画像(ソースに含まれています)が入ったディレクトリを指定し、kt-notice-hookには残り時間がゼロになったときに実行する関数を入れておきます。kt-notice-hookは設定しなくてもかまいません。
設定例:
(setq kt-image-dir "~/site-lisp/kitchen-timer/images") (add-hook 'kt-notice-hook 'beep)
M-x kitchen-timer でスタート。数字を適当に入れて、s で計測開始。計測途中でもう一度 s を押すと止まります。C-q で終了。C-bでキッチン・タイマのバッファは無くなりますが、計測は続いています。再度M-x kitchen-timer で残り時間の表示を再開できます。
数字には画像を使っています。その画像を作るために convert コマンドが必要です。
ご自由にお使い下さい → ソース
下のようなログを取るための設定です。
00:03:00(20:43:14) << ラーメン!! 00:02:45(20:43:35) -> じれったいな 00:02:39(20:43:41) <- がまんがまん 00:01:26(20:44:54) >> 食
設定例:
(defvar kt-log nil)
(defun kt-make-time-string (add-string)
(let ((time (if (kt-get-start-time)
(kt-decode-time (kt-compute-time))
(kt-get-rest-time))))
(concat
(if (nth 3 time) "-" " ")
(apply 'format "%02d:%02d:%02d" time)
(apply 'format "(%02d:%02d:%02d) "
(nthcdr 6 (reverse
(decode-time (current-time)))))
add-string)))
(defadvice kt-toggle-timer (around kt-toggle-timer-around activate)
(unless (kt-get-timer)
(setq kt-log (concat kt-log
(kt-make-time-string (if (kt-get-start-time)
"<- " "<< "))
(read-from-minibuffer (if (kt-get-start-time)
"Restart: " "Start: "))
"\n")))
ad-do-it
(unless (kt-get-timer)
(setq kt-log (concat kt-log
(kt-make-time-string ">> ")
(read-from-minibuffer "End: ")
"\n"))))
(defadvice kt-background (after kt-background-after activate)
(insert (or kt-log "") (kt-make-time-string "-> "))
(setq kt-log nil))
(defadvice kt-quit (around kt-quit-around activate)
(when (kt-get-timer)
(setq kt-log (concat kt-log
(kt-make-time-string ">> "))))
ad-do-it
(when kt-log
(insert kt-log))
(setq kt-log nil))