org-timer.el: Use the number of minutes in the Effort property
authorBastien Guerry <bzg@altern.org>
Fri, 14 Mar 2014 11:14:49 +0000 (12:14 +0100)
committerBastien Guerry <bzg@altern.org>
Fri, 14 Mar 2014 11:14:49 +0000 (12:14 +0100)
* org-timer.el (org-timer-cancel-timer, org-timer-stop):
Enhance message.
(org-timer-set-timer): Use the number of minutes in the Effort
property as the default timer value.  Three prefix arguments
will ignore the Effort value property.

lisp/org-timer.el

index 3f52260..91d751a 100644 (file)
@@ -159,12 +159,14 @@ With prefix arg STOP, stop it entirely."
 (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-current-timer nil)
-  (org-timer-set-mode-line 'off)
-  (message "Timer stopped"))
+  (if (not org-timer-current-timer)
+      (message "No running timer")
+    (run-hooks 'org-timer-stop-hook)
+    (setq org-timer-start-time nil
+         org-timer-pause-time nil
+         org-timer-current-timer nil)
+    (org-timer-set-mode-line 'off)
+    (message "Timer stopped")))
 
 ;;;###autoload
 (defun org-timer (&optional restart no-insert-p)
@@ -349,13 +351,14 @@ VALUE can be `on', `off', or `pause'."
 (defun org-timer-cancel-timer ()
   "Cancel the current timer."
   (interactive)
-  (when (eval org-timer-current-timer)
+  (if (not org-timer-current-timer)
+      (message "No timer to cancel")
     (run-hooks 'org-timer-cancel-hook)
     (cancel-timer org-timer-current-timer)
-    (setq org-timer-current-timer nil)
-    (setq org-timer-timer-is-countdown nil)
-    (org-timer-set-mode-line 'off))
-  (message "Last timer canceled"))
+    (setq org-timer-current-timer nil
+         org-timer-timer-is-countdown nil)
+    (org-timer-set-mode-line 'off)
+    (message "Last timer canceled")))
 
 (defun org-timer-show-remaining-time ()
   "Display the remaining time before the timer ends."
@@ -389,9 +392,17 @@ without prompting the user for a duration.
 
 With two `C-u' prefix arguments, use `org-timer-default-timer'
 without prompting the user for a duration and automatically
-replace any running timer."
+replace any running timer.
+
+By default, the timer duration will be set to the number of
+minutes in the Effort property, if any.  You can ignore this by
+using three `C-u' prefix arguments."
   (interactive "P")
-  (let ((minutes (or (and (numberp opt) (number-to-string opt))
+  (let ((minutes (or (and (not (equal opt '(64)))
+                         (number-to-string
+                          (org-hh:mm-string-to-minutes
+                           (org-entry-get (point) "effort"))))
+                    (and (numberp opt) (number-to-string opt))
                     (and (listp opt) (not (null opt))
                          (number-to-string org-timer-default-timer))
                     (read-from-minibuffer