doing 1.0.93 → 2.0.6.pre

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 (73) hide show
  1. checksums.yaml +4 -4
  2. data/AUTHORS +19 -0
  3. data/CHANGELOG.md +616 -0
  4. data/COMMANDS.md +1181 -0
  5. data/Gemfile +2 -0
  6. data/Gemfile.lock +110 -0
  7. data/LICENSE +23 -0
  8. data/README.md +15 -699
  9. data/Rakefile +79 -0
  10. data/_config.yml +1 -0
  11. data/bin/doing +1055 -494
  12. data/doing.gemspec +34 -0
  13. data/doing.rdoc +1839 -0
  14. data/example_plugin.rb +209 -0
  15. data/generate_completions.sh +5 -0
  16. data/img/doing-colors.jpg +0 -0
  17. data/img/doing-printf-wrap-800.jpg +0 -0
  18. data/img/doing-show-note-formatting-800.jpg +0 -0
  19. data/lib/completion/_doing.zsh +203 -0
  20. data/lib/completion/doing.bash +449 -0
  21. data/lib/completion/doing.fish +329 -0
  22. data/lib/doing/array.rb +8 -0
  23. data/lib/doing/cli_status.rb +70 -0
  24. data/lib/doing/colors.rb +136 -0
  25. data/lib/doing/configuration.rb +312 -0
  26. data/lib/doing/errors.rb +109 -0
  27. data/lib/doing/hash.rb +31 -0
  28. data/lib/doing/hooks.rb +59 -0
  29. data/lib/doing/item.rb +155 -0
  30. data/lib/doing/log_adapter.rb +344 -0
  31. data/lib/doing/markdown_document_listener.rb +174 -0
  32. data/lib/doing/note.rb +59 -0
  33. data/lib/doing/pager.rb +95 -0
  34. data/lib/doing/plugin_manager.rb +208 -0
  35. data/lib/doing/plugins/export/csv_export.rb +48 -0
  36. data/lib/doing/plugins/export/html_export.rb +83 -0
  37. data/lib/doing/plugins/export/json_export.rb +140 -0
  38. data/lib/doing/plugins/export/markdown_export.rb +85 -0
  39. data/lib/doing/plugins/export/taskpaper_export.rb +34 -0
  40. data/lib/doing/plugins/export/template_export.rb +141 -0
  41. data/lib/doing/plugins/import/cal_to_json.scpt +0 -0
  42. data/lib/doing/plugins/import/calendar_import.rb +76 -0
  43. data/lib/doing/plugins/import/doing_import.rb +144 -0
  44. data/lib/doing/plugins/import/timing_import.rb +78 -0
  45. data/lib/doing/string.rb +348 -0
  46. data/lib/doing/symbol.rb +16 -0
  47. data/lib/doing/time.rb +18 -0
  48. data/lib/doing/util.rb +186 -0
  49. data/lib/doing/version.rb +1 -1
  50. data/lib/doing/wwid.rb +1868 -2349
  51. data/lib/doing/wwidfile.rb +117 -0
  52. data/lib/doing.rb +43 -3
  53. data/lib/examples/commands/autotag.rb +63 -0
  54. data/lib/examples/commands/wiki.rb +81 -0
  55. data/lib/examples/plugins/hooks.rb +22 -0
  56. data/lib/examples/plugins/say_export.rb +202 -0
  57. data/lib/examples/plugins/templates/wiki.css +169 -0
  58. data/lib/examples/plugins/templates/wiki.haml +27 -0
  59. data/lib/examples/plugins/templates/wiki_index.haml +18 -0
  60. data/lib/examples/plugins/wiki_export.rb +87 -0
  61. data/lib/templates/doing-markdown.erb +5 -0
  62. data/man/doing.1 +964 -0
  63. data/man/doing.1.html +711 -0
  64. data/man/doing.1.ronn +600 -0
  65. data/package-lock.json +3 -0
  66. data/rdoc_to_mmd.rb +42 -0
  67. data/rdocfixer.rb +13 -0
  68. data/scripts/generate_bash_completions.rb +211 -0
  69. data/scripts/generate_fish_completions.rb +204 -0
  70. data/scripts/generate_zsh_completions.rb +168 -0
  71. metadata +82 -7
  72. data/lib/doing/helpers.rb +0 -191
  73. data/lib/doing/markdown_export.rb +0 -16
