From 3e29d48fb34e51a81544b1734dd75207c943d567 Mon Sep 17 00:00:00 2001 From: George Kettleborough Date: Tue, 28 Feb 2012 00:51:10 +0000 Subject: [PATCH] Option for clock and timer to be displayed in frame-title --- lisp/org-clock.el | 43 +++++++++++++++++++++++++++++++++++-------- lisp/org-timer.el | 43 +++++++++++++++++++++++++++++++++++-------- 2 files changed, 70 insertions(+), 16 deletions(-) diff --git a/lisp/org-clock.el b/lisp/org-clock.el index 9206608..1a800b6 100644 --- a/lisp/org-clock.el +++ b/lisp/org-clock.el @@ -323,6 +323,15 @@ play with them." :version "24.1" :type 'boolean) +(defcustom org-clock-clocked-in-display 'mode-line + "Where should the clocked in status be displayed." + :group 'org-clock + :type '(choice + (const :tag "Mode line" mode-line) + (const :tag "Frame title" frame-title) + (const :tag "Both" both) + (const :tag "None" nil))) + (defvar org-clock-in-prepare-hook nil "Hook run when preparing the clock. This hook is run before anything happens to the task that @@ -1170,18 +1179,28 @@ the clocking selection, associated with the letter `d'." (save-excursion (org-back-to-heading t) (point)) (buffer-base-buffer)) (setq org-clock-has-been-used t) - (or global-mode-string (setq global-mode-string '(""))) - (or (memq 'org-mode-line-string global-mode-string) - (setq global-mode-string - (append global-mode-string '(org-mode-line-string)))) + ;; add to mode line + (when (or (eq org-clock-clocked-in-display 'mode-line) + (eq org-clock-clocked-in-display 'both)) + (or global-mode-string (setq global-mode-string '(""))) + (or (memq 'org-mode-line-string global-mode-string) + (setq global-mode-string + (append global-mode-string '(org-mode-line-string))))) + ;; add to frame title + (when (or (eq org-clock-clocked-in-display 'frame-title) + (eq org-clock-clocked-in-display 'both)) + (or (memq 'org-mode-line-string frame-title-format) + (setq frame-title-format + (append frame-title-format '(" " org-mode-line-string))))) (org-clock-update-mode-line) (when org-clock-mode-line-timer (cancel-timer org-clock-mode-line-timer) (setq org-clock-mode-line-timer nil)) - (setq org-clock-mode-line-timer - (run-with-timer org-clock-update-period - org-clock-update-period - 'org-clock-update-mode-line)) + (when org-clock-clocked-in-display + (setq org-clock-mode-line-timer + (run-with-timer org-clock-update-period + org-clock-update-period + 'org-clock-update-mode-line))) (when org-clock-idle-timer (cancel-timer org-clock-idle-timer) (setq org-clock-idle-timer nil)) @@ -1329,6 +1348,8 @@ If there is no running clock, throw an error, unless FAIL-QUIETLY is set." (when (not (org-clocking-p)) (setq global-mode-string (delq 'org-mode-line-string global-mode-string)) + (setq frame-title-format + (delq 'org-mode-line-string frame-title-format)) (force-mode-line-update) (if fail-quietly (throw 'exit t) (error "No active clock"))) (let (ts te s h m remove) @@ -1373,6 +1394,8 @@ If there is no running clock, throw an error, unless FAIL-QUIETLY is set." (setq org-clock-idle-timer nil)) (setq global-mode-string (delq 'org-mode-line-string global-mode-string)) + (setq frame-title-format + (delq 'org-mode-line-string frame-title-format)) (when org-clock-out-switch-to-state (save-excursion (org-back-to-heading t) @@ -1472,6 +1495,8 @@ UPDOWN tells whether to change 'up or 'down." (when (not (org-clocking-p)) (setq global-mode-string (delq 'org-mode-line-string global-mode-string)) + (setq frame-title-format + (delq 'org-mode-line-string frame-title-format)) (force-mode-line-update) (error "No active clock")) (save-excursion ; Do not replace this with `with-current-buffer'. @@ -1484,6 +1509,8 @@ UPDOWN tells whether to change 'up or 'down." (move-marker org-clock-hd-marker nil) (setq global-mode-string (delq 'org-mode-line-string global-mode-string)) + (setq frame-title-format + (delq 'org-mode-line-string frame-title-format)) (force-mode-line-update) (message "Clock canceled") (run-hooks 'org-clock-cancel-hook)) diff --git a/lisp/org-timer.el b/lisp/org-timer.el index a3bde0f..b39d362 100644 --- a/lisp/org-timer.el +++ b/lisp/org-timer.el @@ -56,6 +56,15 @@ When 0, the user is prompted for a value." :version "24.1" :type 'number) +(defcustom org-timer-display 'mode-line + "Where to display timer." + :group 'org-time + :type '(choice + (const :tag "Mode line" mode-line) + (const :tag "Frame title" frame-title) + (const :tag "Both" both) + (const :tag "None" nil))) + (defvar org-timer-start-hook nil "Hook run after relative timer is started.") @@ -270,10 +279,17 @@ If the integer is negative, the string will start with \"-\"." (defun org-timer-set-mode-line (value) "Set the mode-line display of the relative timer. VALUE can be `on', `off', or `pause'." - (or global-mode-string (setq global-mode-string '(""))) - (or (memq 'org-timer-mode-line-string global-mode-string) - (setq global-mode-string - (append global-mode-string '(org-timer-mode-line-string)))) + (when (or (eq org-timer-display 'mode-line) + (eq org-timer-display 'both)) + (or global-mode-string (setq global-mode-string '(""))) + (or (memq 'org-timer-mode-line-string global-mode-string) + (setq global-mode-string + (append global-mode-string '(org-timer-mode-line-string))))) + (when (or (eq org-timer-display 'frame-title) + (eq org-timer-display 'both)) + (or (memq 'org-timer-mode-line-string frame-title-format) + (setq frame-title-format + (append frame-title-format '(org-timer-mode-line-string))))) (cond ((equal value 'off) (when org-timer-mode-line-timer @@ -281,21 +297,32 @@ VALUE can be `on', `off', or `pause'." (setq org-timer-mode-line-timer nil)) (setq global-mode-string (delq 'org-timer-mode-line-string global-mode-string)) + (setq frame-title-format + (delq 'org-timer-mode-line-string frame-title-format)) (force-mode-line-update)) ((equal value 'pause) (when org-timer-mode-line-timer (cancel-timer org-timer-mode-line-timer) (setq org-timer-mode-line-timer nil))) ((equal value 'on) + (when (or (eq org-timer-display 'mode-line) + (eq org-timer-display 'both)) (or global-mode-string (setq global-mode-string '(""))) (or (memq 'org-timer-mode-line-string global-mode-string) (setq global-mode-string - (append global-mode-string '(org-timer-mode-line-string)))) + (append global-mode-string '(org-timer-mode-line-string))))) + (when (or (eq org-timer-display 'frame-title) + (eq org-timer-display 'both)) + (or (memq 'org-timer-mode-line-string frame-title-format) + (setq frame-title-format + (append frame-title-format '(org-timer-mode-line-string))))) (org-timer-update-mode-line) (when org-timer-mode-line-timer - (cancel-timer org-timer-mode-line-timer)) - (setq org-timer-mode-line-timer - (run-with-timer 1 1 'org-timer-update-mode-line))))) + (cancel-timer org-timer-mode-line-timer) + (setq org-timer-mode-line-timer nil)) + (when org-timer-display + (setq org-timer-mode-line-timer + (run-with-timer 1 1 'org-timer-update-mode-line)))))) (defun org-timer-update-mode-line () "Update the timer time in the mode line." -- 1.7.4.1