doing 2.0.22 → 2.1.0pre

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 (88) hide show
  1. checksums.yaml +4 -4
  2. data/.yardoc/checksums +18 -15
  3. data/.yardoc/object_types +0 -0
  4. data/.yardoc/objects/root.dat +0 -0
  5. data/CHANGELOG.md +36 -1
  6. data/Gemfile.lock +8 -1
  7. data/README.md +7 -1
  8. data/Rakefile +23 -4
  9. data/bin/doing +323 -173
  10. data/doc/Array.html +354 -1
  11. data/doc/Doing/Color.html +104 -92
  12. data/doc/Doing/Completion.html +216 -0
  13. data/doc/Doing/Configuration.html +340 -5
  14. data/doc/Doing/Content.html +229 -0
  15. data/doc/Doing/Errors/DoingNoTraceError.html +1 -1
  16. data/doc/Doing/Errors/DoingRuntimeError.html +1 -1
  17. data/doc/Doing/Errors/DoingStandardError.html +1 -1
  18. data/doc/Doing/Errors/EmptyInput.html +1 -1
  19. data/doc/Doing/Errors/NoResults.html +1 -1
  20. data/doc/Doing/Errors/PluginException.html +1 -1
  21. data/doc/Doing/Errors/UserCancelled.html +1 -1
  22. data/doc/Doing/Errors/WrongCommand.html +1 -1
  23. data/doc/Doing/Errors.html +1 -1
  24. data/doc/Doing/Hooks.html +1 -1
  25. data/doc/Doing/Item.html +337 -49
  26. data/doc/Doing/Items.html +444 -35
  27. data/doc/Doing/LogAdapter.html +139 -51
  28. data/doc/Doing/Note.html +253 -22
  29. data/doc/Doing/Pager.html +74 -36
  30. data/doc/Doing/Plugins.html +1 -1
  31. data/doc/Doing/Prompt.html +674 -0
  32. data/doc/Doing/Section.html +354 -0
  33. data/doc/Doing/Util.html +57 -1
  34. data/doc/Doing/WWID.html +477 -670
  35. data/doc/Doing/WWIDFile.html +398 -0
  36. data/doc/Doing.html +5 -5
  37. data/doc/GLI/Commands/MarkdownDocumentListener.html +1 -1
  38. data/doc/GLI/Commands.html +1 -1
  39. data/doc/GLI.html +1 -1
  40. data/doc/Hash.html +97 -1
  41. data/doc/Status.html +37 -3
  42. data/doc/String.html +599 -23
  43. data/doc/Symbol.html +3 -3
  44. data/doc/Time.html +1 -1
  45. data/doc/_index.html +22 -1
  46. data/doc/class_list.html +1 -1
  47. data/doc/file.README.html +8 -2
  48. data/doc/index.html +8 -2
  49. data/doc/method_list.html +453 -173
  50. data/doc/top-level-namespace.html +1 -1
  51. data/doing.gemspec +3 -0
  52. data/doing.rdoc +79 -27
  53. data/example_plugin.rb +5 -5
  54. data/lib/completion/_doing.zsh +42 -42
  55. data/lib/completion/doing.bash +10 -10
  56. data/lib/completion/doing.fish +1 -280
  57. data/lib/doing/array.rb +36 -0
  58. data/lib/doing/colors.rb +70 -66
  59. data/lib/doing/completion/bash_completion.rb +1 -2
  60. data/lib/doing/completion/fish_completion.rb +1 -1
  61. data/lib/doing/completion/zsh_completion.rb +1 -1
  62. data/lib/doing/completion.rb +6 -0
  63. data/lib/doing/configuration.rb +134 -23
  64. data/lib/doing/hash.rb +37 -0
  65. data/lib/doing/item.rb +77 -12
  66. data/lib/doing/items.rb +125 -0
  67. data/lib/doing/log_adapter.rb +58 -4
  68. data/lib/doing/note.rb +53 -1
  69. data/lib/doing/pager.rb +49 -38
  70. data/lib/doing/plugins/export/markdown_export.rb +4 -4
  71. data/lib/doing/plugins/export/template_export.rb +2 -2
  72. data/lib/doing/plugins/import/calendar_import.rb +4 -4
  73. data/lib/doing/plugins/import/doing_import.rb +5 -7
  74. data/lib/doing/plugins/import/timing_import.rb +3 -3
  75. data/lib/doing/prompt.rb +206 -0
  76. data/lib/doing/section.rb +30 -0
  77. data/lib/doing/string.rb +123 -35
  78. data/lib/doing/util.rb +14 -6
  79. data/lib/doing/version.rb +1 -1
  80. data/lib/doing/wwid.rb +307 -614
  81. data/lib/doing.rb +6 -2
  82. data/lib/examples/plugins/capture_thing_import.rb +162 -0
  83. data/rdoc_to_mmd.rb +14 -8
  84. data/scripts/generate_bash_completions.rb +1 -1
  85. data/scripts/generate_fish_completions.rb +1 -1
  86. data/scripts/generate_zsh_completions.rb +1 -1
  87. metadata +73 -5
  88. data/lib/doing/wwidfile.rb +0 -117
