doing 2.1.25 → 2.1.29

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 (163) hide show
  1. checksums.yaml +4 -4
  2. data/.yardoc/checksums +15 -20
  3. data/.yardoc/object_types +0 -0
  4. data/.yardoc/objects/root.dat +0 -0
  5. data/CHANGELOG.md +322 -108
  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 +2 -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 +83 -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 -3706
  55. data/docs/doc/Array.html +3 -502
  56. data/docs/doc/BooleanTermParser/Clause.html +1 -1
  57. data/docs/doc/BooleanTermParser/Operator.html +1 -1
  58. data/docs/doc/BooleanTermParser/Query.html +1 -1
  59. data/docs/doc/BooleanTermParser/QueryParser.html +1 -1
  60. data/docs/doc/BooleanTermParser/QueryTransformer.html +1 -1
  61. data/docs/doc/BooleanTermParser.html +1 -1
  62. data/docs/doc/Doing/Color.html +62 -56
  63. data/docs/doc/Doing/Completion.html +1 -1
  64. data/docs/doc/Doing/Configuration.html +36 -1
  65. data/docs/doc/Doing/Errors/DoingNoTraceError.html +1 -1
  66. data/docs/doc/Doing/Errors/DoingRuntimeError.html +1 -1
  67. data/docs/doc/Doing/Errors/DoingStandardError.html +1 -1
  68. data/docs/doc/Doing/Errors/EmptyInput.html +1 -1
  69. data/docs/doc/Doing/Errors/NoResults.html +1 -1
  70. data/docs/doc/Doing/Errors/PluginException.html +1 -1
  71. data/docs/doc/Doing/Errors/UserCancelled.html +1 -1
  72. data/docs/doc/Doing/Errors/WrongCommand.html +1 -1
  73. data/docs/doc/Doing/Errors.html +1 -1
  74. data/docs/doc/Doing/Hooks.html +1 -1
  75. data/docs/doc/Doing/Item.html +1 -1
  76. data/docs/doc/Doing/Items.html +2 -2
  77. data/docs/doc/Doing/LogAdapter.html +1 -1
  78. data/docs/doc/Doing/Note.html +2 -2
  79. data/docs/doc/Doing/Pager.html +1 -1
  80. data/docs/doc/Doing/Plugins.html +1 -1
  81. data/docs/doc/Doing/Prompt.html +46 -1
  82. data/docs/doc/Doing/Section.html +1 -1
  83. data/docs/doc/Doing/TemplateString.html +2 -2
  84. data/docs/doc/Doing/Types.html +41 -1
  85. data/docs/doc/Doing/Util/Backup.html +1 -1
  86. data/docs/doc/Doing/Util.html +1 -1
  87. data/docs/doc/Doing/WWID.html +10 -10
  88. data/docs/doc/Doing.html +3 -3
  89. data/docs/doc/FalseClass.html +235 -0
  90. data/docs/doc/GLI/Commands/Help.html +1 -1
  91. data/docs/doc/GLI/Commands/MarkdownDocumentListener.html +1 -1
  92. data/docs/doc/GLI/Commands.html +1 -1
  93. data/docs/doc/GLI.html +1 -1
  94. data/docs/doc/Hash.html +1 -1
  95. data/docs/doc/Numeric.html +1 -1
  96. data/docs/doc/Object.html +203 -0
  97. data/docs/doc/PhraseParser/Operator.html +1 -1
  98. data/docs/doc/PhraseParser/PhraseClause.html +1 -1
  99. data/docs/doc/PhraseParser/Query.html +1 -1
  100. data/docs/doc/PhraseParser/QueryParser.html +1 -1
  101. data/docs/doc/PhraseParser/QueryTransformer.html +1 -1
  102. data/docs/doc/PhraseParser/TermClause.html +1 -1
  103. data/docs/doc/PhraseParser.html +1 -1
  104. data/docs/doc/Status.html +1 -1
  105. data/docs/doc/String.html +287 -3155
  106. data/docs/doc/Symbol.html +40 -6
  107. data/docs/doc/Time.html +1 -1
  108. data/docs/doc/TrueClass.html +235 -0
  109. data/docs/doc/_index.html +5 -10
  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 +289 -681
  114. data/docs/doc/top-level-namespace.html +2 -2
  115. data/doing.rdoc +306 -205
  116. data/lib/completion/_doing.zsh +35 -35
  117. data/lib/completion/doing.bash +30 -30
  118. data/lib/completion/doing.fish +88 -78
  119. data/lib/doing/array/array.rb +4 -0
  120. data/lib/doing/array/nested_hash.rb +17 -0
  121. data/lib/doing/{array.rb → array/tags.rb} +7 -25
  122. data/lib/doing/changelog/change.rb +26 -11
  123. data/lib/doing/changelog/changes.rb +31 -4
  124. data/lib/doing/{array_chronify.rb → chronify/array.rb} +0 -0
  125. data/lib/doing/chronify/chronify.rb +5 -0
  126. data/lib/doing/{numeric_chronify.rb → chronify/numeric.rb} +0 -0
  127. data/lib/doing/{string_chronify.rb → chronify/string.rb} +0 -0
  128. data/lib/doing/colors.rb +115 -54
  129. data/lib/doing/configuration.rb +5 -0
  130. data/lib/doing/good.rb +8 -0
  131. data/lib/doing/help_monkey_patch.rb +6 -5
  132. data/lib/doing/item.rb +5 -5
  133. data/lib/doing/items.rb +2 -2
  134. data/lib/doing/log_adapter.rb +35 -2
  135. data/lib/doing/normalize.rb +188 -0
  136. data/lib/doing/pager.rb +1 -0
  137. data/lib/doing/plugins/export/dayone_export.rb +1 -1
  138. data/lib/doing/plugins/export/html_export.rb +1 -1
  139. data/lib/doing/plugins/export/json_export.rb +1 -1
  140. data/lib/doing/plugins/export/markdown_export.rb +1 -1
  141. data/lib/doing/plugins/export/template_export.rb +3 -1
  142. data/lib/doing/prompt.rb +9 -3
  143. data/lib/doing/string/highlight.rb +95 -0
  144. data/lib/doing/string/query.rb +129 -0
  145. data/lib/doing/string/string.rb +12 -0
  146. data/lib/doing/string/tags.rb +164 -0
  147. data/lib/doing/string/transform.rb +168 -0
  148. data/lib/doing/string/truncate.rb +75 -0
  149. data/lib/doing/string/url.rb +82 -0
  150. data/lib/doing/template_string.rb +0 -22
  151. data/lib/doing/types.rb +8 -0
  152. data/lib/doing/util.rb +13 -9
  153. data/lib/doing/version.rb +1 -1
  154. data/lib/doing/wwid.rb +53 -35
  155. data/lib/doing.rb +4 -6
  156. data/lib/examples/commands/wiki.rb +6 -7
  157. data/lib/examples/plugins/wiki_export/wiki_export.rb +1 -1
  158. data/lib/helpers/threaded_tests.rb +39 -20
  159. data/scripts/deploy.rb +107 -0
  160. data/scripts/runtests.sh +4 -0
  161. metadata +63 -8
  162. data/lib/doing/string.rb +0 -765
  163. 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.25
