doing 2.1.26 → 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 (151) hide show
  1. checksums.yaml +4 -4
  2. data/.yardoc/checksums +14 -19
  3. data/.yardoc/object_types +0 -0
  4. data/.yardoc/objects/root.dat +0 -0
  5. data/CHANGELOG.md +23 -0
  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 +2 -0
  14. data/bin/commands/again.rb +23 -65
  15. data/bin/commands/archive.rb +20 -61
  16. data/bin/commands/cancel.rb +27 -69
  17. data/bin/commands/changes.rb +32 -5
  18. data/bin/commands/colors.rb +4 -2
  19. data/bin/commands/commands.rb +4 -2
  20. data/bin/commands/commands_accepting.rb +62 -11
  21. data/bin/commands/completion.rb +10 -7
  22. data/bin/commands/config.rb +1 -1
  23. data/bin/commands/done.rb +3 -17
  24. data/bin/commands/finish.rb +7 -30
  25. data/bin/commands/flag.rb +15 -51
  26. data/bin/commands/grep.rb +12 -28
  27. data/bin/commands/import.rb +3 -33
  28. data/bin/commands/last.rb +3 -36
  29. data/bin/commands/meanwhile.rb +3 -13
  30. data/bin/commands/note.rb +13 -52
  31. data/bin/commands/now.rb +15 -21
  32. data/bin/commands/on.rb +3 -4
  33. data/bin/commands/recent.rb +3 -4
  34. data/bin/commands/redo.rb +6 -2
  35. data/bin/commands/reset.rb +19 -52
  36. data/bin/commands/rotate.rb +5 -36
  37. data/bin/commands/select.rb +23 -41
  38. data/bin/commands/show.rb +28 -74
  39. data/bin/commands/since.rb +3 -4
  40. data/bin/commands/tag.rb +4 -34
  41. data/bin/commands/tags.rb +5 -32
  42. data/bin/commands/today.rb +3 -4
  43. data/bin/commands/view.rb +36 -73
  44. data/bin/commands/yesterday.rb +4 -5
  45. data/bin/doing +150 -13
  46. data/docs/doc/Array.html +3 -502
  47. data/docs/doc/BooleanTermParser/Clause.html +1 -1
  48. data/docs/doc/BooleanTermParser/Operator.html +1 -1
  49. data/docs/doc/BooleanTermParser/Query.html +1 -1
  50. data/docs/doc/BooleanTermParser/QueryParser.html +1 -1
  51. data/docs/doc/BooleanTermParser/QueryTransformer.html +1 -1
  52. data/docs/doc/BooleanTermParser.html +1 -1
  53. data/docs/doc/Doing/Color.html +62 -56
  54. data/docs/doc/Doing/Completion.html +1 -1
  55. data/docs/doc/Doing/Configuration.html +35 -1
  56. data/docs/doc/Doing/Errors/DoingNoTraceError.html +1 -1
  57. data/docs/doc/Doing/Errors/DoingRuntimeError.html +1 -1
  58. data/docs/doc/Doing/Errors/DoingStandardError.html +1 -1
  59. data/docs/doc/Doing/Errors/EmptyInput.html +1 -1
  60. data/docs/doc/Doing/Errors/NoResults.html +1 -1
  61. data/docs/doc/Doing/Errors/PluginException.html +1 -1
  62. data/docs/doc/Doing/Errors/UserCancelled.html +1 -1
  63. data/docs/doc/Doing/Errors/WrongCommand.html +1 -1
  64. data/docs/doc/Doing/Errors.html +1 -1
  65. data/docs/doc/Doing/Hooks.html +1 -1
  66. data/docs/doc/Doing/Item.html +1 -1
  67. data/docs/doc/Doing/Items.html +2 -2
  68. data/docs/doc/Doing/LogAdapter.html +1 -1
  69. data/docs/doc/Doing/Note.html +2 -2
  70. data/docs/doc/Doing/Pager.html +1 -1
  71. data/docs/doc/Doing/Plugins.html +1 -1
  72. data/docs/doc/Doing/Prompt.html +1 -1
  73. data/docs/doc/Doing/Section.html +1 -1
  74. data/docs/doc/Doing/TemplateString.html +2 -2
  75. data/docs/doc/Doing/Types.html +41 -1
  76. data/docs/doc/Doing/Util/Backup.html +1 -1
  77. data/docs/doc/Doing/Util.html +1 -1
  78. data/docs/doc/Doing/WWID.html +10 -10
  79. data/docs/doc/Doing.html +3 -3
  80. data/docs/doc/FalseClass.html +35 -1
  81. data/docs/doc/GLI/Commands/Help.html +1 -1
  82. data/docs/doc/GLI/Commands/MarkdownDocumentListener.html +1 -1
  83. data/docs/doc/GLI/Commands.html +1 -1
  84. data/docs/doc/GLI.html +1 -1
  85. data/docs/doc/Hash.html +1 -1
  86. data/docs/doc/Object.html +1 -1
  87. data/docs/doc/PhraseParser/Operator.html +1 -1
  88. data/docs/doc/PhraseParser/PhraseClause.html +1 -1
  89. data/docs/doc/PhraseParser/Query.html +1 -1
  90. data/docs/doc/PhraseParser/QueryParser.html +1 -1
  91. data/docs/doc/PhraseParser/QueryTransformer.html +1 -1
  92. data/docs/doc/PhraseParser/TermClause.html +1 -1
  93. data/docs/doc/PhraseParser.html +1 -1
  94. data/docs/doc/Status.html +1 -1
  95. data/docs/doc/String.html +287 -3155
  96. data/docs/doc/Symbol.html +40 -6
  97. data/docs/doc/Time.html +1 -1
  98. data/docs/doc/TrueClass.html +35 -1
  99. data/docs/doc/_index.html +5 -10
  100. data/docs/doc/class_list.html +1 -1
  101. data/docs/doc/file.README.html +2 -2
  102. data/docs/doc/index.html +2 -2
  103. data/docs/doc/method_list.html +278 -678
  104. data/docs/doc/top-level-namespace.html +2 -2
  105. data/doing.rdoc +277 -175
  106. data/lib/completion/_doing.zsh +33 -29
  107. data/lib/completion/doing.bash +30 -19
  108. data/lib/completion/doing.fish +84 -72
  109. data/lib/doing/array/array.rb +4 -0
  110. data/lib/doing/array/nested_hash.rb +17 -0
  111. data/lib/doing/{array.rb → array/tags.rb} +7 -25
  112. data/lib/doing/changelog/change.rb +26 -11
  113. data/lib/doing/changelog/changes.rb +13 -3
  114. data/lib/doing/{array_chronify.rb → chronify/array.rb} +0 -0
  115. data/lib/doing/chronify/chronify.rb +5 -0
  116. data/lib/doing/{numeric_chronify.rb → chronify/numeric.rb} +0 -0
  117. data/lib/doing/{string_chronify.rb → chronify/string.rb} +0 -0
  118. data/lib/doing/colors.rb +115 -54
  119. data/lib/doing/configuration.rb +4 -0
  120. data/lib/doing/good.rb +8 -0
  121. data/lib/doing/help_monkey_patch.rb +6 -5
  122. data/lib/doing/item.rb +5 -5
  123. data/lib/doing/items.rb +2 -2
  124. data/lib/doing/log_adapter.rb +35 -2
  125. data/lib/doing/normalize.rb +188 -0
  126. data/lib/doing/plugins/export/dayone_export.rb +1 -1
  127. data/lib/doing/plugins/export/html_export.rb +1 -1
  128. data/lib/doing/plugins/export/json_export.rb +1 -1
  129. data/lib/doing/plugins/export/markdown_export.rb +1 -1
  130. data/lib/doing/plugins/export/template_export.rb +3 -1
  131. data/lib/doing/prompt.rb +1 -3
  132. data/lib/doing/string/highlight.rb +95 -0
  133. data/lib/doing/string/query.rb +129 -0
  134. data/lib/doing/string/string.rb +12 -0
  135. data/lib/doing/string/tags.rb +164 -0
  136. data/lib/doing/string/transform.rb +168 -0
  137. data/lib/doing/string/truncate.rb +75 -0
  138. data/lib/doing/string/url.rb +82 -0
  139. data/lib/doing/template_string.rb +0 -22
  140. data/lib/doing/types.rb +8 -0
  141. data/lib/doing/util.rb +13 -9
  142. data/lib/doing/version.rb +1 -1
  143. data/lib/doing/wwid.rb +53 -35
  144. data/lib/doing.rb +4 -6
  145. data/lib/examples/plugins/wiki_export/wiki_export.rb +1 -1
  146. data/lib/helpers/threaded_tests.rb +15 -2
  147. data/scripts/deploy.rb +107 -0
  148. data/scripts/runtests.sh +4 -0
  149. metadata +19 -8
  150. data/lib/doing/string.rb +0 -765
  151. 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.26
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 /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,11 +454,21 @@ 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
 
