doing 2.1.26 → 2.1.30

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 (156) 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 +52 -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 +2 -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 +53 -12
  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 +8 -8
  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/open.rb +3 -3
  34. data/bin/commands/recent.rb +3 -4
  35. data/bin/commands/redo.rb +6 -2
  36. data/bin/commands/reset.rb +19 -52
  37. data/bin/commands/rotate.rb +5 -36
  38. data/bin/commands/select.rb +23 -41
  39. data/bin/commands/show.rb +28 -74
  40. data/bin/commands/since.rb +3 -4
  41. data/bin/commands/tag.rb +4 -34
  42. data/bin/commands/tags.rb +5 -32
  43. data/bin/commands/today.rb +3 -4
  44. data/bin/commands/view.rb +36 -73
  45. data/bin/commands/yesterday.rb +4 -5
  46. data/bin/doing +150 -13
  47. data/docs/doc/Array.html +3 -502
  48. data/docs/doc/BooleanTermParser/Clause.html +1 -1
  49. data/docs/doc/BooleanTermParser/Operator.html +1 -1
  50. data/docs/doc/BooleanTermParser/Query.html +1 -1
  51. data/docs/doc/BooleanTermParser/QueryParser.html +1 -1
  52. data/docs/doc/BooleanTermParser/QueryTransformer.html +1 -1
  53. data/docs/doc/BooleanTermParser.html +1 -1
  54. data/docs/doc/Doing/Color.html +62 -56
  55. data/docs/doc/Doing/Completion.html +1 -1
  56. data/docs/doc/Doing/Configuration.html +35 -1
  57. data/docs/doc/Doing/Errors/DoingNoTraceError.html +1 -1
  58. data/docs/doc/Doing/Errors/DoingRuntimeError.html +1 -1
  59. data/docs/doc/Doing/Errors/DoingStandardError.html +1 -1
  60. data/docs/doc/Doing/Errors/EmptyInput.html +1 -1
  61. data/docs/doc/Doing/Errors/NoResults.html +1 -1
  62. data/docs/doc/Doing/Errors/PluginException.html +1 -1
  63. data/docs/doc/Doing/Errors/UserCancelled.html +1 -1
  64. data/docs/doc/Doing/Errors/WrongCommand.html +1 -1
  65. data/docs/doc/Doing/Errors.html +1 -1
  66. data/docs/doc/Doing/Hooks.html +1 -1
  67. data/docs/doc/Doing/Item.html +1 -1
  68. data/docs/doc/Doing/Items.html +2 -2
  69. data/docs/doc/Doing/LogAdapter.html +1 -1
  70. data/docs/doc/Doing/Note.html +2 -2
  71. data/docs/doc/Doing/Pager.html +1 -1
  72. data/docs/doc/Doing/Plugins.html +1 -1
  73. data/docs/doc/Doing/Prompt.html +1 -1
  74. data/docs/doc/Doing/Section.html +1 -1
  75. data/docs/doc/Doing/TemplateString.html +2 -2
  76. data/docs/doc/Doing/Types.html +41 -1
  77. data/docs/doc/Doing/Util/Backup.html +1 -1
  78. data/docs/doc/Doing/Util.html +1 -1
  79. data/docs/doc/Doing/WWID.html +10 -10
  80. data/docs/doc/Doing.html +3 -3
  81. data/docs/doc/FalseClass.html +35 -1
  82. data/docs/doc/GLI/Commands/Help.html +1 -1
  83. data/docs/doc/GLI/Commands/MarkdownDocumentListener.html +1 -1
  84. data/docs/doc/GLI/Commands.html +1 -1
  85. data/docs/doc/GLI.html +1 -1
  86. data/docs/doc/Hash.html +1 -1
  87. data/docs/doc/Object.html +1 -1
  88. data/docs/doc/PhraseParser/Operator.html +1 -1
  89. data/docs/doc/PhraseParser/PhraseClause.html +1 -1
  90. data/docs/doc/PhraseParser/Query.html +1 -1
  91. data/docs/doc/PhraseParser/QueryParser.html +1 -1
  92. data/docs/doc/PhraseParser/QueryTransformer.html +1 -1
  93. data/docs/doc/PhraseParser/TermClause.html +1 -1
  94. data/docs/doc/PhraseParser.html +1 -1
  95. data/docs/doc/Status.html +1 -1
  96. data/docs/doc/String.html +287 -3155
  97. data/docs/doc/Symbol.html +40 -6
  98. data/docs/doc/Time.html +1 -1
  99. data/docs/doc/TrueClass.html +35 -1
  100. data/docs/doc/_index.html +5 -10
  101. data/docs/doc/class_list.html +1 -1
  102. data/docs/doc/file.README.html +2 -2
  103. data/docs/doc/index.html +2 -2
  104. data/docs/doc/method_list.html +278 -678
  105. data/docs/doc/top-level-namespace.html +2 -2
  106. data/doing.gemspec +1 -0
  107. data/doing.rdoc +297 -206
  108. data/lib/completion/_doing.zsh +32 -32
  109. data/lib/completion/doing.bash +30 -30
  110. data/lib/completion/doing.fish +87 -77
  111. data/lib/doing/array/array.rb +4 -0
  112. data/lib/doing/array/nested_hash.rb +17 -0
  113. data/lib/doing/{array.rb → array/tags.rb} +7 -25
  114. data/lib/doing/changelog/change.rb +26 -11
  115. data/lib/doing/changelog/changes.rb +37 -8
  116. data/lib/doing/changelog/version.rb +11 -3
  117. data/lib/doing/{array_chronify.rb → chronify/array.rb} +0 -0
  118. data/lib/doing/chronify/chronify.rb +5 -0
  119. data/lib/doing/{numeric_chronify.rb → chronify/numeric.rb} +0 -0
  120. data/lib/doing/{string_chronify.rb → chronify/string.rb} +0 -0
  121. data/lib/doing/colors.rb +115 -54
  122. data/lib/doing/completion/zsh_completion.rb +5 -0
  123. data/lib/doing/configuration.rb +9 -5
  124. data/lib/doing/good.rb +8 -0
  125. data/lib/doing/help_monkey_patch.rb +6 -5
  126. data/lib/doing/item.rb +5 -5
  127. data/lib/doing/items.rb +2 -2
  128. data/lib/doing/log_adapter.rb +35 -2
  129. data/lib/doing/normalize.rb +188 -0
  130. data/lib/doing/plugins/export/dayone_export.rb +1 -1
  131. data/lib/doing/plugins/export/html_export.rb +1 -1
  132. data/lib/doing/plugins/export/json_export.rb +1 -1
  133. data/lib/doing/plugins/export/markdown_export.rb +1 -1
  134. data/lib/doing/plugins/export/template_export.rb +3 -1
  135. data/lib/doing/prompt.rb +1 -3
  136. data/lib/doing/section.rb +1 -1
  137. data/lib/doing/string/highlight.rb +95 -0
  138. data/lib/doing/string/query.rb +129 -0
  139. data/lib/doing/string/string.rb +12 -0
  140. data/lib/doing/string/tags.rb +164 -0
  141. data/lib/doing/string/transform.rb +168 -0
  142. data/lib/doing/string/truncate.rb +75 -0
  143. data/lib/doing/string/url.rb +82 -0
  144. data/lib/doing/template_string.rb +0 -22
  145. data/lib/doing/types.rb +8 -0
  146. data/lib/doing/util.rb +13 -9
  147. data/lib/doing/version.rb +1 -1
  148. data/lib/doing/wwid.rb +54 -36
  149. data/lib/doing.rb +5 -6
  150. data/lib/examples/plugins/wiki_export/wiki_export.rb +1 -1
  151. data/lib/helpers/threaded_tests.rb +15 -2
  152. data/scripts/deploy.rb +107 -0
  153. data/scripts/runtests.sh +4 -0
  154. metadata +39 -8
  155. data/lib/doing/string.rb +0 -765
  156. 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.30
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
 
