doing 2.1.23 → 2.1.27

Sign up to get free protection for your applications and to get access to all the features.
Files changed (171) hide show
  1. checksums.yaml +4 -4
  2. data/.yardoc/checksums +17 -21
  3. data/.yardoc/object_types +0 -0
  4. data/.yardoc/objects/root.dat +0 -0
  5. data/CHANGELOG.md +329 -102
  6. data/Dockerfile +5 -5
  7. data/Dockerfile-2.6 +5 -5
  8. data/Dockerfile-2.7 +5 -4
  9. data/Dockerfile-3.0 +5 -4
  10. data/Gemfile.lock +1 -1
  11. data/README.md +1 -1
  12. data/Rakefile +3 -3
  13. data/bin/commands/add_section.rb +15 -0
  14. data/bin/commands/again.rb +57 -0
  15. data/bin/commands/archive.rb +55 -0
  16. data/bin/commands/cancel.rb +60 -0
  17. data/bin/commands/changes.rb +69 -0
  18. data/bin/commands/choose.rb +9 -0
  19. data/bin/commands/colors.rb +21 -0
  20. data/bin/commands/commands.rb +89 -0
  21. data/bin/commands/commands_accepting.rb +76 -0
  22. data/bin/commands/completion.rb +27 -0
  23. data/bin/commands/config.rb +245 -0
  24. data/bin/commands/done.rb +235 -0
  25. data/bin/commands/finish.rb +126 -0
  26. data/bin/commands/flag.rb +90 -0
  27. data/bin/commands/grep.rb +108 -0
  28. data/bin/commands/import.rb +71 -0
  29. data/bin/commands/install_fzf.rb +17 -0
  30. data/bin/commands/last.rb +81 -0
  31. data/bin/commands/meanwhile.rb +76 -0
  32. data/bin/commands/note.rb +91 -0
  33. data/bin/commands/now.rb +145 -0
  34. data/bin/commands/on.rb +65 -0
  35. data/bin/commands/open.rb +53 -0
  36. data/bin/commands/plugins.rb +23 -0
  37. data/bin/commands/recent.rb +77 -0
  38. data/bin/commands/redo.rb +26 -0
  39. data/bin/commands/reset.rb +73 -0
  40. data/bin/commands/rotate.rb +42 -0
  41. data/bin/commands/sections.rb +11 -0
  42. data/bin/commands/select.rb +105 -0
  43. data/bin/commands/show.rb +185 -0
  44. data/bin/commands/since.rb +63 -0
  45. data/bin/commands/tag.rb +149 -0
  46. data/bin/commands/tag_dir.rb +29 -0
  47. data/bin/commands/tags.rb +66 -0
  48. data/bin/commands/template.rb +61 -0
  49. data/bin/commands/today.rb +64 -0
  50. data/bin/commands/undo.rb +49 -0
  51. data/bin/commands/view.rb +201 -0
  52. data/bin/commands/views.rb +11 -0
  53. data/bin/commands/yesterday.rb +72 -0
  54. data/bin/doing +241 -3662
  55. data/docs/doc/Array.html +13 -449
  56. data/docs/doc/BooleanTermParser/Clause.html +5 -5
  57. data/docs/doc/BooleanTermParser/Operator.html +4 -4
  58. data/docs/doc/BooleanTermParser/Query.html +8 -8
  59. data/docs/doc/BooleanTermParser/QueryParser.html +2 -2
  60. data/docs/doc/BooleanTermParser/QueryTransformer.html +2 -2
  61. data/docs/doc/BooleanTermParser.html +1 -1
  62. data/docs/doc/Doing/Color.html +65 -59
  63. data/docs/doc/Doing/Completion.html +2 -2
  64. data/docs/doc/Doing/Configuration.html +49 -16
  65. data/docs/doc/Doing/Errors/DoingNoTraceError.html +2 -2
  66. data/docs/doc/Doing/Errors/DoingRuntimeError.html +2 -2
  67. data/docs/doc/Doing/Errors/DoingStandardError.html +2 -2
  68. data/docs/doc/Doing/Errors/EmptyInput.html +2 -2
  69. data/docs/doc/Doing/Errors/NoResults.html +2 -2
  70. data/docs/doc/Doing/Errors/PluginException.html +3 -3
  71. data/docs/doc/Doing/Errors/UserCancelled.html +2 -2
  72. data/docs/doc/Doing/Errors/WrongCommand.html +2 -2
  73. data/docs/doc/Doing/Errors.html +1 -1
  74. data/docs/doc/Doing/Hooks.html +6 -6
  75. data/docs/doc/Doing/Item.html +50 -16
  76. data/docs/doc/Doing/Items.html +10 -10
  77. data/docs/doc/Doing/LogAdapter.html +24 -24
  78. data/docs/doc/Doing/Note.html +7 -7
  79. data/docs/doc/Doing/Pager.html +4 -4
  80. data/docs/doc/Doing/Plugins.html +7 -7
  81. data/docs/doc/Doing/Prompt.html +59 -14
  82. data/docs/doc/Doing/Section.html +6 -6
  83. data/docs/doc/Doing/TemplateString.html +8 -8
  84. data/docs/doc/Doing/Types.html +46 -1
  85. data/docs/doc/Doing/Util/Backup.html +10 -10
  86. data/docs/doc/Doing/Util.html +15 -15
  87. data/docs/doc/Doing/WWID.html +73 -61
  88. data/docs/doc/Doing.html +3 -3
  89. data/docs/doc/FalseClass.html +235 -0
  90. data/docs/doc/GLI/Commands/Help.html +3 -3
  91. data/docs/doc/GLI/Commands/MarkdownDocumentListener.html +17 -17
  92. data/docs/doc/GLI/Commands.html +1 -1
  93. data/docs/doc/GLI.html +1 -1
  94. data/docs/doc/Hash.html +45 -11
  95. data/docs/doc/Numeric.html +5 -5
  96. data/docs/doc/Object.html +203 -0
  97. data/docs/doc/PhraseParser/Operator.html +4 -4
  98. data/docs/doc/PhraseParser/PhraseClause.html +5 -5
  99. data/docs/doc/PhraseParser/Query.html +10 -10
  100. data/docs/doc/PhraseParser/QueryParser.html +2 -2
  101. data/docs/doc/PhraseParser/QueryTransformer.html +2 -2
  102. data/docs/doc/PhraseParser/TermClause.html +5 -5
  103. data/docs/doc/PhraseParser.html +1 -1
  104. data/docs/doc/Status.html +7 -7
  105. data/docs/doc/String.html +306 -3111
  106. data/docs/doc/Symbol.html +45 -11
  107. data/docs/doc/Time.html +6 -6
  108. data/docs/doc/TrueClass.html +235 -0
  109. data/docs/doc/_index.html +37 -19
  110. data/docs/doc/class_list.html +1 -1
  111. data/docs/doc/file.README.html +2 -2
  112. data/docs/doc/index.html +2 -2
  113. data/docs/doc/method_list.html +240 -576
  114. data/docs/doc/top-level-namespace.html +2 -2
  115. data/doing.rdoc +289 -169
  116. data/example_plugin.rb +2 -2
  117. data/lib/completion/_doing.zsh +35 -31
  118. data/lib/completion/doing.bash +30 -19
  119. data/lib/completion/doing.fish +81 -67
  120. data/lib/doing/array/array.rb +4 -0
  121. data/lib/doing/array/nested_hash.rb +17 -0
  122. data/lib/doing/{array.rb → array/tags.rb} +7 -25
  123. data/lib/doing/changelog/change.rb +26 -11
  124. data/lib/doing/changelog/changes.rb +14 -4
  125. data/lib/doing/{array_chronify.rb → chronify/array.rb} +0 -0
  126. data/lib/doing/chronify/chronify.rb +5 -0
  127. data/lib/doing/{numeric_chronify.rb → chronify/numeric.rb} +0 -0
  128. data/lib/doing/{string_chronify.rb → chronify/string.rb} +0 -0
  129. data/lib/doing/colors.rb +115 -54
  130. data/lib/doing/completion/fish_completion.rb +2 -1
  131. data/lib/doing/configuration.rb +9 -6
  132. data/lib/doing/good.rb +72 -0
  133. data/lib/doing/hash.rb +4 -0
  134. data/lib/doing/help_monkey_patch.rb +6 -5
  135. data/lib/doing/hooks.rb +3 -3
  136. data/lib/doing/item.rb +19 -15
  137. data/lib/doing/items.rb +2 -2
  138. data/lib/doing/log_adapter.rb +35 -2
  139. data/lib/doing/normalize.rb +188 -0
  140. data/lib/doing/pager.rb +1 -0
  141. data/lib/doing/plugins/export/dayone_export.rb +1 -1
  142. data/lib/doing/plugins/export/html_export.rb +1 -1
  143. data/lib/doing/plugins/export/json_export.rb +1 -1
  144. data/lib/doing/plugins/export/markdown_export.rb +1 -1
  145. data/lib/doing/plugins/export/template_export.rb +3 -1
  146. data/lib/doing/plugins/import/calendar_import.rb +1 -1
  147. data/lib/doing/plugins/import/doing_import.rb +1 -1
  148. data/lib/doing/plugins/import/timing_import.rb +1 -1
  149. data/lib/doing/prompt.rb +9 -3
  150. data/lib/doing/string/highlight.rb +95 -0
  151. data/lib/doing/string/query.rb +129 -0
  152. data/lib/doing/string/string.rb +12 -0
  153. data/lib/doing/string/tags.rb +164 -0
  154. data/lib/doing/string/transform.rb +168 -0
  155. data/lib/doing/string/truncate.rb +75 -0
  156. data/lib/doing/string/url.rb +82 -0
  157. data/lib/doing/template_string.rb +2 -24
  158. data/lib/doing/types.rb +9 -0
  159. data/lib/doing/util.rb +20 -16
  160. data/lib/doing/version.rb +1 -1
  161. data/lib/doing/wwid.rb +91 -51
  162. data/lib/doing.rb +5 -6
  163. data/lib/examples/commands/wiki.rb +6 -7
  164. data/lib/examples/plugins/wiki_export/wiki_export.rb +1 -1
  165. data/lib/helpers/threaded_tests.rb +69 -79
  166. data/lib/helpers/threaded_tests_string.rb +50 -0
  167. data/scripts/deploy.rb +107 -0
  168. data/scripts/runtests.sh +4 -0
  169. metadata +65 -8
  170. data/lib/doing/string.rb +0 -765
  171. data/lib/doing/symbol.rb +0 -28