467
+ ===== -m|--md|--markdown
468
+ Output raw Markdown
469
+
470
+
471
+
437
472
  ==== Command: <tt>colors </tt>
438
473
  List available color variables for configuration templates and views
439
474
 
@@ -455,8 +490,8 @@ Disable Doing commands
455
490
  ==== Command: <tt>completion </tt>
456
491
  Generate shell completion scripts
457
492
 
458
- Generates the necessary scripts to add command line completion to various shells, so typing 'doing' and hitting
459
- 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.
460
495
  ===== Options
461
496
  ===== -f|--file PATH
462
497
 
@@ -582,7 +617,7 @@ Set finish date to specific date/time (natural langauge parsed, e.g. --at=1:30pm
582
617
 
583
618
  ===== -b|--back|--started DATE_STRING
584
619
 
585
- 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]
586
621
 
587
622
  [Default Value] None
588
623
 
@@ -619,6 +654,11 @@ Set completion date to start date plus interval (XX[mhd] or HH:MM).
619
654
  [Default Value] None
620
655
 
621
656
 
657
+ ===== -X|--noauto
658
+ Exclude auto tags and default tags
659
+
660
+
661
+
622
662
  ===== -a|--archive
623
663
  Immediately archive the entry
624
664
 
@@ -635,7 +675,7 @@ Include date
635
675
 