@@ -415,10 +440,10 @@ Display a formatted list of changes in recent versions.
415
440
 
416
441
  Look up a specific version. Specify versions as "MAJ.MIN.PATCH", MIN
417
442
  and PATCH are optional. Use > or < to see all changes since or prior
418
- to a version.
443
+ to a version. Wildcards (*?) accepted unless using < or >.
419
444
 
420
445
  [Default Value] None
421
- [Must Match] (?-mix:^(?:(?:(?:[<>=]|p(?:rior)|b(?:efore)|o(?:lder)|s(?:ince)|a(?:fter)|n(?:ewer))? *[\d.*?]+ *)+|(?:[\d.]+ *-+ *[\d.]+))$)
446
+ [Must Match] (?-mix:^(?:(?:(?:[<>=]+|p(?:rior)|b(?:efore)|o(?:lder)|s(?:ince)|a(?:fter)|n(?:ewer))? *[0-9.*?]+ *)+|(?:[\d.]+ *(?:-|to)+ *[0-9.]+))$)
422
447
 
423
448
 
424
449
  ===== -s|--search arg
@@ -429,11 +454,39 @@ 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
 
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
+
488
+
489
+
437
490
  ==== Command: <tt>colors </tt>
438
491
  List available color variables for configuration templates and views
439
492
 
@@ -455,8 +508,8 @@ Disable Doing commands
455
508
  ==== Command: <tt>completion </tt>
456
509
  Generate shell completion scripts
457
510
 
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.
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.
460
513
  ===== Options
461
514
  ===== -f|--file PATH
462
515
 
@@ -582,7 +635,7 @@ Set finish date to specific date/time (natural langauge parsed, e.g. --at=1:30pm
582
635
 
583
636
  ===== -b|--back|--started DATE_STRING
584
637
 
585
- 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]
586
639
 
587
640
  [Default Value] None
588
641
 
@@ -619,6 +672,11 @@ Set completion date to start date plus interval (XX[mhd] or HH:MM).
619
672
  [Default Value] None
620
673
 
621
674
 
675
+ ===== -X|--noauto
676
+ Exclude auto tags and default tags
677
+
678
+
679
+
622
680
  ===== -a|--archive
623
681
  Immediately archive the entry
624
682
 
@@ -635,7 +693,7 @@ Include date
635
693
 
636
694
 
637
695
  ===== -e|--editor
