+2001-04-23 John Wiegley <johnw@gnu.org>
+
+ * calendar/timeclock.el (timeclock-day-required): If the time
+ required for a particular day is not set, use `timeclock-workday'.
+ (timeclock-find-discrep): Added some sample code in a comment.
+
+ * eshell/eshell.el (eshell-command): Made a few changes so that
+ `eshell-command' could be called programmatically.
+
+ * eshell/esh-mode.el: Moved `eshell-non-interactive-p' to
+ eshell.el.
+
+ * eshell/eshell.el (eshell-non-interactive-p): Moved this variable
+ here.
+
+2001-04-22 John Wiegley <johnw@gnu.org>
+
+ * calendar/timeclock.el: Updated copyright.
+ (timeclock-generate-report): Don't report the daily or two-week
+ total, if no time has been worked in that period.
+ (timeclock-find-discrep): Moved call to `file-readable-p'; removed
+ final computational form, which was unnecessary; corrected a
+ parsing problem when timeclock-relative was nil.
+
+2001-04-22 Kahlil Hodgson <kahlil@discus.anu.edu.au>
+
+ * calendar/timeclock.el (timeclock-modeline-display): Check if
+ `list-entry' is null.
+ (timeclock-use-display-time): The first argument to `set-variable'
+ must be a symbol.
+
2001-04-23 Eli Zaretskii <eliz@is.elta.co.il>
* calendar/calendar.el (diary-entry-marker)
;;; timeclock.el --- mode for keeping track of how much you work
-;; Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+;; Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
;; Author: John Wiegley <johnw@gnu.org>
;; Created: 25 Mar 1999
timeclock-update-timer)))
(setq currently-displaying nil))
(and currently-displaying
- (set-variable timeclock-modeline-display nil))
+ (set-variable 'timeclock-modeline-display nil))
(setq timeclock-use-display-time value)
(and currently-displaying
- (set-variable timeclock-modeline-display t))
+ (set-variable 'timeclock-modeline-display t))
timeclock-use-display-time))
:type 'boolean
:group 'timeclock
(if on-p
(let ((list-entry (memq 'global-mode-string
mode-line-format)))
- (unless (memq 'timeclock-mode-string mode-line-format)
+ (unless (or (null list-entry)
+ (memq 'timeclock-mode-string mode-line-format))
(setcdr list-entry
(cons 'timeclock-mode-string
(cdr list-entry))))
(defsubst timeclock-day-required (day)
- (car day))
+ (or (car day) timeclock-workday))
(defsubst timeclock-day-length (day)
(timeclock-entry-list-length (cdr day)))
;; This is not implemented in terms of the functions above, because
;; it's a bit wasteful to read all of that data in, just to throw
;; away more than 90% of the information afterwards.
- (when (file-readable-p timeclock-file)
- (let* ((now (current-time))
- (todays-date (timeclock-time-to-date now))
- (first t) (accum 0)
- event beg last-date avg
- last-date-limited last-date-seconds)
- (unless timeclock-discrepancy
+ ;;
+ ;; If it were implemented using those functions, it would look
+ ;; something like this:
+ ;; (let ((days (timeclock-day-alist (timeclock-log-data)))
+ ;; (total 0.0))
+ ;; (while days
+ ;; (setq total (+ total (- (timeclock-day-length (cdar days))
+ ;; (timeclock-day-required (cdar days))))
+ ;; days (cdr days)))
+ ;; total)
+ (let* ((now (current-time))
+ (todays-date (timeclock-time-to-date now))
+ (first t) (accum 0)
+ event beg last-date avg
+ last-date-limited last-date-seconds)
+ (unless timeclock-discrepancy
+ (when (file-readable-p timeclock-file)
(setq timeclock-project-list nil
timeclock-last-project nil
timeclock-reason-list nil
(add-to-list 'timeclock-project-list (nth 2 event))
(setq timeclock-last-project (nth 2 event)))
(let ((date (timeclock-time-to-date (cadr event))))
- (if (and timeclock-relative
- (if last-date
- (not (equal date last-date))
- first))
+ (if (if timeclock-relative
+ (if last-date
+ (not (equal date last-date))
+ first)
+ (equal date todays-date))
(setq first nil
accum (- accum
(if last-date-limited
(if (not beg)
(error "Error in format of timelog file!")
(setq timeclock-last-period
- (- (timeclock-time-to-seconds (cadr event))
- beg)
+ (- (timeclock-time-to-seconds (cadr event)) beg)
accum (+ timeclock-last-period accum)
- beg nil)))
+ beg nil))
+ (setq beg nil))
(if (equal last-date todays-date)
(setq timeclock-elapsed
(+ timeclock-last-period timeclock-elapsed)))))
(setq timeclock-last-event event
timeclock-last-event-workday
- (if (equal (timeclock-time-to-date now)
- last-date-limited)
+ (if (equal (timeclock-time-to-date now) last-date-limited)
last-date-seconds
timeclock-workday))
(forward-line))
- (setq timeclock-discrepancy accum)))
- (setq accum (if today-only
- timeclock-elapsed
- timeclock-discrepancy))
- (if timeclock-last-event
- (if (equal (car timeclock-last-event) "i")
- (setq accum (+ accum (timeclock-last-period now)))
- (if (not (equal (timeclock-time-to-date
- (cadr timeclock-last-event))
- (timeclock-time-to-date now)))
- (setq accum (- accum timeclock-last-event-workday)))))
- (setq accum
- (- accum
- (if (and timeclock-last-event
- (equal (timeclock-time-to-date
- (cadr timeclock-last-event))
- (timeclock-time-to-date now)))
- timeclock-last-event-workday
- timeclock-workday))))))
+ (setq timeclock-discrepancy accum))))
+ (setq accum (if today-only
+ timeclock-elapsed
+ timeclock-discrepancy))
+ (if timeclock-last-event
+ (if (equal (car timeclock-last-event) "i")
+ (setq accum (+ accum (timeclock-last-period now)))
+ (if (not (equal (timeclock-time-to-date
+ (cadr timeclock-last-event))
+ (timeclock-time-to-date now)))
+ (setq accum (- accum timeclock-last-event-workday)))))
+ accum))
;;; A reporting function that uses timeclock-log-data
(if (null two-week-len)
(setq two-week-len today-len))
(if html-p (insert "<p>"))
- (insert "\nTime spent on this task today: "
- (timeclock-seconds-to-string today-len)
- ". In the last two weeks: "
- (timeclock-seconds-to-string two-week-len))
+ (if today-len
+ (insert "\nTime spent on this task today: "
+ (timeclock-seconds-to-string today-len)
+ ". In the last two weeks: "
+ (timeclock-seconds-to-string two-week-len))
+ (if two-week-len
+ (insert "\nTime spent on this task in the last two weeks: "
+ (timeclock-seconds-to-string two-week-len))))
(if html-p (insert "<br>"))
(insert "\n"
(timeclock-seconds-to-string (timeclock-workday-elapsed))
"</td>\n")
(setq i (1+ i))))
(insert "</tr>\n")
-
+
(insert "<tr>\n")
(insert "<td align=\"center\">Time out</td>\n")
(let ((i 0) (l 5))
"</td>\n")
(setq i (1+ i))))
(insert "</tr>\n")
-
+
(insert "<tr>\n")
(insert "<td align=\"center\">Break</td>\n")
(let ((i 0) (l 5))
"</td>\n")
(setq i (1+ i))))
(insert "</tr>\n")
-
+
(insert "<tr>\n")
(insert "<td align=\"center\">Workday</td>\n")
(let ((i 0) (l 5))