636
676
 
637
677
  ===== -e|--editor
638
- Edit entry with /opt/homebrew/bin/vim (with no arguments, edits the last entry)
678
+ Edit entry with vim
639
679
 
640
680
 
641
681
 
@@ -670,9 +710,9 @@ Backdate completed date to date string [4pm|20m|2h|yesterday noon]
670
710
 
671
711
  ===== --bool BOOLEAN
672
712
 
673
- 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
674
714
 
675
- [Default Value] PATTERN
715
+ [Default Value] pattern
676
716
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
677
717
 
678
718
 
@@ -681,7 +721,7 @@ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to
681
721
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
682
722
 
683
723
  [Default Value] smart
684
- [Must Match] (?-mix:^[csi])
724
+ [Must Match] (?i-mx:^[cis].*?$)
685
725
 
686
726
 
687
727
  ===== -s|--section NAME
@@ -693,7 +733,8 @@ Section
693
733
 
694
734
  ===== --search QUERY
695
735
 
696
- 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")
697
738
 
698
739
  [Default Value] None
699
740
 
@@ -707,15 +748,15 @@ Set the completed date to the start date plus XX[hmd]
707
748
 
708
749
  ===== --tag TAG
709
750
 
710
- Finish the last X entries containing TAG.
711
- 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 (*, ?)
712
752
 
713
753
  [Default Value] None
714
754
 
715
755
 
716
756
  ===== --val QUERY
717
757
 
718
- 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
719
760
 
720
761
  [Default Value] None
721
762
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -749,7 +790,7 @@ Finish items that *don't* match search/tag filters
749
790
 
750
791
 
751
792
  ===== -r|--remove
752
- Remove done tag
793
+ Remove @done tag
753
794
 
754
795
 
755
796
 
@@ -758,6 +799,11 @@ Finish last entry (or entries) not already marked @done
758
799
 
759
800
 
760
801
 
802
+ ===== --update
803
+ Overwrite existing @done tag with new date
804
+
805
+
806
+
761
807
  ===== -x|--exact
762
808
  Force exact search string matching (case sensitive)
763
809
 
@@ -772,23 +818,25 @@ To search with regular expressions, single quote the string and surround with sl
772
818
  ===== Options
773
819
  ===== --after DATE_STRING
774
820
 
775
- 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
776
823
 
777
824
  [Default Value] None
778
825
 
779
826
 
780
827
  ===== --before DATE_STRING
781
828
 
782
- 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
783
831
 
784
832
  [Default Value] None
785
833
 
786
834
 
787
- ===== --bool arg
835
+ ===== --bool BOOLEAN
788
836
 
789
837
  Combine multiple tags or value queries using AND, OR, or NOT
790
838
 
791
- [Default Value] AND
839
+ [Default Value] pattern
792
840
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
793
841
 
794
842
 
@@ -797,7 +845,7 @@ Combine multiple tags or value queries using AND, OR, or NOT
797
845
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
798
846
 
799
847
  [Default Value] smart
800
- [Must Match] (?-mix:^[csi])
848
+ [Must Match] (?i-mx:^[cis].*?$)
801
849
 
802
850
 
803
851
  ===== --config_template TEMPLATE_KEY
@@ -809,12 +857,11 @@ Output using a template from configuration
809
857
 
810
858
  ===== --from DATE_OR_RANGE
811
859
 
812
- Date range to show, or a single day to filter date on.
813
- Date range argument should be quoted. Date specifications can be natural language.
814
- 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"`.
815
862
 
816
- If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
817
- 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.
818
865
 
819
866
  [Default Value] None
820
867
 
@@ -838,7 +885,7 @@ Section
838
885
  Sort tags by (name|time)
839
886
 
840
887
  [Default Value] name
841
- [Must Match] (?i-mx:^(?:name|time)$)
888
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
842
889
 
843
890
 
844
891
  ===== --template TEMPLATE_STRING
@@ -867,7 +914,7 @@ Show elapsed time on entries without @done tag
867
914
 
868
915
 
869
916
  ===== -e|--editor
870
- Edit matching entries with /opt/homebrew/bin/vim
917
+ Edit matching entries with vim
871
918
 
872
919
 
873
920
 
@@ -923,14 +970,16 @@ Imports entries from other sources. Available plugins: calendar, capturething, d
923
970
  ===== Options
924
971
  ===== --after DATE_STRING
925
972
 
926
- 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
927
975
 
928
976
  [Default Value] None
929
977
 
930
978
 
931
979
  ===== --before DATE_STRING
932
980
 
933
- 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
934
983
 
935
984
  [Default Value] None
936
985
 
@@ -940,14 +989,16 @@ Import entries older than date
940
989
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
941
990
 
942
991
  [Default Value] smart
943
- [Must Match] (?-mix:^[csi])
992
+ [Must Match] (?i-mx:^[cis].*?$)
944
993
 
945
994
 
946
- ===== -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"`.
947
999
 
948
- Date range to import. Date range argument should be quoted. Date specifications can be natural language.
949
- To specify a range, use "to" or "through": `--from "monday to friday"` or `--from 10/1 to 10/31`.
950
- 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.
951
1002
 
