summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBastien Guerry <bzg@altern.org>2010-09-02 23:40:44 +0200
committerBastien Guerry <bzg@altern.org>2010-09-02 23:40:44 +0200
commit58a49d173957198755939246618f08d11e37b9a1 (patch)
tree7b67985d1d3f46fe6244dedf96a82b604e8539f1
parenteb666ed8e722d4b521e784e8064c29cb6d47f681 (diff)
downloadorg-mode-58a49d173957198755939246618f08d11e37b9a1.tar.gz
`org-timer-set-timer': display a countdown in the modeline for.
This was requested long time ago by Frederic Couchet and more recently by Ɓukasz Stelmach.
-rw-r--r--lisp/org-timer.el16
1 files changed, 13 insertions, 3 deletions
diff --git a/lisp/org-timer.el b/lisp/org-timer.el
index 53a2679..7519d85 100644
--- a/lisp/org-timer.el
+++ b/lisp/org-timer.el
@@ -165,9 +165,13 @@ it in the buffer."
(defun org-timer-value-string ()
(format org-timer-format (org-timer-secs-to-hms (floor (org-timer-seconds)))))
+(defvar org-timer-timer-is-countdown nil)
(defun org-timer-seconds ()
- (- (org-float-time (or org-timer-pause-time (current-time)))
- (org-float-time org-timer-start-time)))
+ (if org-timer-timer-is-countdown
+ (- (org-float-time org-timer-start-time)
+ (org-float-time (current-time)))
+ (- (org-float-time (or org-timer-pause-time (current-time)))
+ (org-float-time org-timer-start-time))))
;;;###autoload
(defun org-timer-change-times-in-region (beg end delta)
@@ -377,8 +381,14 @@ replace any running timer."
secs nil `(lambda ()
(setq org-timer-current-timer nil)
(org-notify ,(format "%s: time out" hl) t)
+ (setq org-timer-timer-is-countdown nil)
+ (org-timer-set-mode-line 'off)
(run-hooks 'org-timer-done-hook))))
- (run-hooks 'org-timer-set-hook))
+ (run-hooks 'org-timer-set-hook)
+ (setq org-timer-timer-is-countdown t
+ org-timer-start-time
+ (time-add (current-time) (seconds-to-time (* mins 60))))
+ (org-timer-set-mode-line 'on))
(message "No timer set"))))))
(provide 'org-timer)