8
+ v2.1.29
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 /opt/homebrew/bin/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,62 @@ Show changelogs matching search terms (uses pattern-based searching).
429
454
  [Default Value] None
430
455
 
431
456
 
457
+ ===== --sort ORDER
458
+
459
+ Sort order (asc/desc)
460
+
461
+ [Default Value] desc
462
+ [Must Match] (?i-mx:^(?:a(?:sc)?|d(?:esc)?)$)
463
+
464
+
465
+ ===== -C|--changes
466
+ Only output changes, no version numbers, headers, or dates
467
+
468
+
469
+
432
470
  ===== -a|--all
433
471
  Display all versions
434
472
 
435
473
 
436
474
 
437
- ==== Command: <tt>choose </tt>
438
- Select a section to display from a menu
475
+ ===== -i|--interactive
476
+ Open changelog in interactive viewer
477
+
478
+
479
+
480
+ ===== -m|--md|--markdown
481
+ Output raw Markdown
482
+
483
+
484
+
485
+ ===== --render
486
+ Force rendered output
487
+
439
488
 
440
489
 
441
490
  ==== Command: <tt>colors </tt>
442
491
  List available color variables for configuration templates and views
443
492
 
444
493
 
494
+ ==== Command: <tt>commands </tt>
495
+ Enable and disable Doing commands
496
+
497
+
498
+ ===== Commands
499
+ ====== Command: <tt>add|enable COMMAND [COMMAND...]</tt>
500
+ Enable Doing commands
501
+
502
+ Run without arguments to select commands from a list.
503
+ ====== Command: <tt>remove|disable </tt>
504
+ Disable Doing commands
505
+
506
+
507
+ [Default Command] add
445
508
  ==== Command: <tt>completion </tt>
446
509
  Generate shell completion scripts
447
510
 
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.
511
+ Generates the necessary scripts to add command line completion to various shells,
512
+ so typing 'doing' and hitting tab will offer completions of subcommands and their options.
450
513
  ===== Options
451
514
  ===== -f|--file PATH
452
515
 
@@ -572,7 +635,7 @@ Set finish date to specific date/time (natural langauge parsed, e.g. --at=1:30pm
572
635
 
573
636
  ===== -b|--back|--started DATE_STRING
574
637
 
575
- Backdate start date by interval or set to time [4pm|20m|2h|"yesterday noon"]
638
+ Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]
576
639
 
577
640
  [Default Value] None
578
641
 
@@ -609,6 +672,11 @@ Set completion date to start date plus interval (XX[mhd] or HH:MM).
609
672
  [Default Value] None
610
673
 
611
674
 
675
+ ===== -X|--noauto
676
+ Exclude auto tags and default tags
677
+
678
+
679
+
612
680
  ===== -a|--archive
613
681
  Immediately archive the entry
614
682
 
@@ -625,7 +693,7 @@ Include date
625
693
 
626
694
 
627
695
  ===== -e|--editor
628
- Edit entry with /opt/homebrew/bin/vim (with no arguments, edits the last entry)
696
+ Edit entry with vim
629
697
 
630
698
 
631
699
 
@@ -660,9 +728,9 @@ Backdate completed date to date string [4pm|20m|2h|yesterday noon]
660
728
 
661
729
  ===== --bool BOOLEAN
662
730
 
663
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
731
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
664
732
 
665
- [Default Value] PATTERN
733
+ [Default Value] pattern
666
734
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
667
735
 
668
736
 
@@ -671,7 +739,7 @@ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to
671
739
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
672
740
 
673
741
  [Default Value] smart
674
- [Must Match] (?-mix:^[csi])
742
+ [Must Match] (?i-mx:^[cis].*?$)
675
743
 
676
744
 
677
745
  ===== -s|--section NAME
@@ -683,7 +751,8 @@ Section
683
751
 
684
752
  ===== --search QUERY
685
753
 
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")
754
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
755
+ start with single quote for exact match ("'query")
687
756
 
688
757
  [Default Value] None
689
758
 
@@ -697,15 +766,15 @@ Set the completed date to the start date plus XX[hmd]
697
766
 
698
767
  ===== --tag TAG
699
768
 
700
- Finish the last X entries containing TAG.
701
- Separate multiple tags with comma (--tag=tag1,tag2), combine with --bool. Wildcards allowed (*, ?).
769
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
702
770
 
703
771
  [Default Value] None
704
772
 
705
773
 
706
774
  ===== --val QUERY
707
775
 
708
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
776
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
777
+ May be used multiple times, combined with --bool
709
778
 
710
779
  [Default Value] None
711
780
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -739,7 +808,7 @@ Finish items that *don't* match search/tag filters
739
808
 
740
809
 