@@ -102,7 +102,7 @@
102
102
  </div>
103
103
 
104
104
  <div id="footer">
105
- Generated on Thu Nov 18 16:39:11 2021 by
105
+ Generated on Sat Nov 27 10:06:03 2021 by
106
106
  <a href="http://yardoc.org" title="Yay! A Ruby Documentation Tool" target="_parent">yard</a>
107
107
  0.9.26 (ruby-3.0.1).
108
108
  </div>
data/doing.gemspec CHANGED
@@ -31,10 +31,13 @@ spec = Gem::Specification.new do |s|
31
31
  s.add_development_dependency 'redcarpet', '~> 3.5', '>= 3.5.1'
32
32
  s.add_development_dependency 'github-markup', '~> 4.0', '>= 4.0.0'
33
33
  s.add_development_dependency 'parallel_tests', '~> 3.7', '>= 3.7.3'
34
+ s.add_development_dependency 'tty-spinner', '~> 0.9', '>= 0.9.3'
34
35
  s.add_runtime_dependency('tty-progressbar', '~> 0.18', '>= 0.18.2')
35
36
  s.add_runtime_dependency('gli', '~> 2.19', '>= 2.19.2')
36
37
  s.add_runtime_dependency('haml','~>5.0.0', '>= 5.0.0')
37
38
  s.add_runtime_dependency('chronic','~> 0.10', '>= 0.10.2')
38
39
  s.add_runtime_dependency('deep_merge', '~> 1.2', '>= 1.2.1')
40
+ s.add_runtime_dependency('tty-link', '~> 0.1', '>= 0.1.1')
41
+ s.add_runtime_dependency('tty-which', '~> 0.5', '>= 0.5.0')
39
42
  # s.add_runtime_dependency('amatch', '~> 0.4', '>= 0.4.0')
40
43
  end
data/doing.rdoc CHANGED
@@ -5,14 +5,14 @@ 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.0.22
8
+ v2.1.0pre
9
9
 
10
10
  === Global Options
11
11
  === --config_file arg
12
12
 
13
13
  Use a specific configuration file. Deprecated, set $DOING_CONFIG instead.
14
14
 
15
- [Default Value] /Users/ttscoff/.doingrc
15
+ [Default Value] /Users/ttscoff/.config/doing/config.yml
16
16
 
17
17
 
18
18
  === -f|--doing_file arg
@@ -42,6 +42,11 @@ Show this message
42
42
 
43
43
 
44
44
 
45
+ === --no
46
+ Answer all yes/no menus with no
47
+
48
+
49
+
45
50
  === --[no-]notes
46
51
  Output notes if included in the template
47
52
 
@@ -72,6 +77,11 @@ Exclude auto tags and default tags
72
77
 
73
78
 
74
79
 
80
+ === --yes
81
+ Answer all yes/no menus with yes
82
+
83
+
84
+
75
85
  === Commands
76
86
  ==== Command: <tt>add_section SECTION_NAME</tt>
77
87
  Add a new section to the "doing" file
@@ -385,63 +395,98 @@ Shell to generate for (bash, zsh, fish)
385
395
  [Must Match] (?i-mx:^[bzf](?:[ai]?sh)?$)
386
396
 
387
397
 
388
- ==== Command: <tt>config KEY_PATH</tt>
398
+ ==== Command: <tt>config </tt>
389
399
  Edit the configuration file or output a value from it
390
400
 
391
- Run without arguments, `doing config` opens your `.doingrc` in an editor.
401
+ Run without arguments, `doing config` opens your `config.yml` in an editor.
392
402
  If local configurations are found in the path between the current directory
