worklog

Homepage: https://github.com/credmp/worklog

Updated:

Summary

The Emacs timetracker

Commentary

This code lets you keep track of stuff you do.  It writes
time-stamps and some data into a file, formatted for easy parsing.
The format of the file is as follows: Each entry starts in the
beginning of a line with a date and time of the format YYYY-MM-DD
HH:MM (24 h clock).  Then comes whitespace and the entry itself.
The entry may be continued on the next line, continuation lines
begin with whitespace.

The most important commands are M-x worklog RET and M-x
worklog-show RET (the former automatically adds an entry).  Type
C-h m when looking at the worklog file for information what you can
do.

In addition to facilitating event logging, worklog.el also provides
task duration calculation and summarization by task and date.  To
realize these benefits, you must enter login, logout and task stop
(or done) information.  If your worklog buffer looks like this:

2003-07-22 17:20 login
2003-07-22 18:33 Hacking on worklog
2003-07-22 20:00 logout

2003-07-23 06:44 login
2003-07-23 06:44 Website redesign
2003-07-23 07:07 logout

Then, M-x worklog-summarize-tasks produces something like this:

Generated by Worklog 2.4.1

Generated on 2004-05-11 at 06:55
Reporting on 2003-07-22 to 2003-07-23

By date
-------
2003-07-23
  0.23	Website redesign
2003-07-22
  1.27	Hacking on worklog

 1.50	Total time spent working

Tasks
-----
0.23	Website redesign
1.27	Hacking on worklog

See `worklog-task-begin' for more info.  If non-nil, the normal hook
`worklog-summarize-tasks-hook' is run in the output buffer prior to
display.

From version 2.0 on it is possible to automate worklog via your .emacs.
Add the following to your .emacs in order to to have a standard task
'Hacking emacs' start as soon as you start emacs. When emacs gets killed
it will also log an logout task.

(require 'worklog)
(setq worklog-automatic-login t)
(add-hook 'emacs-startup-hook
          (function (lambda ()
                      (worklog-do-task "Hacking emacs" t)
                      )))

(add-hook 'kill-emacs-hook
          (function (lambda ()
                      (worklog-do-task "logout" t)
                      (worklog-finish)
                      )))

When `worklog-automatic-login' is set to non-nil it will automatically
insert your 'login' task. The non-nil 2nd argument to `worklog-do-task'
will add an stop task for any running tasks.

If you don't want to use `worklog-automatic-login' you will need to insert
a 'login' task yourselfs manually.

_note to incorporate above_ `done' and `stop' mean exactly the same thing.

Dependencies