diff options
author | Richard M. Stallman <[email protected]> | 2007-05-10 16:32:30 +0000 |
---|---|---|
committer | Richard M. Stallman <[email protected]> | 2007-05-10 16:32:30 +0000 |
commit | 9adcbb0ce23a2fdbb363156022f0ec21a3e0dd6b (patch) | |
tree | 33adfdb95d936eb2ce690a21dddaf3195a26486f /lisp | |
parent | ef533d3e77093882d3a7895827252ac56fef8923 (diff) |
(timeclock-in): Fix non-interactive workday specifications.
(timeclock-log): Don't kill the log buffer if it already existed.
Diffstat (limited to 'lisp')
-rw-r--r-- | lisp/calendar/timeclock.el | 59 |
1 files changed, 32 insertions, 27 deletions
diff --git a/lisp/calendar/timeclock.el b/lisp/calendar/timeclock.el index 398b2dd1de..4e6e412040 100644 --- a/lisp/calendar/timeclock.el +++ b/lisp/calendar/timeclock.el @@ -375,8 +375,9 @@ discover the name of the project." (setq timeclock-discrepancy (- (or timeclock-discrepancy 0) workday)) (if (not (= workday timeclock-workday)) - (timeclock-log "h" (and (numberp arg) - (number-to-string arg)))))) + (timeclock-log "h" (number-to-string + (/ workday (if (zerop (% workday (* 60 60))) + 60 60.0) 60)))))) (timeclock-log "i" (or project (and timeclock-get-project-function (or find-project (interactive-p)) @@ -651,31 +652,35 @@ that variable's documentation." "Log the event CODE to the timeclock log, at the time of call. If PROJECT is a string, it represents the project which the event is being logged for. Normally only \"in\" events specify a project." - (with-current-buffer (find-file-noselect timeclock-file) - (goto-char (point-max)) - (if (not (bolp)) - (insert "\n")) - (let ((now (current-time))) - (insert code " " - (format-time-string "%Y/%m/%d %H:%M:%S" now) - (or (and project - (stringp project) - (> (length project) 0) - (concat " " project)) - "") - "\n") - (if (equal (downcase code) "o") - (setq timeclock-last-period - (- (timeclock-time-to-seconds now) - (timeclock-time-to-seconds - (cadr timeclock-last-event))) - timeclock-discrepancy - (+ timeclock-discrepancy - timeclock-last-period))) - (setq timeclock-last-event (list code now project))) - (save-buffer) - (run-hooks 'timeclock-event-hook) - (kill-buffer (current-buffer)))) + (let ((extant-timelog (find-buffer-visiting timeclock-file))) + (with-current-buffer (find-file-noselect timeclock-file) + (save-excursion + (save-restriction + (widen) + (goto-char (point-max)) + (if (not (bolp)) + (insert "\n")) + (let ((now (current-time))) + (insert code " " + (format-time-string "%Y/%m/%d %H:%M:%S" now) + (or (and project + (stringp project) + (> (length project) 0) + (concat " " project)) + "") + "\n") + (if (equal (downcase code) "o") + (setq timeclock-last-period + (- (timeclock-time-to-seconds now) + (timeclock-time-to-seconds + (cadr timeclock-last-event))) + timeclock-discrepancy + (+ timeclock-discrepancy + timeclock-last-period))) + (setq timeclock-last-event (list code now project))))) + (save-buffer) + (run-hooks 'timeclock-event-hook) + (unless extant-timelog (kill-buffer (current-buffer)))))) (defvar timeclock-moment-regexp (concat "\\([bhioO]\\)\\s-+" |