393
- and `~/.doingrc`, a menu will allow you to select which to open in the editor.
403
+ and the root (/), a menu will allow you to select which to open in the editor.
394
404
 
395
405
  It will use the editor defined in `config_editor_app`, or one specified with `--editor`.
396
406
 
397
- Use `doing config -d` to output the configuration to the terminal, and
407
+ Use `doing config get` to output the configuration to the terminal, and
398
408
  provide a dot-separated key path to get a specific value. Shows the current value
399
409
  including keys/overrides set by local configs.
400
410
  ===== Options
401
- ===== -a APP_NAME
411
+ ===== -d|--[no-]dump
412
+ DEPRECATED
413
+
414
+
415
+
416
+ ===== -u|--[no-]update
417
+ DEPRECATED
418
+
419
+
420
+
421
+ ===== Commands
422
+ ====== Command: <tt>edit </tt>
423
+ Open config file in editor
424
+
425
+
426
+ ======= Options
427
+ ======= -a|--app APP_NAME
402
428
 
403
429
  Application to use
404
430
 
405
431
  [Default Value] None
406
432
 
407
433
 
408
- ===== -b BUNDLE_ID
434
+ ======= -b|--bundle_id BUNDLE_ID
409
435
 
410
436
  Application bundle id to use
411
437
 
412
438
  [Default Value] None
413
439
 
414
440
 
415
- ===== -e|--editor EDITOR
441
+ ======= -e|--editor EDITOR
416
442
 
417
443
  Editor to use
418
444
 
419
445
  [Default Value] None
420
446
 
421
447
 
422
- ===== -o|--output FORMAT
448
+ ======= -x|--[no-]default
449
+ Use the config_editor_app defined in ~/.config/doing/config.yml (config_editor_app not set)
423
450
 
424
- Format for --dump (json|yaml|raw)
451
+
452
+
453
+ ====== Command: <tt>get|dump </tt>
454
+ Output a key's value
455
+
456
+
457
+ ======= Options
458
+ ======= -o|--output FORMAT
459
+
460
+ Format for output (json|yaml|raw)
425
461
 
426
462
  [Default Value] yaml
427
463
  [Must Match] (?-mix:^(?:y(?:aml)?|j(?:son)?|r(?:aw)?)$)
428
464
 
429
465
 
430
- ===== -d|--dump
431
- Show a config key value based on arguments. Separate key paths with colons or dots, e.g. "export_templates.html". Empty arguments outputs the entire config.
466
+ ====== Command: <tt>list </tt>
467
+ List configuration paths, including .doingrc files in the current and parent directories
468
+
469
+ Config files are listed in order of precedence (if there are multiple configs detected).
470
+ Values defined in the top item in the list will override values in configutations below it.
471
+ ====== Command: <tt>set </tt>
472
+ Set a key's value in the config file
432
473
 
433
474
 
475
+ ======= Options
476
+ ======= -r|--remove
477
+ Delete specified key
434
478
 
435
- ===== -u|--update
436
- Update config file with missing configuration options
437
479
 
438
480
 
481
+ ====== Command: <tt>undo </tt>
482
+ Undo the last change to a config file
439
483
 
440
- ===== -x
441
- Use the config_editor_app defined in ~/.doingrc (config_editor_app not set)
442
484
 
485
+ ====== Command: <tt>update|refresh </tt>
486
+ Update default config file, adding any missing keys
443
487
 
444
488
 
489
+ [Default Command] edit
445
490
  ==== Command: <tt>done|did ENTRY</tt>
446
491
  Add a completed item with @done(date). No argument finishes last entry.
447
492
 