638
- Edit entry with /opt/homebrew/bin/vim (with no arguments, edits the last entry)
696
+ Edit entry with vim
639
697
 
640
698
 
641
699
 
@@ -670,9 +728,9 @@ Backdate completed date to date string [4pm|20m|2h|yesterday noon]
670
728
 
671
729
  ===== --bool BOOLEAN
672
730
 
673
- 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
674
732
 
675
- [Default Value] PATTERN
733
+ [Default Value] pattern
676
734
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
677
735
 
678
736
 
@@ -681,7 +739,7 @@ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to
681
739
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
682
740
 
683
741
  [Default Value] smart
684
- [Must Match] (?-mix:^[csi])
742
+ [Must Match] (?i-mx:^[cis].*?$)
685
743
 
686
744
 
687
745
  ===== -s|--section NAME
@@ -693,7 +751,8 @@ Section
693
751
 
694
752
  ===== --search QUERY
695
753
 
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")
754
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
755
+ start with single quote for exact match ("'query")
697
756
 
698
757
  [Default Value] None
699
758
 
@@ -707,15 +766,15 @@ Set the completed date to the start date plus XX[hmd]
707
766
 
708
767
  ===== --tag TAG
709
768
 
710
- Finish the last X entries containing TAG.
711
- 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 (*, ?)
712
770
 
713
771
  [Default Value] None
714
772
 
715
773
 
716
774
  ===== --val QUERY
717
775
 
718
- 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
719
778
 
720
779
  [Default Value] None
721
780
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -749,7 +808,7 @@ Finish items that *don't* match search/tag filters
749
808
 
750
809
 
751
810
  ===== -r|--remove
752
- Remove done tag
811
+ Remove @done tag
753
812
 
754
813
 
755
814
 
@@ -758,6 +817,11 @@ Finish last entry (or entries) not already marked @done
758
817
 
759
818
 
760
819
 
820
+ ===== --update
821
+ Overwrite existing @done tag with new date
822
+
823
+
824
+
761
825
  ===== -x|--exact
762
826
  Force exact search string matching (case sensitive)
763
827
 
@@ -772,23 +836,25 @@ To search with regular expressions, single quote the string and surround with sl
772
836
  ===== Options
773
837
  ===== --after DATE_STRING
774
838
 
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
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
776
841
 
777
842
  [Default Value] None
778
843
 
779
844
 
780
845
  ===== --before DATE_STRING
781
846
 
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
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
783
849
 
784
850
  [Default Value] None
785
851
 
786
852
 
787
- ===== --bool arg
853
+ ===== --bool BOOLEAN
788
854
 
789
855
  Combine multiple tags or value queries using AND, OR, or NOT
790
856
 
791
- [Default Value] AND
857
+ [Default Value] pattern
792
858
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
793
859
 
794
860
 
@@ -797,7 +863,7 @@ Combine multiple tags or value queries using AND, OR, or NOT
797
863
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
798
864
 
799
865
  [Default Value] smart
800
- [Must Match] (?-mix:^[csi])
866
+ [Must Match] (?i-mx:^[cis].*?$)
801
867
 
802
868
 
803
869
  ===== --config_template TEMPLATE_KEY
@@ -809,12 +875,11 @@ Output using a template from configuration
809
875
 
810
876
  ===== --from DATE_OR_RANGE
811
877
 
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"`.
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"`.
815
880
 
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.
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.
818
883
 
819
884
  [Default Value] None
820
885
 
@@ -838,7 +903,7 @@ Section
838
903
  Sort tags by (name|time)
839
904
 
840
905
  [Default Value] name
841
- [Must Match] (?i-mx:^(?:name|time)$)
906
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
842
907
 
843
908
 
844
909
  ===== --template TEMPLATE_STRING
@@ -867,7 +932,7 @@ Show elapsed time on entries without @done tag
867
932
 
868
933
 
869
934
  ===== -e|--editor
870
- Edit matching entries with /opt/homebrew/bin/vim
935
+ Edit matching entries with vim
871
936
 
872
937
 
873
938
 
@@ -923,14 +988,16 @@ Imports entries from other sources. Available plugins: calendar, capturething, d
923
988
  ===== Options
924
989
  ===== --after DATE_STRING
925
990
 
926
- 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
927
993
 
928
994
  [Default Value] None
929
995
 
930
996
 
931
997
  ===== --before DATE_STRING
932
998
 
933
- 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
934
1001
 
935
1002
  [Default Value] None
936
1003
 
@@ -940,14 +1007,16 @@ Import entries older than date
940
1007
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
941
1008
 
942
1009
  [Default Value] smart
943
- [Must Match] (?-mix:^[csi])
1010
+ [Must Match] (?i-mx:^[cis].*?$)
944
1011
 
945
1012
 
946
- ===== -f|--from DATE_OR_RANGE
1013
+ ===== --from DATE_OR_RANGE
947
1014
 
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.
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.
951
1020
 
952
1021
  [Default Value] None
953
1022
 
@@ -968,7 +1037,8 @@ Target section
968
1037
 
969
1038
  ===== --search QUERY
970
1039
 
971
- 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")
972
1042
 
973
1043
  [Default Value] None
974
1044
 
@@ -1020,9 +1090,9 @@ allowing `doing last` to target historical entries.
1020
1090
  ===== Options