@@ -0,0 +1,449 @@
1
+ _doing_again() {
2
+
3
+ if [[ "$token" == --* ]]; then
4
+ COMPREPLY=( $( compgen -W '--bool --editor --interactive --in --note --section --search --tag' -- $token ) )
5
+ elif [[ "$token" == -* ]]; then
6
+ COMPREPLY=( $( compgen -W '-e -i -n -s --bool --editor --interactive --in --note --section --search --tag' -- $token ) )
7
+
8
+ fi
9
+ }
10
+
11
+ _doing_archive() {
12
+ OLD_IFS="$IFS"
13
+ local token=${COMP_WORDS[$COMP_CWORD]}
14
+ IFS=$' '
15
+ local words=$(doing sections)
16
+ IFS="$OLD_IFS"
17
+
18
+ if [[ "$token" == --* ]]; then
19
+ COMPREPLY=( $( compgen -W '--before --bool --keep --label --search --to --tag' -- $token ) )
20
+ elif [[ "$token" == -* ]]; then
21
+ COMPREPLY=( $( compgen -W '-k -t --before --bool --keep --label --search --to --tag' -- $token ) )
22
+ else
23
+ local nocasematchWasOff=0
24
+ shopt nocasematch >/dev/null || nocasematchWasOff=1
25
+ (( nocasematchWasOff )) && shopt -s nocasematch
26
+ local w matches=()
27
+ OLD_IFS="$IFS"
28
+ IFS=$' '‰
29
+ for w in $words; do
30
+ if [[ "$w" == "$token"* ]]; then
31
+ matches+=("${w// / }")
32
+ fi
33
+ done
34
+ IFS="$OLD_IFS"
35
+ (( nocasematchWasOff )) && shopt -u nocasematch
36
+ COMPREPLY=("${matches[@]}")
37
+
38
+ fi
39
+ }
40
+
41
+ _doing_autotag() {
42
+
43
+ if [[ "$token" == --* ]]; then
44
+ COMPREPLY=( $( compgen -W '--bool --count --force --interactive --section --search --tag --unfinished' -- $token ) )
45
+ elif [[ "$token" == -* ]]; then
46
+ COMPREPLY=( $( compgen -W '-c -i -s -u --bool --count --force --interactive --section --search --tag --unfinished' -- $token ) )
47
+
48
+ fi
49
+ }
50
+
51
+ _doing_cancel() {
52
+
53
+ if [[ "$token" == --* ]]; then
54
+ COMPREPLY=( $( compgen -W '--archive --bool --interactive --section --tag --unfinished' -- $token ) )
55
+ elif [[ "$token" == -* ]]; then
56
+ COMPREPLY=( $( compgen -W '-a -i -s -u --archive --bool --interactive --section --tag --unfinished' -- $token ) )
57
+
58
+ fi
59
+ }
60
+
61
+ _doing_config() {
62
+
63
+ if [[ "$token" == --* ]]; then
64
+ COMPREPLY=( $( compgen -W '--dump --editor --output --update' -- $token ) )
65
+ elif [[ "$token" == -* ]]; then
66
+ COMPREPLY=( $( compgen -W '-d -e -o -u --dump --editor --output --update' -- $token ) )
67
+
68
+ fi
69
+ }
70
+
71
+ _doing_done() {
72
+
73
+ if [[ "$token" == --* ]]; then
74
+ COMPREPLY=( $( compgen -W '--archive --at --back --date --editor --note --remove --section --took --unfinished' -- $token ) )
75
+ elif [[ "$token" == -* ]]; then
76
+ COMPREPLY=( $( compgen -W '-a -b -e -n -r -s -t -u --archive --at --back --date --editor --note --remove --section --took --unfinished' -- $token ) )
77
+
78
+ fi
79
+ }
80
+
81
+ _doing_finish() {
82
+
83
+ if [[ "$token" == --* ]]; then
84
+ COMPREPLY=( $( compgen -W '--archive --at --auto --back --bool --date --interactive --remove --section --search --took --tag --unfinished' -- $token ) )
85
+ elif [[ "$token" == -* ]]; then
86
+ COMPREPLY=( $( compgen -W '-a -b -i -r -s -t -u --archive --at --auto --back --bool --date --interactive --remove --section --search --took --tag --unfinished' -- $token ) )
87
+
88
+ fi
89
+ }
90
+
91
+ _doing_grep() {
92
+
93
+ if [[ "$token" == --* ]]; then
94
+ COMPREPLY=( $( compgen -W '--after --before --interactive --output --only_timed --section --times --tag_sort --totals' -- $token ) )
95
+ elif [[ "$token" == -* ]]; then
96
+ COMPREPLY=( $( compgen -W '-i -o -s -t --after --before --interactive --output --only_timed --section --times --tag_sort --totals' -- $token ) )
97
+
98
+ fi
99
+ }
100
+
101
+ _doing_help() {
102
+
103
+ if [[ "$token" == --* ]]; then
104
+ COMPREPLY=( $( compgen -W '' -- $token ) )
105
+ elif [[ "$token" == -* ]]; then
106
+ COMPREPLY=( $( compgen -W ' ' -- $token ) )
107
+
108
+ fi
109
+ }
110
+
111
+ _doing_import() {
112
+
113
+ if [[ "$token" == --* ]]; then
114
+ COMPREPLY=( $( compgen -W '--after --autotag --before --from --only_timed --overlap --prefix --section --search --tag --type' -- $token ) )
115
+ elif [[ "$token" == -* ]]; then
116
+ COMPREPLY=( $( compgen -W '-f -s --after --autotag --before --from --only_timed --overlap --prefix --section --search --tag --type' -- $token ) )
117
+
118
+ fi
119
+ }
120
+
121
+ _doing_last() {
122
+
123
+ if [[ "$token" == --* ]]; then
124
+ COMPREPLY=( $( compgen -W '--bool --editor --section --search --tag' -- $token ) )
125
+ elif [[ "$token" == -* ]]; then
126
+ COMPREPLY=( $( compgen -W '-e -s --bool --editor --section --search --tag' -- $token ) )
127
+
128
+ fi
129
+ }
130
+
131
+ _doing_later() {
132
+
133
+ if [[ "$token" == --* ]]; then
134
+ COMPREPLY=( $( compgen -W '--back --editor --note' -- $token ) )
135
+ elif [[ "$token" == -* ]]; then
136
+ COMPREPLY=( $( compgen -W '-b -e -n --back --editor --note' -- $token ) )
137
+
138
+ fi
139
+ }
140
+
141
+ _doing_mark() {
142
+
143
+ if [[ "$token" == --* ]]; then
144
+ COMPREPLY=( $( compgen -W '--bool --count --date --force --interactive --remove --section --search --tag --unfinished' -- $token ) )
145
+ elif [[ "$token" == -* ]]; then
146
+ COMPREPLY=( $( compgen -W '-c -d -i -r -s -u --bool --count --date --force --interactive --remove --section --search --tag --unfinished' -- $token ) )
147
+
148
+ fi
149
+ }
150
+
151
+ _doing_meanwhile() {
152
+
153
+ if [[ "$token" == --* ]]; then
154
+ COMPREPLY=( $( compgen -W '--archive --back --editor --note --section' -- $token ) )
155
+ elif [[ "$token" == -* ]]; then
156
+ COMPREPLY=( $( compgen -W '-a -b -e -n -s --archive --back --editor --note --section' -- $token ) )
157
+
158
+ fi
159
+ }
160
+
161
+ _doing_note() {
162
+
163
+ if [[ "$token" == --* ]]; then
164
+ COMPREPLY=( $( compgen -W '--bool --editor --interactive --remove --section --search --tag' -- $token ) )
165
+ elif [[ "$token" == -* ]]; then
166
+ COMPREPLY=( $( compgen -W '-e -i -r -s --bool --editor --interactive --remove --section --search --tag' -- $token ) )
167
+
168
+ fi
169
+ }
170
+
171
+ _doing_now() {
172
+
173
+ if [[ "$token" == --* ]]; then
174
+ COMPREPLY=( $( compgen -W '--back --editor --finish_last --note --section' -- $token ) )
175
+ elif [[ "$token" == -* ]]; then
176
+ COMPREPLY=( $( compgen -W '-b -e -f -n -s --back --editor --finish_last --note --section' -- $token ) )
177
+
178
+ fi
179
+ }
180
+
181
+ _doing_on() {
182
+
183
+ if [[ "$token" == --* ]]; then
184
+ COMPREPLY=( $( compgen -W '--output --section --times --tag_sort --totals' -- $token ) )
185
+ elif [[ "$token" == -* ]]; then
186
+ COMPREPLY=( $( compgen -W '-o -s -t --output --section --times --tag_sort --totals' -- $token ) )
187
+
188
+ fi
189
+ }
190
+
191
+ _doing_open() {
192
+
193
+ if [[ "$token" == --* ]]; then
194
+ COMPREPLY=( $( compgen -W '--app --bundle_id' -- $token ) )
195
+ elif [[ "$token" == -* ]]; then
196
+ COMPREPLY=( $( compgen -W '-a -b --app --bundle_id' -- $token ) )
197
+
198
+ fi
199
+ }
200
+
201
+ _doing_plugins() {
202
+
203
+ if [[ "$token" == --* ]]; then
204
+ COMPREPLY=( $( compgen -W '--column --type' -- $token ) )
205
+ elif [[ "$token" == -* ]]; then
206
+ COMPREPLY=( $( compgen -W '-c -t --column --type' -- $token ) )
207
+
208
+ fi
209
+ }
210
+
211
+ _doing_recent() {
212
+
213
+ if [[ "$token" == --* ]]; then
214
+ COMPREPLY=( $( compgen -W '--interactive --section --times --tag_sort --totals' -- $token ) )
215
+ elif [[ "$token" == -* ]]; then
216
+ COMPREPLY=( $( compgen -W '-i -s -t --interactive --section --times --tag_sort --totals' -- $token ) )
217
+
218
+ fi
219
+ }
220
+
221
+ _doing_reset() {
222
+
223
+ if [[ "$token" == --* ]]; then
224
+ COMPREPLY=( $( compgen -W '--bool --interactive --resume --section --search --tag' -- $token ) )
225
+ elif [[ "$token" == -* ]]; then
226
+ COMPREPLY=( $( compgen -W '-i -r -s --bool --interactive --resume --section --search --tag' -- $token ) )
227
+
228
+ fi
229
+ }
230
+
231
+ _doing_rotate() {
232
+
233
+ if [[ "$token" == --* ]]; then
234
+ COMPREPLY=( $( compgen -W '--before --bool --keep --section --search --tag' -- $token ) )
235
+ elif [[ "$token" == -* ]]; then
236
+ COMPREPLY=( $( compgen -W '-k -s --before --bool --keep --section --search --tag' -- $token ) )
237
+
238
+ fi
239
+ }
240
+
241
+ _doing_sections() {
242
+
243
+ if [[ "$token" == --* ]]; then
244
+ COMPREPLY=( $( compgen -W '--column' -- $token ) )
245
+ elif [[ "$token" == -* ]]; then
246
+ COMPREPLY=( $( compgen -W '-c --column' -- $token ) )
247
+
248
+ fi
249
+ }
250
+
251
+ _doing_select() {
252
+
253
+ if [[ "$token" == --* ]]; then
254
+ COMPREPLY=( $( compgen -W '--archive --resume --cancel --delete --editor --finish --flag --force --move --menu --output --search --remove --section --save_to --tag' -- $token ) )
255
+ elif [[ "$token" == -* ]]; then
256
+ COMPREPLY=( $( compgen -W '-a -c -d -e -f -m -o -r -s -t --archive --resume --cancel --delete --editor --finish --flag --force --move --menu --output --search --remove --section --save_to --tag' -- $token ) )
257
+
258
+ fi
259
+ }
260
+
261
+ _doing_show() {
262
+ OLD_IFS="$IFS"
263
+ local token=${COMP_WORDS[$COMP_CWORD]}
264
+ IFS=$' '
265
+ local words=$(doing sections)
266
+ IFS="$OLD_IFS"
267
+
268
+ if [[ "$token" == --* ]]; then
269
+ COMPREPLY=( $( compgen -W '--age --after --bool --before --count --from --interactive --output --only_timed --sort --search --times --tag --tag_order --tag_sort --totals' -- $token ) )
270
+ elif [[ "$token" == -* ]]; then
271
+ COMPREPLY=( $( compgen -W '-a -b -c -f -i -o -s -t --age --after --bool --before --count --from --interactive --output --only_timed --sort --search --times --tag --tag_order --tag_sort --totals' -- $token ) )
272
+ else
273
+ local nocasematchWasOff=0
274
+ shopt nocasematch >/dev/null || nocasematchWasOff=1
275
+ (( nocasematchWasOff )) && shopt -s nocasematch
276
+ local w matches=()
277
+ OLD_IFS="$IFS"
278
+ IFS=$' '‰
279
+ for w in $words; do
280
+ if [[ "$w" == "$token"* ]]; then
281
+ matches+=("${w// / }")
282
+ fi
283
+ done
284
+ IFS="$OLD_IFS"
285
+ (( nocasematchWasOff )) && shopt -u nocasematch
286
+ COMPREPLY=("${matches[@]}")
287
+
288
+ fi
289
+ }
290
+
291
+ _doing_since() {
292
+
293
+ if [[ "$token" == --* ]]; then
294
+ COMPREPLY=( $( compgen -W '--output --section --times --tag_sort --totals' -- $token ) )
295
+ elif [[ "$token" == -* ]]; then
296
+ COMPREPLY=( $( compgen -W '-o -s -t --output --section --times --tag_sort --totals' -- $token ) )
297
+
298
+ fi
299
+ }
300
+
301
+ _doing_tag() {
302
+
303
+ if [[ "$token" == --* ]]; then
304
+ COMPREPLY=( $( compgen -W '--autotag --bool --count --date --force --interactive --remove --regex --rename --section --search --tag --unfinished' -- $token ) )
305
+ elif [[ "$token" == -* ]]; then
306
+ COMPREPLY=( $( compgen -W '-a -c -d -i -r -s -u --autotag --bool --count --date --force --interactive --remove --regex --rename --section --search --tag --unfinished' -- $token ) )
307
+
308
+ fi
309
+ }
310
+
311
+ _doing_template() {
312
+
313
+ if [[ "$token" == --* ]]; then
314
+ COMPREPLY=( $( compgen -W '--list' -- $token ) )
315
+ elif [[ "$token" == -* ]]; then
316
+ COMPREPLY=( $( compgen -W '-l --list' -- $token ) )
317
+
318
+ fi
319
+ }
320
+
321
+ _doing_today() {
322
+
323
+ if [[ "$token" == --* ]]; then
324
+ COMPREPLY=( $( compgen -W '--after --before --output --section --times --tag_sort --totals' -- $token ) )
325
+ elif [[ "$token" == -* ]]; then
326
+ COMPREPLY=( $( compgen -W '-o -s -t --after --before --output --section --times --tag_sort --totals' -- $token ) )
327
+
328
+ fi
329
+ }
330
+
331
+ _doing_undo() {
332
+
333
+ if [[ "$token" == --* ]]; then
334
+ COMPREPLY=( $( compgen -W '--file' -- $token ) )
335
+ elif [[ "$token" == -* ]]; then
336
+ COMPREPLY=( $( compgen -W '-f --file' -- $token ) )
337
+
338
+ fi
339
+ }
340
+
341
+ _doing_view() {
342
+ OLD_IFS="$IFS"
343
+ local token=${COMP_WORDS[$COMP_CWORD]}
344
+ IFS=$' '
345
+ local words=$(doing views)
346
+ IFS="$OLD_IFS"
347
+
348
+ if [[ "$token" == --* ]]; then
349
+ COMPREPLY=( $( compgen -W '--after --bool --before --count --color --interactive --output --only_timed --section --search --times --tag --tag_order --tag_sort --totals' -- $token ) )
350
+ elif [[ "$token" == -* ]]; then
351
+ COMPREPLY=( $( compgen -W '-b -c -i -o -s -t --after --bool --before --count --color --interactive --output --only_timed --section --search --times --tag --tag_order --tag_sort --totals' -- $token ) )
352
+ else
353
+ local nocasematchWasOff=0
354
+ shopt nocasematch >/dev/null || nocasematchWasOff=1
355
+ (( nocasematchWasOff )) && shopt -s nocasematch
356
+ local w matches=()
357
+ OLD_IFS="$IFS"
358
+ IFS=$' '‰
359
+ for w in $words; do
360
+ if [[ "$w" == "$token"* ]]; then
361
+ matches+=("${w// / }")
362
+ fi
363
+ done
364
+ IFS="$OLD_IFS"
365
+ (( nocasematchWasOff )) && shopt -u nocasematch
366
+ COMPREPLY=("${matches[@]}")
367
+
368
+ fi
369
+ }
370
+
371
+ _doing_views() {
372
+
373
+ if [[ "$token" == --* ]]; then
374
+ COMPREPLY=( $( compgen -W '--column' -- $token ) )
375
+ elif [[ "$token" == -* ]]; then
376
+ COMPREPLY=( $( compgen -W '-c --column' -- $token ) )
377
+
378
+ fi
379
+ }
380
+
381
+ _doing_wiki() {
382
+
383
+ if [[ "$token" == --* ]]; then
384
+ COMPREPLY=( $( compgen -W '--after --bool --before --from --only_timed --section --search --tag' -- $token ) )
385
+ elif [[ "$token" == -* ]]; then
386
+ COMPREPLY=( $( compgen -W '-b -f -s --after --bool --before --from --only_timed --section --search --tag' -- $token ) )
387
+
388
+ fi
389
+ }
390
+
391
+ _doing_yesterday() {
392
+
393
+ if [[ "$token" == --* ]]; then
394
+ COMPREPLY=( $( compgen -W '--after --before --output --section --times --tag_order --tag_sort --totals' -- $token ) )
395
+ elif [[ "$token" == -* ]]; then
396
+ COMPREPLY=( $( compgen -W '-o -s -t --after --before --output --section --times --tag_order --tag_sort --totals' -- $token ) )
397
+
398
+ fi
399
+ }
400
+
401
+ _doing()
402
+ {
403
+ local last="${@: -1}"
404
+ local token=${COMP_WORDS[$COMP_CWORD]}
405
+
406
+ if [[ $last =~ (again|resume) ]]; then _doing_again
407
+ elif [[ $last =~ (archive|move) ]]; then _doing_archive
408
+ elif [[ $last =~ (autotag) ]]; then _doing_autotag
409
+ elif [[ $last =~ (cancel) ]]; then _doing_cancel
410
+ elif [[ $last =~ (config) ]]; then _doing_config
411
+ elif [[ $last =~ (done|did) ]]; then _doing_done
412
+ elif [[ $last =~ (finish) ]]; then _doing_finish
413
+ elif [[ $last =~ (grep|search) ]]; then _doing_grep
414
+ elif [[ $last =~ (help) ]]; then _doing_help
415
+ elif [[ $last =~ (import) ]]; then _doing_import
416
+ elif [[ $last =~ (last) ]]; then _doing_last
417
+ elif [[ $last =~ (later) ]]; then _doing_later
418
+ elif [[ $last =~ (mark|flag) ]]; then _doing_mark
419
+ elif [[ $last =~ (meanwhile) ]]; then _doing_meanwhile
420
+ elif [[ $last =~ (note) ]]; then _doing_note
421
+ elif [[ $last =~ (now|next) ]]; then _doing_now
422
+ elif [[ $last =~ (on) ]]; then _doing_on
423
+ elif [[ $last =~ (open) ]]; then _doing_open
424
+ elif [[ $last =~ (plugins) ]]; then _doing_plugins
425
+ elif [[ $last =~ (recent) ]]; then _doing_recent
426
+ elif [[ $last =~ (reset|begin) ]]; then _doing_reset
427
+ elif [[ $last =~ (rotate) ]]; then _doing_rotate
428
+ elif [[ $last =~ (sections) ]]; then _doing_sections
429
+ elif [[ $last =~ (select) ]]; then _doing_select
430
+ elif [[ $last =~ (show) ]]; then _doing_show
431
+ elif [[ $last =~ (since) ]]; then _doing_since
432
+ elif [[ $last =~ (tag) ]]; then _doing_tag
433
+ elif [[ $last =~ (template) ]]; then _doing_template
434
+ elif [[ $last =~ (today) ]]; then _doing_today
435
+ elif [[ $last =~ (undo) ]]; then _doing_undo
436
+ elif [[ $last =~ (view) ]]; then _doing_view
437
+ elif [[ $last =~ (views) ]]; then _doing_views
438
+ elif [[ $last =~ (wiki) ]]; then _doing_wiki
439
+ elif [[ $last =~ (yesterday) ]]; then _doing_yesterday
440
+ else
441
+ OLD_IFS="$IFS"
442
+ IFS=$'
443
+ '
444
+ COMPREPLY=( $(compgen -W "$(doing help -c)" -- $token) )
445
+ IFS="$OLD_IFS"
446
+ fi
447
+ }
448
+
449
+ complete -F _doing doing