@@ -455,9 +500,9 @@ Set finish date to specific date/time (natural langauge parsed, e.g. --at=1:30pm
455
500
  [Default Value] None
456
501
 
457
502
 
458
- ===== -b|--back DATE_STRING
503
+ ===== -b|--back|--started DATE_STRING
459
504
 
460
- Backdate start date by interval [4pm|20m|2h|yesterday noon]
505
+ Backdate start date by interval or set to time [4pm|20m|2h|"yesterday noon"]
461
506
 
462
507
  [Default Value] None
463
508
 
@@ -710,7 +755,7 @@ List commands one per line, to assist with shell completion
710
755
  ==== Command: <tt>import PATH</tt>
711
756
  Import entries from an external source
712
757
 
713
- Imports entries from other sources. Available plugins: calendar, doing, timing
758
+ Imports entries from other sources. Available plugins: calendar, capturething, doing, timing
714
759
  ===== Options
715
760
  ===== --after DATE_STRING
716
761
 
@@ -773,7 +818,7 @@ Tag all imported entries
773
818
 
774
819
  ===== --type TYPE
775
820
 
776
- Import type (calendar|doing|timing)
821
+ Import type (calendar|capturething|doing|timing)
777
822
 
778
823
  [Default Value] doing
779
824
 
@@ -1086,9 +1131,9 @@ A parenthetical at the end of the entry will be converted to a note.
1086
1131
 
1087
1132
  Run with no argument to create a new entry using vim.
1088
1133
  ===== Options
1089
- ===== -b|--back DATE_STRING
1134
+ ===== -b|--back|--started DATE_STRING
1090
1135
 
1091
- Backdate start time [4pm|20m|2h|yesterday noon]
1136
+ Backdate start time [4pm|20m|2h|"yesterday noon"]
1092
1137
 
1093
1138
  [Default Value] None
1094
1139
 
@@ -1159,7 +1204,7 @@ Show time totals at the end of output
1159
1204
  ==== Command: <tt>open </tt>
1160
1205
  Open the "doing" file in an editor
1161
1206
 
1162
- `doing open` defaults to using the editor_app setting in /Users/ttscoff/.doingrc (not set).
1207
+ `doing open` defaults to using the editor_app setting in /Users/ttscoff/.config/doing/config.yml (not set).
1163
1208
  ===== Options
1164
1209
  ===== -a|--app APP_NAME
1165
1210
 
@@ -1175,6 +1220,13 @@ Open with app bundle id
1175
1220
  [Default Value] None
1176
1221
 
1177
1222
 
1223
+ ===== -e|--editor COMMAND
1224
+
1225
+ Open with editor command (e.g. vim, mate)
1226
+
1227
+ [Default Value] None
1228
+
1229
+
1178
1230
  ==== Command: <tt>plugins </tt>
1179
1231
  List installed plugins
1180
1232
 
@@ -1734,7 +1786,7 @@ Tag the last X entries containing TAG.
1734
1786
 
1735
1787
 
1736
1788
  ===== -a|--autotag
1737
- Autotag entries based on autotag configuration in ~/.doingrc
1789
+ Autotag entries based on autotag configuration in ~/.config/doing/config.yml
1738
1790
 
1739
1791
 
1740
1792
 
@@ -1784,7 +1836,7 @@ Output HTML, CSS, and Markdown (ERB) templates for customization
1784
1836
  Templates are printed to STDOUT for piping to a file.
1785
1837
  Save them and use them in the configuration file under export_templates.
1786
1838
  ===== Options
1787
- ===== -c
1839
+ ===== -c|--[no-]column
1788
1840
  List in single column for completion
1789
1841
 
1790
1842
 
@@ -1850,7 +1902,7 @@ Show time totals at the end of output
1850
1902
 
1851
1903
 
1852
1904
  ==== Command: <tt>undo </tt>
1853
- Undo the last change to the doing_file
1905
+ Undo the last change to the Doing file
1854
1906
 
1855
1907
 
1856
1908
  ===== Options
data/example_plugin.rb CHANGED
@@ -14,13 +14,13 @@
14
14
  # Change what the plugin says by generating a template with
15
15
  # `doing template --type say`, saving it to a file, and
16
16
  # putting the path to that file in `export_templates->say` in
17
- # .doingrc.
17
+ # config.yml.
18
18
  #
19
19
  # export_templates:
20
20
  # say: /path/to/template.txt
21
21
  #
22
22
  # Use a different voice by adding a `say_voice` key to your
23
- # .doingrc. Use `say -v ?` to see available voices.
23
+ # config.yml. Use `say -v ?` to see available voices.
24
24
  #
25
25
  # say_voice: Zarvox
26
26
 
@@ -136,9 +136,9 @@ module Doing
136
136
  # or :map to generate output.
137
137
  i = items[-1]
138
138
 
139
- # Format the item. Items are a hash with 4 keys: date,
140
- # title, section (parent section), and note. Start
141
- # time is in item.date. The wwid object has some
139
+ # Format the item. Items are an object with 4 methods:
140
+ # date, title, section (parent section), and note.
141
+ # Start time is in item.date. The wwid object has some
142
142
  # methods for calculation and formatting, including
143
143
  # wwid.item.end_date to convert the @done timestamp to
144
144
  # an end date.
@@ -48,7 +48,7 @@ function _doing() {
48
48
  'template:Output HTML'
49
49
  'test:Test Stuff'
50
50
  'today:List entries from today'
51
- 'undo:Undo the last change to the doing_file'
51
+ 'undo:Undo the last change to the Doing file'
52
52
  'view:Display a user-created view'
53
53
  'views:List available custom views'
54
54
  'wiki:Output a tag wiki'
@@ -66,22 +66,22 @@ function _doing() {
66
66
  args=( )
67
67
  ;;
68
68
  again)
69
- args=( "(--bool=)--bool=}[Boolean used to combine multiple tags]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-e,--editor}"[Edit duplicated entry with vim before adding]" {-i,--interactive}"[Select item to resume from a menu of matching entries]" "(--in=)--in=}[Add new entry to section]" {-n,--note=}"[Note]" "(--not)--not}[Resume items that *dont* match search/tag filterst* match search/tag filters]" {-s,--section=}"[Get last entry from a specific section]" "(--search=)--search=}[Repeat last entry matching search]" "(--tag=)--tag=}[Repeat last entry matching tags]" {-x,--exact}"[Force exact search string matching]" )
69
+ args=( )
70
70
  ;;
