Browse Source

org-timer.el: Use the number of minutes in the Effort property

* 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.
Bastien Guerry 11 years ago
parent
commit
d49957ef02
1 changed files with 24 additions and 13 deletions
  1. 24 13
      lisp/org-timer.el

+ 24 - 13
lisp/org-timer.el

@@ -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