952
1003
  [Default Value] None
953
1004
 
@@ -968,7 +1019,8 @@ Target section
968
1019
 
969
1020
  ===== --search QUERY
970
1021
 
971
- 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")
972
1024
 
973
1025
  [Default Value] None
974
1026
 
@@ -1020,9 +1072,9 @@ allowing `doing last` to target historical entries.
1020
1072
  ===== Options
1021
1073
  ===== --bool BOOLEAN
1022
1074
 
1023
- 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
1024
1076
 
1025
- [Default Value] PATTERN
1077
+ [Default Value] pattern
1026
1078
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1027
1079
 
1028
1080
 
@@ -1031,7 +1083,7 @@ Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
1031
1083
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1032
1084
 
1033
1085
  [Default Value] smart
1034
- [Must Match] (?-mix:^[csi])
1086
+ [Must Match] (?i-mx:^[cis].*?$)
1035
1087
 
1036
1088
 
1037
1089
  ===== --config_template TEMPLATE_KEY
@@ -1050,14 +1102,15 @@ Specify a section
1050
1102
 
1051
1103
  ===== --search QUERY
1052
1104
 
1053
- 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")
1054
1107
 
1055
1108
  [Default Value] None
1056
1109
 
1057
1110
 
1058
1111
  ===== --tag TAG
1059
1112
 
1060
- Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?)
1113
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1061
1114
 
1062
1115
  [Default Value] None
1063
1116
 
@@ -1071,7 +1124,8 @@ Override output format with a template string containing %placeholders
1071
1124
 
1072
1125
  ===== --val QUERY
1073
1126
 
1074
- 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
1075
1129
 
1076
1130
  [Default Value] None
1077
1131
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1088,7 +1142,7 @@ Show elapsed time if entry is not tagged @done
1088
1142
 
1089
1143
 
1090
1144
  ===== -e|--editor
1091
- Edit entry with /opt/homebrew/bin/vim
1145
+ Edit entry with vim
1092
1146
 
1093
1147
 
1094
1148
 
@@ -1098,7 +1152,7 @@ Highlight search matches in output. Only affects command line output
1098
1152
 
1099
1153
 
1100
1154
  ===== --not
1101
- Show items that *don't* match search string or tag filter
1155
+ Show items that *don't* match search/tag filters
1102
1156
 
1103
1157
 
1104
1158
 
@@ -1132,7 +1186,7 @@ Prompt for note via multi-line input
1132
1186
 
1133
1187
 
1134
1188
  ===== -e|--editor
1135
- Edit entry with /opt/homebrew/bin/vim
1189
+ Edit entry with vim
1136
1190
 
1137
1191
 
1138
1192
 
@@ -1143,9 +1197,9 @@ Mark last entry as flagged
1143
1197
  ===== Options
1144
1198
  ===== --bool BOOLEAN
1145
1199
 
1146
- 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
1147
1201
 
1148
- [Default Value] PATTERN
1202
+ [Default Value] pattern
1149
1203
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1150
1204
 
1151
1205
 
@@ -1162,7 +1216,7 @@ How many recent entries to tag (0 for all)
1162
1216
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1163
1217
 
1164
1218
  [Default Value] smart
1165
- [Must Match] (?-mix:^[csi])
1219
+ [Must Match] (?i-mx:^[cis].*?$)
1166
1220
 
1167
1221
 
1168
1222
  ===== -s|--section SECTION_NAME
@@ -1174,22 +1228,23 @@ Section
1174
1228
 
1175
1229
  ===== --search QUERY
1176
1230
 
1177
- 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")
1178
1233
 
1179
1234
  [Default Value] None
1180
1235
 
1181
1236
 
1182
1237
  ===== --tag TAG
1183
1238
 
1184
- Flag the last entry containing TAG.
1185
- 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 (*, ?)
1186
1240
 
1187
1241
  [Default Value] None
1188
1242
 
1189
1243
 
1190
1244
  ===== --val QUERY
1191
1245
 
1192
- 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
1193
1248
 
1194
1249
  [Default Value] None
1195
1250
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1211,7 +1266,7 @@ Select item(s) to flag from a menu of matching entries
1211
1266
 
1212
1267
 
1213
1268
  ===== --not
1214
- Flag items that *don't* match search/tag/date filters
1269
+ Flag items that *don't* match search/tag filters
1215
1270
 
1216
1271
 
1217
1272
 
@@ -1247,7 +1302,7 @@ Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]
1247
1302
 
1248
1303
  ===== -n|--note TEXT
1249
1304
 
1250
- Note
1305
+ Include a note
1251
1306
 
1252
1307
  [Default Value] None
1253
1308
 
@@ -1259,6 +1314,11 @@ Section
1259
1314
  [Default Value] None
1260
1315
 
1261
1316
 
1317
+ ===== -X|--noauto
1318
+ Exclude auto tags and default tags
1319
+
1320
+
1321
+
1262
1322
  ===== -a|--archive
1263
1323
  Archive previous @meanwhile entry
1264
1324
 
@@ -1270,7 +1330,7 @@ Prompt for note via multi-line input
1270
1330
 