71
71
  resume)
72
- args=( "(--bool=)--bool=}[Boolean used to combine multiple tags]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-e,--editor}"[Edit duplicated entry with vim before adding]" {-i,--interactive}"[Select item to resume from a menu of matching entries]" "(--in=)--in=}[Add new entry to section]" {-n,--note=}"[Note]" "(--not)--not}[Resume items that *dont* match search/tag filterst* match search/tag filters]" {-s,--section=}"[Get last entry from a specific section]" "(--search=)--search=}[Repeat last entry matching search]" "(--tag=)--tag=}[Repeat last entry matching tags]" {-x,--exact}"[Force exact search string matching]" )
72
+ args=( )
73
73
  ;;
74
74
  archive)
75
- args=( "(--before=)--before=}[Archive entries older than date]" "(--bool=)--bool=}[Tag boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-k,--keep=}"[How many items to keep]" "(--label)--label}[Label moved items with @from(SECTION_NAME)]" "(--not)--not}[Show items that *dont* match search stringt* match search string]" "(--search=)--search=}[Search filter]" {-t,--to=}"[Move entries to]" "(--tag=)--tag=}[Tag filter]" {-x,--exact}"[Force exact search string matching]" )
75
+ args=( )
76
76
  ;;
77
77
  move)
78
- args=( "(--before=)--before=}[Archive entries older than date]" "(--bool=)--bool=}[Tag boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-k,--keep=}"[How many items to keep]" "(--label)--label}[Label moved items with @from(SECTION_NAME)]" "(--not)--not}[Show items that *dont* match search stringt* match search string]" "(--search=)--search=}[Search filter]" {-t,--to=}"[Move entries to]" "(--tag=)--tag=}[Tag filter]" {-x,--exact}"[Force exact search string matching]" )
78
+ args=( )
79
79
  ;;
80
80
  autotag)
81
- args=( "(--bool=)--bool=}[Boolean]" {-c,--count=}"[How many recent entries to autotag]" "(--force)--force}[Dont ask permission to autotag all entries when count is 0t ask permission to autotag all entries when count is 0]" {-i,--interactive}"[Select item(s) to tag from a menu of matching entries]" {-s,--section=}"[Section]" "(--search=)--search=}[Autotag entries matching search filter]" "(--tag=)--tag=}[Autotag the last X entries containing TAG]" {-u,--unfinished}"[Autotag last entry]" )
81
+ args=( )
82
82
  ;;
83
83
  cancel)
84
- 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]" {-x,--exact}"[Force exact search string matching]" )
84
+ args=( )
85
85
  ;;
86
86
  choose)
87
87
  args=( )
@@ -90,115 +90,115 @@ function _doing() {
90
90
  args=( )
91
91
  ;;
92
92
  completion)
93
- args=( {-f,--file=}"[File to write output to]" {-t,--type=}"[Shell to generate for]" )
93
+ args=( )
94
94
  ;;
95
95
  config)
96
- args=( {-d,--dump}"[Show a config key value based on arguments]" {-e,--editor=}"[Editor to use]" {-o,--output=}"[Format for --dump]" {-u,--update}"[Update config file with missing configuration options]" )
96
+ args=( )
97
97
  ;;