1021
1091
  ===== --bool BOOLEAN
1022
1092
 
1023
- 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
1024
1094
 
1025
- [Default Value] PATTERN
1095
+ [Default Value] pattern
1026
1096
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1027
1097
 
1028
1098
 
@@ -1031,7 +1101,7 @@ Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
1031
1101
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1032
1102
 
1033
1103
  [Default Value] smart
1034
- [Must Match] (?-mix:^[csi])
1104
+ [Must Match] (?i-mx:^[cis].*?$)
1035
1105
 
1036
1106
 
1037
1107
  ===== --config_template TEMPLATE_KEY
@@ -1050,14 +1120,15 @@ Specify a section
1050
1120
 
1051
1121
  ===== --search QUERY
1052
1122
 
1053
- 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")
1054
1125
 
1055
1126
  [Default Value] None
1056
1127
 
1057
1128
 
1058
1129
  ===== --tag TAG
1059
1130
 
1060
- Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?)
1131
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1061
1132
 
1062
1133
  [Default Value] None
1063
1134
 
@@ -1071,7 +1142,8 @@ Override output format with a template string containing %placeholders
1071
1142
 
1072
1143
  ===== --val QUERY
1073
1144
 
1074
- 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
1075
1147
 
1076
1148
  [Default Value] None
1077
1149
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1088,7 +1160,7 @@ Show elapsed time if entry is not tagged @done
1088
1160
 
1089
1161
 
1090
1162
  ===== -e|--editor
1091
- Edit entry with /opt/homebrew/bin/vim
1163
+ Edit entry with vim
1092
1164
 
1093
1165
 
1094
1166
 
@@ -1098,7 +1170,7 @@ Highlight search matches in output. Only affects command line output
1098
1170
 
1099
1171
 
1100
1172
  ===== --not
1101
- Show items that *don't* match search string or tag filter
1173
+ Show items that *don't* match search/tag filters
1102
1174
 
1103
1175
 
1104
1176
 
@@ -1107,35 +1179,6 @@ Force exact search string matching (case sensitive)
1107
1179
 
1108
1180
 
1109
1181
 
1110
- ==== Command: <tt>later ENTRY</tt>
1111
- Add an item to the Later section
1112
-
1113
-
1114
- ===== Options
1115
- ===== -b|--back|--started DATE_STRING
1116
-
1117
- Backdate start time to date string [4pm|20m|2h|yesterday noon]
1118
-
1119
- [Default Value] None
1120
-
1121
-
1122
- ===== -n|--note TEXT
1123
-
1124
- Note
1125
-
1126
- [Default Value] None
1127
-
1128
-
1129
- ===== --ask
1130
- Prompt for note via multi-line input
1131
-
1132
-
1133
-
1134
- ===== -e|--editor
1135
- Edit entry with /opt/homebrew/bin/vim
1136
-
1137
-
1138
-
1139
1182
  ==== Command: <tt>mark|flag </tt>
1140
1183
  Mark last entry as flagged
1141
1184
 
@@ -1143,9 +1186,9 @@ Mark last entry as flagged
1143
1186
  ===== Options
1144
1187
  ===== --bool BOOLEAN
1145
1188
 
1146
- 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
1147
1190
 
1148
- [Default Value] PATTERN
1191
+ [Default Value] pattern
1149
1192
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1150
1193
 
1151
1194
 
@@ -1162,7 +1205,7 @@ How many recent entries to tag (0 for all)
1162
1205
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1163
1206
 
1164
1207
  [Default Value] smart
1165
- [Must Match] (?-mix:^[csi])
1208
+ [Must Match] (?i-mx:^[cis].*?$)
1166
1209
 
1167
1210
 
1168
1211
  ===== -s|--section SECTION_NAME
@@ -1174,22 +1217,23 @@ Section
1174
1217
 
1175
1218
  ===== --search QUERY
1176
1219
 
1177
- 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")
1178
1222
 
1179
1223
  [Default Value] None
1180
1224
 
1181
1225
 
1182
1226
  ===== --tag TAG
1183
1227
 
1184
- Flag the last entry containing TAG.
1185
- 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 (*, ?)
1186
1229
 
1187
1230
  [Default Value] None
1188
1231
 
1189
1232
 
1190
1233
  ===== --val QUERY
1191
1234
 
1192
- 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
1193
1237
 
1194
1238
  [Default Value] None
1195
1239
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1211,7 +1255,7 @@ Select item(s) to flag from a menu of matching entries
1211
1255
 
1212
1256
 
1213
1257
  ===== --not
1214
- Flag items that *don't* match search/tag/date filters
1258
+ Flag items that *don't* match search/tag filters
1215
1259
 
1216
1260
 
1217
1261
 
@@ -1247,7 +1291,7 @@ Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]
1247
1291
 
1248
1292
  ===== -n|--note TEXT
1249
1293
 
1250
- Note
1294
+ Include a note
1251
1295
 
1252
1296
  [Default Value] None
1253
1297
 
@@ -1259,6 +1303,11 @@ Section
1259
1303
  [Default Value] None
1260
1304
 
1261
1305
 
1306
+ ===== -X|--noauto
1307
+ Exclude auto tags and default tags
1308
+
1309
+
1310
+
1262
1311
  ===== -a|--archive