1271
1331
 
1272
1332
  ===== -e|--editor
1273
- Edit entry with /opt/homebrew/bin/vim
1333
+ Edit entry with vim
1274
1334
 
1275
1335
 
1276
1336
 
@@ -1285,9 +1345,9 @@ If -r is provided with no other arguments, the last note is removed.
1285
1345
  ===== Options
1286
1346
  ===== --bool BOOLEAN
1287
1347
 
1288
- 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
1289
1349
 
1290
- [Default Value] PATTERN
1350
+ [Default Value] pattern
1291
1351
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1292
1352
 
1293
1353
 
@@ -1296,7 +1356,7 @@ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to
1296
1356
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1297
1357
 
1298
1358
  [Default Value] smart
1299
- [Must Match] (?-mix:^[csi])
1359
+ [Must Match] (?i-mx:^[cis].*?$)
1300
1360
 
1301
1361
 
1302
1362
  ===== -s|--section NAME
@@ -1308,21 +1368,23 @@ Section
1308
1368
 
1309
1369
  ===== --search QUERY
1310
1370
 
1311
- 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")
1312
1373
 
1313
1374
  [Default Value] None
1314
1375
 
1315
1376
 
1316
1377
  ===== --tag TAG
1317
1378
 
1318
- Add/remove note from last entry matching tag. Wildcards allowed (*, ?)
1379
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1319
1380
 
1320
1381
  [Default Value] None
1321
1382
 
1322
1383
 
1323
1384
  ===== --val QUERY
1324
1385
 
1325
- 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
1326
1388
 
1327
1389
  [Default Value] None
1328
1390
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1334,7 +1396,7 @@ Prompt for note via multi-line input
1334
1396
 
1335
1397
 
1336
1398
  ===== -e|--editor
1337
- Edit entry with /opt/homebrew/bin/vim
1399
+ Edit entry with vim
1338
1400
 
1339
1401
 
1340
1402
 
@@ -1344,7 +1406,7 @@ Select item for new note from a menu of matching entries
1344
1406
 
1345
1407
 
1346
1408
  ===== --not
1347
- Add note to item that *doesn't* match search/tag filters
1409
+ Note items that *don't* match search/tag filters
1348
1410
 
1349
1411
 
1350
1412
 
@@ -1367,11 +1429,11 @@ A parenthetical at the end of the entry will be converted to a note.
1367
1429
 
1368
1430
  Run without arguments to create a new entry interactively.
1369
1431
 
1370
- Run with --editor to create a new entry using /opt/homebrew/bin/vim.
1432
+ Run with --editor to create a new entry using vim.
1371
1433
  ===== Options
1372
1434
  ===== -b|--back|--started DATE_STRING
1373
1435
 
1374
- Backdate start time [4pm|20m|2h|"yesterday noon"]
1436
+ Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]
1375
1437
 
1376
1438
  [Default Value] None
1377
1439
 
@@ -1398,13 +1460,18 @@ Section
1398
1460
  [Default Value] None
1399
1461
 
1400
1462
 
1463
+ ===== -X|--noauto
1464
+ Exclude auto tags and default tags
1465
+
1466
+
1467
+
1401
1468
  ===== --ask
1402
1469
  Prompt for note via multi-line input
1403
1470
 
1404
1471
 
1405
1472
 
1406
1473
  ===== -e|--editor
1407
- Edit entry with /opt/homebrew/bin/vim
1474
+ Edit entry with vim
1408
1475
 
1409
1476
 
1410
1477
 
@@ -1446,7 +1513,7 @@ Section
1446
1513
  Sort tags by (name|time)
1447
1514
 
1448
1515
  [Default Value] name
1449
- [Must Match] (?i-mx:^(?:name|time)$)
1516
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
1450
1517
 
1451
1518
 
1452
1519
  ===== --template TEMPLATE_STRING
@@ -1475,7 +1542,7 @@ Show time totals at the end of output
1475
1542
  Open the "doing" file in an editor
1476
1543
 
1477
1544
  `doing open` defaults to using the editors->doing_file setting
1478
- in /Users/ttscoff/.config/doing/config.yml (/opt/homebrew/bin/vim).
1545
+ in /Users/ttscoff/.config/doing/config.yml (TaskPaper).
1479
1546
  ===== Options
1480
1547
  ===== -a|--app APP_NAME
1481
1548
 
@@ -1544,7 +1611,7 @@ Section
1544
1611
  Sort tags by (name|time)
1545
1612
 
1546
1613
  [Default Value] name
1547
- [Must Match] (?i-mx:^(?:name|time)$)
1614
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
1548
1615
 
1549
1616
 
1550
1617
  ===== --template TEMPLATE_STRING
@@ -1574,6 +1641,23 @@ Show intervals with totals at the end of output
1574
1641
 
1575
1642
 
1576
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
+
1577
1661
  ==== Command: <tt>reset|begin [DATE_STRING]</tt>
1578
1662
  Reset the start time of an entry
1579
1663
 
@@ -1583,9 +1667,9 @@ If a date string is provided as an argument, the start time will be set to the p
1583
1667
  ===== Options
1584
1668
  ===== --bool BOOLEAN
