doing 2.1.23 → 2.1.27

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. checksums.yaml +4 -4
  2. data/.yardoc/checksums +17 -21
  3. data/.yardoc/object_types +0 -0
  4. data/.yardoc/objects/root.dat +0 -0
  5. data/CHANGELOG.md +329 -102
  6. data/Dockerfile +5 -5
  7. data/Dockerfile-2.6 +5 -5
  8. data/Dockerfile-2.7 +5 -4
  9. data/Dockerfile-3.0 +5 -4
  10. data/Gemfile.lock +1 -1
  11. data/README.md +1 -1
  12. data/Rakefile +3 -3
  13. data/bin/commands/add_section.rb +15 -0
  14. data/bin/commands/again.rb +57 -0
  15. data/bin/commands/archive.rb +55 -0
  16. data/bin/commands/cancel.rb +60 -0
  17. data/bin/commands/changes.rb +69 -0
  18. data/bin/commands/choose.rb +9 -0
  19. data/bin/commands/colors.rb +21 -0
  20. data/bin/commands/commands.rb +89 -0
  21. data/bin/commands/commands_accepting.rb +76 -0
  22. data/bin/commands/completion.rb +27 -0
  23. data/bin/commands/config.rb +245 -0
  24. data/bin/commands/done.rb +235 -0
  25. data/bin/commands/finish.rb +126 -0
  26. data/bin/commands/flag.rb +90 -0
  27. data/bin/commands/grep.rb +108 -0
  28. data/bin/commands/import.rb +71 -0
  29. data/bin/commands/install_fzf.rb +17 -0
  30. data/bin/commands/last.rb +81 -0
  31. data/bin/commands/meanwhile.rb +76 -0
  32. data/bin/commands/note.rb +91 -0
  33. data/bin/commands/now.rb +145 -0
  34. data/bin/commands/on.rb +65 -0
  35. data/bin/commands/open.rb +53 -0
  36. data/bin/commands/plugins.rb +23 -0
  37. data/bin/commands/recent.rb +77 -0
  38. data/bin/commands/redo.rb +26 -0
  39. data/bin/commands/reset.rb +73 -0
  40. data/bin/commands/rotate.rb +42 -0
  41. data/bin/commands/sections.rb +11 -0
  42. data/bin/commands/select.rb +105 -0
  43. data/bin/commands/show.rb +185 -0
  44. data/bin/commands/since.rb +63 -0
  45. data/bin/commands/tag.rb +149 -0
  46. data/bin/commands/tag_dir.rb +29 -0
  47. data/bin/commands/tags.rb +66 -0
  48. data/bin/commands/template.rb +61 -0
  49. data/bin/commands/today.rb +64 -0
  50. data/bin/commands/undo.rb +49 -0
  51. data/bin/commands/view.rb +201 -0
  52. data/bin/commands/views.rb +11 -0
  53. data/bin/commands/yesterday.rb +72 -0
  54. data/bin/doing +241 -3662
  55. data/docs/doc/Array.html +13 -449
  56. data/docs/doc/BooleanTermParser/Clause.html +5 -5
  57. data/docs/doc/BooleanTermParser/Operator.html +4 -4
  58. data/docs/doc/BooleanTermParser/Query.html +8 -8
  59. data/docs/doc/BooleanTermParser/QueryParser.html +2 -2
  60. data/docs/doc/BooleanTermParser/QueryTransformer.html +2 -2
  61. data/docs/doc/BooleanTermParser.html +1 -1
  62. data/docs/doc/Doing/Color.html +65 -59
  63. data/docs/doc/Doing/Completion.html +2 -2
  64. data/docs/doc/Doing/Configuration.html +49 -16
  65. data/docs/doc/Doing/Errors/DoingNoTraceError.html +2 -2
  66. data/docs/doc/Doing/Errors/DoingRuntimeError.html +2 -2
  67. data/docs/doc/Doing/Errors/DoingStandardError.html +2 -2
  68. data/docs/doc/Doing/Errors/EmptyInput.html +2 -2
  69. data/docs/doc/Doing/Errors/NoResults.html +2 -2
  70. data/docs/doc/Doing/Errors/PluginException.html +3 -3
  71. data/docs/doc/Doing/Errors/UserCancelled.html +2 -2
  72. data/docs/doc/Doing/Errors/WrongCommand.html +2 -2
  73. data/docs/doc/Doing/Errors.html +1 -1
  74. data/docs/doc/Doing/Hooks.html +6 -6
  75. data/docs/doc/Doing/Item.html +50 -16
  76. data/docs/doc/Doing/Items.html +10 -10
  77. data/docs/doc/Doing/LogAdapter.html +24 -24
  78. data/docs/doc/Doing/Note.html +7 -7
  79. data/docs/doc/Doing/Pager.html +4 -4
  80. data/docs/doc/Doing/Plugins.html +7 -7
  81. data/docs/doc/Doing/Prompt.html +59 -14
  82. data/docs/doc/Doing/Section.html +6 -6
  83. data/docs/doc/Doing/TemplateString.html +8 -8
  84. data/docs/doc/Doing/Types.html +46 -1
  85. data/docs/doc/Doing/Util/Backup.html +10 -10
  86. data/docs/doc/Doing/Util.html +15 -15
  87. data/docs/doc/Doing/WWID.html +73 -61
  88. data/docs/doc/Doing.html +3 -3
  89. data/docs/doc/FalseClass.html +235 -0
  90. data/docs/doc/GLI/Commands/Help.html +3 -3
  91. data/docs/doc/GLI/Commands/MarkdownDocumentListener.html +17 -17
  92. data/docs/doc/GLI/Commands.html +1 -1
  93. data/docs/doc/GLI.html +1 -1
  94. data/docs/doc/Hash.html +45 -11
  95. data/docs/doc/Numeric.html +5 -5
  96. data/docs/doc/Object.html +203 -0
  97. data/docs/doc/PhraseParser/Operator.html +4 -4
  98. data/docs/doc/PhraseParser/PhraseClause.html +5 -5
  99. data/docs/doc/PhraseParser/Query.html +10 -10
  100. data/docs/doc/PhraseParser/QueryParser.html +2 -2
  101. data/docs/doc/PhraseParser/QueryTransformer.html +2 -2
  102. data/docs/doc/PhraseParser/TermClause.html +5 -5
  103. data/docs/doc/PhraseParser.html +1 -1
  104. data/docs/doc/Status.html +7 -7
  105. data/docs/doc/String.html +306 -3111
  106. data/docs/doc/Symbol.html +45 -11
  107. data/docs/doc/Time.html +6 -6
  108. data/docs/doc/TrueClass.html +235 -0
  109. data/docs/doc/_index.html +37 -19
  110. data/docs/doc/class_list.html +1 -1
  111. data/docs/doc/file.README.html +2 -2
  112. data/docs/doc/index.html +2 -2
  113. data/docs/doc/method_list.html +240 -576
  114. data/docs/doc/top-level-namespace.html +2 -2
  115. data/doing.rdoc +289 -169
  116. data/example_plugin.rb +2 -2
  117. data/lib/completion/_doing.zsh +35 -31
  118. data/lib/completion/doing.bash +30 -19
  119. data/lib/completion/doing.fish +81 -67
  120. data/lib/doing/array/array.rb +4 -0
  121. data/lib/doing/array/nested_hash.rb +17 -0
  122. data/lib/doing/{array.rb → array/tags.rb} +7 -25
  123. data/lib/doing/changelog/change.rb +26 -11
  124. data/lib/doing/changelog/changes.rb +14 -4
  125. data/lib/doing/{array_chronify.rb → chronify/array.rb} +0 -0
  126. data/lib/doing/chronify/chronify.rb +5 -0
  127. data/lib/doing/{numeric_chronify.rb → chronify/numeric.rb} +0 -0
  128. data/lib/doing/{string_chronify.rb → chronify/string.rb} +0 -0
  129. data/lib/doing/colors.rb +115 -54
  130. data/lib/doing/completion/fish_completion.rb +2 -1
  131. data/lib/doing/configuration.rb +9 -6
  132. data/lib/doing/good.rb +72 -0
  133. data/lib/doing/hash.rb +4 -0
  134. data/lib/doing/help_monkey_patch.rb +6 -5
  135. data/lib/doing/hooks.rb +3 -3
  136. data/lib/doing/item.rb +19 -15
  137. data/lib/doing/items.rb +2 -2
  138. data/lib/doing/log_adapter.rb +35 -2
  139. data/lib/doing/normalize.rb +188 -0
  140. data/lib/doing/pager.rb +1 -0
  141. data/lib/doing/plugins/export/dayone_export.rb +1 -1
  142. data/lib/doing/plugins/export/html_export.rb +1 -1
  143. data/lib/doing/plugins/export/json_export.rb +1 -1
  144. data/lib/doing/plugins/export/markdown_export.rb +1 -1
  145. data/lib/doing/plugins/export/template_export.rb +3 -1
  146. data/lib/doing/plugins/import/calendar_import.rb +1 -1
  147. data/lib/doing/plugins/import/doing_import.rb +1 -1
  148. data/lib/doing/plugins/import/timing_import.rb +1 -1
  149. data/lib/doing/prompt.rb +9 -3
  150. data/lib/doing/string/highlight.rb +95 -0
  151. data/lib/doing/string/query.rb +129 -0
  152. data/lib/doing/string/string.rb +12 -0
  153. data/lib/doing/string/tags.rb +164 -0
  154. data/lib/doing/string/transform.rb +168 -0
  155. data/lib/doing/string/truncate.rb +75 -0
  156. data/lib/doing/string/url.rb +82 -0
  157. data/lib/doing/template_string.rb +2 -24
  158. data/lib/doing/types.rb +9 -0
  159. data/lib/doing/util.rb +20 -16
  160. data/lib/doing/version.rb +1 -1
  161. data/lib/doing/wwid.rb +91 -51
  162. data/lib/doing.rb +5 -6
  163. data/lib/examples/commands/wiki.rb +6 -7
  164. data/lib/examples/plugins/wiki_export/wiki_export.rb +1 -1
  165. data/lib/helpers/threaded_tests.rb +69 -79
  166. data/lib/helpers/threaded_tests_string.rb +50 -0
  167. data/scripts/deploy.rb +107 -0
  168. data/scripts/runtests.sh +4 -0
  169. metadata +65 -8
  170. data/lib/doing/string.rb +0 -765
  171. data/lib/doing/symbol.rb +0 -28
