doing 2.1.22 → 2.1.23

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 (91) hide show
  1. checksums.yaml +4 -4
  2. data/.yardoc/checksums +13 -11
  3. data/.yardoc/object_types +0 -0
  4. data/.yardoc/objects/root.dat +0 -0
  5. data/CHANGELOG.md +18 -10
  6. data/Gemfile.lock +1 -1
  7. data/README.md +1 -1
  8. data/bin/doing +134 -27
  9. data/docs/doc/Array.html +10 -5
  10. data/docs/doc/BooleanTermParser/Clause.html +1 -1
  11. data/docs/doc/BooleanTermParser/Operator.html +1 -1
  12. data/docs/doc/BooleanTermParser/Query.html +1 -1
  13. data/docs/doc/BooleanTermParser/QueryParser.html +1 -1
  14. data/docs/doc/BooleanTermParser/QueryTransformer.html +1 -1
  15. data/docs/doc/BooleanTermParser.html +1 -1
  16. data/docs/doc/Doing/Color.html +1 -1
  17. data/docs/doc/Doing/Completion.html +1 -1
  18. data/docs/doc/Doing/Configuration.html +3 -3
  19. data/docs/doc/Doing/Errors/DoingNoTraceError.html +1 -1
  20. data/docs/doc/Doing/Errors/DoingRuntimeError.html +1 -1
  21. data/docs/doc/Doing/Errors/DoingStandardError.html +1 -1
  22. data/docs/doc/Doing/Errors/EmptyInput.html +1 -1
  23. data/docs/doc/Doing/Errors/NoResults.html +1 -1
  24. data/docs/doc/Doing/Errors/PluginException.html +1 -1
  25. data/docs/doc/Doing/Errors/UserCancelled.html +1 -1
  26. data/docs/doc/Doing/Errors/WrongCommand.html +1 -1
  27. data/docs/doc/Doing/Errors.html +1 -1
  28. data/docs/doc/Doing/Hooks.html +1 -1
  29. data/docs/doc/Doing/Item.html +1 -1
  30. data/docs/doc/Doing/Items.html +1 -1
  31. data/docs/doc/Doing/LogAdapter.html +1 -1
  32. data/docs/doc/Doing/Note.html +1 -1
  33. data/docs/doc/Doing/Pager.html +1 -1
  34. data/docs/doc/Doing/Plugins.html +1 -1
  35. data/docs/doc/Doing/Prompt.html +1 -1
  36. data/docs/doc/Doing/Section.html +1 -1
  37. data/docs/doc/Doing/TemplateString.html +2 -2
  38. data/docs/doc/Doing/Types.html +201 -0
  39. data/docs/doc/Doing/Util/Backup.html +1 -1
  40. data/docs/doc/Doing/Util.html +2 -5
  41. data/docs/doc/Doing/WWID.html +1 -1
  42. data/docs/doc/Doing.html +2 -2
  43. data/docs/doc/GLI/Commands/Help.html +185 -0
  44. data/docs/doc/GLI/Commands/MarkdownDocumentListener.html +1 -1
  45. data/docs/doc/GLI/Commands.html +5 -3
  46. data/docs/doc/GLI.html +4 -2
  47. data/docs/doc/Hash.html +3 -11
  48. data/docs/doc/Numeric.html +1 -1
  49. data/docs/doc/PhraseParser/Operator.html +1 -1
  50. data/docs/doc/PhraseParser/PhraseClause.html +1 -1
  51. data/docs/doc/PhraseParser/Query.html +1 -1
  52. data/docs/doc/PhraseParser/QueryParser.html +1 -1
  53. data/docs/doc/PhraseParser/QueryTransformer.html +1 -1
  54. data/docs/doc/PhraseParser/TermClause.html +1 -1
  55. data/docs/doc/PhraseParser.html +1 -1
  56. data/docs/doc/Status.html +1 -1
  57. data/docs/doc/String.html +40 -10
  58. data/docs/doc/Symbol.html +1 -1
  59. data/docs/doc/Time.html +1 -1
  60. data/docs/doc/_index.html +16 -9
  61. data/docs/doc/class_list.html +1 -1
  62. data/docs/doc/file.README.html +2 -2
  63. data/docs/doc/index.html +2 -2
  64. data/docs/doc/method_list.html +160 -144
  65. data/docs/doc/top-level-namespace.html +1 -1
  66. data/docs/index.md +1 -1
  67. data/doing.rdoc +148 -4
  68. data/lib/completion/_doing.zsh +15 -15
  69. data/lib/completion/doing.bash +29 -18
  70. data/lib/completion/doing.fish +21 -1
  71. data/lib/doing/array.rb +2 -2
  72. data/lib/doing/changelog/change.rb +115 -0
  73. data/lib/doing/changelog/changes.rb +73 -0
  74. data/lib/doing/changelog/entry.rb +21 -0
  75. data/lib/doing/changelog/version.rb +97 -0
  76. data/lib/doing/changelog.rb +6 -0
  77. data/lib/doing/configuration.rb +15 -7
  78. data/lib/doing/hash.rb +3 -2
  79. data/lib/doing/help_monkey_patch.rb +31 -0
  80. data/lib/doing/hooks.rb +5 -1
  81. data/lib/doing/item.rb +10 -25
  82. data/lib/doing/plugins/export/template_export.rb +1 -1
  83. data/lib/doing/string.rb +19 -10
  84. data/lib/doing/string_chronify.rb +1 -1
  85. data/lib/doing/types.rb +2 -0
  86. data/lib/doing/util.rb +2 -1
  87. data/lib/doing/version.rb +1 -1
  88. data/lib/doing/wwid.rb +22 -19
  89. data/lib/doing.rb +1 -0
  90. data/lib/helpers/threaded_tests.rb +14 -1
  91. metadata +10 -2
@@ -102,7 +102,7 @@
102
102
  </div>
103
103
 
104
104
  <div id="footer">
105
- Generated on Fri Jan 21 14:53:33 2022 by
105
+ Generated on Sat Jan 22 16:00:27 2022 by
106
106
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
107
107
  0.9.27 (ruby-3.0.1).