741
810
  ===== -r|--remove
742
- Remove done tag
811
+ Remove @done tag
743
812
 
744
813
 
745
814
 
@@ -748,6 +817,11 @@ Finish last entry (or entries) not already marked @done
748
817
 
749
818
 
750
819
 
820
+ ===== --update
821
+ Overwrite existing @done tag with new date
822
+
823
+
824
+
751
825
  ===== -x|--exact
752
826
  Force exact search string matching (case sensitive)
753
827
 
@@ -762,23 +836,25 @@ To search with regular expressions, single quote the string and surround with sl
762
836
  ===== Options
763
837
  ===== --after DATE_STRING
764
838
 
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
839
+ Search entries newer than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
840
+ dates will be included, but entries will be filtered by time of day
766
841
 
767
842
  [Default Value] None
768
843
 
769
844
 
770
845
  ===== --before DATE_STRING
771
846
 
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
847
+ Search entries older than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
848
+ dates will be included, but entries will be filtered by time of day
773
849
 
774
850
  [Default Value] None
775
851
 
776
852
 
777
- ===== --bool arg
853
+ ===== --bool BOOLEAN
778
854
 
779
855
  Combine multiple tags or value queries using AND, OR, or NOT
780
856
 
781
- [Default Value] AND
857
+ [Default Value] pattern
782
858
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
783
859
 
784
860
 
@@ -787,7 +863,7 @@ Combine multiple tags or value queries using AND, OR, or NOT
787
863
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
788
864
 
789
865
  [Default Value] smart
790
- [Must Match] (?-mix:^[csi])
866
+ [Must Match] (?i-mx:^[cis].*?$)
791
867
 
792
868
 
793
869
  ===== --config_template TEMPLATE_KEY
@@ -799,12 +875,11 @@ Output using a template from configuration
799
875
 
800
876
  ===== --from DATE_OR_RANGE
801
877
 
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"`.
878
+ Date range (natural language) to search, or a single day to filter on.
879
+ To specify a range, use "to": `doing grep --from "monday 8am to friday 5pm"`.
805
880
 
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.
881
+ If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
882
+ by time of day.
808
883
 
809
884
  [Default Value] None
810
885
 
@@ -828,7 +903,7 @@ Section
828
903
  Sort tags by (name|time)
829
904
 
830
905
  [Default Value] name
831
- [Must Match] (?i-mx:^(?:name|time)$)
906
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
832
907
 
833
908
 
834
909
  ===== --template TEMPLATE_STRING
@@ -857,7 +932,7 @@ Show elapsed time on entries without @done tag
857
932
 
858
933
 
859
934
  ===== -e|--editor
860
- Edit matching entries with /opt/homebrew/bin/vim
935
+ Edit matching entries with vim
861
936
 
862
937
 
863
938
 
@@ -913,14 +988,16 @@ Imports entries from other sources. Available plugins: calendar, capturething, d
913
988
  ===== Options
914
989
  ===== --after DATE_STRING
915
990
 
916
- Import entries newer than date
991
+ Import entries newer than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
992
+ dates will be included, but entries will be filtered by time of day
917
993
 
918
994
  [Default Value] None
919
995
 
920
996
 
921
997
  ===== --before DATE_STRING
922
998
 
923
- Import entries older than date
999
+ Import entries older than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
1000
+ dates will be included, but entries will be filtered by time of day
924
1001
 
925
1002
  [Default Value] None
926
1003
 
@@ -930,14 +1007,16 @@ Import entries older than date
930
1007
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
931
1008
 
932
1009
  [Default Value] smart
933
- [Must Match] (?-mix:^[csi])
1010
+ [Must Match] (?i-mx:^[cis].*?$)
934
1011
 
935
1012
 
936
- ===== -f|--from DATE_OR_RANGE
1013
+ ===== --from DATE_OR_RANGE
937
1014
 
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.
1015
+ Date range (natural language) to import, or a single day to filter on.
1016
+ To specify a range, use "to": `doing import --from "monday 8am to friday 5pm"`.
1017
+
1018
+ If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
1019
+ by time of day.
941
1020
 
942
1021
  [Default Value] None
943
1022
 
@@ -958,7 +1037,8 @@ Target section
958
1037
 
959
1038
  ===== --search QUERY
960
1039
 
961
- Only import items matching search. Surround with slashes for regex (/query/), start with single quote for exact match ("'query")
1040
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1041
+ start with single quote for exact match ("'query")
962
1042
 
963
1043
  [Default Value] None
964
1044
 
@@ -1010,9 +1090,9 @@ allowing `doing last` to target historical entries.
1010
1090
  ===== Options
1011
1091
  ===== --bool BOOLEAN
1012
1092
 
1013
- Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
1093
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
1014
1094
 
1015
- [Default Value] PATTERN
1095
+ [Default Value] pattern
1016
1096
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1017
1097
 
1018
1098
 
@@ -1021,7 +1101,7 @@ Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
1021
1101
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1022
1102
 
1023
1103
  [Default Value] smart
1024
- [Must Match] (?-mix:^[csi])
1104
+ [Must Match] (?i-mx:^[cis].*?$)
1025
1105
 
1026
1106
 
1027
1107
  ===== --config_template TEMPLATE_KEY
@@ -1040,14 +1120,15 @@ Specify a section
1040
1120
 
1041
1121
  ===== --search QUERY
1042
1122
 
1043
- Search filter, surround with slashes for regex (/query/), start with single quote for exact match ("'query")
1123
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1124
+ start with single quote for exact match ("'query")
1044
1125
 
1045
1126
  [Default Value] None
1046
1127
 
1047
1128
 
1048
1129
  ===== --tag TAG
1049
1130
 
1050
- Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?)
1131
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1051
1132
 
1052
1133
  [Default Value] None
1053
1134
 
@@ -1061,7 +1142,8 @@ Override output format with a template string containing %placeholders
1061
1142
 
1062
1143
  ===== --val QUERY
1063
1144
 
