doing 2.1.23 → 2.1.27

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 (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