108
108
  </div>
data/docs/index.md CHANGED
@@ -8,7 +8,7 @@ _If you're one of the rare people like me who find this useful, feel free to
8
8
 
9
9
 
10
10
 
11
- The current version of `doing` is 2.1.13.
11
+ The current version of `doing` is 2.1.21.
12
12
 
13
13
  Find all of the documentation in the [doing wiki][wiki].
14
14
 
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.22
8
+ v2.1.23
9
9
 
10
10
  === Global Options
11
11
  === --config_file arg
@@ -403,10 +403,37 @@ Force exact search string matching (case sensitive)
403
403
 
404
404
 
405
405
 
406
- ==== Command: <tt>changelog|changes </tt>
406
+ ==== Command: <tt>changes|changelog </tt>
407
407
  List recent changes in Doing
408
408
 
409
- Display a formatted list of changes in recent versions, latest at the top
409
+ Display a formatted list of changes in recent versions.
410
+
411
+ Without flags, displays only the most recent version.
412
+ Use --lookup or --all for history.
413
+ ===== Options
414
+ ===== -l|--lookup VERSION
415
+
416
+ Look up a specific version. Specify versions as "MAJ.MIN.PATCH", MIN
417
+ and PATCH are optional. Use > or < to see all changes since or prior
418
+ to a version.
419
+
420
+ [Default Value] None
421
+ [Must Match] (?-mix:^(?:(?:(?:[<>=]|p(?:rior)|b(?:efore)|o(?:lder)|s(?:ince)|a(?:fter)|n(?:ewer))? *[\d.*?]+ *)+|(?:[\d.]+ *-+ *[\d.]+))$)
422
+
423
+
424
+ ===== -s|--search arg
425
+
426
+ Show changelogs matching search terms (uses pattern-based searching).
427
+ Add slashes to search with regular expressions, e.g. `--search "/output.*flag/"`
428
+
429
+ [Default Value] None
430
+
431
+
432
+ ===== -a|--all
433
+ Display all versions
434
+
435
+
436
+
410
437
  ==== Command: <tt>choose </tt>
411
438
  Select a section to display from a menu
412
439
 
@@ -763,6 +790,13 @@ Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart
763
790
  [Must Match] (?-mix:^[csi])
764
791
 
765
792
 
793
+ ===== --config_template TEMPLATE_KEY
794
+
795
+ Output using a template from configuration
796
+
797
+ [Default Value] default
798
+
799
+
766
800
  ===== --from DATE_OR_RANGE
767
801
 
768
802
  Date range to show, or a single day to filter date on.
@@ -797,6 +831,13 @@ Sort tags by (name|time)
797
831
  [Must Match] (?i-mx:^(?:name|time)$)
798
832
 
799
833
 
834
+ ===== --template TEMPLATE_STRING
835
+
836
+ Override output format with a template string containing %placeholders
837
+
838
+ [Default Value] None
839
+
840
+
800
841
  ===== --val QUERY
801
842
 
802
843
  Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
@@ -983,6 +1024,13 @@ Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart
983
1024
  [Must Match] (?-mix:^[csi])
984
1025
 
985
1026
 
1027
+ ===== --config_template TEMPLATE_KEY
1028
+
1029
+ Output using a template from configuration
1030
+
1031
+ [Default Value] last
1032
+
1033
+
986
1034
  ===== -s|--section NAME
987
1035
 
988
1036
  Specify a section
@@ -1004,6 +1052,13 @@ Tag filter, combine multiple tags with a comma. Wildcards allowed (*, ?)
1004
1052
  [Default Value] None
1005
1053
 
1006
1054
 
1055
+ ===== --template TEMPLATE_STRING
1056
+
1057
+ Override output format with a template string containing %placeholders
1058
+
1059
+ [Default Value] None
1060
+
1061
+
1007
1062
  ===== --val QUERY
1008
1063
 
1009
1064
  Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
@@ -1347,6 +1402,13 @@ Date argument can be natural language. "thursday" would be interpreted as "last
1347
1402
  and "2d" would be interpreted as "two days ago." If you use "to" or "through" between two dates,
1348
1403
  it will create a range.
1349
1404
  ===== Options
1405
+ ===== --config_template TEMPLATE_KEY
1406
+
1407
+ Output using a template from configuration
1408
+
1409
+ [Default Value] default
1410
+
1411
+
1350
1412
  ===== -o|--output FORMAT
1351
1413
 
1352
1414
  Output to export format (csv|dayone|dayone-days|dayone-entries|doing|html|json|markdown|say|taskpaper|template|timeline|wiki)
@@ -1369,6 +1431,13 @@ Sort tags by (name|time)
1369
1431
  [Must Match] (?i-mx:^(?:name|time)$)
1370
1432
 
1371
1433
 
1434
+ ===== --template TEMPLATE_STRING
1435
+
1436
+ Override output format with a template string containing %placeholders
1437
+
1438
+ [Default Value] None
1439
+
1440
+
1372
1441
  ===== --[no-]duration
1373
1442
  Show elapsed time on entries without @done tag
1374
1443
 
@@ -1438,6 +1507,13 @@ List recent entries
1438
1507
 
1439
1508
 
1440
1509
  ===== Options
1510
+ ===== --config_template TEMPLATE_KEY
1511
+
1512
+ Output using a template from configuration
1513
+
1514
+ [Default Value] recent
1515
+
1516
+
1441
1517
  ===== -s|--section NAME
1442
1518
 
1443
1519
  Section
@@ -1453,6 +1529,13 @@ Sort tags by (name|time)
1453
1529
  [Must Match] (?i-mx:^(?:name|time)$)
1454
1530
 
1455
1531
 
1532
+ ===== --template TEMPLATE_STRING
1533
+
1534
+ Override output format with a template string containing %placeholders
1535
+
1536
+ [Default Value] None
1537
+
1538
+
1456
1539
  ===== --[no-]duration
1457
1540
  Show elapsed time on entries without @done tag
1458
1541
 