98
98
  done)
99
- args=( {-a,--archive}"[Immediately archive the entry]" "(--at=)--at=}[Set finish date to specific date/time]" {-b,--back=}"[Backdate start date by interval [4pm|20m|2h|yesterday noon]]" "(--date)--date}[Include date]" {-e,--editor}"[Edit entry with vim]" {-n,--note=}"[Include a note]" {-r,--remove}"[Remove @done tag]" {-s,--section=}"[Section]" {-t,--took=}"[Set completion date to start date plus interval]" {-u,--unfinished}"[Finish last entry not already marked @done]" )
99
+ args=( )
100
100
  ;;
101
101
  did)
102
- args=( {-a,--archive}"[Immediately archive the entry]" "(--at=)--at=}[Set finish date to specific date/time]" {-b,--back=}"[Backdate start date by interval [4pm|20m|2h|yesterday noon]]" "(--date)--date}[Include date]" {-e,--editor}"[Edit entry with vim]" {-n,--note=}"[Include a note]" {-r,--remove}"[Remove @done tag]" {-s,--section=}"[Section]" {-t,--took=}"[Set completion date to start date plus interval]" {-u,--unfinished}"[Finish last entry not already marked @done]" )
102
+ args=( )
103
103
  ;;
104
104
  finish)
105
- args=( {-a,--archive}"[Archive entries]" "(--at=)--at=}[Set finish date to specific date/time]" "(--auto)--auto}[Auto-generate finish dates from next entrys start times start time]" {-b,--back=}"[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]" {-t,--took=}"[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]" {-x,--exact}"[Force exact search string matching]" )
105
+ args=( )
106
106
  ;;
107
107
  grep)
108
- args=( "(--after=)--after=}[Constrain search to entries newer than date]" "(--before=)--before=}[Constrain search to entries older than date]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-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]" {-x,--exact}"[Force exact string matching]" )
108
+ args=( )
109
109
  ;;
110
110
  search)
111
- args=( "(--after=)--after=}[Constrain search to entries newer than date]" "(--before=)--before=}[Constrain search to entries older than date]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-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]" {-x,--exact}"[Force exact string matching]" )
111
+ args=( )
112
112
  ;;
113
113
  help)
114
114
  args=( )
115
115
  ;;
116
116
  import)
117
- 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]" "(--tag=)--tag=}[Tag all imported entries]" "(--type=)--type=}[Import type]" {-x,--exact}"[Force exact search string matching]" )
117
+ args=( )
118
118
  ;;
119
119
  last)
120
- args=( "(--bool=)--bool=}[Tag boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-e,--editor}"[Edit entry with vim]" "(--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]" {-x,--exact}"[Force exact search string matching]" )
120
+ args=( )
121
121
  ;;
122
122
  later)
123
- args=( {-b,--back=}"[Backdate start time to date string [4pm|20m|2h|yesterday noon]]" {-e,--editor}"[Edit entry with vim]" {-n,--note=}"[Note]" )
123
+ args=( )
124
124
  ;;
125
125
  mark)
126
- args=( "(--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 flag all entries when count is 0t ask permission to flag all entries when count is 0]" {-i,--interactive}"[Select item(s) to flag from a menu of matching entries]" "(--not)--not}[Flag items that *dont* match search/tag/date filterst* match search/tag/date filters]" {-r,--remove}"[Remove flag]" {-s,--section=}"[Section]" "(--search=)--search=}[Flag the last entry matching search filter]" "(--tag=)--tag=}[Flag the last entry containing TAG]" {-u,--unfinished}"[Flag last entry]" {-x,--exact}"[Force exact search string matching]" )
126
+ args=( )
127
127
  ;;
128
128
  flag)
129
- args=( "(--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 flag all entries when count is 0t ask permission to flag all entries when count is 0]" {-i,--interactive}"[Select item(s) to flag from a menu of matching entries]" "(--not)--not}[Flag items that *dont* match search/tag/date filterst* match search/tag/date filters]" {-r,--remove}"[Remove flag]" {-s,--section=}"[Section]" "(--search=)--search=}[Flag the last entry matching search filter]" "(--tag=)--tag=}[Flag the last entry containing TAG]" {-u,--unfinished}"[Flag last entry]" {-x,--exact}"[Force exact search string matching]" )
129
+ args=( )
130
130
  ;;
131
131
  meanwhile)