1064
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1145
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
1146
+ May be used multiple times, combined with --bool
1065
1147
 
1066
1148
  [Default Value] None
1067
1149
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1078,7 +1160,7 @@ Show elapsed time if entry is not tagged @done
1078
1160
 
1079
1161
 
1080
1162
  ===== -e|--editor
1081
- Edit entry with /opt/homebrew/bin/vim
1163
+ Edit entry with vim
1082
1164
 
1083
1165
 
1084
1166
 
@@ -1088,7 +1170,7 @@ Highlight search matches in output. Only affects command line output
1088
1170
 
1089
1171
 
1090
1172
  ===== --not
1091
- Show items that *don't* match search string or tag filter
1173
+ Show items that *don't* match search/tag filters
1092
1174
 
1093
1175
 
1094
1176
 
@@ -1097,35 +1179,6 @@ Force exact search string matching (case sensitive)
1097
1179
 
1098
1180
 
1099
1181
 
1100
- ==== Command: <tt>later ENTRY</tt>
1101
- Add an item to the Later section
1102
-
1103
-
1104
- ===== Options
1105
- ===== -b|--back|--started DATE_STRING
1106
-
1107
- Backdate start time to date string [4pm|20m|2h|yesterday noon]
1108
-
1109
- [Default Value] None
1110
-
1111
-
1112
- ===== -n|--note TEXT
1113
-
1114
- Note
1115
-
1116
- [Default Value] None
1117
-
1118
-
1119
- ===== --ask
1120
- Prompt for note via multi-line input
1121
-
1122
-
1123
-
1124
- ===== -e|--editor
1125
- Edit entry with /opt/homebrew/bin/vim
1126
-
1127
-
1128
-
1129
1182
  ==== Command: <tt>mark|flag </tt>
1130
1183
  Mark last entry as flagged
1131
1184
 
@@ -1133,9 +1186,9 @@ Mark last entry as flagged
1133
1186
  ===== Options
1134
1187
  ===== --bool BOOLEAN
1135
1188
 
1136
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
1189
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
1137
1190
 
1138
- [Default Value] PATTERN
1191
+ [Default Value] pattern
1139
1192
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1140
1193
 
1141
1194
 
@@ -1152,7 +1205,7 @@ How many recent entries to tag (0 for all)
1152
1205
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1153
1206
 
1154
1207
  [Default Value] smart
1155
- [Must Match] (?-mix:^[csi])
1208
+ [Must Match] (?i-mx:^[cis].*?$)
1156
1209
 
1157
1210
 
1158
1211
  ===== -s|--section SECTION_NAME
@@ -1164,22 +1217,23 @@ Section
1164
1217
 
1165
1218
  ===== --search QUERY
1166
1219
 
1167
- Flag the last entry matching search filter, surround with slashes for regex (e.g. "/query.*/"), start with single quote for exact match ("'query")
1220
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1221
+ start with single quote for exact match ("'query")
1168
1222
 
1169
1223
  [Default Value] None
1170
1224
 
1171
1225
 
1172
1226
  ===== --tag TAG
1173
1227
 
1174
- Flag the last entry containing TAG.
1175
- Separate multiple tags with comma (--tag=tag1,tag2), combine with --bool. Wildcards allowed (*, ?).
1228
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1176
1229
 
1177
1230
  [Default Value] None
1178
1231
 
1179
1232
 
1180
1233
  ===== --val QUERY
1181
1234
 
1182
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1235
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
1236
+ May be used multiple times, combined with --bool
1183
1237
 
1184
1238
  [Default Value] None
1185
1239
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1201,7 +1255,7 @@ Select item(s) to flag from a menu of matching entries
1201
1255
 
1202
1256
 
1203
1257
  ===== --not
1204
- Flag items that *don't* match search/tag/date filters
1258
+ Flag items that *don't* match search/tag filters
1205
1259
 
1206
1260
 
1207
1261
 
@@ -1237,7 +1291,7 @@ Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]
1237
1291
 
1238
1292
  ===== -n|--note TEXT
1239
1293
 
1240
- Note
1294
+ Include a note
1241
1295
 
1242
1296
  [Default Value] None
1243
1297
 
@@ -1249,6 +1303,11 @@ Section
1249
1303
  [Default Value] None
1250
1304
 
1251
1305
 
1306
+ ===== -X|--noauto
1307
+ Exclude auto tags and default tags
1308
+
1309
+
1310
+
1252
1311
  ===== -a|--archive
1253
1312
  Archive previous @meanwhile entry
1254
1313
 
@@ -1260,7 +1319,7 @@ Prompt for note via multi-line input
1260
1319
 
1261
1320
 
1262
1321
  ===== -e|--editor
1263
- Edit entry with /opt/homebrew/bin/vim
1322
+ Edit entry with vim
1264
1323
 
1265
1324
 
1266
1325
 
@@ -1275,9 +1334,9 @@ If -r is provided with no other arguments, the last note is removed.
1275
1334
  ===== Options
1276
1335
  ===== --bool BOOLEAN
1277
1336
 
1278
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
1337
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
1279
1338
 
1280
- [Default Value] PATTERN
1339
+ [Default Value] pattern
1281
1340
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1282
1341
 
1283
1342
 
@@ -1286,7 +1345,7 @@ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to
1286
1345
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1287
1346
 
1288
1347
  [Default Value] smart
1289
- [Must Match] (?-mix:^[csi])
1348
+ [Must Match] (?i-mx:^[cis].*?$)
1290
1349
 
1291
1350
 
1292
1351
  ===== -s|--section NAME
@@ -1298,21 +1357,23 @@ Section
1298
1357
 
1299
1358
  ===== --search QUERY
1300
1359
 
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")
1360
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1361
+ start with single quote for exact match ("'query")
1302
1362
 
1303
1363
  [Default Value] None
1304
1364
 
1305
1365
 
1306
1366
  ===== --tag TAG
1307
1367
 
