-
-
Notifications
You must be signed in to change notification settings - Fork 91
Tagging
Doing uses TaskPaper @tags for searching and filtering, as well as for time tracking. Just include @tags in the text of your entries to make them searchable, sortable, and trackable.
For example, tag a an entry with @coding and @project1 by running doing now @coding a new plugin for @project1
, and another entry with doing now @coding some stuff for @project2
. Now you can display both entries with doing show @coding
, or just show a single project's entries with doing show @project1
. All of the display and view commands allow combining tags with AND, OR, or NOT booleans.
doing tag
adds one or more tags to the last entry, or specify a count with -c X
. Tags are specified as basic arguments, separated by spaces. For example:
doing tag -c 3 client cancelled
... will mark the last three entries as @client @cancelled. Add -r/--remove
as a switch to remove the listed tags instead. Use --search
to add tags based on search results, and you can do interactive batch tagging using doing select
. If you want to include a value (e.g. @tag(value)
), use the -v/--value
flag, e.g. doing tag progress -v 50
.
You can also have tags added automatically based on keywords. See Autotagging.
The @done tag is the only tag Doing mandates internally. This is added to an entry when you mark it finished, and the timestamp is included as a tag value in parenthesis, e.g. @done(2021-12-23 05:35)
. Any tag can have a value, but at present Doing doesn't have any means of querying based on tag values.
Doing can also flag entries. By default it uses @flagged, but this can be changed in the configuration. You can add a @flagged tag to the last note with doing flag
. Remove a flag with doing flag -r
.
Each tag used gets an elapsed time (the time between the entry creation and the value of the @done tag) recorded for every entry it appears on. When running display commands, you can use --totals
to see the total time tracked for each tag.
doing show --totals
outputs something like:
See Time Tracking for more details.
The show
command can display entries containing specific tags just by prefixing an argument with @
. doing show @work
will show all entries tagged @work. You can have multiple tag arguments and combine them with booleans (and, or, not). For example, to show all entries tagged both @personal and @writing:
doing show @personal @writing --bool and
Most commands accept a --tag
flag. For example, if you wanted to repeat an entry yesterday tagged @marvelous, you would run doing again --tag marvelous
, and the last entry tagged @marvelous would be duplicated as a new entry. Multiple tags can be combined with commas, and you can define the boolean using --bool
with and
, or
, or not
.
doing again --tag work,project1 --bool and
doing cancel --tag work,writing --bool or
Tags can have values appended in parenthesis. The @done tag is an example of this, where @done(2022-01-15 12:00)
has a date value. A value can be any text or number. For example, you can track progress on something using @progress(50)
or @completed(25%)
, or define a scope using @context(Work)
or @context(Personal)
.
When adding tags with doing tag
, you can include --value VAL
to specify a value for the new tag, e.g. doing tag context --value Personal
would add @context(Personal)
to the last entry. When including tags in the entry title, just add the parenthesis and the value inline. If more than one tag is passed as an argument, the value will be applied to all of them, so this is best used with a single tag. If the tag already exists, its value will be updated.
When adding tags interactively using doing select
-> add tag
, you can include a value in the tag when requested, e.g. progress(50)
. Spaces are allowed in tag values.