Limit length of clock string and make it clickable.

Patch from James TD Smith.
This commit is contained in:
Carsten Dominik 2008-09-21 07:35:01 +02:00
parent 66373c350d
commit e6630ed359
1 changed files with 28 additions and 11 deletions

View File

@ -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,24 @@ 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"))
(org-propertize
(let ((clock-string (format (concat "-[" org-time-clocksum-format " (%s)]")
h m org-clock-heading))
(help-text "Org-mode clock is running. Mouse-2 to go there."))
(if (and (> org-clock-string-limit 0)
(> (length clock-string) org-clock-string-limit))
(org-propertize (substring clock-string 0 org-clock-string-limit)
'help-echo (concat help-text ": " org-clock-heading))
(org-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,13 +269,14 @@ 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 (propertize org-clock-heading 'face nil))
(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 (org-propertize org-clock-heading 'face nil))
(org-clock-find-position)
(insert "\n") (backward-char 1)