data/doing.rdoc CHANGED
@@ -5,7 +5,7 @@ record of what you've been doing, complete with tag-based time tracking. The
5
5
  command line tool allows you to add entries, annotate with tags and notes, and
6
6
  view your entries with myriad options, with a focus on a "natural" language syntax.
7
7
 
8
- v2.1.23
8
+ v2.1.27
9
9
 
10
10
  === Global Options
11
11
  === --config_file arg
@@ -90,11 +90,12 @@ Add a new section to the "doing" file
90
90
  ==== Command: <tt>again|resume </tt>
91
91
  Repeat last entry as new entry
92
92
 
93
- This command is designed to allow multiple time intervals to be created for an entry by duplicating it with a new start (and end, eventually) time
93
+ This command is designed to allow multiple time intervals to be created
94
+ for an entry by duplicating it with a new start (and end, eventually) time
94
95
  ===== Options
95
96
  ===== -b|--back|--started DATE_STRING
96
97
 
97
- Backdate start date by interval or set to time [4pm|20m|2h|"yesterday noon"]
98
+ Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]
98
99
 
99
100
  [Default Value] None
100
101
 
@@ -103,7 +104,7 @@ Backdate start date by interval or set to time [4pm|20m|2h|"yesterday noon"]
103
104
 
104
105
  Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
105
106
 
106
- [Default Value] PATTERN
107
+ [Default Value] pattern
107
108
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
108
109
 
109
110
 
@@ -112,7 +113,7 @@ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
112
113
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
113
114
 
114
115
  [Default Value] smart
115
- [Must Match] (?-mix:^[csi])
116
+ [Must Match] (?i-mx:^[cis].*?$)
116
117
 
117
118
 
118
119
  ===== --in SECTION_NAME
@@ -124,7 +125,7 @@ Add new entry to section (default: same section as repeated entry)
124
125
 
125
126
  ===== -n|--note TEXT
126
127
 
127
- Add a note
128
+ Include a note
128
129
 
129
130
  [Default Value] None
130
131
 
@@ -138,34 +139,40 @@ Get last entry from a specific section
138
139
 
139
140
  ===== --search QUERY
140
141
 
141
- Repeat last entry matching search. Surround with
142
- slashes for regex (e.g. "/query/"), start with a single quote for exact match ("'query").
142
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
143
+ start with single quote for exact match ("'query")
143
144
 
144
145
  [Default Value] None
145
146
 
146
147
 
147
148
  ===== --tag TAG
148
149
 
149
- Repeat last entry matching tags. Combine multiple tags with a comma. Wildcards allowed (*, ?)
150
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
150
151
 
151
152
  [Default Value] None
152
153
 
153
154
 
154
155
  ===== --val QUERY
155
156
 
156
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
157
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
158
+ May be used multiple times, combined with --bool
157
159
 
158
160
  [Default Value] None
159
161
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
160
162
 
161
163
 
164
+ ===== -X|--noauto
165
+ Exclude auto tags and default tags
166
+
167
+
168
+
162
169
  ===== --ask
163
170
  Prompt for note via multi-line input
164
171
 
165
172
 
166
173
 
167
174
  ===== -e|--editor
168
- Edit duplicated entry with vim before adding
175
+ Edit entry with vim
169
176
 
170
177
 
171
178
 
@@ -175,7 +182,7 @@ Select item to resume from a menu of matching entries
175
182
 
176
183
 
177
184
  ===== --not
178
- Resume items that *don't* match search/tag filters
185
+ Repeat items that *don't* match search/tag filters
179
186
 
180
187
 
181
188
 
@@ -192,19 +199,25 @@ or start with an "@" to move entries matching a tag.
192
199
 