@@ -123,8 +123,9 @@ complete -f -c doing -n '__fish_doing_using_command show' -a '(__fish_doing_comp
123
123
  complete -f -c doing -n '__fish_doing_using_command view' -a '(__fish_doing_complete_views)'
124
124
  complete -f -c doing -n '__fish_doing_using_command template' -a '(__fish_doing_complete_templates)'
125
125
  complete -f -c doing -s t -l type -x -n '__fish_doing_using_command import' -a '(__fish_doing_import_plugins)'
126
+ complete -f -c doing -n '__fish_doing_using_command help' -a '(__fish_doing_subcommands)'
126
127
 
127
- complete -xc doing -n '__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from (doing help -c)' -a "(doing help -c)"
128
+ # complete -xc doing -n '__fish_seen_subcommand_from help; and not __fish_seen_subcommand_from (doing help -c)' -a "(doing help -c)"
128
129
 
129
130
  function __fish_doing_complete_args
130
131
  for cmd in (doing commands_accepting -c $argv[1])
@@ -140,8 +141,8 @@ complete -xc doing -n '__fish_doing_needs_command' -a 'archive move' -d Move\ en
140
141
  complete -xc doing -n '__fish_doing_needs_command' -a 'autotag' -d Autotag\ last\ entry\ or\ filtered\ entries
141
142
  complete -xc doing -n '__fish_doing_needs_command' -a 'cancel' -d End\ last\ X\ entries\ with\ no\ time\ tracked
142
143
  complete -xc doing -n '__fish_doing_needs_command' -a 'changes changelog' -d List\ recent\ changes\ in\ Doing
143
- complete -xc doing -n '__fish_doing_needs_command' -a 'choose' -d Select\ a\ section\ to\ display\ from\ a\ menu
144
144
  complete -xc doing -n '__fish_doing_needs_command' -a 'colors' -d List\ available\ color\ variables\ for\ configuration\ templates\ and\ views
145
+ complete -xc doing -n '__fish_doing_needs_command' -a 'commands' -d Enable\ and\ disable\ Doing\ commands
145
146
  complete -xc doing -n '__fish_doing_needs_command' -a 'completion' -d Generate\ shell\ completion\ scripts
146
147
  complete -xc doing -n '__fish_doing_needs_command' -a 'config' -d Edit\ the\ configuration\ file\ or\ output\ a\ value\ from\ it
147
148
  complete -xc doing -n '__fish_doing_needs_command' -a 'done did' -d Add\ a\ completed\ item\ with\ @done\(date\)
@@ -159,6 +160,7 @@ complete -xc doing -n '__fish_doing_needs_command' -a 'on' -d List\ entries\ for
159
160
  complete -xc doing -n '__fish_doing_needs_command' -a 'open' -d Open\ the\ \"doing\"\ file\ in\ an\ editor
160
161
  complete -xc doing -n '__fish_doing_needs_command' -a 'plugins' -d List\ installed\ plugins
161
162
  complete -xc doing -n '__fish_doing_needs_command' -a 'recent' -d List\ recent\ entries
163
+ complete -xc doing -n '__fish_doing_needs_command' -a 'redo' -d Redo\ an\ undo\ command
162
164
  complete -xc doing -n '__fish_doing_needs_command' -a 'reset begin' -d Reset\ the\ start\ time\ of\ an\ entry
163
165
  complete -xc doing -n '__fish_doing_needs_command' -a 'rotate' -d Move\ entries\ to\ archive\ file
164
166
  complete -xc doing -n '__fish_doing_needs_command' -a 'sections' -d List\ sections
@@ -176,29 +178,32 @@ complete -xc doing -n '__fish_doing_needs_command' -a 'view' -d Display\ a\ user
176
178
  complete -xc doing -n '__fish_doing_needs_command' -a 'views' -d List\ available\ custom\ views
177
179
  complete -xc doing -n '__fish_doing_needs_command' -a 'wiki' -d Output\ a\ tag\ wiki
178
180
  complete -xc doing -n '__fish_doing_needs_command' -a 'yesterday' -d List\ entries\ from\ yesterday
181
+ complete -c doing -l noauto -s X -f -n '__fish_doing_using_command again resume' -d Exclude\ auto\ tags\ and\ default\ tags
179
182
  complete -c doing -l ask -f -n '__fish_doing_using_command again resume' -d Prompt\ for\ note\ via\ multi-line\ input
