doing 2.1.0pre → 2.1.4pre

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 (67) hide show
  1. checksums.yaml +4 -4
  2. data/.yardoc/checksums +13 -9
  3. data/.yardoc/object_types +0 -0
  4. data/.yardoc/objects/root.dat +0 -0
  5. data/CHANGELOG.md +42 -10
  6. data/Gemfile.lock +23 -1
  7. data/README.md +1 -1
  8. data/Rakefile +2 -0
  9. data/bin/doing +421 -156
  10. data/doc/Array.html +1 -1
  11. data/doc/Doing/Color.html +1 -1
  12. data/doc/Doing/Completion.html +1 -1
  13. data/doc/Doing/Configuration.html +81 -90
  14. data/doc/Doing/Errors/DoingNoTraceError.html +1 -1
  15. data/doc/Doing/Errors/DoingRuntimeError.html +1 -1
  16. data/doc/Doing/Errors/DoingStandardError.html +1 -1
  17. data/doc/Doing/Errors/EmptyInput.html +1 -1
  18. data/doc/Doing/Errors/NoResults.html +1 -1
  19. data/doc/Doing/Errors/PluginException.html +1 -1
  20. data/doc/Doing/Errors/UserCancelled.html +1 -1
  21. data/doc/Doing/Errors/WrongCommand.html +1 -1
  22. data/doc/Doing/Errors.html +1 -1
  23. data/doc/Doing/Hooks.html +1 -1
  24. data/doc/Doing/Item.html +84 -20
  25. data/doc/Doing/Items.html +35 -1
  26. data/doc/Doing/LogAdapter.html +1 -1
  27. data/doc/Doing/Note.html +1 -1
  28. data/doc/Doing/Pager.html +1 -1
  29. data/doc/Doing/Plugins.html +1 -1
  30. data/doc/Doing/Prompt.html +70 -18
  31. data/doc/Doing/Section.html +1 -1
  32. data/doc/Doing/Util.html +16 -4
  33. data/doc/Doing/WWID.html +27 -147
  34. data/doc/Doing.html +3 -3
  35. data/doc/GLI/Commands/MarkdownDocumentListener.html +1 -1
  36. data/doc/GLI/Commands.html +1 -1
  37. data/doc/GLI.html +1 -1
  38. data/doc/Hash.html +1 -1
  39. data/doc/Status.html +1 -1
  40. data/doc/String.html +344 -4
  41. data/doc/Symbol.html +1 -1
  42. data/doc/Time.html +70 -2
  43. data/doc/_index.html +125 -4
  44. data/doc/class_list.html +1 -1
  45. data/doc/file.README.html +2 -2
  46. data/doc/index.html +2 -2
  47. data/doc/method_list.html +537 -193
  48. data/doc/top-level-namespace.html +2 -2
  49. data/doing.gemspec +2 -0
  50. data/doing.rdoc +276 -75
  51. data/lib/completion/doing.bash +20 -20
  52. data/lib/doing/boolean_term_parser.rb +86 -0
  53. data/lib/doing/configuration.rb +36 -19
  54. data/lib/doing/item.rb +102 -9
  55. data/lib/doing/items.rb +6 -0
  56. data/lib/doing/phrase_parser.rb +124 -0
  57. data/lib/doing/plugins/export/template_export.rb +29 -2
  58. data/lib/doing/prompt.rb +21 -11
  59. data/lib/doing/string.rb +47 -3
  60. data/lib/doing/string_chronify.rb +85 -0
  61. data/lib/doing/time.rb +32 -0
  62. data/lib/doing/util.rb +2 -5
  63. data/lib/doing/util_backup.rb +235 -0
  64. data/lib/doing/version.rb +1 -1
  65. data/lib/doing/wwid.rb +224 -124
  66. data/lib/doing.rb +7 -0
  67. metadata +46 -2
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.0pre
8
+ v2.1.4pre
9
9
 
10
10
  === Global Options
11
11
  === --config_file arg
@@ -90,14 +90,14 @@ 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
-
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.
94
94
  ===== Options
95
95
  ===== --bool BOOLEAN
96
96
 
97
- Boolean used to combine multiple tags
97
+ Boolean used to combine multiple tags. Use PATTERN to parse + and - as booleans.
98
98
 
99
- [Default Value] AND
100
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
99
+ [Default Value] PATTERN
100
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
101
101
 