132
- args=( {-a,--archive}"[Archive previous @meanwhile entry]" {-b,--back=}"[Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]]" {-e,--editor}"[Edit entry with vim]" {-n,--note=}"[Note]" {-s,--section=}"[Section]" )
132
+ args=( )
133
133
  ;;
134
134
  note)
135
- args=( "(--bool=)--bool=}[Boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-e,--editor}"[Edit entry with vim]" {-i,--interactive}"[Select item for new note from a menu of matching entries]" "(--not)--not}[Add note to item that *doesnt* match search/tag filterst* match search/tag filters]" {-r,--remove}"[Replace/Remove last entrys notes note]" {-s,--section=}"[Section]" "(--search=)--search=}[Add/remove note from last entry matching search filter]" "(--tag=)--tag=}[Add/remove note from last entry matching tag]" {-x,--exact}"[Force exact search string matching]" )
135
+ args=( )
136
136
  ;;
137
137
  now)
138
- args=( {-b,--back=}"[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]" )
138
+ args=( )
139
139
  ;;
140
140
  next)
141
- args=( {-b,--back=}"[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]" )
141
+ args=( )
142
142
  ;;
143
143
  on)
144
- args=( {-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]" )
144
+ args=( )
145
145
  ;;
146
146
  open)
147
- args=( {-a,--app=}"[Open with app name]" {-b,--bundle_id=}"[Open with app bundle id]" )
147
+ args=( )
148
148
  ;;
149
149
  plugins)
150
- args=( {-c,--column}"[List in single column for completion]" {-t,--type=}"[List plugins of type]" )
150
+ args=( )
151
151
  ;;
152
152
  recent)
153
- args=( {-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]" )
153
+ args=( )
154
154
  ;;
155
155
  reset)
156
- 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]" {-x,--exact}"[Force exact search string matching]" )
156
+ args=( )
157
157
  ;;
158
158
  begin)
159
- 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]" {-x,--exact}"[Force exact search string matching]" )
159
+ args=( )
160
160
  ;;
161
161
  rotate)
162
- args=( "(--before=)--before=}[Rotate entries older than date]" "(--bool=)--bool=}[Tag boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-k,--keep=}"[How many items to keep in each section]" "(--not)--not}[Rotate items that *dont* match search string or tag filtert* match search string or tag filter]" {-s,--section=}"[Section to rotate]" "(--search=)--search=}[Search filter]" "(--tag=)--tag=}[Tag filter]" {-x,--exact}"[Force exact search string matching]" )
162
+ args=( )
163
163
  ;;
164
164
  sections)
165
- args=( {-c,--column}"[List in single column]" )
165
+ args=( )
166
166
  ;;
167
167
  select)
168
- args=( {-a,--archive}"[Archive selected items]" "(--resume)--resume}[Copy selection as a new entry with current time and no @done tag]" {-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]" {-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]" "(--search=)--search=}[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]" {-t,--tag=}"[Tag selected entries]" {-x,--exact}"[Force exact search string matching]" )
168
+ args=( )
169
169
  ;;
170
170
  show)
171
- args=( {-a,--age=}"[Age]" "(--after=)--after=}[View entries newer than date]" {-b,--bool=}"[Tag boolean]" "(--before=)--before=}[View entries older than date]" {-c,--count=}"[Max count to show]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-f,--from=}"[Date range to show]" {-i,--interactive}"[Select from a menu of matching entries to perform additional operations]" "(--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]" {-x,--exact}"[Force exact search string matching]" )
171
+ args=( )
172
172
  ;;
173
173
  since)
174
- args=( {-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]" )
174
+ args=( )
175
175
  ;;
176
176
  tag)
177
- 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]" {-x,--exact}"[Force exact search string matching]" )
177
+ args=( )
178
178
  ;;
179
179
  template)
180
- args=( {-l,--list}"[List all available templates]" )
180
+ args=( )
181
181
  ;;
182
182
  test)
183
183
  args=( )
184
184
  ;;
185
185
  today)
186
- args=( "(--after=)--after=}[View entries after specified time]" "(--before=)--before=}[View entries before specified time]" {-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]" )
186
+ args=( )
187
187
  ;;
188
188
  undo)
189
- args=( {-f,--file=}"[Specify alternate doing file]" )
189
+ args=( )
190
190
  ;;
191
191
  view)
