doing 2.0.22 → 2.1.0pre

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