102
102
 
103
103
  ===== --case TYPE
@@ -139,7 +139,7 @@ Repeat last entry matching search. Surround with
139
139
 
140
140
  ===== --tag TAG
141
141
 
142
- Repeat last entry matching tags. Combine multiple tags with a comma.
142
+ Repeat last entry matching tags. Combine multiple tags with a comma. Wildcards allowed (*, ?).
143
143
 
144
144
  [Default Value] None
145
145
 
@@ -182,10 +182,10 @@ Archive entries older than date
182
182
 
183
183
  ===== --bool BOOLEAN
184
184
 
185
- Tag boolean (AND|OR|NOT)
185
+ Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans.
186
186
 
187
- [Default Value] AND
188
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
187
+ [Default Value] PATTERN
188
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
189
189
 
190
190
 
191
191
  ===== --case TYPE
@@ -220,7 +220,7 @@ Move entries to
220
220
 
221
221
  ===== --tag TAG
222
222
 
223
- Tag filter, combine multiple tags with a comma. Added for compatibility with other commands.
223
+ Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?). Added for compatibility with other commands.
224
224
 
225
225
  [Default Value] None
226
226
 
@@ -250,7 +250,7 @@ Autotag last entry or filtered entries
250
250
  Boolean (AND|OR|NOT) with which to combine multiple tag filters
251
251
 
252
252
  [Default Value] AND
253
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
253
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
254
254
 
255
255
 
256
256
  ===== -c|--count COUNT