1263
1312
  Archive previous @meanwhile entry
1264
1313
 
@@ -1270,7 +1319,7 @@ Prompt for note via multi-line input
1270
1319
 
1271
1320
 
1272
1321
  ===== -e|--editor
1273
- Edit entry with /opt/homebrew/bin/vim
1322
+ Edit entry with vim
1274
1323
 
1275
1324
 
1276
1325
 
@@ -1285,9 +1334,9 @@ If -r is provided with no other arguments, the last note is removed.
1285
1334
  ===== Options
1286
1335
  ===== --bool BOOLEAN
1287
1336
 
1288
- 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
1289
1338
 
1290
- [Default Value] PATTERN
1339
+ [Default Value] pattern
1291
1340
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1292
1341
 
1293
1342
 
@@ -1296,7 +1345,7 @@ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to
1296
1345
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1297
1346
 
1298
1347
  [Default Value] smart
1299
- [Must Match] (?-mix:^[csi])
1348
+ [Must Match] (?i-mx:^[cis].*?$)
1300
1349
 
1301
1350
 
1302
1351
  ===== -s|--section NAME
@@ -1308,21 +1357,23 @@ Section
1308
1357
 
1309
1358
  ===== --search QUERY
1310
1359
 
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")
1360
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
1361
+ start with single quote for exact match ("'query")
1312
1362
 
1313
1363
  [Default Value] None
1314
1364
 
1315
1365
 
1316
1366
  ===== --tag TAG
1317
1367
 
1318
- Add/remove note from last entry matching tag. Wildcards allowed (*, ?)
1368
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1319
1369
 
1320
1370
  [Default Value] None
1321
1371
 
1322
1372
 
1323
1373
  ===== --val QUERY
1324
1374
 
1325
- 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
1326
1377
 
1327
1378
  [Default Value] None
1328
1379
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1334,7 +1385,7 @@ Prompt for note via multi-line input
1334
1385
 
1335
1386
 
1336
1387
  ===== -e|--editor
1337
- Edit entry with /opt/homebrew/bin/vim
1388
+ Edit entry with vim
1338
1389
 
1339
1390
 
1340
1391
 
@@ -1344,7 +1395,7 @@ Select item for new note from a menu of matching entries
1344
1395
 
1345
1396
 
1346
1397
  ===== --not
1347
- Add note to item that *doesn't* match search/tag filters
1398
+ Note items that *don't* match search/tag filters
1348
1399
 
1349
1400
 
1350
1401
 
@@ -1367,11 +1418,11 @@ A parenthetical at the end of the entry will be converted to a note.
1367
1418
 
1368
1419
  Run without arguments to create a new entry interactively.
1369
1420
 
1370
- Run with --editor to create a new entry using /opt/homebrew/bin/vim.
1421
+ Run with --editor to create a new entry using vim.
1371
1422
  ===== Options
1372
1423
  ===== -b|--back|--started DATE_STRING
1373
1424
 
1374
- Backdate start time [4pm|20m|2h|"yesterday noon"]
1425
+ Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]
1375
1426
 
1376
1427
  [Default Value] None
1377
1428
 
@@ -1398,13 +1449,18 @@ Section
1398
1449
  [Default Value] None
1399
1450
 
1400
1451
 
1452
+ ===== -X|--noauto
1453
+ Exclude auto tags and default tags
1454
+
1455
+
1456
+
1401
1457
  ===== --ask
1402
1458
  Prompt for note via multi-line input
1403
1459
 
1404
1460
 
1405
1461
 
1406
1462
  ===== -e|--editor
1407
- Edit entry with /opt/homebrew/bin/vim
1463
+ Edit entry with vim
1408
1464
 
1409
1465
 
1410
1466
 
@@ -1446,7 +1502,7 @@ Section
1446
1502
  Sort tags by (name|time)
1447
1503
 
1448
1504
  [Default Value] name
1449
- [Must Match] (?i-mx:^(?:name|time)$)
1505
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
1450
1506
 
1451
1507
 
1452
1508
  ===== --template TEMPLATE_STRING
@@ -1474,8 +1530,8 @@ Show time totals at the end of output
1474
1530
  ==== Command: <tt>open </tt>
1475
1531
  Open the "doing" file in an editor
1476
1532
 
1477
- `doing open` defaults to using the editors->doing_file setting
1478
- in /Users/ttscoff/.config/doing/config.yml (/opt/homebrew/bin/vim).
1533
+ `doing open` defaults to using the editors.doing_file setting
1534
+ in /Users/ttscoff/.config/doing/config.yml (TaskPaper).
1479
1535
  ===== Options
1480
1536
  ===== -a|--app APP_NAME
1481
1537
 
@@ -1544,7 +1600,7 @@ Section
1544
1600
  Sort tags by (name|time)
1545
1601
 
1546
1602
  [Default Value] name
1547
- [Must Match] (?i-mx:^(?:name|time)$)
1603
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
1548
1604
 
1549
1605
 
1550
1606
  ===== --template TEMPLATE_STRING
@@ -1574,6 +1630,23 @@ Show intervals with totals at the end of output
1574
1630
 
1575
1631
 