1308
- Add/remove note from last entry matching tag. Wildcards allowed (*, ?)
1368
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1309
1369
 
1310
1370
  [Default Value] None
1311
1371
 
1312
1372
 
1313
1373
  ===== --val QUERY
1314
1374
 
1315
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1375
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
1376
+ May be used multiple times, combined with --bool
1316
1377
 
1317
1378
  [Default Value] None
1318
1379
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1324,7 +1385,7 @@ Prompt for note via multi-line input
1324
1385
 
1325
1386
 
1326
1387
  ===== -e|--editor
1327
- Edit entry with /opt/homebrew/bin/vim
1388
+ Edit entry with vim
1328
1389
 
1329
1390
 
1330
1391
 
@@ -1334,7 +1395,7 @@ Select item for new note from a menu of matching entries
1334
1395
 
1335
1396
 
1336
1397
  ===== --not
1337
- Add note to item that *doesn't* match search/tag filters
1398
+ Note items that *don't* match search/tag filters
1338
1399
 
1339
1400
 
1340
1401
 
@@ -1357,11 +1418,11 @@ A parenthetical at the end of the entry will be converted to a note.
1357
1418
 
1358
1419
  Run without arguments to create a new entry interactively.
1359
1420
 
1360
- Run with --editor to create a new entry using /opt/homebrew/bin/vim.
1421
+ Run with --editor to create a new entry using vim.
1361
1422
  ===== Options
1362
1423
  ===== -b|--back|--started DATE_STRING
1363
1424
 
1364
- Backdate start time [4pm|20m|2h|"yesterday noon"]
1425
+ Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]
1365
1426
 
1366
1427
  [Default Value] None
1367
1428
 
@@ -1388,13 +1449,18 @@ Section
1388
1449
  [Default Value] None
1389
1450
 
1390
1451
 
1452
+ ===== -X|--noauto
1453
+ Exclude auto tags and default tags
1454
+
1455
+
1456
+
1391
1457
  ===== --ask
1392
1458
  Prompt for note via multi-line input
1393
1459
 
1394
1460
 
1395
1461
 
1396
1462
  ===== -e|--editor
1397
- Edit entry with /opt/homebrew/bin/vim
1463
+ Edit entry with vim
1398
1464
 
1399
1465
 
1400
1466
 
@@ -1436,7 +1502,7 @@ Section
1436
1502
  Sort tags by (name|time)
1437
1503
 
1438
1504
  [Default Value] name
1439
- [Must Match] (?i-mx:^(?:name|time)$)
1505
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
1440
1506
 
1441
1507
 
1442
1508
  ===== --template TEMPLATE_STRING
@@ -1465,7 +1531,7 @@ Show time totals at the end of output
1465
1531
  Open the "doing" file in an editor
1466
1532
 
1467
1533
  `doing open` defaults to using the editors->doing_file setting
1468
- in /Users/ttscoff/.config/doing/config.yml (/opt/homebrew/bin/vim).
1534
+ in /Users/ttscoff/.config/doing/config.yml (TaskPaper).
1469
1535
  ===== Options
1470
1536
  ===== -a|--app APP_NAME
1471
1537
 
@@ -1534,7 +1600,7 @@ Section
1534
1600
  Sort tags by (name|time)
1535
1601
 
1536
1602
  [Default Value] name
1537
- [Must Match] (?i-mx:^(?:name|time)$)
1603
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
1538
1604
 
1539
1605
 
1540
1606
  ===== --template TEMPLATE_STRING
@@ -1564,6 +1630,23 @@ Show intervals with totals at the end of output
1564
1630
 
1565
1631
 
1566
1632
 
1633
+ ==== Command: <tt>redo COUNT</tt>
1634
+ Redo an undo command
1635
+
1636
+ Shortcut for `doing undo -r`, reverses the last undo command. Specify a count to redo multiple undos
1637
+ ===== Options
1638
+ ===== -f|--file PATH
1639
+
1640
+ Specify alternate doing file
1641
+
1642
+ [Default Value] None
1643
+
1644
+
1645
+ ===== -i|--[no-]interactive
1646
+ Select from an interactive menu
1647
+
1648
+
1649
+
1567
1650
  ==== Command: <tt>reset|begin [DATE_STRING]</tt>
1568
1651
  Reset the start time of an entry
1569
1652
 
@@ -1573,9 +1656,9 @@ If a date string is provided as an argument, the start time will be set to the p
1573
1656
  ===== Options
1574
1657
  ===== --bool BOOLEAN
1575
1658
 
1576
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
1659
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
1577
1660
 
1578
- [Default Value] PATTERN
1661
+ [Default Value] pattern
1579
1662
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1580
1663
 
1581
1664
 
@@ -1584,7 +1667,7 @@ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to
1584
1667
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1585
1668
 
1586
1669
  [Default Value] smart
1587
- [Must Match] (?-mix:^[csi])
1670
+ [Must Match] (?i-mx:^[cis].*?$)
1588
1671
 
1589
1672
 
1590
1673
  ===== -s|--section NAME
@@ -1596,21 +1679,23 @@ Limit search to section
1596
1679
 
1597
1680
  ===== --search QUERY
1598
1681
 
1599
- Reset last entry matching search filter, surround with slashes for regex (e.g. "/query.*/"), start with single quote for exact match ("'query")
1682
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1683
+ start with single quote for exact match ("'query")
1600
1684
 
1601
1685
  [Default Value] None
1602
1686
 
1603
1687
 
1604
1688
  ===== --tag TAG
1605
1689
 
1606
- Reset last entry matching tag. Wildcards allowed (*, ?)
1690
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1607
1691
 
1608
1692
  [Default Value] None
1609
1693
 
1610
1694
 
1611
1695
  ===== --val QUERY
1612
1696
 
1613
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1697
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
1698
+ May be used multiple times, combined with --bool
1614
1699
 
1615
1700
  [Default Value] None
1616
1701
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1658,9 +1743,9 @@ Rotate entries older than date
1658
1743
 