1585
1669
 
1586
- 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
1587
1671
 
1588
- [Default Value] PATTERN
1672
+ [Default Value] pattern
1589
1673
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1590
1674
 
1591
1675
 
@@ -1594,7 +1678,7 @@ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to
1594
1678
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1595
1679
 
1596
1680
  [Default Value] smart
1597
- [Must Match] (?-mix:^[csi])
1681
+ [Must Match] (?i-mx:^[cis].*?$)
1598
1682
 
1599
1683
 
1600
1684
  ===== -s|--section NAME
@@ -1606,21 +1690,23 @@ Limit search to section
1606
1690
 
1607
1691
  ===== --search QUERY
1608
1692
 
1609
- 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")
1610
1695
 
1611
1696
  [Default Value] None
1612
1697
 
1613
1698
 
1614
1699
  ===== --tag TAG
1615
1700
 
1616
- Reset last entry matching tag. Wildcards allowed (*, ?)
1701
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1617
1702
 
1618
1703
  [Default Value] None
1619
1704
 
1620
1705
 
1621
1706
  ===== --val QUERY
1622
1707
 
1623
- 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
1624
1710
 
1625
1711
  [Default Value] None
1626
1712
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1668,9 +1754,9 @@ Rotate entries older than date
1668
1754
 
1669
1755
  ===== --bool BOOLEAN
1670
1756
 
1671
- 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
1672
1758
 
1673
- [Default Value] PATTERN
1759
+ [Default Value] pattern
1674
1760
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1675
1761
 
1676
1762
 
@@ -1679,7 +1765,7 @@ Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
1679
1765
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1680
1766
 
1681
1767
  [Default Value] smart
1682
- [Must Match] (?-mix:^[csi])
1768
+ [Must Match] (?i-mx:^[cis].*?$)
1683
1769
 
1684
1770
 
1685
1771
  ===== -k|--keep X
@@ -1699,28 +1785,30 @@ Section to rotate
1699
1785
 
1700
1786
  ===== --search QUERY
1701
1787
 
1702
- 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")
1703
1790
 
1704
1791
  [Default Value] None
1705
1792
 
1706
1793
 
1707
1794
  ===== --tag TAG
1708
1795
 
1709
- 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 (*, ?)
1710
1797
 
1711
1798
  [Default Value] None
1712
1799
 
1713
1800
 
1714
1801
  ===== --val QUERY
1715
1802
 
1716
- 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
1717
1805
 
1718
1806
  [Default Value] None
1719
1807
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
1720
1808
 
1721
1809
 
1722
1810
  ===== --not
1723
- Rotate items that *don't* match search string or tag filter
1811
+ Rotate items that *don't* match search/tag filters
1724
1812
 
1725
1813
 
1726
1814
 
@@ -1758,14 +1846,16 @@ sbtrkt fuzzy-match Items that match s*b*t*r*k*t
1758
1846
  ===== Options
1759
1847
  ===== --after DATE_STRING
1760
1848
 
1761
- 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
1762
1851
 
1763
1852
  [Default Value] None
1764
1853
 
1765
1854
 
1766
1855
  ===== --before DATE_STRING
1767
1856
 
1768
- 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
1769
1859
 
1770
1860
  [Default Value] None
1771
1861
 
@@ -1775,17 +1865,16 @@ Select from entries older than date. If this is only a time (8am, 1:30pm, 15:00)
1775
1865
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1776
1866
 
1777
1867
  [Default Value] smart
1778
- [Must Match] (?-mix:^[csi])
1868
+ [Must Match] (?i-mx:^[cis].*?$)
1779
1869
 
1780
1870
 
1781
1871
  ===== --from DATE_OR_RANGE
1782
1872
 
1783
- Date range to show, or a single day to filter date on.
1784
- Date range argument should be quoted. Date specifications can be natural language.
1785
- 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"`.
1786
1875
 
1787
- If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
1788
- 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.
1789
1878
 
1790
1879
  [Default Value] None
1791
1880
 