1576
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
+
1577
1650
  ==== Command: <tt>reset|begin [DATE_STRING]</tt>
1578
1651
  Reset the start time of an entry
1579
1652
 
@@ -1583,9 +1656,9 @@ If a date string is provided as an argument, the start time will be set to the p
1583
1656
  ===== Options
1584
1657
  ===== --bool BOOLEAN
1585
1658
 
1586
- 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
1587
1660
 
1588
- [Default Value] PATTERN
1661
+ [Default Value] pattern
1589
1662
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1590
1663
 
1591
1664
 
@@ -1594,7 +1667,7 @@ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to
1594
1667
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1595
1668
 
1596
1669
  [Default Value] smart
1597
- [Must Match] (?-mix:^[csi])
1670
+ [Must Match] (?i-mx:^[cis].*?$)
1598
1671
 
1599
1672
 
1600
1673
  ===== -s|--section NAME
@@ -1606,21 +1679,23 @@ Limit search to section
1606
1679
 
1607
1680
  ===== --search QUERY
1608
1681
 
1609
- 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")
1610
1684
 
1611
1685
  [Default Value] None
1612
1686
 
1613
1687
 
1614
1688
  ===== --tag TAG
1615
1689
 
1616
- Reset last entry matching tag. Wildcards allowed (*, ?)
1690
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
1617
1691
 
1618
1692
  [Default Value] None
1619
1693
 
1620
1694
 
1621
1695
  ===== --val QUERY
1622
1696
 
1623
- 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
1624
1699
 
1625
1700
  [Default Value] None
1626
1701
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1668,9 +1743,9 @@ Rotate entries older than date
1668
1743
 
1669
1744
  ===== --bool BOOLEAN
1670
1745
 
1671
- 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
1672
1747
 
1673
- [Default Value] PATTERN
1748
+ [Default Value] pattern
1674
1749
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1675
1750
 
1676
1751
 
@@ -1679,7 +1754,7 @@ Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans
1679
1754
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1680
1755
 
1681
1756
  [Default Value] smart
1682
- [Must Match] (?-mix:^[csi])
1757
+ [Must Match] (?i-mx:^[cis].*?$)
1683
1758
 
1684
1759
 
1685
1760
  ===== -k|--keep X
@@ -1699,28 +1774,30 @@ Section to rotate
1699
1774
 
1700
1775
  ===== --search QUERY
1701
1776
 
1702
- 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")
1703
1779
 
1704
1780
  [Default Value] None
1705
1781
 
1706
1782
 
1707
1783
  ===== --tag TAG
1708
1784
 
1709
- 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 (*, ?)
1710
1786
 
1711
1787
  [Default Value] None
1712
1788
 
1713
1789
 
1714
1790
  ===== --val QUERY
1715
1791
 
1716
- 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
1717
1794
 
1718
1795
  [Default Value] None
1719
1796
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
1720
1797
 
1721
1798
 
1722
1799
  ===== --not
1723
- Rotate items that *don't* match search string or tag filter
1800
+ Rotate items that *don't* match search/tag filters
1724
1801
 
1725
1802
 
1726
1803
 
@@ -1758,14 +1835,16 @@ sbtrkt fuzzy-match Items that match s*b*t*r*k*t
1758
1835
  ===== Options
1759
1836
  ===== --after DATE_STRING
1760
1837
 
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
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
1762
1840
 
1763
1841
  [Default Value] None
1764
1842
 
1765
1843
 
1766
1844
  ===== --before DATE_STRING
1767
1845
 
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
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
1769
1848
 
1770
1849
  [Default Value] None
1771
1850
 
@@ -1775,17 +1854,16 @@ Select from entries older than date. If this is only a time (8am, 1:30pm, 15:00)
1775
1854
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1776
1855
 
1777
1856
  [Default Value] smart
1778
- [Must Match] (?-mix:^[csi])
1857
+ [Must Match] (?i-mx:^[cis].*?$)
1779
1858
 
1780
1859
 
1781
1860
  ===== --from DATE_OR_RANGE
1782
1861
 
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"`.
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"`.
1786
1864
 
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.
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.
1789
1867
 
1790
1868
  [Default Value] None
1791
1869
 
