From mboxrd@z Thu Jan 1 00:00:00 1970 From: Austin Frank Subject: [org-timer] PATCH add hooks to org-timer.el Date: Sat, 20 Feb 2010 08:41:55 -0500 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============0988437485==" Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Nipb4-0002PA-Tf for emacs-orgmode@gnu.org; Sat, 20 Feb 2010 08:42:14 -0500 Received: from [140.186.70.92] (port=39808 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Nipb4-0002OB-1J for emacs-orgmode@gnu.org; Sat, 20 Feb 2010 08:42:14 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1Nipb2-0007Tf-Rk for emacs-orgmode@gnu.org; Sat, 20 Feb 2010 08:42:13 -0500 Received: from lo.gmane.org ([80.91.229.12]:54653) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Nipb2-0007TT-G7 for emacs-orgmode@gnu.org; Sat, 20 Feb 2010 08:42:12 -0500 Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1Nipax-0000MC-9U for emacs-orgmode@gnu.org; Sat, 20 Feb 2010 14:42:07 +0100 Received: from wireless.hlp.rochester.edu ([128.151.52.3]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 20 Feb 2010 14:42:07 +0100 Received: from austin.frank by wireless.hlp.rochester.edu with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Sat, 20 Feb 2010 14:42:07 +0100 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org --===============0988437485== Content-Type: multipart/signed; boundary="==-=-="; micalg=pgp-sha1; protocol="application/pgp-signature" --==-=-= Content-Type: multipart/mixed; boundary="=-=-=" --=-=-= Hello all-- I'm experimenting with the pomodoro technique [1] and trying to integrate it with org mode. I've attached a patch that defines some hooks for org-timer.el. My intention is to use these hooks to automate record keeping and interactions with org-clock. If this isn't the correct approach to adding hooks to timer functions, what would you suggest? Thanks for considering it, /au [1] http://www.pomodorotechnique.com --=-=-= Content-Type: text/x-patch Content-Disposition: inline; filename=0001-add-hooks-for-relative-and-countdown-timers.patch Content-Transfer-Encoding: quoted-printable From=2086de94d18302bda17379c35f11423788b11348c2 Mon Sep 17 00:00:00 2001 From: Austin F. Frank Date: Sat, 20 Feb 2010 08:22:47 -0500 Subject: [PATCH 3/3] add hooks for relative and countdown timers =2D-- lisp/org-timer.el | 36 ++++++++++++++++++++++++++++++++++-- 1 files changed, 34 insertions(+), 2 deletions(-) diff --git a/lisp/org-timer.el b/lisp/org-timer.el index ed5a423..47397aa 100644 =2D-- a/lisp/org-timer.el +++ b/lisp/org-timer.el @@ -48,6 +48,31 @@ the value of the relative timer." :group 'org-time :type 'string) =20 +(defcustom org-timer-start-hook nil + "Hook run after relative timer is started." + :group 'org-time + :type 'hook) + +(defvar org-timer-stop-hook nil + "Hook run before relative timer is stopped." + :group 'org-time + :type 'hook) + +(defvar org-timer-pause-hook nil + "Hook run before relative timer is paused." + :group 'org-time + :type 'hook) + +(defvar org-timer-set-hook nil + "Hook run after countdown timer is set." + :group 'org-time + :type 'hook) + +(defvar org-timer-cancel-hook nil + "Hook run before countdown timer is canceled." + :group 'org-time + :type 'hook) + ;;;###autoload (defun org-timer-start (&optional offset) "Set the starting time for the relative timer to now. @@ -82,7 +107,8 @@ the region 0:00:00." (org-timer-set-mode-line 'on) (message "Timer start time set to %s, current value is %s" (format-time-string "%T" org-timer-start-time) =2D (org-timer-secs-to-hms (or delta 0)))))) + (org-timer-secs-to-hms (or delta 0))) + (run-hooks 'org-timer-start-hook)))) =20 (defun org-timer-pause-or-continue (&optional stop) "Pause or continue the relative timer. With prefix arg, stop it entirel= y." @@ -102,6 +128,7 @@ the region 0:00:00." (org-timer-set-mode-line 'on) (message "Timer continues at %s" (org-timer-value-string))) (t + (run-hooks 'org-timer-pause-hook) ;; pause timer (setq org-timer-pause-time (current-time)) (org-timer-set-mode-line 'pause) @@ -110,6 +137,7 @@ the region 0:00:00." (defun org-timer-stop () "Stop the relative timer." (interactive) + (run-hooks 'org-timer-stop-hook) (setq org-timer-start-time nil org-timer-pause-time nil) (org-timer-set-mode-line 'off)) @@ -264,6 +292,7 @@ VALUE can be `on', `off', or `pause'." (interactive) (mapc (lambda(timer) (when (eval timer) + (run-hooks 'org-timer-cancel-hook) (cancel-timer timer) (setq timer nil))) '(org-timer-timer1 @@ -317,7 +346,10 @@ VALUE can be `on', `off', or `pause'." (setq org-timer-last-timer (run-with-timer secs nil 'org-notify (format "%s: time out" hl) t)) =2D (set timer org-timer-last-timer))) + (setq org-timer-mode-line-timer + (run-with-timer 1 1 'org-timer-update-mode-line)) + (set timer org-timer-last-timer) + (run-hooks 'org-timer-set-hook))) '(org-timer-timer1 org-timer-timer2 org-timer-timer3))))) =2D-=20 1.7.0 --=-=-= Content-Transfer-Encoding: quoted-printable =2D-=20 Austin Frank http://aufrank.net GPG Public Key (D7398C2F): http://aufrank.net/personal.asc --=-=-=-- --==-=-= Content-Type: application/pgp-signature -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.10 (Darwin) iEYEARECAAYFAkt/5qMACgkQlHMl2/XbR4GgewCfZuJNlakv1uqPnZ90se1TmLTS dngAoJE8c2f8AaqPoUkWlnJ5VsiuaEOi =zVOG -----END PGP SIGNATURE----- --==-=-=-- --===============0988437485== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode --===============0988437485==--