193
200
  Default with no argument moves items from the "Currently" section to Archive.
194
201
  ===== Options
202
+ ===== --after DATE_STRING
203
+
204
+ Archive entries newer than date (natural language).
205
+
206
+ [Default Value] None
207
+
208
+
195
209
  ===== --before DATE_STRING
196
210
 
197
- Archive entries older than date
198
- (Flexible date format, e.g. 1/27/2021, 2020-07-19, or Monday 3pm)
211
+ Archive entries older than date (natural language).
199
212
 
200
213
  [Default Value] None
201
214
 
202
215
 
203
216
  ===== --bool BOOLEAN
204
217
 
205
- Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
218
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
206
219
 
207
- [Default Value] PATTERN
220
+ [Default Value] pattern
208
221
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
209
222
 
210
223
 
@@ -213,7 +226,14 @@ Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
213
226
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
214
227
 
215
228
  [Default Value] smart
216
- [Must Match] (?-mix:^[csi])
229
+ [Must Match] (?i-mx:^[cis].*?$)
230
+
231
+
232
+ ===== --from DATE_OR_RANGE
233
+
234
+ Date range (natural language) to archive: `doing archive --from "1/1/21 to 12/31/21"`.
235
+
236
+ [Default Value] None
217
237
 
218
238
 
219
239
  ===== -k|--keep X
@@ -226,7 +246,8 @@ How many items to keep (ignored if archiving by tag or search)
226
246
 
227
247
  ===== --search QUERY
228
248
 
229
- Search filter
249
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
250
+ start with single quote for exact match ("'query")
230
251
 
231
252
  [Default Value] None
232
253
 
@@ -240,14 +261,15 @@ Move entries to
240
261
 
241
262
  ===== --tag TAG
242
263
 
243
- Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?). Added for compatibility with other commands
264
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
244
265
 
245
266
  [Default Value] None
246
267
 
247
268
 
248
269
  ===== --val QUERY
249
270
 
250
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
271
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
272
+ May be used multiple times, combined with --bool
251
273
 
252
274
  [Default Value] None
253
275
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -259,7 +281,7 @@ Label moved items with @from(SECTION_NAME)
259
281
 
260
282
 
261
283
  ===== --not
262
- Show items that *don't* match search string
284
+ Archive items that *don't* match search/tag filters
263
285
 
264
286
 
265
287
 
@@ -331,13 +353,14 @@ Autotag last entry (or entries) not marked @done
331
353
  ==== Command: <tt>cancel COUNT</tt>
332
354
  End last X entries with no time tracked
333
355
 
334
- Adds @done tag without datestamp so no elapsed time is recorded. Alias for `doing finish --no-date`
356
+ Adds @done tag without datestamp so no elapsed time is recorded.
357
+ Alias for `doing finish --no-date`
335
358
  ===== Options
336
359
  ===== --bool BOOLEAN
337
360
 
338
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
361
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
339
362
 
340
- [Default Value] PATTERN
363
+ [Default Value] pattern
341
364
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
342
365
 
343
366
 
@@ -346,7 +369,7 @@ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to
346
369
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
347
370
 
348
371
  [Default Value] smart
349
- [Must Match] (?-mix:^[csi])
372
+ [Must Match] (?i-mx:^[cis].*?$)
350
373
 
351
374
 
352
375
  ===== -s|--section NAME
@@ -358,21 +381,23 @@ Section
358
381
 
359
382
  ===== --search QUERY
360
383
 
361
- Cancel the last X entries matching search filter, surround with slashes for regex (e.g. "/query.*/"), start with single quote for exact match ("'query")
384
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
385
+ start with single quote for exact match ("'query")
362
386
 
363
387
  [Default Value] None
364
388
 
365
389
 
366
390
  ===== --tag TAG
367
391
 
368
- Cancel the last X entries containing TAG. Separate multiple tags with comma (--tag=tag1,tag2). Wildcards allowed (*, ?)
392
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
369
393
 
370
394
  [Default Value] None
371
395
 
372
396
 
373
397
  ===== --val QUERY
374
398
 
375
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
399
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
400
+ May be used multiple times, combined with --bool
376
401
 
377
402
  [Default Value] None
378
403
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -389,7 +414,7 @@ Select item(s) to cancel from a menu of matching entries
389
414
 
390
415
 
391
416
  ===== --not
392
- Finish items that *don't* match search/tag filters
417
+ Cancel items that *don't* match search/tag filters
393
418
 
394
419
 
395
420
 
@@ -429,24 +454,44 @@ Show changelogs matching search terms (uses pattern-based searching).
429
454
  [Default Value] None
430
455
 
431
456
 
457
+ ===== -C|--changes
458
+ Only output changes, no version numbers, headers, or dates
459
+
460
+
461
+
432
462
  ===== -a|--all
433
463
  Display all versions
434
464
 
435
465
 
436
466
 
437
- ==== Command: <tt>choose </tt>
438
- Select a section to display from a menu
467
+ ===== -m|--md|--markdown
468
+ Output raw Markdown
469
+
439
470
 
440
471
 
441
472
  ==== Command: <tt>colors </tt>
442
473
  List available color variables for configuration templates and views
443
474
 
444
475
 
476
+ ==== Command: <tt>commands </tt>
477
+ Enable and disable Doing commands
478
+
479
+
480
+ ===== Commands
481
+ ====== Command: <tt>add|enable COMMAND [COMMAND...]</tt>
482
+ Enable Doing commands
483
+
484
+ Run without arguments to select commands from a list.
485
+ ====== Command: <tt>remove|disable </tt>
486
+ Disable Doing commands
487
+
488
+
489
+ [Default Command] add
445
490
  ==== Command: <tt>completion </tt>
446
491
  Generate shell completion scripts
447
492
 
448
- Generates the necessary scripts to add command line completion to various shells, so typing 'doing' and hitting
449
- tab will offer completions of subcommands and their options.
493
+ Generates the necessary scripts to add command line completion to various shells,
494
+ so typing 'doing' and hitting tab will offer completions of subcommands and their options.
450
495
  ===== Options
451
496
  ===== -f|--file PATH
452
497
 
@@ -572,7 +617,7 @@ Set finish date to specific date/time (natural langauge parsed, e.g. --at=1:30pm
572
617
 
573
618
  ===== -b|--back|--started DATE_STRING
574
619
 
575
- Backdate start date by interval or set to time [4pm|20m|2h|"yesterday noon"]
620
+ Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]
576
621
 
577
622
  [Default Value] None
578
623
 
@@ -609,6 +654,11 @@ Set completion date to start date plus interval (XX[mhd] or HH:MM).
609
654
  [Default Value] None
610
655
 
611
656
 
657
+ ===== -X|--noauto
658
+ Exclude auto tags and default tags
659
+
660
+
661
+
612
662
  ===== -a|--archive
613
663
  Immediately archive the entry
614
664
 
@@ -625,7 +675,7 @@ Include date
625
675
 
626
676
 
627
677
  ===== -e|--editor
