From 8c3ecbe39a0c99e3724246d1eb460495a53721b6 Mon Sep 17 00:00:00 2001 From: Bastien Guerry Date: Wed, 17 Aug 2011 16:08:02 +0200 Subject: [PATCH] Move three functions and add appropriate require/declarations. * org-clock.el (org-duration-string-to-minutes) (org-minutes-to-hh:mm-string, org-hh:mm-string-to-minutes): Move from org.el. --- lisp/org-agenda.el | 3 +++ lisp/org-clock.el | 40 ++++++++++++++++++++++++++++++++++++++ lisp/org-colview-xemacs.el | 1 + lisp/org-colview.el | 1 + lisp/org-taskjuggler.el | 1 + lisp/org.el | 40 -------------------------------------- 6 files changed, 46 insertions(+), 40 deletions(-) diff --git a/lisp/org-agenda.el b/lisp/org-agenda.el index f34324457..c2b111a29 100644 --- a/lisp/org-agenda.el +++ b/lisp/org-agenda.el @@ -78,6 +78,9 @@ (declare-function org-habit-get-priority "org-habit" (habit &optional moment)) (declare-function org-pop-to-buffer-same-window "org-compat" (&optional buffer-or-name norecord label)) +(declare-function org-duration-string-to-minutes "org-clock" (s)) +(declare-function org-hh:mm-string-to-minutes "org-clock" (s)) +(declare-function org-minutes-to-hh:mm-string "org-clock" (m)) (defvar calendar-mode-map) (defvar org-clock-current-task) ; defined in org-clock.el diff --git a/lisp/org-clock.el b/lisp/org-clock.el index 85e4d6790..7c5182c3e 100644 --- a/lisp/org-clock.el +++ b/lisp/org-clock.el @@ -494,6 +494,46 @@ pointing to it." (defvar org-clock-update-period 60 "Number of seconds between mode line clock string updates.") +(defun org-duration-string-to-minutes (s) + "Convert a duration string S to minutes. + +A bare number is interpreted as minutes, modifiers can be set by +customizing `org-effort-durations' (which see). + +Entries containing a colon are interpreted as H:MM by +`org-hh:mm-string-to-minutes'." + (let ((result 0) + (re (concat "\\([0-9]+\\) *\\(" + (regexp-opt (mapcar 'car org-effort-durations)) + "\\)"))) + (while (string-match re s) + (incf result (* (cdr (assoc (match-string 2 s) org-effort-durations)) + (string-to-number (match-string 1 s)))) + (setq s (replace-match "" nil t s))) + (incf result (org-hh:mm-string-to-minutes s)) + result)) + +(defun org-minutes-to-hh:mm-string (m) + "Compute H:MM from a number of minutes." + (let ((h (/ m 60))) + (setq m (- m (* 60 h))) + (format org-time-clocksum-format h m))) + +(defun org-hh:mm-string-to-minutes (s) + "Convert a string H:MM to a number of minutes. +If the string is just a number, interpret it as minutes. +In fact, the first hh:mm or number in the string will be taken, +there can be extra stuff in the string. +If no number is found, the return value is 0." + (cond + ((integerp s) s) + ((string-match "\\([0-9]+\\):\\([0-9]+\\)" s) + (+ (* (string-to-number (match-string 1 s)) 60) + (string-to-number (match-string 2 s)))) + ((string-match "\\([0-9]+\\)" s) + (string-to-number (match-string 1 s))) + (t 0))) + (defun org-clock-get-clock-string () "Form a clock-string, that will be shown in the mode line. If an effort estimate was defined for the current item, use diff --git a/lisp/org-colview-xemacs.el b/lisp/org-colview-xemacs.el index b32e741e7..370c287b2 100644 --- a/lisp/org-colview-xemacs.el +++ b/lisp/org-colview-xemacs.el @@ -33,6 +33,7 @@ (eval-when-compile (require 'cl)) (require 'org) +(require 'org-clock) (declare-function org-agenda-redo "org-agenda" ()) diff --git a/lisp/org-colview.el b/lisp/org-colview.el index d78a52e07..2ad5f9561 100644 --- a/lisp/org-colview.el +++ b/lisp/org-colview.el @@ -30,6 +30,7 @@ (eval-when-compile (require 'cl)) (require 'org) +(require 'org-clock) (declare-function org-agenda-redo "org-agenda" ()) (declare-function org-agenda-do-context-action "org-agenda" ()) diff --git a/lisp/org-taskjuggler.el b/lisp/org-taskjuggler.el index 5ff6a5ef2..d155c777f 100644 --- a/lisp/org-taskjuggler.el +++ b/lisp/org-taskjuggler.el @@ -155,6 +155,7 @@ (require 'org) (require 'org-exp) +(require 'org-clock) ;;; User variables: diff --git a/lisp/org.el b/lisp/org.el index 730b40a83..850accc5c 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -15867,27 +15867,6 @@ If there is already a time stamp at the cursor position, update it." (org-insert-time-stamp (encode-time 0 0 0 (nth 1 cal-date) (car cal-date) (nth 2 cal-date)))))) -(defun org-minutes-to-hh:mm-string (m) - "Compute H:MM from a number of minutes." - (let ((h (/ m 60))) - (setq m (- m (* 60 h))) - (format org-time-clocksum-format h m))) - -(defun org-hh:mm-string-to-minutes (s) - "Convert a string H:MM to a number of minutes. -If the string is just a number, interpret it as minutes. -In fact, the first hh:mm or number in the string will be taken, -there can be extra stuff in the string. -If no number is found, the return value is 0." - (cond - ((integerp s) s) - ((string-match "\\([0-9]+\\):\\([0-9]+\\)" s) - (+ (* (string-to-number (match-string 1 s)) 60) - (string-to-number (match-string 2 s)))) - ((string-match "\\([0-9]+\\)" s) - (string-to-number (match-string 1 s))) - (t 0))) - (defcustom org-effort-durations `(("h" . 60) ("d" . ,(* 60 8)) @@ -15908,25 +15887,6 @@ effort string \"2hours\" is equivalent to 120 minutes." :type '(alist :key-type (string :tag "Modifier") :value-type (number :tag "Minutes"))) -(defun org-duration-string-to-minutes (s) - "Convert a duration string S to minutes. - -A bare number is interpreted as minutes, modifiers can be set by -customizing `org-effort-durations' (which see). - -Entries containing a colon are interpreted as H:MM by -`org-hh:mm-string-to-minutes'." - (let ((result 0) - (re (concat "\\([0-9]+\\) *\\(" - (regexp-opt (mapcar 'car org-effort-durations)) - "\\)"))) - (while (string-match re s) - (incf result (* (cdr (assoc (match-string 2 s) org-effort-durations)) - (string-to-number (match-string 1 s)))) - (setq s (replace-match "" nil t s))) - (incf result (org-hh:mm-string-to-minutes s)) - result)) - ;;;; Files (defun org-save-all-org-buffers ()