@@ -1861,6 +1944,13 @@ Case sensitivity for search string matching [(c)ase-sensitive, (i)gnore, (s)mart
1861
1944
  [Must Match] (?-mix:^[csi])
1862
1945
 
1863
1946
 
1947
+ ===== --config_template TEMPLATE_KEY
1948
+
1949
+ Output using a template from configuration
1950
+
1951
+ [Default Value] default
1952
+
1953
+
1864
1954
  ===== --from DATE_OR_RANGE
1865
1955
 
1866
1956
  Date range to show, or a single day to filter date on.
@@ -1918,6 +2008,13 @@ Sort tags by (name|time)
1918
2008
  [Must Match] (?i-mx:^(?:name|time))
1919
2009
 
1920
2010
 
2011
+ ===== --template TEMPLATE_STRING
2012
+
2013
+ Override output format with a template string containing %placeholders
2014
+
2015
+ [Default Value] None
2016
+
2017
+
1921
2018
  ===== --val QUERY
1922
2019
 
1923
2020
  Perform a tag value query ("@done > two hours ago" or "@progress < 50"). May be used multiple times, combined with --bool
@@ -1977,6 +2074,13 @@ List entries since a date
1977
2074
  Date argument can be natural language and are always interpreted as being in the past. "thursday" would be interpreted as "last thursday,"
1978
2075
  and "2d" would be interpreted as "two days ago."
1979
2076
  ===== Options
2077
+ ===== --config_template TEMPLATE_KEY
2078
+
2079
+ Output using a template from configuration
2080
+
2081
+ [Default Value] default
2082
+
2083
+
1980
2084
  ===== -o|--output FORMAT
1981
2085
 
1982
2086
  Output to export format (csv|dayone|dayone-days|dayone-entries|doing|html|json|markdown|say|taskpaper|template|timeline|wiki)
@@ -1999,6 +2103,13 @@ Sort tags by (name|time)
1999
2103
  [Must Match] (?i-mx:^(?:name|time)$)
2000
2104
 
2001
2105
 
2106
+ ===== --template TEMPLATE_STRING
2107
+
2108
+ Override output format with a template string containing %placeholders
2109
+
2110
+ [Default Value] None
2111
+
2112
+
2002
2113
  ===== --[no-]duration
2003
2114
  Show elapsed time on entries without @done tag
2004
2115
 
@@ -2156,7 +2267,7 @@ Remove all default_tags from the local .doingrc
2156
2267
 
2157
2268
 
2158
2269
 
2159
- ==== Command: <tt>tags </tt>
2270
+ ==== Command: <tt>tags [MAX_COUNT]</tt>
2160
2271
  List all tags in the current Doing file
2161
2272
 
2162
2273
 
@@ -2233,6 +2344,11 @@ Select items to scan from a menu of matching entries
2233
2344
 
2234
2345
 
2235
2346
 
2347
+ ===== -l|--[no-]line
2348
+ Output in a single line with @ symbols. Ignored if --counts is specified.
2349
+
2350
+
2351
+
2236
2352
  ===== --not
2237
2353
  Get tags from items that *don't* match search/tag filters
2238
2354
 
@@ -2295,6 +2411,13 @@ View entries before specified time (e.g. 8am, 12:30pm, 15:00)
2295
2411
  [Default Value] None
2296
2412
 
2297
2413
 
2414
+ ===== --config_template TEMPLATE_KEY
2415
+
2416
+ Output using a template from configuration
2417
+
2418
+ [Default Value] today
2419
+
2420
+
2298
2421
  ===== --from TIME_RANGE
2299
2422
 
2300
2423
  Time range to show `doing today --from "12pm to 4pm"`
@@ -2324,6 +2447,13 @@ Sort tags by (name|time)
2324
2447
  [Must Match] (?i-mx:^(?:name|time)$)
2325
2448
 
2326
2449
 
2450
+ ===== --template TEMPLATE_STRING
2451
+
2452
+ Override output format with a template string containing %placeholders
2453
+
2454
+ [Default Value] None
2455
+
2456
+
2327
2457
  ===== --[no-]duration
2328
2458
  Show elapsed time on entries without @done tag
2329
2459
 
@@ -2623,6 +2753,13 @@ View entries before specified time (e.g. 8am, 12:30pm, 15:00)
2623
2753
  [Default Value] None
2624
2754
 
2625
2755
 
2756
+ ===== --config_template TEMPLATE_KEY
2757
+
2758
+ Output using a template from configuration
2759
+
2760
+ [Default Value] today
2761
+
2762
+
2626
2763
  ===== --from TIME_RANGE
2627
2764
 
2628
2765
  Time range to show, e.g. `doing yesterday --from "1am to 8am"`
@@ -2661,6 +2798,13 @@ Sort tags by (name|time)
2661
2798
  [Must Match] (?i-mx:^(?:name|time)$)
2662
2799
 
2663
2800
 
2801
+ ===== --template TEMPLATE_STRING
2802
+
2803
+ Override output format with a template string containing %placeholders
2804
+
2805
+ [Default Value] None
2806
+
2807
+
2664
2808
  ===== --[no-]duration
2665
2809
  Show elapsed time on entries without @done tag
2666
2810
 
@@ -14,8 +14,8 @@ function _doing() {
14
14
  'move:Move entries between sections'
15
15
  'autotag:Autotag last entry or filtered entries'
16
16
  'cancel:End last X entries with no time tracked'
17
- 'changelog:List recent changes in Doing'
18
17
  'changes:List recent changes in Doing'
18
+ 'changelog:List recent changes in Doing'
19
19
  'choose:Select a section to display from a menu'
20
20
  'colors:List available color variables for configuration templates and views'
21
21
  'completion:Generate shell completion scripts'
@@ -87,11 +87,11 @@ function _doing() {
87
87
  cancel)
88
88
  args=( {-a,--archive}"[Archive entries]" "(--bool=)--bool=}[Boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-i,--interactive}"[Select item(s) to cancel from a menu of matching entries]" "(--not)--not}[Finish items that *dont* match search/tag filterst* match search/tag filters]" {-s,--section=}"[Section]" "(--search=)--search=}[Cancel the last X entries matching search filter]" "(--tag=)--tag=}[Cancel the last X entries containing TAG]" {-u,--unfinished}"[Cancel last entry]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