628
- Edit entry with vim (with no arguments, edits the last entry)
678
+ Edit entry with vim
629
679
 
630
680
 
631
681
 
@@ -660,9 +710,9 @@ Backdate completed date to date string [4pm|20m|2h|yesterday noon]
660
710
 
661
711
  ===== --bool BOOLEAN
662
712
 
663
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
713
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
664
714
 
665
- [Default Value] PATTERN
715
+ [Default Value] pattern
666
716
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
667
717
 
668
718
 
@@ -671,7 +721,7 @@ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to
671
721
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
672
722
 
673
723
  [Default Value] smart
674
- [Must Match] (?-mix:^[csi])
724
+ [Must Match] (?i-mx:^[cis].*?$)
675
725
 
676
726
 
677
727
  ===== -s|--section NAME
@@ -683,7 +733,8 @@ Section
683
733
 
684
734
  ===== --search QUERY
685
735
 
686
- Finish the last X entries matching search filter, surround with slashes for regex (e.g. "/query.*/"), start with single quote for exact match ("'query")
736
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
737
+ start with single quote for exact match ("'query")
687
738
 
688
739
  [Default Value] None
689
740
 
@@ -697,15 +748,15 @@ Set the completed date to the start date plus XX[hmd]
697
748
 
698
749
  ===== --tag TAG
699
750
 
700
- Finish the last X entries containing TAG.
701
- Separate multiple tags with comma (--tag=tag1,tag2), combine with --bool. Wildcards allowed (*, ?).
751
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
702
752
 
703
753
  [Default Value] None
704
754
 
705
755
 
706
756
  ===== --val QUERY
707
757
 
708
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
758
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
759
+ May be used multiple times, combined with --bool
709
760
 
710
761
  [Default Value] None
711
762
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -739,7 +790,7 @@ Finish items that *don't* match search/tag filters
739
790
 
740
791
 
741
792
  ===== -r|--remove
742
- Remove done tag
793
+ Remove @done tag
743
794
 
744
795
 
745
796
 
@@ -748,6 +799,11 @@ Finish last entry (or entries) not already marked @done
748
799
 
749
800
 
750
801
 
802
+ ===== --update
803
+ Overwrite existing @done tag with new date
804
+
805
+
806
+
751
807
  ===== -x|--exact
752
808
  Force exact search string matching (case sensitive)
753
809
 
@@ -762,23 +818,25 @@ To search with regular expressions, single quote the string and surround with sl
762
818
  ===== Options
763
819
  ===== --after DATE_STRING
764
820
 
765
- Search entries newer than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
821
+ Search entries newer than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
822
+ dates will be included, but entries will be filtered by time of day
766
823
 
767
824
  [Default Value] None
768
825
 
769
826
 
770
827
  ===== --before DATE_STRING
771
828
 
772
- Search entries older than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
829
+ Search entries older than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
830
+ dates will be included, but entries will be filtered by time of day
773
831
 
774
832
  [Default Value] None
775
833
 
776
834
 
777
- ===== --bool arg
835
+ ===== --bool BOOLEAN
778
836
 
779
837
  Combine multiple tags or value queries using AND, OR, or NOT
780
838
 
781
- [Default Value] AND
839
+ [Default Value] pattern
782
840
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
783
841
 
784
842
 
@@ -787,7 +845,7 @@ Combine multiple tags or value queries using AND, OR, or NOT
787
845
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
788
846
 
789
847
  [Default Value] smart
790
- [Must Match] (?-mix:^[csi])
848
+ [Must Match] (?i-mx:^[cis].*?$)
791
849
 
792
850
 
793
851
  ===== --config_template TEMPLATE_KEY
@@ -799,12 +857,11 @@ Output using a template from configuration
799
857
 
800
858
  ===== --from DATE_OR_RANGE
801
859
 
802
- Date range to show, or a single day to filter date on.
803
- Date range argument should be quoted. Date specifications can be natural language.
804
- To specify a range, use "to" or "through": `doing search --from "monday 8am to friday 5pm"`.
860
+ Date range (natural language) to search, or a single day to filter on.
861
+ To specify a range, use "to": `doing grep --from "monday 8am to friday 5pm"`.
805
862
 
806
- If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
807
- by time of day.
863
+ If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
864
+ by time of day.
808
865
 
809
866
  [Default Value] None
810
867
 
@@ -828,7 +885,7 @@ Section
828
885
  Sort tags by (name|time)
829
886
 
830
887
  [Default Value] name
831
- [Must Match] (?i-mx:^(?:name|time)$)
888
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
832
889
 
833
890
 
834
891
  ===== --template TEMPLATE_STRING
@@ -913,14 +970,16 @@ Imports entries from other sources. Available plugins: calendar, capturething, d
913
970
  ===== Options
914
971
  ===== --after DATE_STRING
915
972
 
916
- Import entries newer than date
973
+ Import entries newer than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
974
+ dates will be included, but entries will be filtered by time of day
917
975
 
918
976
  [Default Value] None
919
977
 
920
978
 
921
979
  ===== --before DATE_STRING
922
980
 
923
- Import entries older than date
981
+ Import entries older than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
982
+ dates will be included, but entries will be filtered by time of day
924
983
 
925
984
  [Default Value] None
926
985
 
@@ -930,14 +989,16 @@ Import entries older than date
930
989
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
931
990
 
932
991
  [Default Value] smart
933
- [Must Match] (?-mix:^[csi])
992
+ [Must Match] (?i-mx:^[cis].*?$)
934
993
 
935
994
 
936
- ===== -f|--from DATE_OR_RANGE
995
+ ===== --from DATE_OR_RANGE
996
+
997
+ Date range (natural language) to import, or a single day to filter on.
998
+ To specify a range, use "to": `doing import --from "monday 8am to friday 5pm"`.
937
999
 
938
- Date range to import. Date range argument should be quoted. Date specifications can be natural language.
939
- To specify a range, use "to" or "through": `--from "monday to friday"` or `--from 10/1 to 10/31`.
940
- Has no effect unless the import plugin has implemented date range filtering.
1000
+ If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
1001
+ by time of day.
941
1002
 
942
1003
  [Default Value] None
943
1004
 
@@ -958,7 +1019,8 @@ Target section
958
1019
 
959
1020
  ===== --search QUERY
960
1021
 
961
- Only import items matching search. Surround with slashes for regex (/query/), start with single quote for exact match ("'query")
1022
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1023
+ start with single quote for exact match ("'query")
962
1024
 
963
1025
  [Default Value] None
964
1026
 
@@ -1010,9 +1072,9 @@ allowing `doing last` to target historical entries.
1010
1072
  ===== Options
1011
1073
  ===== --bool BOOLEAN
1012
1074
 
1013
- Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
1075
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
1014
1076
 
1015
- [Default Value] PATTERN
1077
+ [Default Value] pattern
1016
1078
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1017
1079
 
1018
1080
 
@@ -1021,7 +1083,7 @@ Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
1021
1083
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1022
1084
 
1023
1085
  [Default Value] smart
1024
- [Must Match] (?-mix:^[csi])
1086
+ [Must Match] (?i-mx:^[cis].*?$)
1025
1087
 
