From mboxrd@z Thu Jan 1 00:00:00 1970 From: g.kettleborough@uea.ac.uk Subject: [PATCH] Option for clock and timer to be displayed in frame-title Date: Tue, 28 Feb 2012 21:44:12 +0000 Message-ID: <87pqcypr9v.fsf@uea.ac.uk> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" Return-path: Received: from eggs.gnu.org ([208.118.235.92]:49497) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S2UqH-0006zd-Ly for emacs-orgmode@gnu.org; Tue, 28 Feb 2012 16:44:19 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1S2UqF-0004iH-Ap for emacs-orgmode@gnu.org; Tue, 28 Feb 2012 16:44:17 -0500 Received: from mtaout01-winn.ispmail.ntl.com ([81.103.221.47]:52847) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1S2UqF-0004i7-0G for emacs-orgmode@gnu.org; Tue, 28 Feb 2012 16:44:15 -0500 List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: emacs-orgmode@gnu.org --=-=-= Attached is a patch that gives the option to show the clock and timer information in the frame title as well as the mode line (or both or neither). I find this useful as there is often not enough room in the mode line but there is enough in the frame title. I am in the process of assigning my copyright to the FSF for this and hopefully future org-mode contributions. I submit the patch now and request comments as this is my first contribution to the project. Thanks, George. --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=0001-Option-for-clock-and-timer-to-be-displayed-in-frame-.patch Content-Description: Patch >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 --=-=-=--