89
89
  ;;
90
- changelog)
91
- args=( )
92
- ;;
93
90
  changes)
94
- args=( )
91
+ args=( {-a,--all}"[Display all versions]" {-l,--lookup=}"[Look up a specific version]" {-s,--search=}"[Show changelogs matching search terms]" )
92
+ ;;
93
+ changelog)
94
+ args=( {-a,--all}"[Display all versions]" {-l,--lookup=}"[Look up a specific version]" {-s,--search=}"[Show changelogs matching search terms]" )
95
95
  ;;
96
96
  choose)
97
97
  args=( )
@@ -115,10 +115,10 @@ function _doing() {
115
115
  args=( {-a,--archive}"[Archive entries]" "(--finished=)--finished=}[Set finish date to specific date/time]" "(--auto)--auto}[Auto-generate finish dates from next entrys start times start time]" "(--started=)--started=}[Backdate completed date to date string [4pm|20m|2h|yesterday noon]]" "(--bool=)--bool=}[Boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" "(--date)--date}[Include date]" {-i,--interactive}"[Select item(s) to finish from a menu of matching entries]" "(--not)--not}[Finish items that *dont* match search/tag filterst* match search/tag filters]" {-r,--remove}"[Remove done tag]" {-s,--section=}"[Section]" "(--search=)--search=}[Finish the last X entries matching search filter]" "(--for=)--for=}[Set the completed date to the start date plus XX[hmd]]" "(--tag=)--tag=}[Finish the last X entries containing TAG]" {-u,--unfinished}"[Finish last entry]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
116
116
  ;;
117
117
  grep)
118
- args=( "(--after=)--after=}[Search entries newer than date]" "(--before=)--before=}[Search entries older than date]" "(--bool=)--bool=}[Combine multiple tags or value queries using AND]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-d,--delete}"[Delete matching entries]" "(--duration)--duration}[Show elapsed time on entries without @done tag]" {-e,--editor}"[Edit matching entries with vim]" "(--from=)--from=}[Date range to show]" {-h,--hilite}"[Highlight search matches in output]" {-i,--interactive}"[Display an interactive menu of results to perform further operations]" "(--not)--not}[Show items that *dont* match search stringt* match search string]" {-o,--output=}"[Output to export format]" "(--only_timed)--only_timed}[Only show items with recorded time intervals]" {-s,--section=}"[Section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--totals)--totals}[Show intervals with totals at the end of output]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact string matching]" )
118
+ args=( "(--after=)--after=}[Search entries newer than date]" "(--before=)--before=}[Search entries older than date]" "(--bool=)--bool=}[Combine multiple tags or value queries using AND]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" "(--config_template=)--config_template=}[Output using a template from configuration]" {-d,--delete}"[Delete matching entries]" "(--duration)--duration}[Show elapsed time on entries without @done tag]" {-e,--editor}"[Edit matching entries with vim]" "(--from=)--from=}[Date range to show]" {-h,--hilite}"[Highlight search matches in output]" {-i,--interactive}"[Display an interactive menu of results to perform further operations]" "(--not)--not}[Show items that *dont* match search stringt* match search string]" {-o,--output=}"[Output to export format]" "(--only_timed)--only_timed}[Only show items with recorded time intervals]" {-s,--section=}"[Section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--template=)--template=}[Override output format with a template string containing %placeholders]" "(--totals)--totals}[Show intervals with totals at the end of output]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact string matching]" )
119
119
  ;;
120
120
  search)
121
- args=( "(--after=)--after=}[Search entries newer than date]" "(--before=)--before=}[Search entries older than date]" "(--bool=)--bool=}[Combine multiple tags or value queries using AND]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-d,--delete}"[Delete matching entries]" "(--duration)--duration}[Show elapsed time on entries without @done tag]" {-e,--editor}"[Edit matching entries with vim]" "(--from=)--from=}[Date range to show]" {-h,--hilite}"[Highlight search matches in output]" {-i,--interactive}"[Display an interactive menu of results to perform further operations]" "(--not)--not}[Show items that *dont* match search stringt* match search string]" {-o,--output=}"[Output to export format]" "(--only_timed)--only_timed}[Only show items with recorded time intervals]" {-s,--section=}"[Section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--totals)--totals}[Show intervals with totals at the end of output]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact string matching]" )
121
+ args=( "(--after=)--after=}[Search entries newer than date]" "(--before=)--before=}[Search entries older than date]" "(--bool=)--bool=}[Combine multiple tags or value queries using AND]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" "(--config_template=)--config_template=}[Output using a template from configuration]" {-d,--delete}"[Delete matching entries]" "(--duration)--duration}[Show elapsed time on entries without @done tag]" {-e,--editor}"[Edit matching entries with vim]" "(--from=)--from=}[Date range to show]" {-h,--hilite}"[Highlight search matches in output]" {-i,--interactive}"[Display an interactive menu of results to perform further operations]" "(--not)--not}[Show items that *dont* match search stringt* match search string]" {-o,--output=}"[Output to export format]" "(--only_timed)--only_timed}[Only show items with recorded time intervals]" {-s,--section=}"[Section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--template=)--template=}[Override output format with a template string containing %placeholders]" "(--totals)--totals}[Show intervals with totals at the end of output]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact string matching]" )
122
122
  ;;
123
123
  help)
124
124
  args=( )
@@ -127,7 +127,7 @@ function _doing() {
127
127
  args=( "(--after=)--after=}[Import entries newer than date]" "(--autotag)--autotag}[Autotag entries]" "(--before=)--before=}[Import entries older than date]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-f,--from=}"[Date range to import]" "(--not)--not}[Import items that *dont* match search/tag/date filterst* match search/tag/date filters]" "(--only_timed)--only_timed}[Only import items with recorded time intervals]" "(--overlap)--overlap}[Allow entries that overlap existing times]" "(--prefix=)--prefix=}[Prefix entries with]" {-s,--section=}"[Target section]" "(--search=)--search=}[Only import items matching search]" {-t,--tag=}"[Tag all imported entries]" "(--type=)--type=}[Import type]" {-x,--exact}"[Force exact search string matching]" )