1026
1088
 
1027
1089
  ===== --config_template TEMPLATE_KEY
@@ -1040,14 +1102,15 @@ Specify a section
1040
1102
 
1041
1103
  ===== --search QUERY
1042
1104
 
1043
- Search filter, surround with slashes for regex (/query/), start with single quote for exact match ("'query")
1105
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1106
+ start with single quote for exact match ("'query")
1044
1107
 
1045
1108
  [Default Value] None
1046
1109
 
1047
1110
 
1048
1111
  ===== --tag TAG
1049
1112
 
1050
- Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?)
1113
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1051
1114
 
1052
1115
  [Default Value] None
1053
1116
 
@@ -1061,7 +1124,8 @@ Override output format with a template string containing %placeholders
1061
1124
 
1062
1125
  ===== --val QUERY
1063
1126
 
1064
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1127
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
1128
+ May be used multiple times, combined with --bool
1065
1129
 
1066
1130
  [Default Value] None
1067
1131
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1088,7 +1152,7 @@ Highlight search matches in output. Only affects command line output
1088
1152
 
1089
1153
 
1090
1154
  ===== --not
1091
- Show items that *don't* match search string or tag filter
1155
+ Show items that *don't* match search/tag filters
1092
1156
 
1093
1157
 
1094
1158
 
@@ -1133,9 +1197,9 @@ Mark last entry as flagged
1133
1197
  ===== Options
1134
1198
  ===== --bool BOOLEAN
1135
1199
 
1136
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
1200
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
1137
1201
 
1138
- [Default Value] PATTERN
1202
+ [Default Value] pattern
1139
1203
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1140
1204
 
1141
1205
 
@@ -1152,7 +1216,7 @@ How many recent entries to tag (0 for all)
1152
1216
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1153
1217
 
1154
1218
  [Default Value] smart
1155
- [Must Match] (?-mix:^[csi])
1219
+ [Must Match] (?i-mx:^[cis].*?$)
1156
1220
 
1157
1221
 
1158
1222
  ===== -s|--section SECTION_NAME
@@ -1164,22 +1228,23 @@ Section
1164
1228
 
1165
1229
  ===== --search QUERY
1166
1230
 
1167
- Flag the last entry matching search filter, surround with slashes for regex (e.g. "/query.*/"), start with single quote for exact match ("'query")
1231
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1232
+ start with single quote for exact match ("'query")
1168
1233
 
1169
1234
  [Default Value] None
1170
1235
 
1171
1236
 
1172
1237
  ===== --tag TAG
1173
1238
 
1174
- Flag the last entry containing TAG.
1175
- Separate multiple tags with comma (--tag=tag1,tag2), combine with --bool. Wildcards allowed (*, ?).
1239
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1176
1240
 
1177
1241
  [Default Value] None
1178
1242
 
1179
1243
 
1180
1244
  ===== --val QUERY
1181
1245
 
1182
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1246
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
1247
+ May be used multiple times, combined with --bool
1183
1248
 
1184
1249
  [Default Value] None
1185
1250
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1201,7 +1266,7 @@ Select item(s) to flag from a menu of matching entries
1201
1266
 
1202
1267
 
1203
1268
  ===== --not
1204
- Flag items that *don't* match search/tag/date filters
1269
+ Flag items that *don't* match search/tag filters
1205
1270
 
1206
1271
 
1207
1272
 
@@ -1237,7 +1302,7 @@ Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]
1237
1302
 
1238
1303
  ===== -n|--note TEXT
1239
1304
 
1240
- Note
1305
+ Include a note
1241
1306
 
1242
1307
  [Default Value] None
1243
1308
 
@@ -1249,6 +1314,11 @@ Section
1249
1314
  [Default Value] None
1250
1315
 
1251
1316
 
1317
+ ===== -X|--noauto
1318
+ Exclude auto tags and default tags
1319
+
1320
+
1321
+
1252
1322
  ===== -a|--archive
1253
1323
  Archive previous @meanwhile entry
1254
1324
 
@@ -1275,9 +1345,9 @@ If -r is provided with no other arguments, the last note is removed.
1275
1345
  ===== Options
1276
1346
  ===== --bool BOOLEAN
1277
1347
 
1278
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
1348
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
1279
1349
 
1280
- [Default Value] PATTERN
1350
+ [Default Value] pattern
1281
1351
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1282
1352
 
1283
1353
 
@@ -1286,7 +1356,7 @@ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to
1286
1356
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1287
1357
 
1288
1358
  [Default Value] smart
1289
- [Must Match] (?-mix:^[csi])
1359
+ [Must Match] (?i-mx:^[cis].*?$)
1290
1360
 
1291
1361
 
1292
1362
  ===== -s|--section NAME
@@ -1298,21 +1368,23 @@ Section
1298
1368
 
1299
1369
  ===== --search QUERY
1300
1370
 
1301
- Add/remove note from last entry matching search filter, surround with slashes for regex (e.g. "/query.*/"), start with single quote for exact match ("'query")
1371
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1372
+ start with single quote for exact match ("'query")
1302
1373
 
1303
1374
  [Default Value] None
1304
1375
 
1305
1376
 
1306
1377
  ===== --tag TAG
1307
1378
 
1308
- Add/remove note from last entry matching tag. Wildcards allowed (*, ?)
1379
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1309
1380
 
1310
1381
  [Default Value] None
1311
1382
 
1312
1383
 
1313
1384
  ===== --val QUERY
1314
1385
 
1315
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1386
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
1387
+ May be used multiple times, combined with --bool
1316
1388
 
1317
1389
  [Default Value] None
1318
1390
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1334,7 +1406,7 @@ Select item for new note from a menu of matching entries
1334
1406
 
1335
1407
 
1336
1408
  ===== --not
1337
- Add note to item that *doesn't* match search/tag filters
1409
+ Note items that *don't* match search/tag filters
1338
1410
 
1339
1411
 
1340
1412
 
@@ -1361,7 +1433,15 @@ Run with --editor to create a new entry using vim.
1361
1433
  ===== Options
1362
1434
  ===== -b|--back|--started DATE_STRING
1363
1435
 
1364
- Backdate start time [4pm|20m|2h|"yesterday noon"]
1436
+ Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]
1437
+
1438
+ [Default Value] None
1439
+
1440
+
1441
+ ===== --from TIME_RANGE
1442
+
1443
+ Set a start and optionally end time as a date range ("from 1pm to 2:30pm").
1444
+ If an end time is provided, a dated @done tag will be added
1365
1445
 
1366
1446
  [Default Value] None
1367
1447
 
@@ -1380,6 +1460,11 @@ Section
1380
1460
  [Default Value] None
1381
1461
 
1382
1462
 
1463
+ ===== -X|--noauto
1464
+ Exclude auto tags and default tags
1465
+
1466
+
1467
+
1383
1468
  ===== --ask
1384
1469
  Prompt for note via multi-line input
1385
1470
 
@@ -1428,7 +1513,7 @@ Section
1428
1513
  Sort tags by (name|time)
1429
1514
 
