doing 2.1.26 → 2.1.27

Sign up to get free protection for your applications and to get access to all the features.
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