@@ -1806,7 +1884,8 @@ Output entries to format (csv|dayone|dayone-days|dayone-entries|doing|html|json|
1806
1884
 
1807
1885
  ===== -q|--query QUERY
1808
1886
 
1809
- 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"
1810
1889
 
1811
1890
  [Default Value] None
1812
1891
 
@@ -1827,7 +1906,8 @@ Save selected entries to file using --output format
1827
1906
 
1828
1907
  ===== --search QUERY
1829
1908
 
1830
- 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")
1831
1911
 
1832
1912
  [Default Value] None
1833
1913
 
@@ -1841,7 +1921,8 @@ Tag selected entries
1841
1921
 
1842
1922
  ===== --val QUERY
1843
1923
 
1844
- 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
1845
1926
 
1846
1927
  [Default Value] None
1847
1928
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -1853,7 +1934,8 @@ Archive selected items
1853
1934
 
1854
1935
 
1855
1936
  ===== --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.
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.
1857
1939
 
1858
1940
 
1859
1941
 
@@ -1888,7 +1970,8 @@ Perform action without confirmation
1888
1970
 
1889
1971
 
1890
1972
  ===== --[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
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
1892
1975
 
1893
1976
 
1894
1977
 
@@ -1926,24 +2009,26 @@ Age (oldest|newest)
1926
2009
 
1927
2010
  ===== --after DATE_STRING
1928
2011
 
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
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
1930
2014
 
1931
2015
  [Default Value] None
1932
2016
 
1933
2017
 
1934
- ===== -b|--bool BOOLEAN
2018
+ ===== --before DATE_STRING
1935
2019
 
1936
- 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
1937
2022
 
1938
- [Default Value] PATTERN
1939
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2023
+ [Default Value] None
1940
2024
 
1941
2025
 
1942
- ===== --before DATE_STRING
2026
+ ===== --bool BOOLEAN
1943
2027
 
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
2028
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
1945
2029
 
1946
- [Default Value] None
2030
+ [Default Value] pattern
2031
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1947
2032
 
1948
2033
 
1949
2034
  ===== -c|--count MAX
@@ -1959,7 +2044,7 @@ Max count to show
1959
2044
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
1960
2045
 
1961
2046
  [Default Value] smart
1962
- [Must Match] (?-mix:^[csi])
2047
+ [Must Match] (?i-mx:^[cis].*?$)
1963
2048
 
1964
2049
 
1965
2050
  ===== --config_template TEMPLATE_KEY
@@ -1971,12 +2056,11 @@ Output using a template from configuration
1971
2056
 
1972
2057
  ===== --from DATE_OR_RANGE
1973
2058
 
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"`.
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"`.
1977
2061
 
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.
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.
1980
2064
 
1981
2065
  [Default Value] None
1982
2066
 
@@ -1998,14 +2082,15 @@ Sort order (asc/desc)
1998
2082
 
1999
2083
  ===== --search QUERY
2000
2084
 
2001
- 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")
2002
2087
 
2003
2088
  [Default Value] None
2004
2089
 
2005
2090
 
2006
2091
  ===== --tag TAG
2007
2092
 
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
2093
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
2009
2094
 
2010
2095
  [Default Value] None
2011
2096
 
@@ -2023,7 +2108,7 @@ Tag sort direction (asc|desc)
2023
2108
  Sort tags by (name|time)
2024
2109
 
2025
2110
  [Default Value] name
2026
- [Must Match] (?i-mx:^(?:name|time))
2111
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2027
2112
 
2028
2113
 
2029
2114
  ===== --template TEMPLATE_STRING
@@ -2035,7 +2120,8 @@ Override output format with a template string containing %placeholders
2035
2120
 
2036
2121
  ===== --val QUERY
2037
2122
 
2038
- 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
2039
2125
 
2040
2126
  [Default Value] None
2041
2127
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -2062,7 +2148,7 @@ Select section or tag to display from a menu
2062
2148
 
2063
2149
 
2064
2150
  ===== --not
2065
- Show items that *don't* match search/tag/date filters
2151
+ Show items that *don't* match search/tag filters
2066
2152
 
2067
2153
 
2068
2154
 
@@ -2118,7 +2204,7 @@ Section
2118
2204
  Sort tags by (name|time)
2119
2205
 
2120
2206
  [Default Value] name
2121
- [Must Match] (?i-mx:^(?:name|time)$)
2207
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2122
2208
 
2123
2209
 
2124
2210
  ===== --template TEMPLATE_STRING
@@ -2162,9 +2248,9 @@ Add (or remove) tags from the last entry, or from multiple entries
2162
2248
  ===== Options
2163
2249
  ===== --bool BOOLEAN
2164
2250
 
2165
- 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
2166
2252
 
2167
- [Default Value] PATTERN
2253
+ [Default Value] pattern
2168
2254
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2169
2255
 
2170
2256
 
@@ -2181,7 +2267,7 @@ How many recent entries to tag (0 for all)
2181
2267
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
2182
2268
 
2183
2269
  [Default Value] smart
2184
- [Must Match] (?-mix:^[csi])
2270
+ [Must Match] (?i-mx:^[cis].*?$)
2185
2271
 
2186
2272
 
2187
2273
  ===== --rename ORIG_TAG
@@ -2200,15 +2286,15 @@ Section
2200
2286
 
2201
2287
  ===== --search QUERY
2202
2288
 
2203
- 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")
2204
2291
 
2205
2292
  [Default Value] None
2206
2293
 
2207
2294
 
2208
2295
  ===== --tag TAG
2209
2296
 
2210
- Tag the last X entries containing TAG.
2211
- 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 (*, ?)
2212
2298
 
2213
2299
  [Default Value] None
2214
2300
 
@@ -2222,7 +2308,8 @@ Include a value, e.g. @tag(value)
2222
2308
 
2223
2309
  ===== --val QUERY
2224
2310
 
2225
- 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
2226
2313
 
2227
2314
  [Default Value] None
2228
2315
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -2294,7 +2381,7 @@ List all tags in the current Doing file
2294
2381
 
2295
2382
  Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
2296
2383
 
2297
- [Default Value] PATTERN
2384
+ [Default Value] pattern
2298
2385
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2299
2386
 
2300
2387
 
@@ -2303,7 +2390,7 @@ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
2303
2390
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
2304
2391
 
2305
2392
  [Default Value] smart
2306
- [Must Match] (?-mix:^[csi])
2393
+ [Must Match] (?i-mx:^[cis].*?$)
2307
2394
 
2308
2395
 
2309
2396
  ===== -o|--order ORDER
@@ -2323,8 +2410,8 @@ Section
2323
2410
 
2324
2411
  ===== --search QUERY
2325
2412
 
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").
2413
+ Filter entries using a search query, surround with slashes for regex (e.g. "/query.*/"),
2414
+ start with single quote for exact match ("'query")
2328
2415
 
2329
2416
  [Default Value] None
2330
2417
 
@@ -2339,14 +2426,15 @@ Sort by name or count
2339
2426
 
2340
2427
  ===== --tag TAG
2341
2428
 
2342
- 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 (*, ?)
2343
2430
 
2344
2431
  [Default Value] None
2345
2432
 
2346
2433
 
2347
2434
  ===== --val QUERY
2348
2435
 
2349
- 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
2350
2438
 
2351
2439
  [Default Value] None
2352
2440
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -2368,7 +2456,7 @@ Output in a single line with @ symbols. Ignored if --counts is specified.
2368
2456
 
2369
2457
 
2370
2458
  ===== --not
2371
- Get tags from items that *don't* match search/tag filters
2459
+ Show items that *don't* match search/tag filters
2372
2460
 
2373
2461
 
2374
2462
 
@@ -2462,7 +2550,7 @@ Specify a section
2462
2550
  Sort tags by (name|time)
2463
2551
 
2464
2552
  [Default Value] name
2465
- [Must Match] (?i-mx:^(?:name|time)$)
2553
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2466
2554
 
2467
2555
 
2468
2556
  ===== --template TEMPLATE_STRING
@@ -2527,7 +2615,8 @@ Command line options override view configuration.
2527
2615
  ===== Options
2528
2616
  ===== --after DATE_STRING
2529
2617
 
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
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
2531
2620
 
2532
2621
  [Default Value] None
2533
2622
 
@@ -2539,19 +2628,20 @@ Age (oldest|newest)
2539
2628
  [Default Value] newest
2540
2629
 
2541
2630
 
2542
- ===== -b|--bool BOOLEAN
2631
+ ===== --before DATE_STRING
2543
2632
 
2544
- 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
2545
2635
 
2546
- [Default Value] PATTERN
2547
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2636
+ [Default Value] None
2548
2637
 
2549
2638
 
2550
- ===== --before DATE_STRING
2639
+ ===== --bool BOOLEAN
2551
2640
 
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
2641
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans
2553
2642
 
2554
- [Default Value] None
2643
+ [Default Value] pattern
2644
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2555
2645
 
2556
2646
 
2557
2647
  ===== -c|--count COUNT
@@ -2567,17 +2657,16 @@ Count to display
2567
2657
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
2568
2658
 
2569
2659
  [Default Value] smart
2570
- [Must Match] (?-mix:^[csi])
2660
+ [Must Match] (?i-mx:^[cis].*?$)
2571
2661
 
2572
2662
 
2573
2663
  ===== --from DATE_OR_RANGE
2574
2664
 
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`.
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"`.
2578
2667
 
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.
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.
2581
2670
 
2582
2671
  [Default Value] None
2583
2672
 
@@ -2598,14 +2687,15 @@ Section
2598
2687
 
2599
2688
  ===== --search QUERY
2600
2689
 
2601
- 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")
2602
2692
 
2603
2693
  [Default Value] None
2604
2694
 
2605
2695
 
2606
2696
  ===== --tag TAG
2607
2697
 
2608
- Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?)
2698
+ Filter entries by tag. Combine multiple tags with a comma. Wildcards allowed (*, ?)
2609
2699
 
2610
2700
  [Default Value] None
2611
2701
 
@@ -2623,12 +2713,13 @@ Tag sort direction (asc|desc)
2623
2713
  Sort tags by (name|time)
2624
2714
 
2625
2715
  [Default Value] None
2626
- [Must Match] (?i-mx:^(?:name|time)$)
2716
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2627
2717
 
2628
2718
 
2629
2719
  ===== --val QUERY
2630
2720
 
2631
- 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
2632
2723
 
2633
2724
  [Default Value] None
2634
2725
  [Must Match] (?-mix:^(?:!)?@?(?:\S+) +(?:!?[<>=][=*]?|[$*^]=) +(?:.*?)$)
@@ -2655,7 +2746,7 @@ Select from a menu of matching entries to perform additional operations
2655
2746
 
2656
2747
 
2657
2748
  ===== --not
2658
- Show items that *don't* match search string
2749
+ Show items that *don't* match search/tag filters
2659
2750
 
2660
2751
 
2661
2752
 
@@ -2813,7 +2904,7 @@ Tag sort direction (asc|desc)
2813
2904
  Sort tags by (name|time)
2814
2905
 
2815
2906
  [Default Value] name
2816
- [Must Match] (?i-mx:^(?:name|time)$)
2907
+ [Must Match] (?i-mx:^(?:n(?:ame)?|t(?:ime)?)$)
2817
2908
 
2818
2909
 
2819
2910
  ===== --template TEMPLATE_STRING