128
128
  ;;
129
129
  last)
130
- args=( "(--bool=)--bool=}[Tag boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-d,--delete}"[Delete the last entry]" "(--duration)--duration}[Show elapsed time if entry is not tagged @done]" {-e,--editor}"[Edit entry with vim]" {-h,--hilite}"[Highlight search matches in output]" "(--not)--not}[Show items that *dont* match search string or tag filtert* match search string or tag filter]" {-s,--section=}"[Specify a section]" "(--search=)--search=}[Search filter]" "(--tag=)--tag=}[Tag filter]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
130
+ args=( "(--bool=)--bool=}[Tag boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" "(--config_template=)--config_template=}[Output using a template from configuration]" {-d,--delete}"[Delete the last entry]" "(--duration)--duration}[Show elapsed time if entry is not tagged @done]" {-e,--editor}"[Edit entry with vim]" {-h,--hilite}"[Highlight search matches in output]" "(--not)--not}[Show items that *dont* match search string or tag filtert* match search string or tag filter]" {-s,--section=}"[Specify a section]" "(--search=)--search=}[Search filter]" "(--tag=)--tag=}[Tag filter]" "(--template=)--template=}[Override output format with a template string containing %placeholders]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
131
131
  ;;
132
132
  later)
133
133
  args=( "(--ask)--ask}[Prompt for note via multi-line input]" "(--started=)--started=}[Backdate start time to date string [4pm|20m|2h|yesterday noon]]" {-e,--editor}"[Edit entry with vim]" {-n,--note=}"[Note]" )
@@ -151,7 +151,7 @@ function _doing() {
151
151
  args=( "(--ask)--ask}[Prompt for note via multi-line input]" "(--started=)--started=}[Backdate start time [4pm|20m|2h|"yesterday noon"]]" {-e,--editor}"[Edit entry with vim]" {-f,--finish_last}"[Timed entry]" {-n,--note=}"[Include a note]" {-s,--section=}"[Section]" )
152
152
  ;;
153
153
  on)
154
- args=( "(--duration)--duration}[Show elapsed time on entries without @done tag]" {-o,--output=}"[Output to export format]" {-s,--section=}"[Section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--totals)--totals}[Show time totals at the end of output]" )
154
+ args=( "(--config_template=)--config_template=}[Output using a template from configuration]" "(--duration)--duration}[Show elapsed time on entries without @done tag]" {-o,--output=}"[Output to export format]" {-s,--section=}"[Section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--template=)--template=}[Override output format with a template string containing %placeholders]" "(--totals)--totals}[Show time totals at the end of output]" )
155
155
  ;;
156
156
  open)
157
157
  args=( {-a,--app=}"[Open with app name]" {-b,--bundle_id=}"[Open with app bundle id]" {-e,--editor=}"[Open with editor command]" )
@@ -160,7 +160,7 @@ function _doing() {
160
160
  args=( {-c,--column}"[List in single column for completion]" {-t,--type=}"[List plugins of type]" )
161
161
  ;;
162
162
  recent)
163
- args=( "(--duration)--duration}[Show elapsed time on entries without @done tag]" {-i,--interactive}"[Select from a menu of matching entries to perform additional operations]" {-s,--section=}"[Section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--totals)--totals}[Show intervals with totals at the end of output]" )
163
+ args=( "(--config_template=)--config_template=}[Output using a template from configuration]" "(--duration)--duration}[Show elapsed time on entries without @done tag]" {-i,--interactive}"[Select from a menu of matching entries to perform additional operations]" {-s,--section=}"[Section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--template=)--template=}[Override output format with a template string containing %placeholders]" "(--totals)--totals}[Show intervals with totals at the end of output]" )
164
164
  ;;
165
165
  reset)
166
166
  args=( "(--bool=)--bool=}[Boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-i,--interactive}"[Select from a menu of matching entries]" "(--not)--not}[Reset items that *dont* match search/tag filterst* match search/tag filters]" {-r,--resume}"[Resume entry]" {-s,--section=}"[Limit search to section]" "(--search=)--search=}[Reset last entry matching search filter]" "(--tag=)--tag=}[Reset last entry matching tag]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
@@ -178,10 +178,10 @@ function _doing() {
178
178
  args=( {-a,--archive}"[Archive selected items]" "(--after=)--after=}[Select from entries newer than date]" "(--resume)--resume}[Copy selection as a new entry with current time and no @done tag]" "(--before=)--before=}[Select from entries older than date]" {-c,--cancel}"[Cancel selected items]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-d,--delete}"[Delete selected items]" {-e,--editor}"[Edit selected item(s)]" {-f,--finish}"[Add @done with current time to selected item(s)]" "(--flag)--flag}[Add flag to selected item(s)]" "(--force)--force}[Perform action without confirmation]" "(--from=)--from=}[Date range to show]" {-m,--move=}"[Move selected items to section]" "(--menu)--menu}[Use --no-menu to skip the interactive menu]" "(--not)--not}[Select items that *dont* match search/tag filterst* match search/tag filters]" {-o,--output=}"[Output entries to format]" {-q,--query=}"[Initial search query for filtering]" {-r,--remove}"[Reverse -c]" {-s,--section=}"[Select from a specific section]" "(--save_to=)--save_to=}[Save selected entries to file using --output format]" "(--search=)--search=}[Select from entries matching search filter]" {-t,--tag=}"[Tag selected entries]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
179
179
  ;;
180
180
  show)