192
- args=( "(--after=)--after=}[View entries newer than date]" {-b,--bool=}"[Tag boolean]" "(--before=)--before=}[View entries older than date]" {-c,--count=}"[Count to display]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" "(--color)--color}[Include colors in output]" {-i,--interactive}"[Select from a menu of matching entries to perform additional 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]" "(--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]" {-x,--exact}"[Force exact search string matching]" )
192
+ args=( )
193
193
  ;;
194
194
  views)
195
- args=( {-c,--column}"[List in single column]" )
195
+ args=( )
196
196
  ;;
197
197
  wiki)
198
- 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]" )
198
+ args=( )
199
199
  ;;
200
200
  yesterday)
201
- args=( "(--after=)--after=}[View entries after specified time]" "(--before=)--before=}[View entries before specified time]" {-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]" )
201
+ args=( )
202
202
  ;;
203
203
  esac
204
204
 
@@ -71,9 +71,9 @@ _doing_completion() {
71
71
  _doing_config() {
72
72
 
73
73
  if [[ "$token" == --* ]]; then
74
- COMPREPLY=( $( compgen -W '--dump --editor --output --update' -- $token ) )
74
+ COMPREPLY=( $( compgen -W '--dump --update' -- $token ) )
75
75
  elif [[ "$token" == -* ]]; then
76
- COMPREPLY=( $( compgen -W '-d -e -o -u --dump --editor --output --update' -- $token ) )
76
+ COMPREPLY=( $( compgen -W '-d -u --dump --update' -- $token ) )
77
77
 
78
78
  fi
79
79
  }
@@ -81,9 +81,9 @@ _doing_config() {
81
81
  _doing_done() {
82
82
 
83
83
  if [[ "$token" == --* ]]; then
84
- COMPREPLY=( $( compgen -W '--archive --at --back --date --editor --note --remove --section --took --unfinished' -- $token ) )
84
+ COMPREPLY=( $( compgen -W '--archive --at --started --date --editor --note --remove --section --took --unfinished' -- $token ) )
85
85
  elif [[ "$token" == -* ]]; then
86
- COMPREPLY=( $( compgen -W '-a -b -e -n -r -s -t -u --archive --at --back --date --editor --note --remove --section --took --unfinished' -- $token ) )
86
+ COMPREPLY=( $( compgen -W '-a -e -n -r -s -t -u --archive --at --started --date --editor --note --remove --section --took --unfinished' -- $token ) )
87
87
 
88
88
  fi
89
89
  }
@@ -181,9 +181,9 @@ _doing_note() {
181
181
  _doing_now() {
182
182
 
183
183
  if [[ "$token" == --* ]]; then
184
- COMPREPLY=( $( compgen -W '--back --editor --finish_last --note --section' -- $token ) )
184
+ COMPREPLY=( $( compgen -W '--started --editor --finish_last --note --section' -- $token ) )
185
185
  elif [[ "$token" == -* ]]; then
186
- COMPREPLY=( $( compgen -W '-b -e -f -n -s --back --editor --finish_last --note --section' -- $token ) )
186
+ COMPREPLY=( $( compgen -W '-e -f -n -s --started --editor --finish_last --note --section' -- $token ) )
187
187
 
188
188
  fi
189
189
  }
@@ -201,9 +201,9 @@ _doing_on() {
201
201
  _doing_open() {
202
202
 
203
203
  if [[ "$token" == --* ]]; then
204
- COMPREPLY=( $( compgen -W '--app --bundle_id' -- $token ) )
204
+ COMPREPLY=( $( compgen -W '--app --bundle_id --editor' -- $token ) )
205
205
  elif [[ "$token" == -* ]]; then
206
- COMPREPLY=( $( compgen -W '-a -b --app --bundle_id' -- $token ) )
206
+ COMPREPLY=( $( compgen -W '-a -b -e --app --bundle_id --editor' -- $token ) )
207
207
 
208
208
  fi
209
209
  }
@@ -321,9 +321,9 @@ _doing_tag() {
321
321
  _doing_template() {
322
322
 
323
323
  if [[ "$token" == --* ]]; then
324
- COMPREPLY=( $( compgen -W '--list' -- $token ) )
324
+ COMPREPLY=( $( compgen -W '--column --list' -- $token ) )
325
325
  elif [[ "$token" == -* ]]; then
326
- COMPREPLY=( $( compgen -W '-l --list' -- $token ) )
326
+ COMPREPLY=( $( compgen -W '-c -l --column --list' -- $token ) )
327
327
 
328
328
  fi
329
329
  }