1659
1744
  ===== --bool BOOLEAN
1660
1745
 
1661
- Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
1746
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
1662
1747
 
1663
- [Default Value] PATTERN
1748
+ [Default Value] pattern
1664
1749
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1665
1750
 
1666
1751
 
@@ -1669,7 +1754,7 @@ Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
1669
1754
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1670
1755
 
1671
1756
  [Default Value] smart
1672
- [Must Match] (?-mix:^[csi])
1757
+ [Must Match] (?i-mx:^[cis].*?$)
1673
1758
 
1674
1759
 
1675
1760
  ===== -k|--keep X
@@ -1689,28 +1774,30 @@ Section to rotate
1689
1774
 
1690
1775
  ===== --search QUERY
1691
1776
 
1692
- Search filter
1777
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1778
+ start with single quote for exact match ("'query")
1693
1779
 
1694
1780
  [Default Value] None
1695
1781
 
1696
1782
 
1697
1783
  ===== --tag TAG
1698
1784
 
1699
- Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?). Added for compatibility with other commands
1785
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1700
1786
 
1701
1787
  [Default Value] None
1702
1788
 
1703
1789
 
1704
1790
  ===== --val QUERY
1705
1791
 
1706
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1792
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
1793
+ May be used multiple times, combined with --bool
1707
1794
 
1708
1795
  [Default Value] None
1709
1796
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
1710
1797
 
1711
1798
 
1712
1799
  ===== --not
1713
- Rotate items that *don't* match search string or tag filter
1800
+ Rotate items that *don't* match search/tag filters
1714
1801
 
1715
1802
 
1716
1803
 
@@ -1748,14 +1835,16 @@ sbtrkt fuzzy-match Items that match s*b*t*r*k*t
1748
1835
  ===== Options
1749
1836
  ===== --after DATE_STRING
1750
1837
 
1751
- 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
1838
+ Select entries newer than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
1839
+ dates will be included, but entries will be filtered by time of day
1752
1840
 
1753
1841
  [Default Value] None
1754
1842
 
1755
1843
 
1756
1844
  ===== --before DATE_STRING
1757
1845
 
1758
- 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
1846
+ Select entries older than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
1847
+ dates will be included, but entries will be filtered by time of day
1759
1848
 
1760
1849
  [Default Value] None
1761
1850
 
@@ -1765,17 +1854,16 @@ Select from entries older than date. If this is only a time (8am, 1:30pm, 15:00)
1765
1854
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1766
1855
 
1767
1856
  [Default Value] smart
1768
- [Must Match] (?-mix:^[csi])
1857
+ [Must Match] (?i-mx:^[cis].*?$)
1769
1858
 
1770
1859
 
1771
1860
  ===== --from DATE_OR_RANGE
1772
1861
 
1773
- Date range to show, or a single day to filter date on.
1774
- Date range argument should be quoted. Date specifications can be natural language.
1775
- To specify a range, use "to" or "through": `doing select --from "monday 8am to friday 5pm"`.
1862
+ Date range (natural language) to select, or a single day to filter on.
1863
+ To specify a range, use "to": `doing select --from "monday 8am to friday 5pm"`.
1776
1864
 
1777
- If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
1778
- by time of day.
1865
+ If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
1866
+ by time of day.
1779
1867
 
1780
1868
  [Default Value] None
1781
1869
 