@@ -1806,7 +1895,8 @@ Output entries to format (csv|dayone|dayone-days|dayone-entries|doing|html|json|
1806
1895
 
1807
1896
  ===== -q|--query QUERY
1808
1897
 
1809
- 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"
1810
1900
 
1811
1901
  [Default Value] None
1812
1902
 
@@ -1827,7 +1917,8 @@ Save selected entries to file using --output format
1827
1917
 
1828
1918
  ===== --search QUERY
1829
1919
 
1830
- 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")
1831
1922
 
1832
1923
  [Default Value] None
1833
1924
 
@@ -1841,7 +1932,8 @@ Tag selected entries
1841
1932
 
1842
1933
  ===== --val QUERY
1843
1934
 
1844
- 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
1845
1937
 
1846
1938
  [Default Value] None
1847
1939
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1853,7 +1945,8 @@ Archive selected items
1853
1945
 
1854
1946
 
1855
1947
  ===== --again|--resume
1856
- 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.
1857
1950
 
1858
1951
 
1859
1952
 
@@ -1888,7 +1981,8 @@ Perform action without confirmation
1888
1981
 
1889
1982
 
1890
1983
  ===== --[no-]menu
1891
- 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
1892
1986
 
1893
1987
 
1894
1988
 
@@ -1926,24 +2020,26 @@ Age (oldest|newest)
1926
2020
 
1927
2021
  ===== --after DATE_STRING
1928
2022
 
1929
- 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
1930
2025
 
1931
2026
  [Default Value] None
1932
2027
 
1933
2028
 
1934
- ===== -b|--bool BOOLEAN
2029
+ ===== --before DATE_STRING
1935
2030
 
1936
- 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
1937
2033
 
1938
- [Default Value] PATTERN
1939
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2034
+ [Default Value] None
1940
2035
 
1941
2036
 
1942
- ===== --before DATE_STRING
2037
+ ===== --bool BOOLEAN
1943
2038
 
1944
- 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
1945
2040
 
1946
- [Default Value] None
2041
+ [Default Value] pattern
2042
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1947
2043
 
1948
2044
 
1949
2045
  ===== -c|--count MAX
@@ -1959,7 +2055,7 @@ Max count to show
1959
2055
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1960
2056
 
1961
2057
  [Default Value] smart
1962
- [Must Match] (?-mix:^[csi])
2058
+ [Must Match] (?i-mx:^[cis].*?$)
1963
2059
 
1964
2060
 
1965
2061
  ===== --config_template TEMPLATE_KEY
@@ -1971,12 +2067,11 @@ Output using a template from configuration
1971
2067
 
1972
2068
  ===== --from DATE_OR_RANGE
1973
2069
 
1974
- Date range to show, or a single day to filter date on.
1975
- Date range argument should be quoted. Date specifications can be natural language.
1976
- 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"`.
1977
2072
 
1978
- If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
1979
- 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.
1980
2075
 
1981
2076
  [Default Value] None
1982
2077
 
@@ -1998,14 +2093,15 @@ Sort order (asc/desc)
1998
2093
 
1999
2094
  ===== --search QUERY
2000
2095
 
2001
- 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")
2002
2098
 
2003
2099
  [Default Value] None
2004
2100
 
2005
2101
 
2006
2102
  ===== --tag TAG
2007
2103
 
2008
- 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 (*, ?)
2009
2105
 
2010
2106
  [Default Value] None
2011
2107
 
@@ -2023,7 +2119,7 @@ Tag sort direction (asc|desc)
2023
2119
  Sort tags by (name|time)
2024
2120
 
2025
2121
  [Default Value] name
2026
- [Must Match] (?i-mx:^(?:name|time))
2122
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2027
2123
 
2028
2124
 
2029
2125
  ===== --template TEMPLATE_STRING
@@ -2035,7 +2131,8 @@ Override output format with a template string containing %placeholders
2035
2131
 
2036
2132
  ===== --val QUERY
2037
2133
 
2038
- 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
2039
2136
 
2040
2137
  [Default Value] None
2041
2138
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -2062,7 +2159,7 @@ Select section or tag to display from a menu
2062
2159
 
2063
2160
 
2064
2161
  ===== --not
2065
- Show items that *don't* match search/tag/date filters
2162
+ Show items that *don't* match search/tag filters
2066
2163
 
2067
2164
 
2068
2165
 
@@ -2118,7 +2215,7 @@ Section
2118
2215
  Sort tags by (name|time)
2119
2216
 
2120
2217
  [Default Value] name
2121
- [Must Match] (?i-mx:^(?:name|time)$)
2218
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2122
2219
 
2123
2220
 
2124
2221
  ===== --template TEMPLATE_STRING
@@ -2162,9 +2259,9 @@ Add (or remove) tags from the last entry, or from multiple entries
2162
2259
  ===== Options
2163
2260
  ===== --bool BOOLEAN
2164
2261
 
2165
- 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
2166
2263
 
2167
- [Default Value] PATTERN
2264
+ [Default Value] pattern
2168
2265
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2169
2266
 
2170
2267
 
@@ -2181,7 +2278,7 @@ How many recent entries to tag (0 for all)
2181
2278
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
2182
2279
 
2183
2280
  [Default Value] smart
2184
- [Must Match] (?-mix:^[csi])
2281
+ [Must Match] (?i-mx:^[cis].*?$)
2185
2282
 
2186
2283
 
2187
2284
  ===== --rename ORIG_TAG
@@ -2200,15 +2297,15 @@ Section
2200
2297
 
2201
2298
  ===== --search QUERY
2202
2299
 
2203
- 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")
2204
2302
 
2205
2303
  [Default Value] None
2206
2304
 
2207
2305
 
2208
2306
  ===== --tag TAG
2209
2307
 
2210
- Tag the last X entries containing TAG.
2211
- 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 (*, ?)
2212
2309
 
2213
2310
  [Default Value] None
2214
2311
 
@@ -2222,7 +2319,8 @@ Include a value, e.g. @tag(value)
2222
2319
 
2223
2320
  ===== --val QUERY
2224
2321
 
2225
- 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
2226
2324
 
2227
2325
  [Default Value] None
2228
2326
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -2294,7 +2392,7 @@ List all tags in the current Doing file
2294
2392
 
2295
2393
  Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
2296
2394
 
2297
- [Default Value] PATTERN
2395
+ [Default Value] pattern
2298
2396
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2299
2397
 
2300
2398
 
@@ -2303,7 +2401,7 @@ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
2303
2401
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
2304
2402
 
2305
2403
  [Default Value] smart
2306
- [Must Match] (?-mix:^[csi])
2404
+ [Must Match] (?i-mx:^[cis].*?$)
2307
2405
 
2308
2406
 
2309
2407
  ===== -o|--order ORDER
@@ -2323,8 +2421,8 @@ Section
2323
2421
 
2324
2422
  ===== --search QUERY
2325
2423
 
2326
- Get tags for items matching search. Surround with
2327
- 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")
2328
2426
 
2329
2427
  [Default Value] None
2330
2428
 
@@ -2339,14 +2437,15 @@ Sort by name or count
2339
2437
 
2340
2438
  ===== --tag TAG
2341
2439
 
2342
- 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 (*, ?)
2343
2441
 
2344
2442
  [Default Value] None
2345
2443
 
2346
2444
 
2347
2445
  ===== --val QUERY
2348
2446
 
2349
- 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
2350
2449
 
2351
2450
  [Default Value] None
2352
2451
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -2368,7 +2467,7 @@ Output in a single line with @ symbols. Ignored if --counts is specified.
2368
2467
 
2369
2468
 
2370
2469
  ===== --not
2371
- Get tags from items that *don't* match search/tag filters
2470
+ Show items that *don't* match search/tag filters
2372
2471
 
2373
2472
 
2374
2473
 
@@ -2462,7 +2561,7 @@ Specify a section
2462
2561
  Sort tags by (name|time)
2463
2562
 
2464
2563
  [Default Value] name
2465
- [Must Match] (?i-mx:^(?:name|time)$)
2564
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2466
2565
 
2467
2566
 
2468
2567
  ===== --template TEMPLATE_STRING
@@ -2527,7 +2626,8 @@ Command line options override view configuration.
2527
2626
  ===== Options
2528
2627
  ===== --after DATE_STRING
2529
2628
 
2530
- 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
2531
2631
 
2532
2632
  [Default Value] None
2533
2633
 
@@ -2539,19 +2639,20 @@ Age (oldest|newest)
2539
2639
  [Default Value] newest
2540
2640
 
2541
2641
 
2542
- ===== -b|--bool BOOLEAN
2642
+ ===== --before DATE_STRING
2543
2643
 
2544
- 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
2545
2646
 
2546
- [Default Value] PATTERN
2547
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2647
+ [Default Value] None
2548
2648
 
2549
2649
 
2550
- ===== --before DATE_STRING
2650
+ ===== --bool BOOLEAN
2551
2651
 
2552
- 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
2553
2653
 
2554
- [Default Value] None
2654
+ [Default Value] pattern
2655
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2555
2656
 
2556
2657
 
2557
2658
  ===== -c|--count COUNT
@@ -2567,17 +2668,16 @@ Count to display
2567
2668
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
2568
2669
 
2569
2670
  [Default Value] smart
2570
- [Must Match] (?-mix:^[csi])
2671
+ [Must Match] (?i-mx:^[cis].*?$)
2571
2672
 
2572
2673
 
2573
2674
  ===== --from DATE_OR_RANGE
2574
2675
 
2575
- Date range to show, or a single day to filter date on.
2576
- Date range argument should be quoted. Date specifications can be natural language.
2577
- 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"`.
2578
2678
 
2579
- If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
2580
- 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.
2581
2681
 
2582
2682
  [Default Value] None
2583
2683
 
@@ -2598,14 +2698,15 @@ Section
2598
2698
 
2599
2699
  ===== --search QUERY
2600
2700
 
2601
- 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")
2602
2703
 
2603
2704
  [Default Value] None
2604
2705
 
2605
2706
 
2606
2707
  ===== --tag TAG
2607
2708
 
2608
- Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?)
2709
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
2609
2710
 
2610
2711
  [Default Value] None
2611
2712
 
@@ -2623,12 +2724,13 @@ Tag sort direction (asc|desc)
2623
2724
  Sort tags by (name|time)
2624
2725
 
2625
2726
  [Default Value] None
2626
- [Must Match] (?i-mx:^(?:name|time)$)
2727
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2627
2728
 
2628
2729
 
2629
2730
  ===== --val QUERY
2630
2731
 
2631
- 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
2632
2734
 
2633
2735
  [Default Value] None
2634
2736
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -2655,7 +2757,7 @@ Select from a menu of matching entries to perform additional operations
2655
2757
 
2656
2758
 
2657
2759
  ===== --not
2658
- Show items that *don't* match search string
2760
+ Show items that *don't* match search/tag filters
2659
2761
 
2660
2762
 
2661
2763
 
@@ -2813,7 +2915,7 @@ Tag sort direction (asc|desc)
2813
2915
  Sort tags by (name|time)
2814
2916
 
2815
2917
  [Default Value] name
2816
- [Must Match] (?i-mx:^(?:name|time)$)
2918
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2817
2919
 
2818
2920
 
2819
2921
  ===== --template TEMPLATE_STRING