1430
1515
  [Default Value] name
1431
- [Must Match] (?i-mx:^(?:name|time)$)
1516
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
1432
1517
 
1433
1518
 
1434
1519
  ===== --template TEMPLATE_STRING
@@ -1526,7 +1611,7 @@ Section
1526
1611
  Sort tags by (name|time)
1527
1612
 
1528
1613
  [Default Value] name
1529
- [Must Match] (?i-mx:^(?:name|time)$)
1614
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
1530
1615
 
1531
1616
 
1532
1617
  ===== --template TEMPLATE_STRING
@@ -1556,6 +1641,23 @@ Show intervals with totals at the end of output
1556
1641
 
1557
1642
 
1558
1643
 
1644
+ ==== Command: <tt>redo COUNT</tt>
1645
+ Redo an undo command
1646
+
1647
+ Shortcut for `doing undo -r`, reverses the last undo command. Specify a count to redo multiple undos
1648
+ ===== Options
1649
+ ===== -f|--file PATH
1650
+
1651
+ Specify alternate doing file
1652
+
1653
+ [Default Value] None
1654
+
1655
+
1656
+ ===== -i|--[no-]interactive
1657
+ Select from an interactive menu
1658
+
1659
+
1660
+
1559
1661
  ==== Command: <tt>reset|begin [DATE_STRING]</tt>
1560
1662
  Reset the start time of an entry
1561
1663
 
@@ -1565,9 +1667,9 @@ If a date string is provided as an argument, the start time will be set to the p
1565
1667
  ===== Options
1566
1668
  ===== --bool BOOLEAN
1567
1669
 
1568
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
1670
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
1569
1671
 
1570
- [Default Value] PATTERN
1672
+ [Default Value] pattern
1571
1673
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1572
1674
 
1573
1675
 
@@ -1576,7 +1678,7 @@ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to
1576
1678
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1577
1679
 
1578
1680
  [Default Value] smart
1579
- [Must Match] (?-mix:^[csi])
1681
+ [Must Match] (?i-mx:^[cis].*?$)
1580
1682
 
1581
1683
 
1582
1684
  ===== -s|--section NAME
@@ -1588,21 +1690,23 @@ Limit search to section
1588
1690
 
1589
1691
  ===== --search QUERY
1590
1692
 
1591
- Reset last entry matching search filter, surround with slashes for regex (e.g. "/query.*/"), start with single quote for exact match ("'query")
1693
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1694
+ start with single quote for exact match ("'query")
1592
1695
 
1593
1696
  [Default Value] None
1594
1697
 
1595
1698
 
1596
1699
  ===== --tag TAG
1597
1700
 
1598
- Reset last entry matching tag. Wildcards allowed (*, ?)
1701
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1599
1702
 
1600
1703
  [Default Value] None
1601
1704
 
1602
1705
 
1603
1706
  ===== --val QUERY
1604
1707
 
1605
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1708
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
1709
+ May be used multiple times, combined with --bool
1606
1710
 
1607
1711
  [Default Value] None
1608
1712
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1650,9 +1754,9 @@ Rotate entries older than date
1650
1754
 
1651
1755
  ===== --bool BOOLEAN
1652
1756
 
1653
- Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
1757
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
1654
1758
 
1655
- [Default Value] PATTERN
1759
+ [Default Value] pattern
1656
1760
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1657
1761
 
1658
1762
 
@@ -1661,7 +1765,7 @@ Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
1661
1765
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1662
1766
 
1663
1767
  [Default Value] smart
1664
- [Must Match] (?-mix:^[csi])
1768
+ [Must Match] (?i-mx:^[cis].*?$)
1665
1769
 
1666
1770
 
1667
1771
  ===== -k|--keep X
@@ -1681,28 +1785,30 @@ Section to rotate
1681
1785
 
1682
1786
  ===== --search QUERY
1683
1787
 
1684
- Search filter
1788
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1789
+ start with single quote for exact match ("'query")
1685
1790
 
1686
1791
  [Default Value] None
1687
1792
 
1688
1793
 
1689
1794
  ===== --tag TAG
1690
1795
 
1691
- Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?). Added for compatibility with other commands
1796
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1692
1797
 
1693
1798
  [Default Value] None
1694
1799
 
1695
1800
 
1696
1801
  ===== --val QUERY
1697
1802
 
1698
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1803
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
1804
+ May be used multiple times, combined with --bool
1699
1805
 
1700
1806
  [Default Value] None
1701
1807
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
1702
1808
 
1703
1809
 
1704
1810
  ===== --not
1705
- Rotate items that *don't* match search string or tag filter
1811
+ Rotate items that *don't* match search/tag filters
1706
1812
 
1707
1813
 
1708
1814
 
@@ -1740,14 +1846,16 @@ sbtrkt fuzzy-match Items that match s*b*t*r*k*t
1740
1846
  ===== Options
1741
1847
  ===== --after DATE_STRING
1742
1848
 
1743
- Select from entries newer than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
1849
+ Select entries newer than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
1850
+ dates will be included, but entries will be filtered by time of day
1744
1851
 
1745
1852
  [Default Value] None
1746
1853
 
1747
1854
 
1748
1855
  ===== --before DATE_STRING
1749
1856
 
1750
- Select from entries older than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
1857
+ Select entries older than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
1858
+ dates will be included, but entries will be filtered by time of day
1751
1859
 
1752
1860
  [Default Value] None
1753
1861
 
@@ -1757,17 +1865,16 @@ Select from entries older than date. If this is only a time (8am, 1:30pm, 15:00)
1757
1865
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1758
1866
 
1759
1867
  [Default Value] smart
1760
- [Must Match] (?-mix:^[csi])
1868
+ [Must Match] (?i-mx:^[cis].*?$)
1761
1869
 
1762
1870
 
1763
1871
  ===== --from DATE_OR_RANGE
1764
1872
 
1765
- Date range to show, or a single day to filter date on.
1766
- Date range argument should be quoted. Date specifications can be natural language.
1767
- To specify a range, use "to" or "through": `doing select --from "monday 8am to friday 5pm"`.
1873
+ Date range (natural language) to select, or a single day to filter on.
1874
+ To specify a range, use "to": `doing select --from "monday 8am to friday 5pm"`.
1768
1875
 
1769
- If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
1770
- by time of day.
1876
+ If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
1877
+ by time of day.
1771
1878
 
1772
1879
  [Default Value] None
1773
1880
 
