emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: James TD Smith <ahktenzero@mohorovi.cc>
To: emacs-orgmode@gnu.org
Subject: [PATCH 1/9] Some improvements to the modeline clock display
Date: Sat, 20 Sep 2008 22:08:46 +0100	[thread overview]
Message-ID: <20080920210846.19759.43871.stgit@nyarlathotep.internal.mohorovi.cc> (raw)
In-Reply-To: <20080920210101.19759.15959.stgit@nyarlathotep.internal.mohorovi.cc>

Allow users to specify a maximum length for the modeline clock. Add an option to
limit the length of the clock string in the modeline. When the limit is in
effect, the full item text is included in the tooltip on the clock string.

Make clicking on the clock string now goes to the currently clocked item.
---

 lisp/ChangeLog    |   29 +++++++++++------------------
 lisp/org-clock.el |   36 ++++++++++++++++++++++++++----------
 2 files changed, 37 insertions(+), 28 deletions(-)

diff --git a/lisp/ChangeLog b/lisp/ChangeLog
index 3a57ca8..5eb535f 100755
--- a/lisp/ChangeLog
+++ b/lisp/ChangeLog
@@ -1,3 +1,13 @@
+2008-09-20  James TD Smith  <ahktenzero@mohorovi.cc>
+
+	* lisp/org-clock.el (org-update-mode-line): Support limiting the
+	modeline clock string, and display the full todo value in the
+	tooltip. Set a local keymap so mouse-3 on the clock string goes to
+	the currently clocked task.
+	(org-clock-string-limit): Add a custom value for the maximum
+	length of the clock string in the modeline.
+	(org-clock-mode-map): Add a keymap for the modeline string
+
 2008-09-20  Bastien Guerry  <bzg@altern.org>
 
 	* org-export-latex.el (org-export-latex-tables): protect exported
@@ -215,16 +225,6 @@
 
 	* org.el (org-columns-modify-value-for-display-function): New option.
 
-
-
-
-
-
-
-
-
-
-
 	* org-publish.el (org-publish-file): Make sure the directory match
 	for the publishing directory works correctly.
 
@@ -238,13 +238,6 @@
 
 	* org.el (org-autoload): Add `org-dblock-write:columnview'.
 
-
-
-
-
-
-
-
 2008-07-23  Carsten Dominik  <dominik@science.uva.nl>
 
 	* org-exp.el (org-export-region-as-html, org-export-as-html): Make
@@ -255,7 +248,7 @@
 
 	* org-agenda.el (org-batch-store-agenda-views): Fix parsing bug.
 
-2008-07-20  Juri Linkov <juri@jurta.org>
+2008-07-20  Juri Linkov  <juri@jurta.org>
 
 	* org.el (narrow-map): Bind `org-narrow-to-subtree' to "s" on the
 	new keymap `narrow-map' instead of binding "\C-xns".
diff --git a/lisp/org-clock.el b/lisp/org-clock.el
index f2f49a8..4d2069c 100644
--- a/lisp/org-clock.el
+++ b/lisp/org-clock.el
@@ -86,6 +86,10 @@ The function is called with point at the beginning of the headline."
   :group 'org-clock
   :type 'function)
 
+(defcustom org-clock-string-limit 0
+  "Maximum length of clock strings in the modeline. 0 means no limit"
+  :group 'org-clock
+  :type 'integer)
 
 ;;; The clock for measuring work time.
 
@@ -107,6 +111,9 @@ of a different task.")
 (defvar org-clock-interrupted-task (make-marker)
   "Marker pointing to the task that has been interrupted by the current clock.")
 
+(defvar org-clock-mode-map (make-sparse-keymap))
+(define-key org-clock-mode-map [mode-line mouse-2] 'org-clock-goto)
+
 (defun org-clock-history-push (&optional pos buffer)
   "Push a marker to the clock history."
   (setq org-clock-history-length (max 1 (min 35 org-clock-history-length)))
@@ -190,15 +197,23 @@ of a different task.")
       (when (and cat task)
 	(insert (format "[%c] %-15s %s\n" i cat task))
 	(cons i marker)))))
-  
+
 (defun org-update-mode-line ()
   (let* ((delta (- (time-to-seconds (current-time))
-                   (time-to-seconds org-clock-start-time)))
+		   (time-to-seconds org-clock-start-time)))
 	 (h (floor delta 3600))
 	 (m (floor (- delta (* 3600 h)) 60)))
     (setq org-mode-line-string
-	  (propertize (format (concat "-[" org-time-clocksum-format " (%s)]") h m org-clock-heading)
-		      'help-echo "Org-mode clock is running"))
+	  (propertize (let ((clock-string (format (concat "-[" org-time-clocksum-format " (%s)]")
+						  h m org-clock-heading))
+			    (help-text "Org-mode clock is running"))
+			(if (and (> org-clock-string-limit 0)
+				 (> (length clock-string) org-clock-string-limit))
+			    (propertize (substring clock-string 0 org-clock-string-limit)
+			    'help-echo (concat help-text ": " org-clock-heading))
+			  (propertize clock-string 'help-echo help-text)))
+		      'local-map org-clock-mode-map
+		      'mouse-face '(face mode-line-highlight)))
     (force-mode-line-update)))
 
 (defvar org-clock-mode-line-entry nil
@@ -253,12 +268,13 @@ the clocking selection, associated with the letter `d'."
 					      org-clock-in-switch-to-state
 					      "\\>"))))
 	    (org-todo org-clock-in-switch-to-state))