@@ -307,10 +307,10 @@ Adds @done tag without datestamp so no elapsed time is recorded. Alias for `doin
307
307
  ===== Options
308
308
  ===== --bool BOOLEAN
309
309
 
310
- Boolean (AND|OR|NOT) with which to combine multiple tag filters
310
+ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans.
311
311
 
312
- [Default Value] AND
313
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
312
+ [Default Value] PATTERN
313
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
314
314
 
315
315
 
316
316
  ===== --case TYPE
@@ -337,7 +337,7 @@ Cancel the last X entries matching search filter, surround with slashes for rege
337
337
 
338
338
  ===== --tag TAG
339
339
 
340
- Cancel the last X entries containing TAG. Separate multiple tags with comma (--tag=tag1,tag2)
340
+ Cancel the last X entries containing TAG. Separate multiple tags with comma (--tag=tag1,tag2). Wildcards allowed (*, ?).
341
341
 
342
342
  [Default Value] None
343
343
 
@@ -367,6 +367,10 @@ Force exact search string matching (case sensitive)
367
367
 
368
368
 
369
369
 
370
+ ==== Command: <tt>changelog|changes </tt>
371
+ List recent changes in Doing
372
+
373
+ Display a formatted list of changes in recent versions, latest at the top
370
374
  ==== Command: <tt>choose </tt>
371
375
  Select a section to display from a menu
372
376
 
@@ -376,7 +380,8 @@ List available color variables for configuration templates and views
376
380
 
377
381
 
378
382
  ==== Command: <tt>completion </tt>
379
- Generate shell completion scripts
383
+ Generates the necessary scripts to add command line completion to various shells, so typing 'doing' and hitting
384
+ tab will offer completions of subcommands and their options.
380
385
 
381
386
 
382
387
  ===== Options
@@ -488,7 +493,9 @@ Update default config file, adding any missing keys
488
493
 
489
494
  [Default Command] edit
490
495
  ==== Command: <tt>done|did ENTRY</tt>
491
- Add a completed item with @done(date). No argument finishes last entry.
496
+ Use this command to add an entry after you've already finished it. It will be immediately marked as @done.
497
+ You can modify the start and end times of the entry using the --back, --took, and --at flags, making it an easy
498
+ way to add entries in post and maintain accurate (albeit manual) time tracking.
492
499
 
493
500
 
494
501
  ===== Options
@@ -576,10 +583,10 @@ Backdate completed date to date string [4pm|20m|2h|yesterday noon]
576
583
 
577
584
  ===== --bool BOOLEAN
578
585
 
579
- Boolean (AND|OR|NOT) with which to combine multiple tag filters
586
+ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans.
580
587
 
581
- [Default Value] AND
582
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
588
+ [Default Value] PATTERN
589
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
583
590
 
584
591
 
585
592
  ===== --case TYPE
@@ -614,7 +621,7 @@ Set the completed date to the start date plus XX[hmd]
614
621
  ===== --tag TAG
615
622
 
616
623
  Finish the last X entries containing TAG.
617
- Separate multiple tags with comma (--tag=tag1,tag2), combine with --bool
624
+ Separate multiple tags with comma (--tag=tag1,tag2), combine with --bool. Wildcards allowed (*, ?).
618
625
 
619
626
  [Default Value] None
620
627
 
@@ -666,18 +673,18 @@ Search for entries
666
673
 
667
674
  Search all sections (or limit to a single section) for entries matching text or regular expression. Normal strings are fuzzy matched.
668
675
 
669
- To search with regular expressions, single quote the string and surround with slashes: `doing search '/\bm.*?x\b/'`
676
+ To search with regular expressions, single quote the string and surround with slashes: `doing search '/m.*?x/'`
670
677
  ===== Options
671
678
  ===== --after DATE_STRING
672
679
 
673
- Constrain search to entries newer than date
680
+ 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.
674
681
 
675
682
  [Default Value] None
676
683
 
677
684
 
678
685
  ===== --before DATE_STRING
679
686
 
680
- Constrain search to entries older than date
687
+ 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.
681
688
 
682
689
  [Default Value] None
683
690
 
@@ -690,6 +697,18 @@ Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart
690
697
  [Must Match] (?-mix:^[csi])
691
698
 
692
699
 
700
+ ===== --from DATE_OR_RANGE
701
+
702
+ Date range to show, or a single day to filter date on.
703
+ Date range argument should be quoted. Date specifications can be natural language.
704
+ To specify a range, use "to" or "through": `doing search --from "monday 8am to friday 5pm"`.
705
+
706
+ If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
707
+ by time of day.
708
+
709
+ [Default Value] None
710
+
711
+
693
712
  ===== -o|--output FORMAT
694
713
 
695
714
  Output to export format (csv|doing|html|markdown|say|taskpaper|template|timeline|wiki)
@@ -712,6 +731,11 @@ Sort tags by (name|time)
712
731
  [Must Match] (?i-mx:^(?:name|time)$)
713
732
 
714
733
 
734
+ ===== --[no-]duration
735
+ Show elapsed time on entries without @done tag
736
+
737
+
738
+
715
739
  ===== -i|--interactive
716
740
  Display an interactive menu of results to perform further operations
717
741
 
@@ -851,14 +875,15 @@ Force exact search string matching (case sensitive)
851
875
  ==== Command: <tt>last </tt>
852
876
  Show the last entry, optionally edit
853
877
 
854
-
878
+ Shows the last entry. Using --search and --tag filters, you can view/edit the last entry matching a filter,
879
+ allowing `doing last` to target historical entries.
855
880
  ===== Options
856
881
  ===== --bool BOOLEAN
857
882
 
858
- Tag boolean
883
+ Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans.
859
884
 
860
- [Default Value] AND
861
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
885
+ [Default Value] PATTERN
886
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
862
887
 
863
888
 
864
889
  ===== --case TYPE
@@ -885,11 +910,16 @@ Search filter, surround with slashes for regex (/query/), start with single quot
885
910
 
886
911
  ===== --tag TAG
887
912
 
888
- Tag filter, combine multiple tags with a comma.
913
+ Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?).
889
914
 
890
915
  [Default Value] None
891
916
 
892
917
 
918
+ ===== --[no-]duration
919
+ Show elapsed time if entry is not tagged @done
920
+
921
+
922
+
893
923
  ===== -e|--editor
894
924
  Edit entry with vim
895
925
 
@@ -936,10 +966,10 @@ Mark last entry as flagged
936
966
  ===== Options
937
967
  ===== --bool BOOLEAN
938
968
 
939
- Boolean (AND|OR|NOT) with which to combine multiple tag filters
969
+ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans.
940
970
 
941
- [Default Value] AND
942
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
971
+ [Default Value] PATTERN
972
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
943
973
 
944
974
 
945
975
  ===== -c|--count COUNT
@@ -975,7 +1005,7 @@ Flag the last entry matching search filter, surround with slashes for regex (e.g
975
1005
  ===== --tag TAG
976
1006
 
977
1007
  Flag the last entry containing TAG.
978
- Separate multiple tags with comma (--tag=tag1,tag2), combine with --bool
1008
+ Separate multiple tags with comma (--tag=tag1,tag2), combine with --bool. Wildcards allowed (*, ?).
979
1009
 
980
1010
  [Default Value] None
981
1011
 
@@ -1018,7 +1048,10 @@ Force exact search string matching (case sensitive)
1018
1048
  ==== Command: <tt>meanwhile ENTRY</tt>
1019
1049
  Finish any running @meanwhile tasks and optionally create a new one
1020
1050
 
1021
-
1051
+ The @meanwhile tag allows you to have long-running entries that encompass smaller entries.
1052
+ This command makes it easy to start and stop these overarching entries. Just run `doing meanwhile Starting work on this
1053
+ big project` to start a @meanwhile entry, add other entries as you work on the project, then use `doing meanwhile` by
1054
+ itself to mark the entry as @done.
1022
1055
  ===== Options
1023
1056
  ===== -b|--back DATE_STRING
1024
1057
 
@@ -1062,10 +1095,10 @@ If -r is provided with no other arguments, the last note is removed.
1062
1095
  ===== Options
1063
1096
  ===== --bool BOOLEAN
1064
1097
 
1065
- Boolean (AND|OR|NOT) with which to combine multiple tag filters
1098
+ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans.
1066
1099
 
1067
- [Default Value] AND
1068
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
1100
+ [Default Value] PATTERN
1101
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1069
1102
 
1070
1103
 
1071
1104
  ===== --case TYPE
@@ -1092,7 +1125,7 @@ Add/remove note from last entry matching search filter, surround with slashes fo
1092
1125
 
1093
1126
  ===== --tag TAG
1094
1127
 
1095
- Add/remove note from last entry matching tag
1128
+ Add/remove note from last entry matching tag. Wildcards allowed (*, ?).
1096
1129
 
1097
1130
  [Default Value] None
1098
1131
 
@@ -1191,6 +1224,11 @@ Sort tags by (name|time)
1191
1224
  [Must Match] (?i-mx:^(?:name|time)$)
1192
1225
 
1193
1226
 
1227
+ ===== --[no-]duration
1228
+ Show elapsed time on entries without @done tag
1229
+
1230
+
1231
+
1194
1232
  ===== -t|--[no-]times
1195
1233
  Show time intervals on @done tasks
1196
1234
 
@@ -1204,7 +1242,8 @@ Show time totals at the end of output
1204
1242
  ==== Command: <tt>open </tt>
1205
1243
  Open the "doing" file in an editor
1206
1244
 
1207
- `doing open` defaults to using the editor_app setting in /Users/ttscoff/.config/doing/config.yml (not set).
1245
+ `doing open` defaults to using the editors->doing_file setting
1246
+ in /Users/ttscoff/.config/doing/config.yml (TaskPaper).
1208
1247
  ===== Options
1209
1248
  ===== -a|--app APP_NAME
1210
1249
 
@@ -1269,6 +1308,11 @@ Sort tags by (name|time)
1269
1308
  [Must Match] (?i-mx:^(?:name|time)$)
1270
1309
 
1271
1310
 
1311
+ ===== --[no-]duration
1312
+ Show elapsed time on entries without @done tag
1313
+
1314
+
1315
+
1272
1316
  ===== -i|--interactive
1273
1317
  Select from a menu of matching entries to perform additional operations
1274
1318
 
@@ -1284,17 +1328,19 @@ Show intervals with totals at the end of output
1284
1328
 
1285
1329
 
1286
1330
 
1287
- ==== Command: <tt>reset|begin </tt>
1331
+ ==== Command: <tt>reset|begin DATE_STRING</tt>
1288
1332
  Reset the start time of an entry
1289
1333
 
1290
-
1334
+ Update the start time of the last entry or the last entry matching a tag/search filter.
1335
+ If no argument is provided, the start time will be reset to the current time.
1336
+ If a date string is provided as an argument, the start time will be set to the parsed result.
1291
1337
  ===== Options
1292
1338
  ===== --bool BOOLEAN
1293
1339
 
1294
1340
  Boolean (AND|OR|NOT) with which to combine multiple tag filters
1295
1341
 
1296
- [Default Value] AND
1297
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
1342
+ [Default Value] PATTERN
1343
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1298
1344
 
1299
1345
 
1300
1346
  ===== --case TYPE
@@ -1321,7 +1367,7 @@ Reset last entry matching search filter, surround with slashes for regex (e.g. "
1321
1367
 
1322
1368
  ===== --tag TAG
1323
1369
 
1324
- Reset last entry matching tag
1370
+ Reset last entry matching tag. Wildcards allowed (*, ?).
1325
1371
 
1326
1372
  [Default Value] None
1327
1373
 
@@ -1349,7 +1395,9 @@ Force exact search string matching (case sensitive)
1349
1395
  ==== Command: <tt>rotate </tt>
1350
1396
  Move entries to archive file
1351
1397
 
1352
-
1398
+ As your doing file grows, commands can get slow. Given that your historical data (and your archive section)
1399
+ probably aren't providing any useful insights a year later, use this command to "rotate" old entries out to an archive
1400
+ file. You'll still have access to all historical data, but it won't be slowing down daily operation.
1353
1401
  ===== Options
1354
1402
  ===== --before DATE_STRING
1355
1403
 
@@ -1361,10 +1409,10 @@ Rotate entries older than date
1361
1409
 
1362
1410
  ===== --bool BOOLEAN
1363
1411
 
1364
- Tag boolean (AND|OR|NOT)
1412
+ Tag boolean (AND|OR|NOT). Use PATTERN to parse + and - as booleans.
1365
1413
 
1366
- [Default Value] AND
1367
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
1414
+ [Default Value] PATTERN
1415
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1368
1416
 
1369
1417
 
1370
1418
  ===== --case TYPE
@@ -1399,7 +1447,7 @@ Search filter
1399
1447
 
1400
1448
  ===== --tag TAG
1401
1449
 
1402
- Tag filter, combine multiple tags with a comma. Added for compatibility with other commands.
1450
+ Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?). Added for compatibility with other commands.
1403
1451
 
1404
1452
  [Default Value] None
1405
1453
 
@@ -1432,7 +1480,29 @@ List all entries and select with typeahead fuzzy matching.
1432
1480
  Multiple selections are allowed, hit tab to add the highlighted entry to the
1433
1481
  selection, and use ctrl-a to select all visible items. Return processes the
1434
1482
  selected entries.
1483
+
1484
+ Search in the menu by typing:
1485
+
1486
+ sbtrkt fuzzy-match Items that match sbtrkt
1487
+
1488
+ 'wild exact-match (quoted) Items that include wild
1489
+
1490
+ !fire inverse-exact-match Items that do not include fire
1435
1491
  ===== Options
1492
+ ===== --after DATE_STRING
1493
+
1494
+ 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.
1495
+
1496
+ [Default Value] None
1497
+
1498
+
1499
+ ===== --before DATE_STRING
1500
+
1501
+ 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.
1502
+
1503
+ [Default Value] None
1504
+
1505
+
1436
1506
  ===== --case TYPE
1437
1507
 
1438
1508
  Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart]
@@ -1441,6 +1511,18 @@ Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart
1441
1511
  [Must Match] (?-mix:^[csi])
1442
1512
 
1443
1513
 
1514
+ ===== --from DATE_OR_RANGE
1515
+
1516
+ Date range to show, or a single day to filter date on.
1517
+ Date range argument should be quoted. Date specifications can be natural language.
1518
+ To specify a range, use "to" or "through": `doing select --from "monday 8am to friday 5pm"`.
1519
+
1520
+ If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
1521
+ by time of day.
1522
+
1523
+ [Default Value] None
1524
+
1525
+
1444
1526
  ===== -m|--move SECTION
1445
1527
 
1446
1528
  Move selected items to section
@@ -1547,7 +1629,11 @@ Force exact search string matching (case sensitive)
1547
1629
  List all entries
1548
1630
 
1549
1631
  The argument can be a section name, @tag(s) or both.
1550
- "pick" or "choose" as an argument will offer a section menu.
1632
+ "pick" or "choose" as an argument will offer a section menu. Run with `--menu` to get a menu of available tags.
1633
+
1634
+ Show tags by passing @tagname arguments. Multiple tags can be combined, and you can specify the boolean used to
1635
+ combine them with `--bool (AND|OR|NOT)`. You can also use @+tagname to require a tag to match, or @-tagname to ignore
1636
+ entries containing tagname. +/- operators require `--bool PATTERN` (which is the default).
1551
1637
  ===== Options
1552
1638
  ===== -a|--age AGE
1553
1639
 
@@ -1558,22 +1644,22 @@ Age (oldest|newest)
1558
1644
 
1559
1645
  ===== --after DATE_STRING
1560
1646
 
1561
- View entries newer than date
1647
+ 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.
1562
1648
 
1563
1649
  [Default Value] None
1564
1650
 
1565
1651
 
1566
1652
  ===== -b|--bool BOOLEAN
1567
1653
 
1568
- Tag boolean (AND,OR,NOT)
1654
+ Tag boolean (AND,OR,NOT). Use PATTERN to parse + and - as booleans.
1569
1655
 
1570
- [Default Value] OR
1571
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
1656
+ [Default Value] PATTERN
1657
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1572
1658
 
1573
1659
 
1574
1660
  ===== --before DATE_STRING
1575
1661
 
1576
- View entries older than date
1662
+ 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.
1577
1663
 
1578
1664
  [Default Value] None
1579
1665
 
@@ -1593,11 +1679,14 @@ Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart
1593
1679
  [Must Match] (?-mix:^[csi])
1594
1680
 
1595
1681
 
1596
- ===== -f|--from DATE_OR_RANGE
1682
+ ===== --from DATE_OR_RANGE
1597
1683
 
1598
1684
  Date range to show, or a single day to filter date on.
1599
- Date range argument should be quoted. Date specifications can be natural language.
1600
- To specify a range, use "to" or "through": `doing show --from "monday to friday"`
1685
+ Date range argument should be quoted. Date specifications can be natural language.
1686
+ To specify a range, use "to" or "through": `doing show --from "monday 8am to friday 5pm"`.
1687
+
1688
+ If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
1689
+ by time of day.
1601
1690
 
1602
1691
  [Default Value] None
1603
1692
 
@@ -1626,7 +1715,7 @@ Search filter, surround with slashes for regex (/query/), start with single quot
1626
1715
 
1627
1716
  ===== --tag TAG
1628
1717
 
1629
- Tag filter, combine multiple tags with a comma. Added for compatibility with other commands.
1718
+ 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.
1630
1719
 
1631
1720
  [Default Value] None
1632
1721
 
@@ -1647,11 +1736,21 @@ Sort tags by (name|time)
1647
1736
  [Must Match] (?i-mx:^(?:name|time))
1648
1737
 
1649
1738
 
1739
+ ===== --[no-]duration
1740
+ Show elapsed time on entries without @done tag
1741
+
1742
+
1743
+
1650
1744
  ===== -i|--interactive
1651
1745
  Select from a menu of matching entries to perform additional operations
1652
1746
 
1653
1747
 
1654
1748
 
1749
+ ===== -m|--menu
1750
+ Select section or tag to display from a menu
1751
+
1752
+
1753
+
1655
1754
  ===== --not
1656
1755
  Show items that *don't* match search/tag/date filters
1657
1756
 
@@ -1705,6 +1804,11 @@ Sort tags by (name|time)
1705
1804
  [Must Match] (?i-mx:^(?:name|time)$)
1706
1805
 
1707
1806
 
1807
+ ===== --[no-]duration
1808
+ Show elapsed time on entries without @done tag
1809
+
1810
+
1811
+
1708
1812
  ===== -t|--[no-]times
1709
1813
  Show time intervals on @done tasks
1710
1814
 
@@ -1734,10 +1838,10 @@ Add (or remove) tags from the last entry, or from multiple entries
1734
1838
  ===== Options
1735
1839
  ===== --bool BOOLEAN
1736
1840
 
1737
- Boolean (AND|OR|NOT) with which to combine multiple tag filters
1841
+ Boolean (AND|OR|NOT) with which to combine multiple tag filters. Use PATTERN to parse + and - as booleans.
1738
1842
 
1739
- [Default Value] AND
1740
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
1843
+ [Default Value] PATTERN
1844
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1741
1845
 
1742
1846
 
1743
1847
  ===== -c|--count COUNT
@@ -1780,7 +1884,7 @@ Tag entries matching search filter, surround with slashes for regex (e.g. "/quer
1780
1884
  ===== --tag TAG
1781
1885
 
1782
1886
  Tag the last X entries containing TAG.
1783
- Separate multiple tags with comma (--tag=tag1,tag2), combine with --bool
1887
+ Separate multiple tags with comma (--tag=tag1,tag2), combine with --bool. Wildcards allowed (*, ?).
1784
1888
 
1785
1889
  [Default Value] None
1786
1890
 
@@ -1830,6 +1934,39 @@ Force exact search string matching (case sensitive)
1830
1934
 
1831
1935
 
1832
1936
 
1937
+ ==== Command: <tt>tags </tt>
1938
+ List all tags in the current Doing file
1939
+
1940
+
1941
+ ===== Options
1942
+ ===== -o|--order ORDER
1943
+
1944
+ Sort order (asc/desc)
1945
+
1946
+ [Default Value] asc
1947
+ [Must Match] (?i-mx:^(?:a(?:sc)?|d(?:esc)?)$)
1948
+
1949
+
1950
+ ===== -s|--section SECTION_NAME
1951
+
1952
+ Section
1953
+
1954
+ [Default Value] All
1955
+
1956
+
1957
+ ===== --sort SORT_ORDER
1958
+
1959
+ Sort by name or count
1960
+
1961
+ [Default Value] name
1962
+ [Must Match] (?-mix:^(?:n(?:ame)?|c(?:ount)?)$)
1963
+
1964
+
1965
+ ===== -c|--[no-]counts
1966
+ Show count of occurrences
1967
+
1968
+
1969
+
1833
1970
  ==== Command: <tt>template TYPE</tt>
1834
1971
  Output HTML, CSS, and Markdown (ERB) templates for customization
1835
1972
 
@@ -1853,7 +1990,8 @@ This command is coming from /Users/ttscoff/.config/doing/commands/test.rb
1853
1990
  ==== Command: <tt>today </tt>
1854
1991
  List entries from today
1855
1992
 
1856
-
1993
+ List entries from the current day. Use --before, --after, and
1994
+ --from to specify time ranges.
1857
1995
  ===== Options
1858
1996
  ===== --after TIME_STRING
1859
1997
 
@@ -1869,6 +2007,13 @@ View entries before specified time (e.g. 8am, 12:30pm, 15:00)
1869
2007
  [Default Value] None
1870
2008
 
1871
2009
 
2010
+ ===== --from DATE_OR_RANGE
2011
+
2012
+ Time range to show `doing today --from "12pm to 4pm"`
2013
+
2014
+ [Default Value] None
2015
+
2016
+
1872
2017
  ===== -o|--output FORMAT
1873
2018
 
1874
2019
  Output to export format (csv|doing|html|markdown|say|taskpaper|template|timeline|wiki)
@@ -1891,6 +2036,11 @@ Sort tags by (name|time)
1891
2036
  [Must Match] (?i-mx:^(?:name|time)$)
1892
2037
 
1893
2038
 
2039
+ ===== --[no-]duration
2040
+ Show elapsed time on entries without @done tag
2041
+
2042
+
2043
+
1894
2044
  ===== -t|--[no-]times
1895
2045
  Show time intervals on @done tasks
1896
2046
 
@@ -1901,10 +2051,13 @@ Show time totals at the end of output
1901
2051
 
1902
2052
 
1903
2053
 
1904
- ==== Command: <tt>undo </tt>
1905
- Undo the last change to the Doing file
2054
+ ==== Command: <tt>undo COUNT</tt>
2055
+ Undo the last X changes to the Doing file
1906
2056
 
2057
+ Reverts the last X commands that altered the doing file.
2058
+ All changes performed by a single command are undone at once.
1907
2059
 
2060
+ Specify a number to jump back multiple revisions, or use --select for an interactive menu.
1908
2061
  ===== Options
1909
2062
  ===== -f|--file PATH
1910
2063
 
@@ -1913,29 +2066,47 @@ Specify alternate doing file
1913
2066
  [Default Value] None
1914
2067
 
1915
2068
 
2069
+ ===== -p|--prune COUNT
2070
+
2071
+ Remove old backups, retaining X files
2072
+
2073
+ [Default Value] None
2074
+
2075
+
2076
+ ===== -i|--interactive
2077
+ Select from recent backups
2078
+
2079
+
2080
+
2081
+ ===== -r|--[no-]redo
2082
+ Redo last undo. Note: you cannot undo a redo.
2083
+
2084
+
2085
+
1916
2086
  ==== Command: <tt>view VIEW_NAME</tt>
1917
2087
  Display a user-created view
1918
2088
 
1919
- Command line options override view configuration
2089
+ Views are defined in your configuration (use `doing config` to edit).
2090
+ Command line options override view configuration.
1920
2091
  ===== Options
1921
2092
  ===== --after DATE_STRING
1922
2093
 
1923
- View entries newer than date
2094
+ 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.
1924
2095
 
1925
2096
  [Default Value] None
1926
2097
 
1927
2098
 
1928
2099
  ===== -b|--bool BOOLEAN
1929
2100
 
1930
- Tag boolean (AND,OR,NOT)
2101
+ Tag boolean (AND,OR,NOT). Use PATTERN to parse + and - as booleans.
1931
2102
 
1932
- [Default Value] OR
1933
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
2103
+ [Default Value] PATTERN
2104
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
1934
2105
 
1935
2106
 
1936
2107
  ===== --before DATE_STRING
1937
2108
 
1938
- View entries older than date
2109
+ 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.
1939
2110
 
1940
2111
  [Default Value] None
1941
2112
 
@@ -1956,6 +2127,18 @@ Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart
1956
2127
  [Must Match] (?-mix:^[csi])
1957
2128
 
1958
2129
 
2130
+ ===== --from DATE_OR_RANGE
2131
+
2132
+ Date range to show, or a single day to filter date on.
2133
+ Date range argument should be quoted. Date specifications can be natural language.
2134
+ To specify a range, use "to" or "through": `doing view --from "monday 8am to friday 5pm" view_name`.
2135
+
2136
+ If values are only time(s) (6am to noon) all dates will be included, but entries will be filtered
2137
+ by time of day.
2138
+
2139
+ [Default Value] None
2140
+
2141
+
1959
2142
  ===== -o|--output FORMAT
1960
2143
 
1961
2144
  Output to export format (csv|doing|html|markdown|say|taskpaper|template|timeline|wiki)
@@ -1979,7 +2162,7 @@ Search filter, surround with slashes for regex (/query/), start with single quot
1979
2162
 
1980
2163
  ===== --tag TAG
1981
2164
 
1982
- Tag filter, combine multiple tags with a comma.
2165
+ Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?).
1983
2166
 
1984
2167
  [Default Value] None
1985
2168
 
@@ -2005,6 +2188,11 @@ Include colors in output
2005
2188
 
2006
2189
 
2007
2190
 
2191
+ ===== --[no-]duration
2192
+ Show elapsed time on entries without @done tag
2193
+
2194
+
2195
+
2008
2196
  ===== -i|--interactive
2009
2197
  Select from a menu of matching entries to perform additional operations
2010
2198
 
@@ -2062,7 +2250,7 @@ Include entries newer than date
2062
2250
  Tag boolean (AND,OR,NOT)
2063
2251
 
2064
2252
  [Default Value] OR
2065
- [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
2253
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none|p(?:at(?:tern)?)?)$)
2066
2254
 
2067
2255
 
2068
2256
  ===== --before DATE_STRING
@@ -2108,7 +2296,8 @@ Only show items with recorded time intervals
2108
2296
 
2109
2297
 
2110
2298
  ==== Command: <tt>yesterday </tt>
2111
- List entries from yesterday
2299
+ Show only entries with start times within the previous 24 hour period. Use --before, --after, and --from to limit to
2300
+ time spans within the day.
2112
2301
 
2113
2302
 
2114
2303
  ===== Options
@@ -2126,6 +2315,13 @@ View entries before specified time (e.g. 8am, 12:30pm, 15:00)
2126
2315
  [Default Value] None
2127
2316
 
2128
2317
 
2318
+ ===== --from TIME_RANGE
2319
+
2320
+ Time range to show, e.g. `doing yesterday --from "1am to 8am"`
2321
+
2322
+ [Default Value] None
2323
+
2324
+
2129
2325
  ===== -o|--output FORMAT
2130
2326
 
2131
2327
  Output to export format (csv|doing|html|markdown|say|taskpaper|template|timeline|wiki)
@@ -2156,6 +2352,11 @@ Sort tags by (name|time)
2156
2352
  [Must Match] (?i-mx:^(?:name|time)$)
2157
2353
 
2158
2354
 
2355
+ ===== --[no-]duration
2356
+ Show elapsed time on entries without @done tag
2357
+
2358
+
2359
+
2159
2360
  ===== -t|--[no-]times
2160
2361
  Show time intervals on @done tasks
2161
2362