doing 2.0.5.pre → 2.0.9.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.
data/doing.rdoc CHANGED
@@ -1,8 +1,11 @@
1
1
  == doing - A CLI for a What Was I Doing system
2
2
 
3
- Doing uses a TaskPaper-like formatting to keep a plain text record of what you've been doing, complete with tag-based time tracking. The command line tool allows you to add entries, annotate with tags and notes, and view your entries with myriad options, with a focus on a "natural" language syntax.
3
+ Doing uses a TaskPaper-like formatting to keep a plain text
4
+ record of what you've been doing, complete with tag-based time tracking. The
5
+ command line tool allows you to add entries, annotate with tags and notes, and
6
+ view your entries with myriad options, with a focus on a "natural" language syntax.
4
7
 
5
- v2.0.5.pre
8
+ v2.0.9.pre
6
9
 
7
10
  === Global Options
8
11
  === --config_file arg
@@ -87,6 +90,14 @@ Boolean used to combine multiple tags
87
90
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
88
91
 
89
92
 
93
+ ===== --case TYPE
94
+
95
+ Case sensitivity for search string matching [(c)ase-sensitive, (i)nsensitive, (s)mart]
96
+
97
+ [Default Value] smart
98
+ [Must Match] (?-mix:^[csi])
99
+
100
+
90
101
  ===== --in SECTION_NAME
91
102
 
92
103
  Add new entry to section (default: same section as repeated entry)
@@ -133,6 +144,16 @@ Select item to resume from a menu of matching entries
133
144
 
134
145
 
135
146
 
147
+ ===== --not
148
+ Resume items that *don't* match search/tag filters
149
+
150
+
151
+
152
+ ===== -x|--exact
153
+ Force exact search string matching (case sensitive)
154
+
155
+
156
+
136
157
  ==== Command: <tt>archive|move SECTION_OR_TAG</tt>
137
158
  Move entries between sections
138
159
 
@@ -157,6 +178,14 @@ Tag boolean (AND|OR|NOT)
157
178
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
158
179
 
159
180
 
181
+ ===== --case TYPE
182
+
183
+ Case sensitivity for search string matching [(c)ase-sensitive, (i)nsensitive, (s)mart]
184
+
185
+ [Default Value] smart
186
+ [Must Match] (?-mix:^[csi])
187
+
188
+
160
189
  ===== -k|--keep X
161
190
 
162
191
  How many items to keep (ignored if archiving by tag or search)
@@ -191,6 +220,76 @@ Label moved items with @from(SECTION_NAME)
191
220
 
192
221
 
193
222
 