181
- args=( {-a,--age=}"[Age]" "(--after=)--after=}[Show entries newer than date]" {-b,--bool=}"[Tag boolean]" "(--before=)--before=}[Show entries older than date]" {-c,--count=}"[Max count to show]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" "(--duration)--duration}[Show elapsed time on entries without @done tag]" "(--from=)--from=}[Date range to show]" {-h,--hilite}"[Highlight search matches in output]" {-i,--interactive}"[Select from a menu of matching entries to perform additional operations]" {-m,--menu}"[Select section or tag to display from a menu]" "(--not)--not}[Show items that *dont* match search/tag/date filterst* match search/tag/date filters]" {-o,--output=}"[Output to export format]" "(--only_timed)--only_timed}[Only show items with recorded time intervals]" {-s,--sort=}"[Sort order]" "(--search=)--search=}[Search filter]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag=)--tag=}[Tag filter]" "(--tag_order=)--tag_order=}[Tag sort direction]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--totals)--totals}[Show intervals with totals at the end of output]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
181
+ args=( {-a,--age=}"[Age]" "(--after=)--after=}[Show entries newer than date]" {-b,--bool=}"[Tag boolean]" "(--before=)--before=}[Show entries older than date]" {-c,--count=}"[Max count to show]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" "(--config_template=)--config_template=}[Output using a template from configuration]" "(--duration)--duration}[Show elapsed time on entries without @done tag]" "(--from=)--from=}[Date range to show]" {-h,--hilite}"[Highlight search matches in output]" {-i,--interactive}"[Select from a menu of matching entries to perform additional operations]" {-m,--menu}"[Select section or tag to display from a menu]" "(--not)--not}[Show items that *dont* match search/tag/date filterst* match search/tag/date filters]" {-o,--output=}"[Output to export format]" "(--only_timed)--only_timed}[Only show items with recorded time intervals]" {-s,--sort=}"[Sort order]" "(--search=)--search=}[Search filter]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag=)--tag=}[Tag filter]" "(--tag_order=)--tag_order=}[Tag sort direction]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--template=)--template=}[Override output format with a template string containing %placeholders]" "(--totals)--totals}[Show intervals with totals at the end of output]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
182
182
  ;;
183
183
  since)
184
- args=( "(--duration)--duration}[Show elapsed time on entries without @done tag]" {-o,--output=}"[Output to export format]" {-s,--section=}"[Section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--totals)--totals}[Show time totals at the end of output]" )
184
+ args=( "(--config_template=)--config_template=}[Output using a template from configuration]" "(--duration)--duration}[Show elapsed time on entries without @done tag]" {-o,--output=}"[Output to export format]" {-s,--section=}"[Section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--template=)--template=}[Override output format with a template string containing %placeholders]" "(--totals)--totals}[Show time totals at the end of output]" )
185
185
  ;;
186
186
  tag)
187
187
  args=( {-a,--autotag}"[Autotag entries based on autotag configuration in ~/]" "(--bool=)--bool=}[Boolean]" {-c,--count=}"[How many recent entries to tag]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-d,--date}"[Include current date/time with tag]" "(--force)--force}[Dont ask permission to tag all entries when count is 0t ask permission to tag all entries when count is 0]" {-i,--interactive}"[Select item(s) to tag from a menu of matching entries]" "(--not)--not}[Tag items that *dont* match search/tag filterst* match search/tag filters]" {-r,--remove}"[Remove given tag(s)]" "(--regex)--regex}[Interpret tag string as regular expression]" "(--rename=)--rename=}[Replace existing tag with tag argument]" {-s,--section=}"[Section]" "(--search=)--search=}[Tag entries matching search filter]" "(--tag=)--tag=}[Tag the last X entries containing TAG]" {-u,--unfinished}"[Tag last entry]" {-v,--value=}"[Include a value]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
@@ -190,7 +190,7 @@ function _doing() {
190
190
  args=( {-r,--remove}"[Remove all default_tags from the local]" )
191
191
  ;;
192
192
  tags)
193
- args=( "(--bool=)--bool=}[Boolean used to combine multiple tags]" {-c,--counts}"[Show count of occurrences]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-i,--interactive}"[Select items to scan from a menu of matching entries]" "(--not)--not}[Get tags from items that *dont* match search/tag filterst* match search/tag filters]" {-o,--order=}"[Sort order]" {-s,--section=}"[Section]" "(--search=)--search=}[Get tags for items matching search]" "(--sort=)--sort=}[Sort by name or count]" "(--tag=)--tag=}[Get tags for entries matching tags]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
193
+ args=( "(--bool=)--bool=}[Boolean used to combine multiple tags]" {-c,--counts}"[Show count of occurrences]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-i,--interactive}"[Select items to scan from a menu of matching entries]" {-l,--line}"[Output in a single line with @ symbols]" "(--not)--not}[Get tags from items that *dont* match search/tag filterst* match search/tag filters]" {-o,--order=}"[Sort order]" {-s,--section=}"[Section]" "(--search=)--search=}[Get tags for items matching search]" "(--sort=)--sort=}[Sort by name or count]" "(--tag=)--tag=}[Get tags for entries matching tags]" "(--val=)--val=}[Perform a tag value query]" {-x,--exact}"[Force exact search string matching]" )
194
194
  ;;
195
195
  template)
196
196
  args=( {-c,--column}"[List in single column for completion]" {-l,--list}"[List all available templates]" {-p,--path=}"[Save template to alternate location]" {-s,--save}"[Save template to file instead of STDOUT]" )
@@ -199,7 +199,7 @@ function _doing() {
199
199
  args=( )
200
200
  ;;
201
201
  today)
202
- args=( "(--after=)--after=}[View entries after specified time]" "(--before=)--before=}[View entries before specified time]" "(--duration)--duration}[Show elapsed time on entries without @done tag]" "(--from=)--from=}[Time range to show `doing today --from "12pm to 4pm"`]" {-o,--output=}"[Output to export format]" {-s,--section=}"[Specify a section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--totals)--totals}[Show time totals at the end of output]" )
202
+ args=( "(--after=)--after=}[View entries after specified time]" "(--before=)--before=}[View entries before specified time]" "(--config_template=)--config_template=}[Output using a template from configuration]" "(--duration)--duration}[Show elapsed time on entries without @done tag]" "(--from=)--from=}[Time range to show `doing today --from "12pm to 4pm"`]" {-o,--output=}"[Output to export format]" {-s,--section=}"[Specify a section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--template=)--template=}[Override output format with a template string containing %placeholders]" "(--totals)--totals}[Show time totals at the end of output]" )
203
203
  ;;
