doing 2.1.0pre → 2.1.4pre

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