@@ -1788,7 +1895,8 @@ Output entries to format (csv|dayone|dayone-days|dayone-entries|doing|html|json|
1788
1895
 
1789
1896
  ===== -q|--query QUERY
1790
1897
 
1791
- Initial search query for filtering. Matching is fuzzy. For exact matching, start query with a single quote, e.g. `--query "'search"
1898
+ Initial search query for filtering. Matching is fuzzy. For exact matching, start query with a single quote,
1899
+ e.g. `--query "'search"
1792
1900
 
1793
1901
  [Default Value] None
1794
1902
 
@@ -1809,7 +1917,8 @@ Save selected entries to file using --output format
1809
1917
 
1810
1918
  ===== --search QUERY
1811
1919
 
1812
- Select from entries matching search filter, surround with slashes for regex (e.g. "/query.*/"), start with single quote for exact match ("'query")
1920
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1921
+ start with single quote for exact match ("'query")
1813
1922
 
1814
1923
  [Default Value] None
1815
1924
 
@@ -1823,7 +1932,8 @@ Tag selected entries
1823
1932
 
1824
1933
  ===== --val QUERY
1825
1934
 
1826
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1935
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
1936
+ May be used multiple times, combined with --bool
1827
1937
 
1828
1938
  [Default Value] None
1829
1939
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1835,7 +1945,8 @@ Archive selected items
1835
1945
 
1836
1946
 
1837
1947
  ===== --again|--resume
1838
- Copy selection as a new entry with current time and no @done tag. Only works with single selections. Can be combined with --editor.
1948
+ Copy selection as a new entry with current time and no @done tag.
1949
+ Only works with single selections. Can be combined with --editor.
1839
1950
 
1840
1951
 
1841
1952
 
@@ -1870,7 +1981,8 @@ Perform action without confirmation
1870
1981
 
1871
1982
 
1872
1983
  ===== --[no-]menu
1873
- Use --no-menu to skip the interactive menu. Use with --query to filter items and act on results automatically. Test with `--output doing` to preview matches
1984
+ Use --no-menu to skip the interactive menu. Use with --query to filter items and act on results automatically.
1985
+ Test with `--output doing` to preview matches
1874
1986
 
1875
1987
 
1876
1988
 
@@ -1908,24 +2020,26 @@ Age (oldest|newest)
1908
2020
 
1909
2021
  ===== --after DATE_STRING
1910
2022
 
1911
- Show entries newer than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
2023
+ Show entries newer than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
2024
+ dates will be included, but entries will be filtered by time of day
1912
2025
 
1913
2026
  [Default Value] None
1914
2027
 
1915
2028
 
1916
- ===== -b|--bool BOOLEAN
2029
+ ===== --before DATE_STRING
1917
2030
 
1918
- Tag boolean (AND,OR,NOT). Use PATTERN to parse + and - as booleans
2031
+ Show entries older than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
2032
+ dates will be included, but entries will be filtered by time of day
1919
2033
 
1920
- [Default Value] PATTERN
1921
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2034
+ [Default Value] None
1922
2035
 
1923
2036
 
1924
- ===== --before DATE_STRING
2037
+ ===== --bool BOOLEAN
1925
2038
 
1926
- Show entries older than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
2039
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
1927
2040
 
1928
- [Default Value] None
2041
+ [Default Value] pattern
2042
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1929
2043
 
1930
2044
 
1931
2045
  ===== -c|--count MAX
@@ -1941,7 +2055,7 @@ Max count to show
1941
2055
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1942
2056
 
1943
2057
  [Default Value] smart
1944
- [Must Match] (?-mix:^[csi])
2058
+ [Must Match] (?i-mx:^[cis].*?$)
1945
2059
 
1946
2060
 
1947
2061
  ===== --config_template TEMPLATE_KEY
@@ -1953,12 +2067,11 @@ Output using a template from configuration
1953
2067
 
1954
2068
  ===== --from DATE_OR_RANGE
1955
2069
 
1956
- Date range to show, or a single day to filter date on.
1957
- Date range argument should be quoted. Date specifications can be natural language.
1958
- To specify a range, use "to" or "through": `doing show --from "monday 8am to friday 5pm"`.
2070
+ Date range (natural language) to show, or a single day to filter on.
2071
+ To specify a range, use "to": `doing show --from "monday 8am to friday 5pm"`.
1959
2072
 
1960
- If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
1961
- by time of day.
2073
+ If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
2074
+ by time of day.
1962
2075
 
1963
2076
  [Default Value] None
1964
2077
 
@@ -1980,14 +2093,15 @@ Sort order (asc/desc)
1980
2093
 
1981
2094
  ===== --search QUERY
1982
2095
 
1983
- Search filter, surround with slashes for regex (/query/), start with single quote for exact match ("'query")
2096
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
2097
+ start with single quote for exact match ("'query")
1984
2098
 
1985
2099
  [Default Value] None
1986
2100
 
1987
2101
 
1988
2102
  ===== --tag TAG
1989
2103
 
1990
- Tag filter, combine multiple tags with a comma. Use `--tag pick` for a menu of available tags. Wildcards allowed (*, ?). Added for compatibility with other commands
2104
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1991
2105
 
1992
2106
  [Default Value] None
1993
2107
 
@@ -2005,7 +2119,7 @@ Tag sort direction (asc|desc)
2005
2119
  Sort tags by (name|time)
2006
2120
 
2007
2121
  [Default Value] name
2008
- [Must Match] (?i-mx:^(?:name|time))
2122
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2009
2123
 
2010
2124
 
2011
2125
  ===== --template TEMPLATE_STRING
@@ -2017,7 +2131,8 @@ Override output format with a template string containing %placeholders
2017
2131
 
2018
2132
  ===== --val QUERY
2019
2133
 
2020
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
2134
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
2135
+ May be used multiple times, combined with --bool
2021
2136
 
2022
2137
  [Default Value] None
2023
2138
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -2044,7 +2159,7 @@ Select section or tag to display from a menu
2044
2159
 
2045
2160
 
2046
2161
  ===== --not
2047
- Show items that *don't* match search/tag/date filters
2162
+ Show items that *don't* match search/tag filters
2048
2163
 
2049
2164
 
2050
2165
 
@@ -2100,7 +2215,7 @@ Section
2100
2215
  Sort tags by (name|time)
2101
2216
 
2102
2217
  [Default Value] name
2103
- [Must Match] (?i-mx:^(?:name|time)$)
2218
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2104
2219
 
2105
2220
 
2106
2221
  ===== --template TEMPLATE_STRING
@@ -2144,9 +2259,9 @@ Add (or remove) tags from the last entry, or from multiple entries
2144
2259
  ===== Options
2145
2260
  ===== --bool BOOLEAN
2146
2261
 
2147
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
2262
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
2148
2263
 
2149
- [Default Value] PATTERN
2264
+ [Default Value] pattern
2150
2265
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2151
2266
 
2152
2267
 
@@ -2163,7 +2278,7 @@ How many recent entries to tag (0 for all)
2163
2278
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
2164
2279
 
2165
2280
  [Default Value] smart
2166
- [Must Match] (?-mix:^[csi])
2281
+ [Must Match] (?i-mx:^[cis].*?$)
2167
2282
 
2168
2283
 
2169
2284
  ===== --rename ORIG_TAG
@@ -2182,15 +2297,15 @@ Section
2182
2297
 
2183
2298
  ===== --search QUERY
2184
2299
 
2185
- Tag entries matching search filter, surround with slashes for regex (e.g. "/query.*/"), start with single quote for exact match ("'query")
2300
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
2301
+ start with single quote for exact match ("'query")
2186
2302
 
2187
2303
  [Default Value] None
2188
2304
 
2189
2305
 
2190
2306
  ===== --tag TAG
2191
2307
 
2192
- Tag the last X entries containing TAG.
2193
- Separate multiple tags with comma (--tag=tag1,tag2), combine with --bool. Wildcards allowed (*, ?).
2308
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
2194
2309
 
2195
2310
  [Default Value] None
2196
2311
 
@@ -2204,7 +2319,8 @@ Include a value, e.g. @tag(value)
2204
2319
 
2205
2320
  ===== --val QUERY
2206
2321
 
2207
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
2322
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
2323
+ May be used multiple times, combined with --bool
2208
2324
 
2209
2325
  [Default Value] None
2210
2326
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -2276,7 +2392,7 @@ List all tags in the current Doing file
2276
2392
 
2277
2393
  Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
2278
2394
 
2279
- [Default Value] PATTERN
2395
+ [Default Value] pattern
2280
2396
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2281
2397
 
2282
2398
 
@@ -2285,7 +2401,7 @@ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
2285
2401
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
2286
2402
 
2287
2403
  [Default Value] smart
2288
- [Must Match] (?-mix:^[csi])
2404
+ [Must Match] (?i-mx:^[cis].*?$)
2289
2405
 
2290
2406
 
2291
2407
  ===== -o|--order ORDER
@@ -2305,8 +2421,8 @@ Section
2305
2421
 
2306
2422
  ===== --search QUERY
2307
2423
 
2308
- Get tags for items matching search. Surround with
2309
- slashes for regex (e.g. "/query/"), start with a single quote for exact match ("'query").
2424
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
2425
+ start with single quote for exact match ("'query")
2310
2426
 
2311
2427
  [Default Value] None
2312
2428
 
@@ -2321,14 +2437,15 @@ Sort by name or count
2321
2437
 
2322
2438
  ===== --tag TAG
2323
2439
 
2324
- Get tags for entries matching tags. Combine multiple tags with a comma. Wildcards allowed (*, ?)
2440
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
2325
2441
 
2326
2442
  [Default Value] None
2327
2443
 
2328
2444
 
2329
2445
  ===== --val QUERY
2330
2446
 
2331
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
2447
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
2448
+ May be used multiple times, combined with --bool
2332
2449
 
2333
2450
  [Default Value] None
2334
2451
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -2350,7 +2467,7 @@ Output in a single line with @ symbols. Ignored if --counts is specified.
2350
2467
 
2351
2468
 
2352
2469
  ===== --not
2353
- Get tags from items that *don't* match search/tag filters
2470
+ Show items that *don't* match search/tag filters
2354
2471
 
2355
2472
 
2356
2473
 
@@ -2444,7 +2561,7 @@ Specify a section
2444
2561
  Sort tags by (name|time)
2445
2562
 
2446
2563
  [Default Value] name
2447
- [Must Match] (?i-mx:^(?:name|time)$)
2564
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2448
2565
 
2449
2566
 
2450
2567
  ===== --template TEMPLATE_STRING
@@ -2509,7 +2626,8 @@ Command line options override view configuration.
2509
2626
  ===== Options
2510
2627
  ===== --after DATE_STRING
2511
2628
 
2512
- View entries newer than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
2629
+ Show entries newer than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
2630
+ dates will be included, but entries will be filtered by time of day
2513
2631
 
2514
2632
  [Default Value] None
2515
2633
 
@@ -2521,19 +2639,20 @@ Age (oldest|newest)
2521
2639
  [Default Value] newest
2522
2640
 
2523
2641
 
2524
- ===== -b|--bool BOOLEAN
2642
+ ===== --before DATE_STRING
2525
2643
 
2526
- Tag boolean (AND,OR,NOT). Use PATTERN to parse + and - as booleans
2644
+ Show entries older than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
2645
+ dates will be included, but entries will be filtered by time of day
2527
2646
 
2528
- [Default Value] PATTERN
2529
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2647
+ [Default Value] None
2530
2648
 
2531
2649
 
2532
- ===== --before DATE_STRING
2650
+ ===== --bool BOOLEAN
2533
2651
 
2534
- View entries older than date. If this is only a time (8am, 1:30pm, 15:00), all dates will be included, but entries will be filtered by time of day
2652
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
2535
2653
 
2536
- [Default Value] None
2654
+ [Default Value] pattern
2655
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2537
2656
 
2538
2657
 
2539
2658
  ===== -c|--count COUNT
@@ -2549,17 +2668,16 @@ Count to display
2549
2668
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
2550
2669
 
2551
2670
  [Default Value] smart
2552
- [Must Match] (?-mix:^[csi])
2671
+ [Must Match] (?i-mx:^[cis].*?$)
2553
2672
 
2554
2673
 
2555
2674
  ===== --from DATE_OR_RANGE
2556
2675
 
2557
- Date range to show, or a single day to filter date on.
2558
- Date range argument should be quoted. Date specifications can be natural language.
2559
- To specify a range, use "to" or "through": `doing view --from "monday 8am to friday 5pm" view_name`.
2676
+ Date range (natural language) to show, or a single day to filter on.
2677
+ To specify a range, use "to": `doing view --from "monday 8am to friday 5pm"`.
2560
2678
 
2561
- If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
2562
- by time of day.
2679
+ If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
2680
+ by time of day.
2563
2681
 
2564
2682
  [Default Value] None
2565
2683
 
@@ -2580,14 +2698,15 @@ Section
2580
2698
 
2581
2699
  ===== --search QUERY
2582
2700
 
2583
- Search filter, surround with slashes for regex (/query/), start with single quote for exact match ("'query")
2701
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
2702
+ start with single quote for exact match ("'query")
2584
2703
 
2585
2704
  [Default Value] None
2586
2705
 
2587
2706
 
2588
2707
  ===== --tag TAG
2589
2708
 
2590
- Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?)
2709
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
2591
2710
 
2592
2711
  [Default Value] None
2593
2712
 
@@ -2605,12 +2724,13 @@ Tag sort direction (asc|desc)
2605
2724
  Sort tags by (name|time)
2606
2725
 
2607
2726
  [Default Value] None
2608
- [Must Match] (?i-mx:^(?:name|time)$)
2727
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2609
2728
 
2610
2729
 
2611
2730
  ===== --val QUERY
2612
2731
 
2613
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
2732
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
2733
+ May be used multiple times, combined with --bool
2614
2734
 
2615
2735
  [Default Value] None
2616
2736
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -2637,7 +2757,7 @@ Select from a menu of matching entries to perform additional operations
2637
2757
 
2638
2758
 
2639
2759
  ===== --not
2640
- Show items that *don't* match search string
2760
+ Show items that *don't* match search/tag filters
2641
2761
 
2642
2762
 
2643
2763
 
@@ -2795,7 +2915,7 @@ Tag sort direction (asc|desc)
2795
2915
  Sort tags by (name|time)
2796
2916
 
2797
2917
  [Default Value] name
2798
- [Must Match] (?i-mx:^(?:name|time)$)
2918
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2799
2919
 
2800
2920
 
2801
2921
  ===== --template TEMPLATE_STRING