From mboxrd@z Thu Jan 1 00:00:00 1970 From: Carsten Dominik Subject: Re: [org-timer] PATCH add hooks to org-timer.el Date: Sat, 20 Feb 2010 15:35:52 +0100 Message-ID: <4F7FC89A-ABEA-438F-9206-F4A21B5D2D02@gmail.com> References: Mime-Version: 1.0 (Apple Message framework v936) Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NiqR6-0007Sy-Mb for emacs-orgmode@gnu.org; Sat, 20 Feb 2010 09:36:00 -0500 Received: from [140.186.70.92] (port=39049 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NiqR4-0007Sm-M0 for emacs-orgmode@gnu.org; Sat, 20 Feb 2010 09:35:59 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1NiqR3-0004wm-Ed for emacs-orgmode@gnu.org; Sat, 20 Feb 2010 09:35:58 -0500 Received: from ey-out-1920.google.com ([74.125.78.149]:58681) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1NiqR3-0004wh-4J for emacs-orgmode@gnu.org; Sat, 20 Feb 2010 09:35:57 -0500 Received: by ey-out-1920.google.com with SMTP id 3so58381eyh.34 for ; Sat, 20 Feb 2010 06:35:55 -0800 (PST) In-Reply-To: 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: Austin Frank Cc: emacs-orgmode@gnu.org Hi Austin, I have applied most of the patch, but I have a question: > @@ -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)) > - (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))))) Could you please coment on the above section? What exactly is it doing and why? - Carsten On Feb 20, 2010, at 2:41 PM, Austin Frank wrote: > 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 > > From 86de94d18302bda17379c35f11423788b11348c2 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 > > --- > 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 > --- 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) > > +(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) > - (org-timer-secs-to-hms (or delta 0)))))) > + (org-timer-secs-to-hms (or delta 0))) > + (run-hooks 'org-timer-start-hook)))) > > (defun org-timer-pause-or-continue (&optional stop) > "Pause or continue the relative timer. With prefix arg, stop it > entirely." > @@ -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)) > - (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))))) > -- > 1.7.0 > > > -- > Austin Frank > http://aufrank.net > GPG Public Key (D7398C2F): http://aufrank.net/personal.asc > _______________________________________________ > 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 - Carsten