Skip to content
Brett Terpstra edited this page Nov 18, 2021 · 9 revisions

Documentation in progress.

Doing entries always have a start date, and --- unless you specify otherwise --- when you mark an entry as @done, the @done tag gets a date value. Doing can then calculate the interval between start and finish to show how long you spent on any given entry.

All of the display commands (show, view, etc.) have a template option to show %interval in the output. When this is present, any entry listed that has a non-zero interval will display its elapsed time.

You can also use the --totals option with various commands to total up times based on @tags. The output will show the total time recorded for all items containing each tag. Times are listed in DD:HH:MM.

For example, if you'd been adding entries as you worked last week and wanted to see where you spent your time during the work week, you could run doing show --from "mon to fri" --times --totals. The output would include a block at the end like this:

--- Tag Totals ---
bunch:           00:00:33
coding:          00:06:58
communication:   00:00:24
contentcreation: 00:01:05
design:          00:00:44
doing:           00:02:34
meetings:        00:03:42
wiki:            00:00:25
writing:         00:01:13

I use local config files to automatically tag projects and activities based on what directory I'm running Doing from, so this gives me a pretty good idea where I've been.

Skipping time tracking for an entry

You can use --no-date with tag/finish/done to avoid adding a timestamp to the @done tag. This means that in time totals reports the entry will show no elapsed interval. When you use doing cancel, it adds a dateless @done.

If you have occasion to frequently create entries that should not be timed, you can use the never_time config setting to prevent a date from being included with the @done tag based on section or tags. This will prevent any time interval from being recorded for the entry. In your ~/.doingrc file, include an array of tags or sections which should never be timed. Tags should begin with @, anything without an @ will be assumed to be a section.

never_time: [@idea, @reminder, Ideas]

With the above config, any entry tagged "@idea" or "@reminder", or in the section "Ideas" would never be timed. If a command is called which finishes them, they'll receive a "@done" tag with no date value.

In the above example, I'm be using the "@idea" tag to track ideas. I might add an idea for future reference and leave it for days. When I finally get around to doing something with it, I don't want 72 hours of time to be tracked in my reports. With the never_time setting, I'll know that I can just use doing finish with a search argument to mark it complete and it won't be dated.

You can also prevent an entry from ever being marked @done with the never_finish key (using the same parameters).