-	  (if (and org-clock-heading-function
-		   (functionp org-clock-heading-function))
-	      (setq org-clock-heading (funcall org-clock-heading-function))
-	    (if (looking-at org-complex-heading-regexp)
-		(setq org-clock-heading (match-string 4))
-	      (setq org-clock-heading "???")))
+	  (setq org-clock-heading
+		(cond ((and org-clock-heading-function
+			    (functionp org-clock-heading-function))
+		       (funcall org-clock-heading-function))
+		      ((looking-at org-complex-heading-regexp)
+		       (match-string 4))
+		      (t "???")))
 	  (setq org-clock-heading (propertize org-clock-heading 'face nil))
 	  (org-clock-find-position)
 	  

  reply	other threads:[~2008-09-20 21:08 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-09-20 21:08 [PATCH 0/9] Update my last patchset James TD Smith
2008-09-20 21:08 ` James TD Smith [this message]
2008-09-20 21:08 ` [PATCH 2/9] Fix X clipboard handling in emacs21 James TD Smith
2008-09-20 21:08 ` [PATCH 3/9] Show durations of clocked times in timeline James TD Smith
2008-09-20 21:09 ` [PATCH 4/9] Fix link display in imenus and the refile interface James TD Smith
2008-09-21  6:25   ` Carsten Dominik
2008-09-21 14:31     ` [PATCH] " James TD Smith
2008-09-21 19:40       ` Carsten Dominik
2008-09-20 21:09 ` [PATCH 5/9] Fix note insertion in entries with drawers James TD Smith
2008-10-16  4:50   ` Carsten Dominik
2008-09-20 21:09 ` [PATCH 6/9] Add some functions for handling checklists James TD Smith
2008-09-20 21:09 ` [PATCH 7/9] Add some new interaction between remember and clocked tasks James TD Smith
2008-09-20 21:09 ` [PATCH 8/9] Add a % expansion for inserting properties in remember buffers James TD Smith
2008-09-20 21:09 ` [PATCH 9/9] Some bugfixes for org-plot James TD Smith
2008-09-21  4:48 ` [PATCH 0/9] Update my last patchset Carsten Dominik
2008-09-21 12:21   ` James TD Smith
2008-09-21 12:43     ` Carsten Dominik

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20080920210846.19759.43871.stgit@nyarlathotep.internal.mohorovi.cc \
    --to=ahktenzero@mohorovi.cc \
    --cc=emacs-orgmode@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).