223
+ ===== --not
224
+ Show items that *don't* match search string
225
+
226
+
227
+
228
+ ===== -x|--exact
229
+ Force exact search string matching (case sensitive)
230
+
231
+
232
+
233
+ ==== Command: <tt>autotag </tt>
234
+ Autotag last entry or filtered entries
235
+
236
+
237
+ ===== Options
238
+ ===== --bool BOOLEAN
239
+
240
+ Boolean (AND|OR|NOT) with which to combine multiple tag filters
241
+
242
+ [Default Value] AND
243
+ [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
244
+
245
+
246
+ ===== -c|--count COUNT
247
+
248
+ How many recent entries to autotag (0 for all)
249
+
250
+ [Default Value] 1
251
+ [Must Match] (?-mix:^\d+$)
252
+
253
+
254
+ ===== -s|--section SECTION_NAME
255
+
256
+ Section
257
+
258
+ [Default Value] All
259
+
260
+
261
+ ===== --search QUERY
262
+
263
+ Autotag entries matching search filter,
264
+ surround with slashes for regex (e.g. "/query.*/"),
265
+ start with single quote for exact match ("'query")
266
+
267
+ [Default Value] None
268
+
269
+
270
+ ===== --tag TAG
271
+
272
+ Autotag the last X entries containing TAG.
273
+ Separate multiple tags with comma (--tag=tag1,tag2), combine with --bool
274
+
275
+ [Default Value] None
276
+
277
+
278
+ ===== --force
279
+ Don't ask permission to autotag all entries when count is 0
280
+
281
+
282
+
283
+ ===== -i|--interactive
284
+ Select item(s) to tag from a menu of matching entries
285
+
286
+
287
+
288
+ ===== -u|--unfinished
289
+ Autotag last entry (or entries) not marked @done
290
+
291
+
292
+
194
293
  ==== Command: <tt>cancel COUNT</tt>
195
294
  End last X entries with no time tracked
196
295
 
@@ -204,6 +303,14 @@ Boolean (AND|OR|NOT) with which to combine multiple tag filters
204
303
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
205
304
 
206
305
 
306
+ ===== --case TYPE
307
+
308
+ Case sensitivity for search string matching [(c)ase-sensitive, (i)nsensitive, (s)mart]
309
+
310
+ [Default Value] smart
311
+ [Must Match] (?-mix:^[csi])
312
+
313
+
207
314
  ===== -s|--section NAME
208
315
 
209
316
  Section
@@ -211,6 +318,13 @@ Section
211
318
  [Default Value] None
212
319
 
213
320
 
321
+ ===== --search QUERY
322
+
323
+ Cancel the last X entries matching search filter, surround with slashes for regex (e.g. "/query.*/"), start with single quote for exact match ("'query")
324
+
325
+ [Default Value] None
326
+
327
+
214
328
  ===== --tag TAG
215
329
 
216
330
  Cancel the last X entries containing TAG. Separate multiple tags with comma (--tag=tag1,tag2)
@@ -228,11 +342,21 @@ Select item(s) to cancel from a menu of matching entries
228
342
 
229
343
 
230
344
 
345
+ ===== --not
346
+ Finish items that *don't* match search/tag filters
347
+
348
+
349
+
231
350
  ===== -u|--unfinished
232
351
  Cancel last entry (or entries) not already marked @done
233
352
 
234
353
 
235
354
 
355
+ ===== -x|--exact
356
+ Force exact search string matching (case sensitive)
357
+
358
+
359
+
236
360
  ==== Command: <tt>choose </tt>
237
361
  Select a section to display from a menu
238
362
 
@@ -241,6 +365,26 @@ Select a section to display from a menu
241
365
  List available color variables for configuration templates and views
242
366
 
243
367
 
368
+ ==== Command: <tt>completion </tt>
369
+ Generate shell completion scripts
370
+
371
+
372
+ ===== Options
373
+ ===== -f|--file PATH
374
+
375
+ File to write output to
376
+
377
+ [Default Value] stdout
378
+
379
+
380
+ ===== -t|--type SHELL
381
+
382
+ Shell to generate for (bash, zsh, fish)
383
+
384
+ [Default Value] zsh
385
+ [Must Match] (?i-mx:^[bzf](?:[ai]?sh)?$)
386
+
387
+
244
388
  ==== Command: <tt>config KEY_PATH</tt>
245
389
  Edit the configuration file or output a value from it
246
390
 
@@ -283,7 +427,7 @@ Format for --dump (json|yaml|raw)
283
427
  [Must Match] (?-mix:^(?:y(?:aml)?|j(?:son)?|r(?:aw)?)$)
284
428
 
285
429
 
286
- ===== -d|--[no-]dump
430
+ ===== -d|--dump
287
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.
288
432
 
289
433
 
@@ -393,6 +537,14 @@ Boolean (AND|OR|NOT) with which to combine multiple tag filters
393
537
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
394
538
 
395
539
 
540
+ ===== --case TYPE
541
+
542
+ Case sensitivity for search string matching [(c)ase-sensitive, (i)nsensitive, (s)mart]
543
+
544
+ [Default Value] smart
545
+ [Must Match] (?-mix:^[csi])
546
+
547
+
396
548
  ===== -s|--section NAME
397
549
 
398
550
  Section
@@ -444,6 +596,11 @@ Select item(s) to finish from a menu of matching entries
444
596
 
445
597
 
446
598
 
599
+ ===== --not
600
+ Finish items that *don't* match search/tag filters
601
+
602
+
603
+
447
604
  ===== -r|--remove
448
605
  Remove done tag
449
606
 
@@ -454,6 +611,11 @@ Finish last entry (or entries) not already marked @done
454
611
 
455
612
 
456
613
 
614
+ ===== -x|--exact
615
+ Force exact search string matching (case sensitive)
616
+
617
+
618
+
457
619
  ==== Command: <tt>grep|search SEARCH_PATTERN</tt>
458
620
  Search for entries
459
621
 
@@ -475,6 +637,14 @@ Constrain search to entries older than date
475
637
  [Default Value] None
476
638
 
477
639
 
640
+ ===== --case TYPE
641
+
642
+ Case sensitivity for search string matching [(c)ase-sensitive, (i)nsensitive, (s)mart]
643
+
644
+ [Default Value] smart
645
+ [Must Match] (?-mix:^[csi])
646
+
647
+
478
648
  ===== -o|--output FORMAT
479
649
 
480
650
  Output to export format (csv|doing|html|markdown|say|taskpaper|template|timeline|wiki)
@@ -502,6 +672,11 @@ Display an interactive menu of results to perform further operations
502
672
 
503
673
 
504
674
 
675
+ ===== --not
676
+ Show items that *don't* match search string
677
+
678
+
679
+
505
680
  ===== --only_timed
506
681
  Only show items with recorded time intervals
507
682
 
@@ -517,6 +692,11 @@ Show intervals with totals at the end of output
517
692
 
518
693
 
519
694
 
695
+ ===== -x|--exact
696
+ Force exact string matching (case sensitive)
697
+
698
+
699
+
520
700
  ==== Command: <tt>help command</tt>
521
701
  Shows a list of commands or help for one command
522
702
 
@@ -546,6 +726,14 @@ Import entries older than date
546
726
  [Default Value] None
547
727
 
548
728
 
729
+ ===== --case TYPE
730
+
731
+ Case sensitivity for search string matching [(c)ase-sensitive, (i)nsensitive, (s)mart]
732
+
733
+ [Default Value] smart
734
+ [Must Match] (?-mix:^[csi])
735
+
736
+
549
737
  ===== -f|--from DATE_OR_RANGE
550
738
 
551
739
  Date range to import. Date range argument should be quoted. Date specifications can be natural language.
@@ -595,6 +783,11 @@ Autotag entries
595
783
 
596
784
 
597
785
 
786
+ ===== --not
787
+ Import items that *don't* match search/tag/date filters
788
+
789
+
790
+
598
791
  ===== --only_timed
599
792
  Only import items with recorded time intervals
600
793
 
@@ -605,6 +798,11 @@ Allow entries that overlap existing times
605
798
 
606
799
 
607
800
 
801
+ ===== -x|--exact
802
+ Force exact search string matching (case sensitive)
803
+
804
+
805
+
608
806
  ==== Command: <tt>last </tt>
609
807
  Show the last entry, optionally edit
610
808
 
@@ -618,6 +816,14 @@ Tag boolean
618
816
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
619
817
 
620
818
 
819
+ ===== --case TYPE
820
+
821
+ Case sensitivity for search string matching [(c)ase-sensitive, (i)nsensitive, (s)mart]
822
+
823
+ [Default Value] smart
824
+ [Must Match] (?-mix:^[csi])
825
+
826
+
621
827
  ===== -s|--section NAME
622
828
 
623
829
  Specify a section
@@ -644,6 +850,16 @@ Edit entry with vim
644
850
 
645
851
 
646
852
 
853
+ ===== --not
854
+ Show items that *don't* match search string or tag filter
855
+
856
+
857
+
858
+ ===== -x|--exact
859
+ Force exact search string matching (case sensitive)
860
+
861
+
862
+
647
863
  ==== Command: <tt>later ENTRY</tt>
648
864
  Add an item to the Later section
649
865
 
@@ -689,6 +905,14 @@ How many recent entries to tag (0 for all)
689
905
  [Must Match] (?-mix:^\d+$)
690
906
 
691
907
 
908
+ ===== --case TYPE
909
+
910
+ Case sensitivity for search string matching [(c)ase-sensitive, (i)nsensitive, (s)mart]
911
+
912
+ [Default Value] smart
913
+ [Must Match] (?-mix:^[csi])
914
+
915
+
692
916
  ===== -s|--section SECTION_NAME
693
917
 
694
918
  Section
@@ -726,6 +950,11 @@ Select item(s) to flag from a menu of matching entries
726
950
 
727
951
 
728
952
 
953
+ ===== --not
954
+ Flag items that *don't* match search/tag/date filters
955
+
956
+
957
+
729
958
  ===== -r|--remove
730
959
  Remove flag
731
960
 
@@ -736,6 +965,11 @@ Flag last entry (or entries) not marked @done
736
965
 
737
966
 
738
967
 
968
+ ===== -x|--exact
969
+ Force exact search string matching (case sensitive)
970
+
971
+
972
+
739
973
  ==== Command: <tt>meanwhile ENTRY</tt>
740
974
  Finish any running @meanwhile tasks and optionally create a new one
741
975
 
@@ -762,7 +996,7 @@ Section
762
996
  [Default Value] None
763
997
 
764
998
 
765
- ===== -a|--[no-]archive
999
+ ===== -a|--archive
766
1000
  Archive previous @meanwhile entry
767
1001
 
768
1002
 
@@ -789,6 +1023,14 @@ Boolean (AND|OR|NOT) with which to combine multiple tag filters
789
1023
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
790
1024
 
791
1025
 
1026
+ ===== --case TYPE
1027
+
1028
+ Case sensitivity for search string matching [(c)ase-sensitive, (i)nsensitive, (s)mart]
1029
+
1030
+ [Default Value] smart
1031
+ [Must Match] (?-mix:^[csi])
1032
+
1033
+
792
1034
  ===== -s|--section NAME
793
1035
 
794
1036
  Section
@@ -820,11 +1062,21 @@ Select item for new note from a menu of matching entries
820
1062
 
821
1063
 
822
1064
 
1065
+ ===== --not
1066
+ Add note to item that *doesn't* match search/tag filters
1067
+
1068
+
1069
+
823
1070
  ===== -r|--remove
824
1071
  Replace/Remove last entry's note (default append)
825
1072
 
826
1073
 
827
1074
 
1075
+ ===== -x|--exact
1076
+ Force exact search string matching (case sensitive)
1077
+
1078
+
1079
+
828
1080
  ==== Command: <tt>now|next ENTRY</tt>
829
1081
  Add an entry
830
1082
 
@@ -937,10 +1189,10 @@ Import plugins are available using `doing import --type PLUGIN`.
937
1189
  List plugins of type (import, export)
938
1190
 
939
1191
  [Default Value] all
940
- [Must Match] (?i-mx:^[iea].*$)
1192
+ [Must Match] (?i-mx:^(?:[iea].*)$)
941
1193
 
942
1194
 
943
- ===== -c|--[no-]column
1195
+ ===== -c|--column
944
1196
  List in single column for completion
945
1197
 
946
1198
 
@@ -993,9 +1245,17 @@ Boolean (AND|OR|NOT) with which to combine multiple tag filters
993
1245
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
994
1246
 
995
1247
 
1248
+ ===== --case TYPE
1249
+
1250
+ Case sensitivity for search string matching [(c)ase-sensitive, (i)nsensitive, (s)mart]
1251
+
1252
+ [Default Value] smart
1253
+ [Must Match] (?-mix:^[csi])
1254
+
1255
+
996
1256
  ===== -s|--section NAME
997
1257
 
998
- Set the start date of an item to now
1258
+ Limit search to section
999
1259
 
1000
1260
  [Default Value] All
1001
1261
 
@@ -1019,11 +1279,21 @@ Select from a menu of matching entries
1019
1279
 
1020
1280
 
1021
1281
 
1282
+ ===== --not
1283
+ Reset items that *don't* match search/tag filters
1284
+
1285
+
1286
+
1022
1287
  ===== -r|--[no-]resume
1023
1288
  Resume entry (remove @done)
1024
1289
 
1025
1290
 
1026
1291
 
1292
+ ===== -x|--exact
1293
+ Force exact search string matching (case sensitive)
1294
+
1295
+
1296
+
1027
1297
  ==== Command: <tt>rotate </tt>
1028
1298
  Move entries to archive file
1029
1299
 
@@ -1045,6 +1315,14 @@ Tag boolean (AND|OR|NOT)
1045
1315
  [Must Match] (?i-mx:^(?:and|all|any|or|not|none)$)
1046
1316
 
1047
1317
 
1318
+ ===== --case TYPE
1319
+
1320
+ Case sensitivity for search string matching [(c)ase-sensitive, (i)nsensitive, (s)mart]
1321
+
1322
+ [Default Value] smart
1323
+ [Must Match] (?-mix:^[csi])
1324
+
1325
+
1048
1326
  ===== -k|--keep X
1049
1327
 
1050
1328
  How many items to keep in each section (most recent)
@@ -1074,12 +1352,22 @@ Tag filter, combine multiple tags with a comma. Added for compatibility with oth
1074
1352
  [Default Value] None
1075
1353
 
1076
1354
 
1355
+ ===== --not
1356
+ Rotate items that *don't* match search string or tag filter
1357
+
1358
+
1359
+
1360
+ ===== -x|--exact
1361
+ Force exact search string matching (case sensitive)
1362
+
1363
+
1364
+
1077
1365
  ==== Command: <tt>sections </tt>
1078
1366
  List sections
1079
1367
 
1080
1368
 
1081
1369
  ===== Options
1082
- ===== -c|--[no-]column
1370
+ ===== -c|--column
1083
1371
  List in single column
1084
1372
 
1085
1373
 
@@ -1093,6 +1381,14 @@ Multiple selections are allowed, hit tab to add the highlighted entry to the
1093
1381
  selection, and use ctrl-a to select all visible items. Return processes the
1094
1382
  selected entries.
1095
1383
  ===== Options
1384
+ ===== --case TYPE
1385
+
1386
+ Case sensitivity for search string matching [(c)ase-sensitive, (i)nsensitive, (s)mart]
1387
+
1388
+ [Default Value] smart
1389
+ [Must Match] (?-mix:^[csi])
1390
+
1391
+
1096
1392
  ===== -m|--move SECTION
1097
1393
 
1098
1394
  Move selected items to section
@@ -1140,7 +1436,7 @@ Archive selected items
1140
1436
 
1141
1437
 
1142
1438
 
1143
- ===== --[no-]again|--[no-]resume
1439
+ ===== --again|--resume
1144
1440
  Copy selection as a new entry with current time and no @done tag. Only works with single selections. Can be combined with --editor.
1145
1441
 
1146
1442
 
@@ -1180,11 +1476,21 @@ Use --no-menu to skip the interactive menu. Use with --query to filter items and
1180
1476
 
1181
1477
 
1182
1478
 
1479
+ ===== --not
1480
+ Select items that *don't* match search/tag filters
1481
+
1482
+
1483
+
1183
1484
  ===== -r|--remove
1184
1485
  Reverse -c, -f, --flag, and -t (remove instead of adding)
1185
1486
 
1186
1487
 
1187
1488
 
1489
+ ===== -x|--exact
1490
+ Force exact search string matching (case sensitive)
1491
+
1492
+
1493
+
1188
1494
  ==== Command: <tt>show [SECTION|@TAGS]</tt>
1189
1495
  List all entries
1190
1496
 
@@ -1227,6 +1533,14 @@ Max count to show
1227
1533
  [Default Value] 0
1228
1534
 
1229
1535
 
1536
+ ===== --case TYPE
1537
+
1538
+ Case sensitivity for search string matching [(c)ase-sensitive, (i)nsensitive, (s)mart]
1539
+
1540
+ [Default Value] smart
1541
+ [Must Match] (?-mix:^[csi])
1542
+
1543
+
1230
1544
  ===== -f|--from DATE_OR_RANGE
1231
1545
 
1232
1546
  Date range to show, or a single day to filter date on.
@@ -1286,6 +1600,11 @@ Select from a menu of matching entries to perform additional operations
1286
1600
 
1287
1601
 
1288
1602
 
1603
+ ===== --not
1604
+ Show items that *don't* match search/tag/date filters
1605
+
1606
+
1607
+
1289
1608
  ===== --only_timed
1290
1609
  Only show items with recorded time intervals
1291
1610
 
@@ -1301,6 +1620,11 @@ Show intervals with totals at the end of output
1301
1620
 
1302
1621
 
1303
1622
 
1623
+ ===== -x|--exact
1624
+ Force exact search string matching (case sensitive)
1625
+
1626
+
1627
+
1304
1628
  ==== Command: <tt>since DATE_STRING</tt>
1305
1629
  List entries since a date
1306
1630
 
@@ -1372,6 +1696,14 @@ How many recent entries to tag (0 for all)
1372
1696
  [Must Match] (?-mix:^\d+$)
1373
1697
 
1374
1698
 
1699
+ ===== --case TYPE
1700
+
1701
+ Case sensitivity for search string matching [(c)ase-sensitive, (i)nsensitive, (s)mart]
1702
+
1703
+ [Default Value] smart
1704
+ [Must Match] (?-mix:^[csi])
1705
+
1706
+
1375
1707
  ===== --rename ORIG_TAG
1376
1708
 
1377
1709
  Replace existing tag with tag argument, wildcards (*,?) allowed, or use with --regex
@@ -1421,6 +1753,11 @@ Select item(s) to tag from a menu of matching entries
1421
1753
 
1422
1754
 
1423
1755
 
1756
+ ===== --not
1757
+ Tag items that *don't* match search/tag filters
1758
+
1759
+
1760
+
1424
1761
  ===== -r|--remove
1425
1762
  Remove given tag(s)
1426
1763
 
@@ -1436,20 +1773,23 @@ Tag last entry (or entries) not marked @done
1436
1773
 
1437
1774
 
1438
1775
 
1776
+ ===== -x|--exact
1777
+ Force exact search string matching (case sensitive)
1778
+
1779
+
1780
+
1439
1781
  ==== Command: <tt>template TYPE</tt>
1440
1782
  Output HTML, CSS, and Markdown (ERB) templates for customization
1441
1783
 
1442
1784
  Templates are printed to STDOUT for piping to a file.
1443
- Save them and use them in the configuration file under html_template.
1444
-
1445
- Example `doing template haml > ~/styles/my_doing.haml`
1785
+ Save them and use them in the configuration file under export_templates.
1446
1786
  ===== Options
1447
1787
  ===== -c
1448
1788
  List in single column for completion
1449
1789
 
1450
1790
 
1451
1791
 
1452
- ===== -l|--[no-]list
1792
+ ===== -l|--list
1453
1793
  List all available templates
1454
1794
 
1455
1795
 
@@ -1556,6 +1896,14 @@ Count to display
1556
1896
  [Must Match] (?-mix:^\d+$)
1557
1897
 
1558
1898
 
1899
+ ===== --case TYPE
1900
+
1901
+ Case sensitivity for search string matching [(c)ase-sensitive, (i)nsensitive, (s)mart]
1902
+
1903
+ [Default Value] smart
1904
+ [Must Match] (?-mix:^[csi])
1905
+
1906
+
1559
1907
  ===== -o|--output FORMAT
1560
1908
 
1561
1909
  Output to export format (csv|doing|html|markdown|say|taskpaper|template|timeline|wiki)
@@ -1610,6 +1958,11 @@ Select from a menu of matching entries to perform additional operations
1610
1958
 
1611
1959
 
1612
1960
 
1961
+ ===== --not
1962
+ Show items that *don't* match search string
1963
+
1964
+
1965
+
1613
1966
  ===== --only_timed
1614
1967
  Only show items with recorded time intervals (override view settings)
1615
1968
 
@@ -1625,6 +1978,11 @@ Show intervals with totals at the end of output
1625
1978
 
1626
1979
 
1627
1980
 
1981
+ ===== -x|--exact
1982
+ Force exact search string matching (case sensitive)
1983
+
1984
+
1985
+
1628
1986
  ==== Command: <tt>views </tt>
1629
1987
  List available custom views
1630
1988
 
@@ -2,3 +2,4 @@
2
2
 
3
3
  scripts/generate_fish_completions.rb > lib/completion/doing.fish
4
4
  scripts/generate_bash_completions.rb > lib/completion/doing.bash
5
+ scripts/generate_zsh_completions.rb > lib/completion/_doing.zsh