204
204
  undo)
205
205
  args=( {-f,--file=}"[Specify alternate doing file]" {-i,--interactive}"[Select from recent backups]" {-p,--prune=}"[Remove old backups]" {-r,--redo}"[Redo last undo]" )
@@ -214,7 +214,7 @@ function _doing() {
214
214
  args=( "(--after=)--after=}[Include entries newer than date]" {-b,--bool=}"[Tag boolean]" "(--before=)--before=}[Include entries older than date]" {-f,--from=}"[Date range to include]" "(--only_timed)--only_timed}[Only show items with recorded time intervals]" {-s,--section=}"[Section to rotate]" "(--search=)--search=}[Search filter]" "(--tag=)--tag=}[Tag filter]" )
215
215
  ;;
216
216
  yesterday)
217
- args=( "(--after=)--after=}[View entries after specified time]" "(--before=)--before=}[View entries before specified time]" "(--duration)--duration}[Show elapsed time on entries without @done tag]" "(--from=)--from=}[Time range to show]" {-o,--output=}"[Output to export format]" {-s,--section=}"[Specify a section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_order=)--tag_order=}[Tag sort direction]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--totals)--totals}[Show time totals at the end of output]" )
217
+ args=( "(--after=)--after=}[View entries after specified time]" "(--before=)--before=}[View entries before specified time]" "(--config_template=)--config_template=}[Output using a template from configuration]" "(--duration)--duration}[Show elapsed time on entries without @done tag]" "(--from=)--from=}[Time range to show]" {-o,--output=}"[Output to export format]" {-s,--section=}"[Specify a section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_order=)--tag_order=}[Tag sort direction]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--template=)--template=}[Override output format with a template string containing %placeholders]" "(--totals)--totals}[Show time totals at the end of output]" )
218
218
  ;;
219
219
  esac
220
220
 
@@ -58,6 +58,16 @@ _doing_cancel() {
58
58
  fi
59
59
  }
60
60
 
