emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Carsten Dominik <carsten.dominik@gmail.com>
To: Austin Frank <austin.frank@gmail.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: [org-timer] PATCH add hooks to org-timer.el
Date: Sat, 20 Feb 2010 15:35:52 +0100	[thread overview]
Message-ID: <4F7FC89A-ABEA-438F-9206-F4A21B5D2D02@gmail.com> (raw)
In-Reply-To: <m0bpfk9g7w.fsf@urwireless-dhcp-128-151-23-69.wireless.rochester.edu>

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 <austin.frank@gmail.com>
> 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

  reply	other threads:[~2010-02-20 14:36 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-02-20 13:41 [org-timer] PATCH add hooks to org-timer.el Austin Frank
2010-02-20 14:35 ` Carsten Dominik [this message]
2010-02-20 15:02   ` Austin Frank
2010-04-15  7:52 ` Emmanuel Di Pretoro

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4F7FC89A-ABEA-438F-9206-F4A21B5D2D02@gmail.com \
    --to=carsten.dominik@gmail.com \
    --cc=austin.frank@gmail.com \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).