@@ -1796,7 +1884,8 @@ Output entries to format (csv|dayone|dayone-days|dayone-entries|doing|html|json|
1796
1884
 
1797
1885
  ===== -q|--query QUERY
1798
1886
 
1799
- Initial search query for filtering. Matching is fuzzy. For exact matching, start query with a single quote, e.g. `--query "'search"
1887
+ Initial search query for filtering. Matching is fuzzy. For exact matching, start query with a single quote,
1888
+ e.g. `--query "'search"
1800
1889
 
1801
1890
  [Default Value] None
1802
1891
 
@@ -1817,7 +1906,8 @@ Save selected entries to file using --output format
1817
1906
 
1818
1907
  ===== --search QUERY
1819
1908
 
1820
- Select from entries matching search filter, surround with slashes for regex (e.g. "/query.*/"), start with single quote for exact match ("'query")
1909
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1910
+ start with single quote for exact match ("'query")
1821
1911
 
1822
1912
  [Default Value] None
1823
1913
 
@@ -1831,7 +1921,8 @@ Tag selected entries
1831
1921
 
1832
1922
  ===== --val QUERY
1833
1923
 
1834
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
1924
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
1925
+ May be used multiple times, combined with --bool
1835
1926
 
1836
1927
  [Default Value] None
1837
1928
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1843,7 +1934,8 @@ Archive selected items
1843
1934
 
1844
1935
 
1845
1936
  ===== --again|--resume
1846
- Copy selection as a new entry with current time and no @done tag. Only works with single selections. Can be combined with --editor.
1937
+ Copy selection as a new entry with current time and no @done tag.
1938
+ Only works with single selections. Can be combined with --editor.
1847
1939
 
1848
1940
 
1849
1941
 
@@ -1878,7 +1970,8 @@ Perform action without confirmation
1878
1970
 
1879
1971
 
1880
1972
  ===== --[no-]menu
1881
- 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
1973
+ Use --no-menu to skip the interactive menu. Use with --query to filter items and act on results automatically.
1974
+ Test with `--output doing` to preview matches
1882
1975
 
1883
1976
 
1884
1977
 
@@ -1916,24 +2009,26 @@ Age (oldest|newest)
1916
2009
 
1917
2010
  ===== --after DATE_STRING
1918
2011
 
1919
- 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
2012
+ Show entries newer than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
2013
+ dates will be included, but entries will be filtered by time of day
1920
2014
 
1921
2015
  [Default Value] None
1922
2016
 
1923
2017
 
1924
- ===== -b|--bool BOOLEAN
2018
+ ===== --before DATE_STRING
1925
2019
 
1926
- Tag boolean (AND,OR,NOT). Use PATTERN to parse + and - as booleans
2020
+ Show entries older than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
2021
+ dates will be included, but entries will be filtered by time of day
1927
2022
 
1928
- [Default Value] PATTERN
1929
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2023
+ [Default Value] None
1930
2024
 
1931
2025
 
1932
- ===== --before DATE_STRING
2026
+ ===== --bool BOOLEAN
1933
2027
 
1934
- 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
2028
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
1935
2029
 
1936
- [Default Value] None
2030
+ [Default Value] pattern
2031
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1937
2032
 
1938
2033
 
1939
2034
  ===== -c|--count MAX
@@ -1949,7 +2044,7 @@ Max count to show
1949
2044
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1950
2045
 
1951
2046
  [Default Value] smart
1952
- [Must Match] (?-mix:^[csi])
2047
+ [Must Match] (?i-mx:^[cis].*?$)
1953
2048
 
1954
2049
 
1955
2050
  ===== --config_template TEMPLATE_KEY
@@ -1961,12 +2056,11 @@ Output using a template from configuration
1961
2056
 
1962
2057
  ===== --from DATE_OR_RANGE
1963
2058
 
1964
- Date range to show, or a single day to filter date on.
1965
- Date range argument should be quoted. Date specifications can be natural language.
1966
- To specify a range, use "to" or "through": `doing show --from "monday 8am to friday 5pm"`.
2059
+ Date range (natural language) to show, or a single day to filter on.
2060
+ To specify a range, use "to": `doing show --from "monday 8am to friday 5pm"`.
1967
2061
 
1968
- If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
1969
- by time of day.
2062
+ If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
2063
+ by time of day.
1970
2064
 
1971
2065
  [Default Value] None
1972
2066
 
@@ -1988,14 +2082,15 @@ Sort order (asc/desc)
1988
2082
 
1989
2083
  ===== --search QUERY
1990
2084
 
1991
- Search filter, surround with slashes for regex (/query/), start with single quote for exact match ("'query")
2085
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
2086
+ start with single quote for exact match ("'query")
1992
2087
 
1993
2088
  [Default Value] None
1994
2089
 
1995
2090
 
1996
2091
  ===== --tag TAG
1997
2092
 
1998
- 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
2093
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1999
2094
 
2000
2095
  [Default Value] None
2001
2096
 
@@ -2013,7 +2108,7 @@ Tag sort direction (asc|desc)
2013
2108
  Sort tags by (name|time)
2014
2109
 
2015
2110
  [Default Value] name
2016
- [Must Match] (?i-mx:^(?:name|time))
2111
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2017
2112
 
2018
2113
 
2019
2114
  ===== --template TEMPLATE_STRING
@@ -2025,7 +2120,8 @@ Override output format with a template string containing %placeholders
2025
2120
 
2026
2121
  ===== --val QUERY
2027
2122
 
2028
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
2123
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
2124
+ May be used multiple times, combined with --bool
2029
2125
 
2030
2126
  [Default Value] None
2031
2127
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -2052,7 +2148,7 @@ Select section or tag to display from a menu
2052
2148
 
2053
2149
 
2054
2150
  ===== --not
2055
- Show items that *don't* match search/tag/date filters
2151
+ Show items that *don't* match search/tag filters
2056
2152
 
2057
2153
 
2058
2154
 
@@ -2108,7 +2204,7 @@ Section
2108
2204
  Sort tags by (name|time)
2109
2205
 
2110
2206
  [Default Value] name
2111
- [Must Match] (?i-mx:^(?:name|time)$)
2207
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2112
2208
 
2113
2209
 
2114
2210
  ===== --template TEMPLATE_STRING
@@ -2152,9 +2248,9 @@ Add (or remove) tags from the last entry, or from multiple entries
2152
2248
  ===== Options
2153
2249
  ===== --bool BOOLEAN
2154
2250
 
2155
- Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans
2251
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
2156
2252
 
2157
- [Default Value] PATTERN
2253
+ [Default Value] pattern
2158
2254
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2159
2255
 
2160
2256
 
@@ -2171,7 +2267,7 @@ How many recent entries to tag (0 for all)
2171
2267
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
2172
2268
 
2173
2269
  [Default Value] smart
2174
- [Must Match] (?-mix:^[csi])
2270
+ [Must Match] (?i-mx:^[cis].*?$)
2175
2271
 
2176
2272
 
2177
2273
  ===== --rename ORIG_TAG
@@ -2190,15 +2286,15 @@ Section
2190
2286
 
2191
2287
  ===== --search QUERY
2192
2288
 
2193
- Tag entries matching search filter, surround with slashes for regex (e.g. "/query.*/"), start with single quote for exact match ("'query")
2289
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
2290
+ start with single quote for exact match ("'query")
2194
2291
 
2195
2292
  [Default Value] None
2196
2293
 
2197
2294
 
2198
2295
  ===== --tag TAG
2199
2296
 
2200
- Tag the last X entries containing TAG.
2201
- Separate multiple tags with comma (--tag=tag1,tag2), combine with --bool. Wildcards allowed (*, ?).
2297
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
2202
2298
 
2203
2299
  [Default Value] None
2204
2300
 
@@ -2212,7 +2308,8 @@ Include a value, e.g. @tag(value)
2212
2308
 
2213
2309
  ===== --val QUERY
2214
2310
 
2215
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
2311
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
2312
+ May be used multiple times, combined with --bool
2216
2313
 
2217
2314
  [Default Value] None
2218
2315
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -2284,7 +2381,7 @@ List all tags in the current Doing file
2284
2381
 
2285
2382
  Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
2286
2383
 
2287
- [Default Value] PATTERN
2384
+ [Default Value] pattern
2288
2385
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2289
2386
 
2290
2387
 
@@ -2293,7 +2390,7 @@ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
2293
2390
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
2294
2391
 
2295
2392
  [Default Value] smart
2296
- [Must Match] (?-mix:^[csi])
2393
+ [Must Match] (?i-mx:^[cis].*?$)
2297
2394
 
2298
2395
 
2299
2396
  ===== -o|--order ORDER
@@ -2313,8 +2410,8 @@ Section
2313
2410
 
2314
2411
  ===== --search QUERY
2315
2412
 
2316
- Get tags for items matching search. Surround with
2317
- slashes for regex (e.g. "/query/"), start with a single quote for exact match ("'query").
2413
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
2414
+ start with single quote for exact match ("'query")
2318
2415
 
2319
2416
  [Default Value] None
2320
2417
 
@@ -2329,14 +2426,15 @@ Sort by name or count
2329
2426
 
2330
2427
  ===== --tag TAG
2331
2428
 
2332
- Get tags for entries matching tags. Combine multiple tags with a comma. Wildcards allowed (*, ?)
2429
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
2333
2430
 
2334
2431
  [Default Value] None
2335
2432
 
2336
2433
 
2337
2434
  ===== --val QUERY
2338
2435
 
2339
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
2436
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
2437
+ May be used multiple times, combined with --bool
2340
2438
 
2341
2439
  [Default Value] None
2342
2440
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -2358,7 +2456,7 @@ Output in a single line with @ symbols. Ignored if --counts is specified.
2358
2456
 
2359
2457
 
2360
2458
  ===== --not
2361
- Get tags from items that *don't* match search/tag filters
2459
+ Show items that *don't* match search/tag filters
2362
2460
 
2363
2461
 
2364
2462
 
@@ -2452,7 +2550,7 @@ Specify a section
2452
2550
  Sort tags by (name|time)
2453
2551
 
2454
2552
  [Default Value] name
2455
- [Must Match] (?i-mx:^(?:name|time)$)
2553
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2456
2554
 
2457
2555
 
2458
2556
  ===== --template TEMPLATE_STRING
@@ -2517,7 +2615,8 @@ Command line options override view configuration.
2517
2615
  ===== Options
2518
2616
  ===== --after DATE_STRING
2519
2617
 
2520
- 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
2618
+ Show entries newer than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
2619
+ dates will be included, but entries will be filtered by time of day
2521
2620
 
2522
2621
  [Default Value] None
2523
2622
 
@@ -2529,19 +2628,20 @@ Age (oldest|newest)
2529
2628
  [Default Value] newest
2530
2629
 
2531
2630
 
2532
- ===== -b|--bool BOOLEAN
2631
+ ===== --before DATE_STRING
2533
2632
 
2534
- Tag boolean (AND,OR,NOT). Use PATTERN to parse + and - as booleans
2633
+ Show entries older than date (natural language). If this is only a time (8am, 1:30pm, 15:00), all
2634
+ dates will be included, but entries will be filtered by time of day
2535
2635
 
2536
- [Default Value] PATTERN
2537
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2636
+ [Default Value] None
2538
2637
 
2539
2638
 
2540
- ===== --before DATE_STRING
2639
+ ===== --bool BOOLEAN
2541
2640
 
2542
- 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
2641
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
2543
2642
 
2544
- [Default Value] None
2643
+ [Default Value] pattern
2644
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2545
2645
 
2546
2646
 
2547
2647
  ===== -c|--count COUNT
@@ -2557,17 +2657,16 @@ Count to display
2557
2657
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
2558
2658
 
2559
2659
  [Default Value] smart
2560
- [Must Match] (?-mix:^[csi])
2660
+ [Must Match] (?i-mx:^[cis].*?$)
2561
2661
 
2562
2662
 
2563
2663
  ===== --from DATE_OR_RANGE
2564
2664
 
2565
- Date range to show, or a single day to filter date on.
2566
- Date range argument should be quoted. Date specifications can be natural language.
2567
- To specify a range, use "to" or "through": `doing view --from "monday 8am to friday 5pm" view_name`.
2665
+ Date range (natural language) to show, or a single day to filter on.
2666
+ To specify a range, use "to": `doing view --from "monday 8am to friday 5pm"`.
2568
2667
 
2569
- If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
2570
- by time of day.
2668
+ If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
2669
+ by time of day.
2571
2670
 
2572
2671
  [Default Value] None
2573
2672
 
@@ -2588,14 +2687,15 @@ Section
2588
2687
 
2589
2688
  ===== --search QUERY
2590
2689
 
2591
- Search filter, surround with slashes for regex (/query/), start with single quote for exact match ("'query")
2690
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
2691
+ start with single quote for exact match ("'query")
2592
2692
 
2593
2693
  [Default Value] None
2594
2694
 
2595
2695
 
2596
2696
  ===== --tag TAG
2597
2697
 
2598
- Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?)
2698
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
2599
2699
 