61
+ _doing_changes() {
62
+
63
+ if [[ "$token" == --* ]]; then
64
+ COMPREPLY=( $( compgen -W '--all --lookup --search' -- $token ) )
65
+ elif [[ "$token" == -* ]]; then
66
+ COMPREPLY=( $( compgen -W '-a -l -s --all --lookup --search' -- $token ) )
67
+
68
+ fi
69
+ }
70
+
61
71
  _doing_completion() {
62
72
 
63
73
  if [[ "$token" == --* ]]; then
@@ -101,9 +111,9 @@ _doing_finish() {
101
111
  _doing_grep() {
102
112
 
103
113
  if [[ "$token" == --* ]]; then
104
- COMPREPLY=( $( compgen -W '--after --before --bool --case --delete --duration --editor --from --hilite --interactive --not --output --only_timed --section --times --tag_sort --totals --val --exact' -- $token ) )
114
+ COMPREPLY=( $( compgen -W '--after --before --bool --case --config_template --delete --duration --editor --from --hilite --interactive --not --output --only_timed --section --times --tag_sort --template --totals --val --exact' -- $token ) )
105
115
  elif [[ "$token" == -* ]]; then
106
- COMPREPLY=( $( compgen -W '-d -e -h -i -o -s -t -x --after --before --bool --case --delete --duration --editor --from --hilite --interactive --not --output --only_timed --section --times --tag_sort --totals --val --exact' -- $token ) )
116
+ COMPREPLY=( $( compgen -W '-d -e -h -i -o -s -t -x --after --before --bool --case --config_template --delete --duration --editor --from --hilite --interactive --not --output --only_timed --section --times --tag_sort --template --totals --val --exact' -- $token ) )
107
117
 
108
118
  fi
109
119
  }
@@ -131,9 +141,9 @@ _doing_import() {
131
141
  _doing_last() {
132
142
 
133
143
  if [[ "$token" == --* ]]; then
134
- COMPREPLY=( $( compgen -W '--bool --case --delete --duration --editor --hilite --not --section --search --tag --val --exact' -- $token ) )
144
+ COMPREPLY=( $( compgen -W '--bool --case --config_template --delete --duration --editor --hilite --not --section --search --tag --template --val --exact' -- $token ) )
135
145
  elif [[ "$token" == -* ]]; then
136
- COMPREPLY=( $( compgen -W '-d -e -h -s -x --bool --case --delete --duration --editor --hilite --not --section --search --tag --val --exact' -- $token ) )
146
+ COMPREPLY=( $( compgen -W '-d -e -h -s -x --bool --case --config_template --delete --duration --editor --hilite --not --section --search --tag --template --val --exact' -- $token ) )
137
147
 
138
148
  fi
139
149
  }
@@ -191,9 +201,9 @@ _doing_now() {
191
201
  _doing_on() {
192
202
 
193
203
  if [[ "$token" == --* ]]; then
194
- COMPREPLY=( $( compgen -W '--duration --output --section --times --tag_sort --totals' -- $token ) )
204
+ COMPREPLY=( $( compgen -W '--config_template --duration --output --section --times --tag_sort --template --totals' -- $token ) )
195
205
  elif [[ "$token" == -* ]]; then
196
- COMPREPLY=( $( compgen -W '-o -s -t --duration --output --section --times --tag_sort --totals' -- $token ) )
206
+ COMPREPLY=( $( compgen -W '-o -s -t --config_template --duration --output --section --times --tag_sort --template --totals' -- $token ) )
197
207
 
198
208
  fi
199
209
  }
@@ -221,9 +231,9 @@ _doing_plugins() {
221
231
  _doing_recent() {
222
232
 
223
233
  if [[ "$token" == --* ]]; then
224
- COMPREPLY=( $( compgen -W '--duration --interactive --section --times --tag_sort --totals' -- $token ) )
234
+ COMPREPLY=( $( compgen -W '--config_template --duration --interactive --section --times --tag_sort --template --totals' -- $token ) )
225
235
  elif [[ "$token" == -* ]]; then
226
- COMPREPLY=( $( compgen -W '-i -s -t --duration --interactive --section --times --tag_sort --totals' -- $token ) )
236
+ COMPREPLY=( $( compgen -W '-i -s -t --config_template --duration --interactive --section --times --tag_sort --template --totals' -- $token ) )
227
237
 
228
238
  fi
229
239
  }
@@ -276,9 +286,9 @@ local words=$(doing sections)
276
286
  IFS="$OLD_IFS"
277
287
 
278
288
  if [[ "$token" == --* ]]; then
279
- COMPREPLY=( $( compgen -W '--age --after --bool --before --count --case --duration --from --hilite --interactive --menu --not --output --only_timed --sort --search --times --tag --tag_order --tag_sort --totals --val --exact' -- $token ) )
289
+ COMPREPLY=( $( compgen -W '--age --after --bool --before --count --case --config_template --duration --from --hilite --interactive --menu --not --output --only_timed --sort --search --times --tag --tag_order --tag_sort --template --totals --val --exact' -- $token ) )
280
290
  elif [[ "$token" == -* ]]; then
281
- COMPREPLY=( $( compgen -W '-a -b -c -h -i -m -o -s -t -x --age --after --bool --before --count --case --duration --from --hilite --interactive --menu --not --output --only_timed --sort --search --times --tag --tag_order --tag_sort --totals --val --exact' -- $token ) )
291
+ COMPREPLY=( $( compgen -W '-a -b -c -h -i -m -o -s -t -x --age --after --bool --before --count --case --config_template --duration --from --hilite --interactive --menu --not --output --only_timed --sort --search --times --tag --tag_order --tag_sort --template --totals --val --exact' -- $token ) )
282
292
  else
283
293
  local nocasematchWasOff=0
284
294
  shopt nocasematch >/dev/null || nocasematchWasOff=1
@@ -301,9 +311,9 @@ IFS="$OLD_IFS"
301
311
  _doing_since() {
302
312
 
303
313
  if [[ "$token" == --* ]]; then
304
- COMPREPLY=( $( compgen -W '--duration --output --section --times --tag_sort --totals' -- $token ) )
314
+ COMPREPLY=( $( compgen -W '--config_template --duration --output --section --times --tag_sort --template --totals' -- $token ) )
305
315
  elif [[ "$token" == -* ]]; then
306
- COMPREPLY=( $( compgen -W '-o -s -t --duration --output --section --times --tag_sort --totals' -- $token ) )
316
+ COMPREPLY=( $( compgen -W '-o -s -t --config_template --duration --output --section --times --tag_sort --template --totals' -- $token ) )
307
317
 
308
318
  fi
309
319
  }
@@ -331,9 +341,9 @@ _doing_tag_dir() {
331
341
  _doing_tags() {
332
342
 
333
343
  if [[ "$token" == --* ]]; then
334
- COMPREPLY=( $( compgen -W '--bool --counts --case --interactive --not --order --section --search --sort --tag --val --exact' -- $token ) )
344
+ COMPREPLY=( $( compgen -W '--bool --counts --case --interactive --line --not --order --section --search --sort --tag --val --exact' -- $token ) )
335
345
  elif [[ "$token" == -* ]]; then
336
- COMPREPLY=( $( compgen -W '-c -i -o -s -x --bool --counts --case --interactive --not --order --section --search --sort --tag --val --exact' -- $token ) )
346
+ COMPREPLY=( $( compgen -W '-c -i -l -o -s -x --bool --counts --case --interactive --line --not --order --section --search --sort --tag --val --exact' -- $token ) )
337
347
 
338
348
  fi
339
349
  }
@@ -351,9 +361,9 @@ _doing_template() {
351
361
  _doing_today() {
352
362
 
353
363
  if [[ "$token" == --* ]]; then
354
- COMPREPLY=( $( compgen -W '--after --before --duration --from --output --section --times --tag_sort --totals' -- $token ) )
364
+ COMPREPLY=( $( compgen -W '--after --before --config_template --duration --from --output --section --times --tag_sort --template --totals' -- $token ) )
355
365
  elif [[ "$token" == -* ]]; then
356
- COMPREPLY=( $( compgen -W '-o -s -t --after --before --duration --from --output --section --times --tag_sort --totals' -- $token ) )
366
+ COMPREPLY=( $( compgen -W '-o -s -t --after --before --config_template --duration --from --output --section --times --tag_sort --template --totals' -- $token ) )
357
367
 
358
368
  fi
359
369
  }
@@ -421,9 +431,9 @@ _doing_wiki() {
421
431
  _doing_yesterday() {
422
432
 
423
433
  if [[ "$token" == --* ]]; then
424
- COMPREPLY=( $( compgen -W '--after --before --duration --from --output --section --times --tag_order --tag_sort --totals' -- $token ) )
434
+ COMPREPLY=( $( compgen -W '--after --before --config_template --duration --from --output --section --times --tag_order --tag_sort --template --totals' -- $token ) )
425
435
  elif [[ "$token" == -* ]]; then
426
- COMPREPLY=( $( compgen -W '-o -s -t --after --before --duration --from --output --section --times --tag_order --tag_sort --totals' -- $token ) )
436
+ COMPREPLY=( $( compgen -W '-o -s -t --after --before --config_template --duration --from --output --section --times --tag_order --tag_sort --template --totals' -- $token ) )
427
437
 
428
438
  fi
429
439
  }
@@ -437,6 +447,7 @@ _doing()
437
447
  elif [[ $last =~ (archive|move) ]]; then _doing_archive
438
448
  elif [[ $last =~ (autotag) ]]; then _doing_autotag
439
449
  elif [[ $last =~ (cancel) ]]; then _doing_cancel
450
+ elif [[ $last =~ (changes|changelog) ]]; then _doing_changes
440
451
  elif [[ $last =~ (completion) ]]; then _doing_completion
441
452
  elif [[ $last =~ (config) ]]; then _doing_config
442
453
  elif [[ $last =~ (done|did) ]]; then _doing_done