180
- complete -c doing -l started -f -r -n '__fish_doing_using_command again resume' -d Backdate\ start\ date\ by\ interval\ or\ set\ to\ time\ \[4pm\|20m\|2h\|\"yesterday\ noon\"\]
183
+ complete -c doing -l started -f -r -n '__fish_doing_using_command again resume' -d Backdate\ start\ date\ for\ new\ entry\ to\ date\ string\ \[4pm\|20m\|2h\|yesterday\ noon\]
181
184
  complete -c doing -l bool -f -r -n '__fish_doing_using_command again resume' -d Boolean\ used\ to\ combine\ multiple\ tags
182
185
  complete -c doing -l case -f -r -n '__fish_doing_using_command again resume' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
183
- complete -c doing -l editor -s e -f -n '__fish_doing_using_command again resume' -d Edit\ duplicated\ entry\ with\ vim\ before\ adding
186
+ complete -c doing -l editor -s e -f -n '__fish_doing_using_command again resume' -d Edit\ entry\ with\ vim
184
187
  complete -c doing -l interactive -s i -f -n '__fish_doing_using_command again resume' -d Select\ item\ to\ resume\ from\ a\ menu\ of\ matching\ entries
185
188
  complete -c doing -l in -f -r -n '__fish_doing_using_command again resume' -d Add\ new\ entry\ to\ section
186
- complete -c doing -l note -s n -f -r -n '__fish_doing_using_command again resume' -d Add\ a\ note
187
- complete -c doing -l not -f -n '__fish_doing_using_command again resume' -d Resume\ items\ that\ \*don\'t\*\ match\ search/tag\ filters
189
+ complete -c doing -l note -s n -f -r -n '__fish_doing_using_command again resume' -d Include\ a\ note
190
+ complete -c doing -l not -f -n '__fish_doing_using_command again resume' -d Repeat\ items\ that\ \*don\'t\*\ match\ search/tag\ filters
188
191
  complete -c doing -l section -s s -f -r -n '__fish_doing_using_command again resume' -d Get\ last\ entry\ from\ a\ specific\ section
189
- complete -c doing -l search -f -r -n '__fish_doing_using_command again resume' -d Repeat\ last\ entry\ matching\ search
190
- complete -c doing -l tag -f -r -n '__fish_doing_using_command again resume' -d Repeat\ last\ entry\ matching\ tags
192
+ complete -c doing -l search -f -r -n '__fish_doing_using_command again resume' -d Filter\ entries\ using\ a\ search\ query
193
+ complete -c doing -l tag -f -r -n '__fish_doing_using_command again resume' -d Filter\ entries\ by\ tag
191
194
  complete -c doing -l val -f -r -n '__fish_doing_using_command again resume' -d Perform\ a\ tag\ value\ query
192
195
  complete -c doing -l exact -s x -f -n '__fish_doing_using_command again resume' -d Force\ exact\ search\ string\ matching
196
+ complete -c doing -l after -f -r -n '__fish_doing_using_command archive move' -d Archive\ entries\ newer\ than\ date
193
197
  complete -c doing -l before -f -r -n '__fish_doing_using_command archive move' -d Archive\ entries\ older\ than\ date
194
- complete -c doing -l bool -f -r -n '__fish_doing_using_command archive move' -d Tag\ boolean
198
+ complete -c doing -l bool -f -r -n '__fish_doing_using_command archive move' -d Boolean\ used\ to\ combine\ multiple\ tags
195
199
  complete -c doing -l case -f -r -n '__fish_doing_using_command archive move' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
200
+ complete -c doing -l from -f -r -n '__fish_doing_using_command archive move' -d Date\ range
196
201
  complete -c doing -l keep -s k -f -r -n '__fish_doing_using_command archive move' -d How\ many\ items\ to\ keep
197
202
  complete -c doing -l label -f -n '__fish_doing_using_command archive move' -d Label\ moved\ items\ with\ @from\(SECTION_NAME\)
198
- complete -c doing -l not -f -n '__fish_doing_using_command archive move' -d Show\ items\ that\ \*don\'t\*\ match\ search\ string
199
- complete -c doing -l search -f -r -n '__fish_doing_using_command archive move' -d Search\ filter
203
+ complete -c doing -l not -f -n '__fish_doing_using_command archive move' -d Archive\ items\ that\ \*don\'t\*\ match\ search/tag\ filters
204
+ complete -c doing -l search -f -r -n '__fish_doing_using_command archive move' -d Filter\ entries\ using\ a\ search\ query
200
205
  complete -c doing -l to -s t -f -r -n '__fish_doing_using_command archive move' -d Move\ entries\ to
201
- complete -c doing -l tag -f -r -n '__fish_doing_using_command archive move' -d Tag\ filter
206
+ complete -c doing -l tag -f -r -n '__fish_doing_using_command archive move' -d Filter\ entries\ by\ tag
202
207
  complete -c doing -l val -f -r -n '__fish_doing_using_command archive move' -d Perform\ a\ tag\ value\ query
203
208
  complete -c doing -l exact -s x -f -n '__fish_doing_using_command archive move' -d Force\ exact\ search\ string\ matching
204
209
  complete -c doing -l bool -f -r -n '__fish_doing_using_command autotag' -d Boolean
@@ -210,27 +215,30 @@ complete -c doing -l search -f -r -n '__fish_doing_using_command autotag' -d Au
210
215
  complete -c doing -l tag -f -r -n '__fish_doing_using_command autotag' -d Autotag\ the\ last\ X\ entries\ containing\ TAG
211
216
  complete -c doing -l unfinished -s u -f -n '__fish_doing_using_command autotag' -d Autotag\ last\ entry
212
217
  complete -c doing -l archive -s a -f -n '__fish_doing_using_command cancel' -d Archive\ entries
213
- complete -c doing -l bool -f -r -n '__fish_doing_using_command cancel' -d Boolean
218
+ complete -c doing -l bool -f -r -n '__fish_doing_using_command cancel' -d Boolean\ used\ to\ combine\ multiple\ tags
214
219
  complete -c doing -l case -f -r -n '__fish_doing_using_command cancel' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
215
220
  complete -c doing -l interactive -s i -f -n '__fish_doing_using_command cancel' -d Select\ item\(s\)\ to\ cancel\ from\ a\ menu\ of\ matching\ entries
216
- complete -c doing -l not -f -n '__fish_doing_using_command cancel' -d Finish\ items\ that\ \*don\'t\*\ match\ search/tag\ filters
221
+ complete -c doing -l not -f -n '__fish_doing_using_command cancel' -d Cancel\ items\ that\ \*don\'t\*\ match\ search/tag\ filters
217
222
  complete -c doing -l section -s s -f -r -n '__fish_doing_using_command cancel' -d Section
218
- complete -c doing -l search -f -r -n '__fish_doing_using_command cancel' -d Cancel\ the\ last\ X\ entries\ matching\ search\ filter
219
- complete -c doing -l tag -f -r -n '__fish_doing_using_command cancel' -d Cancel\ the\ last\ X\ entries\ containing\ TAG
223
+ complete -c doing -l search -f -r -n '__fish_doing_using_command cancel' -d Filter\ entries\ using\ a\ search\ query
224
+ complete -c doing -l tag -f -r -n '__fish_doing_using_command cancel' -d Filter\ entries\ by\ tag
220
225
  complete -c doing -l unfinished -s u -f -n '__fish_doing_using_command cancel' -d Cancel\ last\ entry
221
226
  complete -c doing -l val -f -r -n '__fish_doing_using_command cancel' -d Perform\ a\ tag\ value\ query
222
227
  complete -c doing -l exact -s x -f -n '__fish_doing_using_command cancel' -d Force\ exact\ search\ string\ matching
228
+ complete -c doing -l changes -s C -f -n '__fish_doing_using_command changes changelog' -d Only\ output\ changes
223
229
  complete -c doing -l all -s a -f -n '__fish_doing_using_command changes changelog' -d Display\ all\ versions
224
230
  complete -c doing -l lookup -s l -f -r -n '__fish_doing_using_command changes changelog' -d Look\ up\ a\ specific\ version
231
+ complete -c doing -l markdown -f -n '__fish_doing_using_command changes changelog' -d Output\ raw\ Markdown
225
232
  complete -c doing -l search -s s -f -r -n '__fish_doing_using_command changes changelog' -d Show\ changelogs\ matching\ search\ terms
226
233
  complete -c doing -l file -s f -f -r -n '__fish_doing_using_command completion' -d File\ to\ write\ output\ to
227
234
  complete -c doing -l type -s t -f -r -n '__fish_doing_using_command completion' -d Shell\ to\ generate\ for
228
235
  complete -c doing -l dump -s d -f -n '__fish_doing_using_command config' -d DEPRECATED
229
236
  complete -c doing -l update -s u -f -n '__fish_doing_using_command config' -d DEPRECATED
237
+ complete -c doing -l noauto -s X -f -n '__fish_doing_using_command done did' -d Exclude\ auto\ tags\ and\ default\ tags
230
238
  complete -c doing -l archive -s a -f -n '__fish_doing_using_command done did' -d Immediately\ archive\ the\ entry
231
239
  complete -c doing -l ask -f -n '__fish_doing_using_command done did' -d Prompt\ for\ note\ via\ multi-line\ input
232
240
  complete -c doing -l finished -f -r -n '__fish_doing_using_command done did' -d Set\ finish\ date\ to\ specific\ date/time
233
- complete -c doing -l started -f -r -n '__fish_doing_using_command done did' -d Backdate\ start\ date\ by\ interval\ or\ set\ to\ time\ \[4pm\|20m\|2h\|\"yesterday\ noon\"\]
241
+ complete -c doing -l started -f -r -n '__fish_doing_using_command done did' -d Backdate\ start\ date\ for\ new\ entry\ to\ date\ string\ \[4pm\|20m\|2h\|yesterday\ noon\]
234
242
  complete -c doing -l date -f -n '__fish_doing_using_command done did' -d Include\ date
235
243
  complete -c doing -l editor -s e -f -n '__fish_doing_using_command done did' -d Edit\ entry\ with\ vim
236
244
  complete -c doing -l from -f -r -n '__fish_doing_using_command done did' -d Start\ and\ end\ times\ as\ a\ date/time\ range\ \`doing\ done\ --from\ \"1am\ to\ 8am\"\`
@@ -243,17 +251,18 @@ complete -c doing -l archive -s a -f -n '__fish_doing_using_command finish' -d
243
251
  complete -c doing -l finished -f -r -n '__fish_doing_using_command finish' -d Set\ finish\ date\ to\ specific\ date/time
244
252
  complete -c doing -l auto -f -n '__fish_doing_using_command finish' -d Auto-generate\ finish\ dates\ from\ next\ entry\'s\ start\ time
245
253
  complete -c doing -l started -f -r -n '__fish_doing_using_command finish' -d Backdate\ completed\ date\ to\ date\ string\ \[4pm\|20m\|2h\|yesterday\ noon\]
246
- complete -c doing -l bool -f -r -n '__fish_doing_using_command finish' -d Boolean
254
+ complete -c doing -l bool -f -r -n '__fish_doing_using_command finish' -d Boolean\ used\ to\ combine\ multiple\ tags
247
255
  complete -c doing -l case -f -r -n '__fish_doing_using_command finish' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
248
256
  complete -c doing -l date -f -n '__fish_doing_using_command finish' -d Include\ date
249
257
  complete -c doing -l interactive -s i -f -n '__fish_doing_using_command finish' -d Select\ item\(s\)\ to\ finish\ from\ a\ menu\ of\ matching\ entries
250
258
  complete -c doing -l not -f -n '__fish_doing_using_command finish' -d Finish\ items\ that\ \*don\'t\*\ match\ search/tag\ filters
251
- complete -c doing -l remove -s r -f -n '__fish_doing_using_command finish' -d Remove\ done\ tag
259
+ complete -c doing -l remove -s r -f -n '__fish_doing_using_command finish' -d Remove\ @done\ tag
252
260
  complete -c doing -l section -s s -f -r -n '__fish_doing_using_command finish' -d Section
253
- complete -c doing -l search -f -r -n '__fish_doing_using_command finish' -d Finish\ the\ last\ X\ entries\ matching\ search\ filter
261
+ complete -c doing -l search -f -r -n '__fish_doing_using_command finish' -d Filter\ entries\ using\ a\ search\ query
254
262
  complete -c doing -l for -f -r -n '__fish_doing_using_command finish' -d Set\ the\ completed\ date\ to\ the\ start\ date\ plus\ XX\[hmd\]
255
- complete -c doing -l tag -f -r -n '__fish_doing_using_command finish' -d Finish\ the\ last\ X\ entries\ containing\ TAG
263
+ complete -c doing -l tag -f -r -n '__fish_doing_using_command finish' -d Filter\ entries\ by\ tag
256
264
  complete -c doing -l unfinished -s u -f -n '__fish_doing_using_command finish' -d Finish\ last\ entry
265
+ complete -c doing -l update -f -n '__fish_doing_using_command finish' -d Overwrite\ existing\ @done\ tag\ with\ new\ date
257
266
  complete -c doing -l val -f -r -n '__fish_doing_using_command finish' -d Perform\ a\ tag\ value\ query
258
267
  complete -c doing -l exact -s x -f -n '__fish_doing_using_command finish' -d Force\ exact\ search\ string\ matching
259
268
  complete -c doing -l after -f -r -n '__fish_doing_using_command grep search' -d Search\ entries\ newer\ than\ date
@@ -264,7 +273,7 @@ complete -c doing -l config_template -f -r -n '__fish_doing_using_command grep
264
273
  complete -c doing -l delete -s d -f -n '__fish_doing_using_command grep search' -d Delete\ matching\ entries
265
274
  complete -c doing -l duration -f -n '__fish_doing_using_command grep search' -d Show\ elapsed\ time\ on\ entries\ without\ @done\ tag
266
275
  complete -c doing -l editor -s e -f -n '__fish_doing_using_command grep search' -d Edit\ matching\ entries\ with\ vim
267
- complete -c doing -l from -f -r -n '__fish_doing_using_command grep search' -d Date\ range\ to\ show
276
+ complete -c doing -l from -f -r -n '__fish_doing_using_command grep search' -d Date\ range
268
277
  complete -c doing -l hilite -s h -f -n '__fish_doing_using_command grep search' -d Highlight\ search\ matches\ in\ output
269
278
  complete -c doing -l interactive -s i -f -n '__fish_doing_using_command grep search' -d Display\ an\ interactive\ menu\ of\ results\ to\ perform\ further\ operations
270
279
  complete -c doing -l not -f -n '__fish_doing_using_command grep search' -d Show\ items\ that\ \*don\'t\*\ match\ search\ string
@@ -282,27 +291,27 @@ complete -c doing -l after -f -r -n '__fish_doing_using_command import' -d Impo
282
291
  complete -c doing -l autotag -f -n '__fish_doing_using_command import' -d Autotag\ entries
283
292
  complete -c doing -l before -f -r -n '__fish_doing_using_command import' -d Import\ entries\ older\ than\ date
284
293
  complete -c doing -l case -f -r -n '__fish_doing_using_command import' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
285
- complete -c doing -l from -s f -f -r -n '__fish_doing_using_command import' -d Date\ range\ to\ import
294
+ complete -c doing -l from -f -r -n '__fish_doing_using_command import' -d Date\ range
286
295
  complete -c doing -l not -f -n '__fish_doing_using_command import' -d Import\ items\ that\ \*don\'t\*\ match\ search/tag/date\ filters
287
296
  complete -c doing -l only_timed -f -n '__fish_doing_using_command import' -d Only\ import\ items\ with\ recorded\ time\ intervals
288
297
  complete -c doing -l overlap -f -n '__fish_doing_using_command import' -d Allow\ entries\ that\ overlap\ existing\ times
289
298
  complete -c doing -l prefix -f -r -n '__fish_doing_using_command import' -d Prefix\ entries\ with
290
299
  complete -c doing -l section -s s -f -r -n '__fish_doing_using_command import' -d Target\ section
291
- complete -c doing -l search -f -r -n '__fish_doing_using_command import' -d Only\ import\ items\ matching\ search
300
+ complete -c doing -l search -f -r -n '__fish_doing_using_command import' -d Filter\ entries\ using\ a\ search\ query
292
301
  complete -c doing -l tag -s t -f -r -n '__fish_doing_using_command import' -d Tag\ all\ imported\ entries
293
302
  complete -c doing -l type -f -r -n '__fish_doing_using_command import' -d Import\ type
294
303
  complete -c doing -l exact -s x -f -n '__fish_doing_using_command import' -d Force\ exact\ search\ string\ matching
295
- complete -c doing -l bool -f -r -n '__fish_doing_using_command last' -d Tag\ boolean
304
+ complete -c doing -l bool -f -r -n '__fish_doing_using_command last' -d Boolean\ used\ to\ combine\ multiple\ tags
296
305
  complete -c doing -l case -f -r -n '__fish_doing_using_command last' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
297
306
  complete -c doing -l config_template -f -r -n '__fish_doing_using_command last' -d Output\ using\ a\ template\ from\ configuration
298
307
  complete -c doing -l delete -s d -f -n '__fish_doing_using_command last' -d Delete\ the\ last\ entry
299
308
  complete -c doing -l duration -f -n '__fish_doing_using_command last' -d Show\ elapsed\ time\ if\ entry\ is\ not\ tagged\ @done
300
309
  complete -c doing -l editor -s e -f -n '__fish_doing_using_command last' -d Edit\ entry\ with\ vim
301
310
  complete -c doing -l hilite -s h -f -n '__fish_doing_using_command last' -d Highlight\ search\ matches\ in\ output
302
- complete -c doing -l not -f -n '__fish_doing_using_command last' -d Show\ items\ that\ \*don\'t\*\ match\ search\ string\ or\ tag\ filter
311
+ complete -c doing -l not -f -n '__fish_doing_using_command last' -d Show\ items\ that\ \*don\'t\*\ match\ search/tag\ filters
303
312
  complete -c doing -l section -s s -f -r -n '__fish_doing_using_command last' -d Specify\ a\ section
304
- complete -c doing -l search -f -r -n '__fish_doing_using_command last' -d Search\ filter
305
- complete -c doing -l tag -f -r -n '__fish_doing_using_command last' -d Tag\ filter
313
+ complete -c doing -l search -f -r -n '__fish_doing_using_command last' -d Filter\ entries\ using\ a\ search\ query
314
+ complete -c doing -l tag -f -r -n '__fish_doing_using_command last' -d Filter\ entries\ by\ tag
306
315
  complete -c doing -l template -f -r -n '__fish_doing_using_command last' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
307
316
  complete -c doing -l val -f -r -n '__fish_doing_using_command last' -d Perform\ a\ tag\ value\ query
308
317
  complete -c doing -l exact -s x -f -n '__fish_doing_using_command last' -d Force\ exact\ search\ string\ matching
@@ -310,42 +319,45 @@ complete -c doing -l ask -f -n '__fish_doing_using_command later' -d Prompt\ f
310
319
  complete -c doing -l started -f -r -n '__fish_doing_using_command later' -d Backdate\ start\ time\ to\ date\ string\ \[4pm\|20m\|2h\|yesterday\ noon\]
311
320
  complete -c doing -l editor -s e -f -n '__fish_doing_using_command later' -d Edit\ entry\ with\ vim
312
321
  complete -c doing -l note -s n -f -r -n '__fish_doing_using_command later' -d Note
313
- complete -c doing -l bool -f -r -n '__fish_doing_using_command mark flag' -d Boolean
322
+ complete -c doing -l bool -f -r -n '__fish_doing_using_command mark flag' -d Boolean\ used\ to\ combine\ multiple\ tags
314
323
  complete -c doing -l count -s c -f -r -n '__fish_doing_using_command mark flag' -d How\ many\ recent\ entries\ to\ tag
315
324
  complete -c doing -l case -f -r -n '__fish_doing_using_command mark flag' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
316
325
  complete -c doing -l date -s d -f -n '__fish_doing_using_command mark flag' -d Include\ current\ date/time\ with\ tag
317
326
  complete -c doing -l force -f -n '__fish_doing_using_command mark flag' -d Don\'t\ ask\ permission\ to\ flag\ all\ entries\ when\ count\ is\ 0
318
327
  complete -c doing -l interactive -s i -f -n '__fish_doing_using_command mark flag' -d Select\ item\(s\)\ to\ flag\ from\ a\ menu\ of\ matching\ entries
319
- complete -c doing -l not -f -n '__fish_doing_using_command mark flag' -d Flag\ items\ that\ \*don\'t\*\ match\ search/tag/date\ filters
328
+ complete -c doing -l not -f -n '__fish_doing_using_command mark flag' -d Flag\ items\ that\ \*don\'t\*\ match\ search/tag\ filters
320
329
  complete -c doing -l remove -s r -f -n '__fish_doing_using_command mark flag' -d Remove\ flag
321
330
  complete -c doing -l section -s s -f -r -n '__fish_doing_using_command mark flag' -d Section
322
- complete -c doing -l search -f -r -n '__fish_doing_using_command mark flag' -d Flag\ the\ last\ entry\ matching\ search\ filter
323
- complete -c doing -l tag -f -r -n '__fish_doing_using_command mark flag' -d Flag\ the\ last\ entry\ containing\ TAG
331
+ complete -c doing -l search -f -r -n '__fish_doing_using_command mark flag' -d Filter\ entries\ using\ a\ search\ query
332
+ complete -c doing -l tag -f -r -n '__fish_doing_using_command mark flag' -d Filter\ entries\ by\ tag
324
333
  complete -c doing -l unfinished -s u -f -n '__fish_doing_using_command mark flag' -d Flag\ last\ entry
325
334
  complete -c doing -l val -f -r -n '__fish_doing_using_command mark flag' -d Perform\ a\ tag\ value\ query
326
335
  complete -c doing -l exact -s x -f -n '__fish_doing_using_command mark flag' -d Force\ exact\ search\ string\ matching
336
+ complete -c doing -l noauto -s X -f -n '__fish_doing_using_command meanwhile' -d Exclude\ auto\ tags\ and\ default\ tags
327
337
  complete -c doing -l archive -s a -f -n '__fish_doing_using_command meanwhile' -d Archive\ previous\ @meanwhile\ entry
328
338
  complete -c doing -l ask -f -n '__fish_doing_using_command meanwhile' -d Prompt\ for\ note\ via\ multi-line\ input
329
339
  complete -c doing -l started -f -r -n '__fish_doing_using_command meanwhile' -d Backdate\ start\ date\ for\ new\ entry\ to\ date\ string\ \[4pm\|20m\|2h\|yesterday\ noon\]
330
340
  complete -c doing -l editor -s e -f -n '__fish_doing_using_command meanwhile' -d Edit\ entry\ with\ vim
331
- complete -c doing -l note -s n -f -r -n '__fish_doing_using_command meanwhile' -d Note
341
+ complete -c doing -l note -s n -f -r -n '__fish_doing_using_command meanwhile' -d Include\ a\ note
332
342
  complete -c doing -l section -s s -f -r -n '__fish_doing_using_command meanwhile' -d Section
333
343
  complete -c doing -l ask -f -n '__fish_doing_using_command note' -d Prompt\ for\ note\ via\ multi-line\ input
334
- complete -c doing -l bool -f -r -n '__fish_doing_using_command note' -d Boolean
344
+ complete -c doing -l bool -f -r -n '__fish_doing_using_command note' -d Boolean\ used\ to\ combine\ multiple\ tags
335
345
  complete -c doing -l case -f -r -n '__fish_doing_using_command note' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
336
346
  complete -c doing -l editor -s e -f -n '__fish_doing_using_command note' -d Edit\ entry\ with\ vim
337
347
  complete -c doing -l interactive -s i -f -n '__fish_doing_using_command note' -d Select\ item\ for\ new\ note\ from\ a\ menu\ of\ matching\ entries
338
- complete -c doing -l not -f -n '__fish_doing_using_command note' -d Add\ note\ to\ item\ that\ \*doesn\'t\*\ match\ search/tag\ filters
348
+ complete -c doing -l not -f -n '__fish_doing_using_command note' -d Note\ items\ that\ \*don\'t\*\ match\ search/tag\ filters
339
349
  complete -c doing -l remove -s r -f -n '__fish_doing_using_command note' -d Replace/Remove\ last\ entry\'s\ note
340
350
  complete -c doing -l section -s s -f -r -n '__fish_doing_using_command note' -d Section
341
- complete -c doing -l search -f -r -n '__fish_doing_using_command note' -d Add/remove\ note\ from\ last\ entry\ matching\ search\ filter
342
- complete -c doing -l tag -f -r -n '__fish_doing_using_command note' -d Add/remove\ note\ from\ last\ entry\ matching\ tag
351
+ complete -c doing -l search -f -r -n '__fish_doing_using_command note' -d Filter\ entries\ using\ a\ search\ query
352
+ complete -c doing -l tag -f -r -n '__fish_doing_using_command note' -d Filter\ entries\ by\ tag
343
353
  complete -c doing -l val -f -r -n '__fish_doing_using_command note' -d Perform\ a\ tag\ value\ query
344
354
  complete -c doing -l exact -s x -f -n '__fish_doing_using_command note' -d Force\ exact\ search\ string\ matching
355
+ complete -c doing -l noauto -s X -f -n '__fish_doing_using_command now next' -d Exclude\ auto\ tags\ and\ default\ tags
345
356
  complete -c doing -l ask -f -n '__fish_doing_using_command now next' -d Prompt\ for\ note\ via\ multi-line\ input
346
- complete -c doing -l started -f -r -n '__fish_doing_using_command now next' -d Backdate\ start\ time\ \[4pm\|20m\|2h\|\"yesterday\ noon\"\]
357
+ complete -c doing -l started -f -r -n '__fish_doing_using_command now next' -d Backdate\ start\ date\ for\ new\ entry\ to\ date\ string\ \[4pm\|20m\|2h\|yesterday\ noon\]
347
358
  complete -c doing -l editor -s e -f -n '__fish_doing_using_command now next' -d Edit\ entry\ with\ vim
348
359
  complete -c doing -l finish_last -s f -f -n '__fish_doing_using_command now next' -d Timed\ entry
360
+ complete -c doing -l from -f -r -n '__fish_doing_using_command now next' -d Set\ a\ start\ and\ optionally\ end\ time\ as\ a\ date\ range
349
361
  complete -c doing -l note -s n -f -r -n '__fish_doing_using_command now next' -d Include\ a\ note
350
362
  complete -c doing -l section -s s -f -r -n '__fish_doing_using_command now next' -d Section
351
363
  complete -c doing -l config_template -f -r -n '__fish_doing_using_command on' -d Output\ using\ a\ template\ from\ configuration
@@ -369,31 +381,33 @@ complete -c doing -l times -s t -f -n '__fish_doing_using_command recent' -d Sh
369
381
  complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command recent' -d Sort\ tags\ by
370
382
  complete -c doing -l template -f -r -n '__fish_doing_using_command recent' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
371
383
  complete -c doing -l totals -f -n '__fish_doing_using_command recent' -d Show\ intervals\ with\ totals\ at\ the\ end\ of\ output
372
- complete -c doing -l bool -f -r -n '__fish_doing_using_command reset begin' -d Boolean
384
+ complete -c doing -l file -s f -f -r -n '__fish_doing_using_command redo' -d Specify\ alternate\ doing\ file
385
+ complete -c doing -l interactive -s i -f -n '__fish_doing_using_command redo' -d Select\ from\ an\ interactive\ menu
386
+ complete -c doing -l bool -f -r -n '__fish_doing_using_command reset begin' -d Boolean\ used\ to\ combine\ multiple\ tags
373
387
  complete -c doing -l case -f -r -n '__fish_doing_using_command reset begin' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
374
388
  complete -c doing -l interactive -s i -f -n '__fish_doing_using_command reset begin' -d Select\ from\ a\ menu\ of\ matching\ entries
375
389
  complete -c doing -l not -f -n '__fish_doing_using_command reset begin' -d Reset\ items\ that\ \*don\'t\*\ match\ search/tag\ filters
376
390
  complete -c doing -l resume -s r -f -n '__fish_doing_using_command reset begin' -d Resume\ entry
377
391
  complete -c doing -l section -s s -f -r -n '__fish_doing_using_command reset begin' -d Limit\ search\ to\ section
378
- complete -c doing -l search -f -r -n '__fish_doing_using_command reset begin' -d Reset\ last\ entry\ matching\ search\ filter
379
- complete -c doing -l tag -f -r -n '__fish_doing_using_command reset begin' -d Reset\ last\ entry\ matching\ tag
392
+ complete -c doing -l search -f -r -n '__fish_doing_using_command reset begin' -d Filter\ entries\ using\ a\ search\ query
393
+ complete -c doing -l tag -f -r -n '__fish_doing_using_command reset begin' -d Filter\ entries\ by\ tag
380
394
  complete -c doing -l val -f -r -n '__fish_doing_using_command reset begin' -d Perform\ a\ tag\ value\ query
381
395
  complete -c doing -l exact -s x -f -n '__fish_doing_using_command reset begin' -d Force\ exact\ search\ string\ matching
382
396
  complete -c doing -l before -f -r -n '__fish_doing_using_command rotate' -d Rotate\ entries\ older\ than\ date
383
- complete -c doing -l bool -f -r -n '__fish_doing_using_command rotate' -d Tag\ boolean
397
+ complete -c doing -l bool -f -r -n '__fish_doing_using_command rotate' -d Boolean\ used\ to\ combine\ multiple\ tags
384
398
  complete -c doing -l case -f -r -n '__fish_doing_using_command rotate' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
385
399
  complete -c doing -l keep -s k -f -r -n '__fish_doing_using_command rotate' -d How\ many\ items\ to\ keep\ in\ each\ section
386
- complete -c doing -l not -f -n '__fish_doing_using_command rotate' -d Rotate\ items\ that\ \*don\'t\*\ match\ search\ string\ or\ tag\ filter
400
+ complete -c doing -l not -f -n '__fish_doing_using_command rotate' -d Rotate\ items\ that\ \*don\'t\*\ match\ search/tag\ filters
387
401
  complete -c doing -l section -s s -f -r -n '__fish_doing_using_command rotate' -d Section\ to\ rotate
388
- complete -c doing -l search -f -r -n '__fish_doing_using_command rotate' -d Search\ filter
389
- complete -c doing -l tag -f -r -n '__fish_doing_using_command rotate' -d Tag\ filter
402
+ complete -c doing -l search -f -r -n '__fish_doing_using_command rotate' -d Filter\ entries\ using\ a\ search\ query
403
+ complete -c doing -l tag -f -r -n '__fish_doing_using_command rotate' -d Filter\ entries\ by\ tag
390
404
  complete -c doing -l val -f -r -n '__fish_doing_using_command rotate' -d Perform\ a\ tag\ value\ query
391
405
  complete -c doing -l exact -s x -f -n '__fish_doing_using_command rotate' -d Force\ exact\ search\ string\ matching
392
406
  complete -c doing -l column -s c -f -n '__fish_doing_using_command sections' -d List\ in\ single\ column
393
407
  complete -c doing -l archive -s a -f -n '__fish_doing_using_command select' -d Archive\ selected\ items
394
- complete -c doing -l after -f -r -n '__fish_doing_using_command select' -d Select\ from\ entries\ newer\ than\ date
408
+ complete -c doing -l after -f -r -n '__fish_doing_using_command select' -d Select\ entries\ newer\ than\ date
395
409
  complete -c doing -l resume -f -n '__fish_doing_using_command select' -d Copy\ selection\ as\ a\ new\ entry\ with\ current\ time\ and\ no\ @done\ tag
396
- complete -c doing -l before -f -r -n '__fish_doing_using_command select' -d Select\ from\ entries\ older\ than\ date
410
+ complete -c doing -l before -f -r -n '__fish_doing_using_command select' -d Select\ entries\ older\ than\ date
397
411
  complete -c doing -l cancel -s c -f -n '__fish_doing_using_command select' -d Cancel\ selected\ items
398
412
  complete -c doing -l case -f -r -n '__fish_doing_using_command select' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
399
413
  complete -c doing -l delete -s d -f -n '__fish_doing_using_command select' -d Delete\ selected\ items
@@ -401,7 +415,7 @@ complete -c doing -l editor -s e -f -n '__fish_doing_using_command select' -d E
401
415
  complete -c doing -l finish -s f -f -n '__fish_doing_using_command select' -d Add\ @done\ with\ current\ time\ to\ selected\ item\(s\)
402
416
  complete -c doing -l flag -f -n '__fish_doing_using_command select' -d Add\ flag\ to\ selected\ item\(s\)
403
417
  complete -c doing -l force -f -n '__fish_doing_using_command select' -d Perform\ action\ without\ confirmation
404
- complete -c doing -l from -f -r -n '__fish_doing_using_command select' -d Date\ range\ to\ show
418
+ complete -c doing -l from -f -r -n '__fish_doing_using_command select' -d Date\ range
405
419
  complete -c doing -l move -s m -f -r -n '__fish_doing_using_command select' -d Move\ selected\ items\ to\ section
406
420
  complete -c doing -l menu -f -n '__fish_doing_using_command select' -d Use\ --no-menu\ to\ skip\ the\ interactive\ menu
407
421
  complete -c doing -l not -f -n '__fish_doing_using_command select' -d Select\ items\ that\ \*don\'t\*\ match\ search/tag\ filters
@@ -410,29 +424,29 @@ complete -c doing -l query -s q -f -r -n '__fish_doing_using_command select' -d
410
424
  complete -c doing -l remove -s r -f -n '__fish_doing_using_command select' -d Reverse\ -c
411
425
  complete -c doing -l section -s s -f -r -n '__fish_doing_using_command select' -d Select\ from\ a\ specific\ section
412
426
  complete -c doing -l save_to -f -r -n '__fish_doing_using_command select' -d Save\ selected\ entries\ to\ file\ using\ --output\ format
413
- complete -c doing -l search -f -r -n '__fish_doing_using_command select' -d Select\ from\ entries\ matching\ search\ filter
427
+ complete -c doing -l search -f -r -n '__fish_doing_using_command select' -d Filter\ entries\ using\ a\ search\ query
414
428
  complete -c doing -l tag -s t -f -r -n '__fish_doing_using_command select' -d Tag\ selected\ entries
415
429
  complete -c doing -l val -f -r -n '__fish_doing_using_command select' -d Perform\ a\ tag\ value\ query
416
430
  complete -c doing -l exact -s x -f -n '__fish_doing_using_command select' -d Force\ exact\ search\ string\ matching
417
431
  complete -c doing -l age -s a -f -r -n '__fish_doing_using_command show' -d Age
418
432
  complete -c doing -l after -f -r -n '__fish_doing_using_command show' -d Show\ entries\ newer\ than\ date
419
- complete -c doing -l bool -s b -f -r -n '__fish_doing_using_command show' -d Tag\ boolean
420
433
  complete -c doing -l before -f -r -n '__fish_doing_using_command show' -d Show\ entries\ older\ than\ date
434
+ complete -c doing -l bool -f -r -n '__fish_doing_using_command show' -d Boolean\ used\ to\ combine\ multiple\ tags
421
435
  complete -c doing -l count -s c -f -r -n '__fish_doing_using_command show' -d Max\ count\ to\ show
422
436
  complete -c doing -l case -f -r -n '__fish_doing_using_command show' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
423
437
  complete -c doing -l config_template -f -r -n '__fish_doing_using_command show' -d Output\ using\ a\ template\ from\ configuration
424
438
  complete -c doing -l duration -f -n '__fish_doing_using_command show' -d Show\ elapsed\ time\ on\ entries\ without\ @done\ tag
425
- complete -c doing -l from -f -r -n '__fish_doing_using_command show' -d Date\ range\ to\ show
439
+ complete -c doing -l from -f -r -n '__fish_doing_using_command show' -d Date\ range
426
440
  complete -c doing -l hilite -s h -f -n '__fish_doing_using_command show' -d Highlight\ search\ matches\ in\ output
427
441
  complete -c doing -l interactive -s i -f -n '__fish_doing_using_command show' -d Select\ from\ a\ menu\ of\ matching\ entries\ to\ perform\ additional\ operations
428
442
  complete -c doing -l menu -s m -f -n '__fish_doing_using_command show' -d Select\ section\ or\ tag\ to\ display\ from\ a\ menu
429
- complete -c doing -l not -f -n '__fish_doing_using_command show' -d Show\ items\ that\ \*don\'t\*\ match\ search/tag/date\ filters
443
+ complete -c doing -l not -f -n '__fish_doing_using_command show' -d Show\ items\ that\ \*don\'t\*\ match\ search/tag\ filters
430
444
  complete -c doing -l output -s o -f -r -n '__fish_doing_using_command show' -d Output\ to\ export\ format
431
445
  complete -c doing -l only_timed -f -n '__fish_doing_using_command show' -d Only\ show\ items\ with\ recorded\ time\ intervals
432
446
  complete -c doing -l sort -s s -f -r -n '__fish_doing_using_command show' -d Sort\ order
433
- complete -c doing -l search -f -r -n '__fish_doing_using_command show' -d Search\ filter
447
+ complete -c doing -l search -f -r -n '__fish_doing_using_command show' -d Filter\ entries\ using\ a\ search\ query
434
448
  complete -c doing -l times -s t -f -n '__fish_doing_using_command show' -d Show\ time\ intervals\ on\ @done\ tasks
435
- complete -c doing -l tag -f -r -n '__fish_doing_using_command show' -d Tag\ filter
449
+ complete -c doing -l tag -f -r -n '__fish_doing_using_command show' -d Filter\ entries\ by\ tag
436
450
  complete -c doing -l tag_order -f -r -n '__fish_doing_using_command show' -d Tag\ sort\ direction
437
451
  complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command show' -d Sort\ tags\ by
438
452
  complete -c doing -l template -f -r -n '__fish_doing_using_command show' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
@@ -448,7 +462,7 @@ complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command since' -d So
448
462
  complete -c doing -l template -f -r -n '__fish_doing_using_command since' -d Override\ output\ format\ with\ a\ template\ string\ containing\ \%placeholders
449
463
  complete -c doing -l totals -f -n '__fish_doing_using_command since' -d Show\ time\ totals\ at\ the\ end\ of\ output
450
464
  complete -c doing -l autotag -s a -f -n '__fish_doing_using_command tag' -d Autotag\ entries\ based\ on\ autotag\ configuration\ in\ \~/
451
- complete -c doing -l bool -f -r -n '__fish_doing_using_command tag' -d Boolean
465
+ complete -c doing -l bool -f -r -n '__fish_doing_using_command tag' -d Boolean\ used\ to\ combine\ multiple\ tags
452
466
  complete -c doing -l count -s c -f -r -n '__fish_doing_using_command tag' -d How\ many\ recent\ entries\ to\ tag
453
467
  complete -c doing -l case -f -r -n '__fish_doing_using_command tag' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
454
468
  complete -c doing -l date -s d -f -n '__fish_doing_using_command tag' -d Include\ current\ date/time\ with\ tag
@@ -459,8 +473,8 @@ complete -c doing -l remove -s r -f -n '__fish_doing_using_command tag' -d Remo
459
473
  complete -c doing -l regex -f -n '__fish_doing_using_command tag' -d Interpret\ tag\ string\ as\ regular\ expression
460
474
  complete -c doing -l rename -f -r -n '__fish_doing_using_command tag' -d Replace\ existing\ tag\ with\ tag\ argument
461
475
  complete -c doing -l section -s s -f -r -n '__fish_doing_using_command tag' -d Section
462
- complete -c doing -l search -f -r -n '__fish_doing_using_command tag' -d Tag\ entries\ matching\ search\ filter
463
- complete -c doing -l tag -f -r -n '__fish_doing_using_command tag' -d Tag\ the\ last\ X\ entries\ containing\ TAG
476
+ complete -c doing -l search -f -r -n '__fish_doing_using_command tag' -d Filter\ entries\ using\ a\ search\ query
477
+ complete -c doing -l tag -f -r -n '__fish_doing_using_command tag' -d Filter\ entries\ by\ tag
464
478
  complete -c doing -l unfinished -s u -f -n '__fish_doing_using_command tag' -d Tag\ last\ entry
465
479
  complete -c doing -l value -s v -f -r -n '__fish_doing_using_command tag' -d Include\ a\ value
466
480
  complete -c doing -l val -f -r -n '__fish_doing_using_command tag' -d Perform\ a\ tag\ value\ query
@@ -471,12 +485,12 @@ complete -c doing -l counts -s c -f -n '__fish_doing_using_command tags' -d Sho
471
485
  complete -c doing -l case -f -r -n '__fish_doing_using_command tags' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
472
486
  complete -c doing -l interactive -s i -f -n '__fish_doing_using_command tags' -d Select\ items\ to\ scan\ from\ a\ menu\ of\ matching\ entries
473
487
  complete -c doing -l line -s l -f -n '__fish_doing_using_command tags' -d Output\ in\ a\ single\ line\ with\ @\ symbols
474
- complete -c doing -l not -f -n '__fish_doing_using_command tags' -d Get\ tags\ from\ items\ that\ \*don\'t\*\ match\ search/tag\ filters
488
+ complete -c doing -l not -f -n '__fish_doing_using_command tags' -d Show\ items\ that\ \*don\'t\*\ match\ search/tag\ filters
475
489
  complete -c doing -l order -s o -f -r -n '__fish_doing_using_command tags' -d Sort\ order
476
490
  complete -c doing -l section -s s -f -r -n '__fish_doing_using_command tags' -d Section
477
- complete -c doing -l search -f -r -n '__fish_doing_using_command tags' -d Get\ tags\ for\ items\ matching\ search
491
+ complete -c doing -l search -f -r -n '__fish_doing_using_command tags' -d Filter\ entries\ using\ a\ search\ query
478
492
  complete -c doing -l sort -f -r -n '__fish_doing_using_command tags' -d Sort\ by\ name\ or\ count
479
- complete -c doing -l tag -f -r -n '__fish_doing_using_command tags' -d Get\ tags\ for\ entries\ matching\ tags
493
+ complete -c doing -l tag -f -r -n '__fish_doing_using_command tags' -d Filter\ entries\ by\ tag
480
494
  complete -c doing -l val -f -r -n '__fish_doing_using_command tags' -d Perform\ a\ tag\ value\ query
481
495
  complete -c doing -l exact -s x -f -n '__fish_doing_using_command tags' -d Force\ exact\ search\ string\ matching
482
496
  complete -c doing -l column -s c -f -n '__fish_doing_using_command template' -d List\ in\ single\ column\ for\ completion
@@ -498,24 +512,24 @@ complete -c doing -l file -s f -f -r -n '__fish_doing_using_command undo' -d Spe
498
512
  complete -c doing -l interactive -s i -f -n '__fish_doing_using_command undo' -d Select\ from\ recent\ backups
499
513
  complete -c doing -l prune -s p -f -r -n '__fish_doing_using_command undo' -d Remove\ old\ backups
500
514
  complete -c doing -l redo -s r -f -n '__fish_doing_using_command undo' -d Redo\ last\ undo
501
- complete -c doing -l after -f -r -n '__fish_doing_using_command view' -d View\ entries\ newer\ than\ date
515
+ complete -c doing -l after -f -r -n '__fish_doing_using_command view' -d Show\ entries\ newer\ than\ date
502
516
  complete -c doing -l age -f -r -n '__fish_doing_using_command view' -d Age
503
- complete -c doing -l bool -s b -f -r -n '__fish_doing_using_command view' -d Tag\ boolean
504
- complete -c doing -l before -f -r -n '__fish_doing_using_command view' -d View\ entries\ older\ than\ date
517
+ complete -c doing -l before -f -r -n '__fish_doing_using_command view' -d Show\ entries\ older\ than\ date
518
+ complete -c doing -l bool -f -r -n '__fish_doing_using_command view' -d Boolean\ used\ to\ combine\ multiple\ tags
505
519
  complete -c doing -l count -s c -f -r -n '__fish_doing_using_command view' -d Count\ to\ display
506
520
  complete -c doing -l case -f -r -n '__fish_doing_using_command view' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive
507
521
  complete -c doing -l color -f -n '__fish_doing_using_command view' -d Include\ colors\ in\ output
508
522
  complete -c doing -l duration -f -n '__fish_doing_using_command view' -d Show\ elapsed\ time\ on\ entries\ without\ @done\ tag
509
- complete -c doing -l from -f -r -n '__fish_doing_using_command view' -d Date\ range\ to\ show
523
+ complete -c doing -l from -f -r -n '__fish_doing_using_command view' -d Date\ range
510
524
  complete -c doing -l hilite -s h -f -n '__fish_doing_using_command view' -d Highlight\ search\ matches\ in\ output
511
525
  complete -c doing -l interactive -s i -f -n '__fish_doing_using_command view' -d Select\ from\ a\ menu\ of\ matching\ entries\ to\ perform\ additional\ operations
512
- complete -c doing -l not -f -n '__fish_doing_using_command view' -d Show\ items\ that\ \*don\'t\*\ match\ search\ string
526
+ complete -c doing -l not -f -n '__fish_doing_using_command view' -d Show\ items\ that\ \*don\'t\*\ match\ search/tag\ filters
513
527
  complete -c doing -l output -s o -f -r -n '__fish_doing_using_command view' -d Output\ to\ export\ format
514
528
  complete -c doing -l only_timed -f -n '__fish_doing_using_command view' -d Only\ show\ items\ with\ recorded\ time\ intervals
515
529
  complete -c doing -l section -s s -f -r -n '__fish_doing_using_command view' -d Section
516
- complete -c doing -l search -f -r -n '__fish_doing_using_command view' -d Search\ filter
530
+ complete -c doing -l search -f -r -n '__fish_doing_using_command view' -d Filter\ entries\ using\ a\ search\ query
517
531
  complete -c doing -l times -s t -f -n '__fish_doing_using_command view' -d Show\ time\ intervals\ on\ @done\ tasks
518
- complete -c doing -l tag -f -r -n '__fish_doing_using_command view' -d Tag\ filter
532
+ complete -c doing -l tag -f -r -n '__fish_doing_using_command view' -d Filter\ entries\ by\ tag
519
533
  complete -c doing -l tag_order -f -r -n '__fish_doing_using_command view' -d Tag\ sort\ direction
520
534
  complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command view' -d Sort\ tags\ by
521
535
  complete -c doing -l totals -f -n '__fish_doing_using_command view' -d Show\ intervals\ with\ totals\ at\ the\ end\ of\ output
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative 'tags'
4
+ require_relative 'nested_hash'
@@ -0,0 +1,17 @@
1
+ module Doing
2
+ ##
3
+ ## Array helpers
4
+ ##
5
+ class ::Array
6
+ ##
7
+ ## Convert array to nested hash, setting last key to value
8
+ ##
9
+ ## @param value The value to set
10
+ ##
11
+ def nested_hash(value = nil)
12
+ hsh = Hash.new { |h, k| h[k] = Hash.new(&h.default_proc) }
13
+ hsh.dig(*self[0..-2])[fetch(-1)] = value
14
+ hsh
15
+ end
16
+ end
17
+ end
@@ -6,15 +6,15 @@ module Doing
6
6
  ##
7
7
  class ::Array
8
8
  ##
9
- ## Convert an @tags to plain strings
9
+ ## Convert an array of @tags to plain strings
10
10
  ##
11
11
  ## @return [Array] array of strings
12
12
  ##
13
13
  def tags_to_array
14
- map(&:remove_at)
14
+ map(&:remove_at).map(&:strip)
15
15
  end
16
16
 
17
- # Convert strings to @tags
17
+ # Convert array of strings to array of @tags
18
18
  #
19
19
  # @return [Array] Array of @tags
20
20
  #
@@ -25,21 +25,16 @@ module Doing
25
25
  map(&:add_at)
26
26
  end
27
27
 
28
- def to_tags!
29
- replace to_tags
30
- end
31
-
32
28
  ##
33
29
  ## Hightlight @tags in string for console output
34
30
  ##
35
31
  ## @param color [String] the color to highlight
36
32
  ## with
37
33
  ##
38
- ## @return [String] string with @tags highlighted
34
+ ## @return [Array] Array of highlighted @tags
39
35
  ##
40
36
  def highlight_tags(color = 'cyan')
41
- tag_color = Doing::Color.send(color)
42
- to_tags.map { |t| "#{tag_color}#{t}" }
37
+ to_tags.map { |t| Doing::Color.send(color.to_sym, t) }
43
38
  end
44
39
 
45
40
  ##
@@ -47,21 +42,8 @@ module Doing
47
42
  ##
48
43
  ## @return [String] Highlighted tag array joined with comma
49
44
  ##
50
- def log_tags
51
- highlight_tags.join(', ')
52
- end
53
-
54
- ##
55
- ## Convert array to nested hash, setting last key to value
56
- ##
57
- ## @param value The value to set
58
- ##
59
- def nested_hash(value)
60
- raise StandardError, 'Value can not be nil' if value.nil?
61
-
62
- hsh = Hash.new { |h, k| h[k] = Hash.new(&h.default_proc) }
63
- hsh.dig(*self[0..-2])[self.fetch(-1)] = value
64
- hsh
45
+ def log_tags(color = 'cyan')
46
+ highlight_tags(color).join(', ')
65
47
  end
66
48
  end
67
49
  end
@@ -5,7 +5,7 @@ module Doing
5
5
  class Change
6
6
  attr_reader :version, :content
7
7
 
8
- attr_accessor :entries
8
+ attr_accessor :entries, :change_date
9
9
 
10
10
  def initialize(version, content)
11
11
  @version = Version.new(version)
@@ -14,6 +14,9 @@ module Doing
14
14
  end
15
15
 
16
16
  def parse_entries
17
+ date = @content.match(/^\d{4}-\d{2}-\d{2} \d{2}:\d{2}$/)
18
+ @change_date = Time.parse(date[0]) if date
19
+
17
20
  @entries = []
18
21
  types = @content.scan(/(?<=\n|\A)#### (NEW|IMPROVED|FIXED)(.*?)(?=\n####|\Z)/m)
19
22
  types.each do |type|
@@ -28,7 +31,7 @@ module Doing
28
31
 
29
32
  matches = []
30
33
 
31
- if search_string.is_rx?
34
+ if search_string.rx?
32
35
  matches = @entries.select { |e| e.string =~ search_string.to_rx(distance: 2, case_type: case_type) }
33
36
  else
34
37
  query = search_string.gsub(/(-)?--/, '\1]]').to_phrase_query
@@ -53,14 +56,9 @@ module Doing
53
56
  { version: @version, content: @content }
54
57
  end
55
58
 
56
- def to_s
57
- out = ["### #{@version}"]
58
- items = {
59
- new: [],
60
- improved: [],
61
- fixed: [],
62
- other: []
63
- }
59
+ def split_items
60
+ items = { new: [], improved: [], fixed: [], other: [] }
61
+
64
62
  @entries.each do |e|
65
63
  type = e.type.downcase.to_sym
66
64
  if items.key?(type)
@@ -70,7 +68,14 @@ module Doing
70
68
  end
71
69
  end
72
70
 
73
- items.each do |type, members|
71
+ items
72
+ end
73
+
74
+ def to_s
75
+ date = @change_date.nil? ? '' : " _(#{@change_date.strftime('%F')})_"
76
+ out = ["### __#{@version}__#{date}"]
77
+
78
+ split_items.each do |type, members|
74
79
  if members.count.positive?
75
80
  out << "#### #{type.to_s.capitalize}"
76
81
  out << members.map(&:to_s).join("\n")
@@ -80,6 +85,16 @@ module Doing
80
85
  out.join("\n\n")
81
86
  end
82
87
 
88
+ def changes_only
89
+ out = []
90
+
91
+ split_items.each do |_, members|
92
+ out << members.map(&:to_s).join("\n")
93
+ end
94
+
95
+ out.join("")
96
+ end
97
+
83
98
  private
84
99
 
85
100
  def all_searches?(text, searches)
@@ -4,8 +4,10 @@ module Doing
4
4
  # A collection of Changes
5
5
  class Changes
6
6
  attr_reader :changes
7
+ attr_writer :changes_only
7
8
 
8
- def initialize(lookup: nil, search: nil)
9
+ def initialize(lookup: nil, search: nil, changes_only: false)
10
+ @changes_only = changes_only
9
11
  changelog = File.expand_path(File.join(File.dirname(__FILE__), '..', '..', '..', 'CHANGELOG.md'))
10
12
  raise 'Error locating changelog' unless File.exist?(changelog)
11
13
 
@@ -14,17 +16,25 @@ module Doing
14
16
  end
15
17
 
16
18
  def latest
17
- @changes[0].to_s.force_encoding('utf-8')
19
+ if @changes_only
20
+ @changes[0].changes_only.force_encoding('utf-8')
21
+ else
22
+ @changes[0].to_s.force_encoding('utf-8')
23
+ end
18
24
  end
19
25
 
20
26
  def to_s
21
- @changes.map(&:to_s).join("\n\n").force_encoding('utf-8')
27
+ if @changes_only
28
+ @changes.map(&:changes_only).join().force_encoding('utf-8')
29
+ else
30
+ @changes.map(&:to_s).join("\n\n").force_encoding('utf-8')
31
+ end
22
32
  end
23
33
 
24
34
  private
25
35
 
26
36
  def parse_changes(lookup, search)
27
- change_rx = /(?<=\n|\A)### (\d+\.\d+\.\d+(?:\w+)?)(.*?)(?=\n### |\Z)/m
37
+ change_rx = /(?<=\n|\A)### (\d+\.\d+\.\d+(?:\w*))(.*?)(?=\n### |\Z)/m
28
38
  @changes = @content.scan(change_rx).each_with_object([]) do |m, a|
29
39
  next if m[0].nil? || m[1].nil?
30
40
 
File without changes