2600
2700
  [Default Value] None
2601
2701
 
@@ -2613,12 +2713,13 @@ Tag sort direction (asc|desc)
2613
2713
  Sort tags by (name|time)
2614
2714
 
2615
2715
  [Default Value] None
2616
- [Must Match] (?i-mx:^(?:name|time)$)
2716
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2617
2717
 
2618
2718
 
2619
2719
  ===== --val QUERY
2620
2720
 
2621
- Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
2721
+ Perform a tag value query ("@done > two hours ago" or "@progress < 50").
2722
+ May be used multiple times, combined with --bool
2622
2723
 
2623
2724
  [Default Value] None
2624
2725
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -2645,7 +2746,7 @@ Select from a menu of matching entries to perform additional operations
2645
2746
 
2646
2747
 
2647
2748
  ===== --not
2648
- Show items that *don't* match search string
2749
+ Show items that *don't* match search/tag filters
2649
2750
 
2650
2751
 
2651
2752
 
@@ -2803,7 +2904,7 @@ Tag sort direction (asc|desc)
2803
2904
  Sort tags by (name|time)
2804
2905
 
2805
2906
  [Default Value] name
2806
- [Must Match] (?i-mx:^(?:name|time)$)
2907
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2807
2908
 
2808
2909
 
2809
2910
  ===== --template TEMPLATE_STRING