Homepage: https://github.com/credmp/worklog
Updated:
The Emacs timetracker
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.