diff --git a/CHANGELOG.md b/CHANGELOG.md index 484c8bc8..9add6695 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,4 @@ -### 2.0.12 +### 2.0.13 #### FIXED diff --git a/Gemfile.lock b/Gemfile.lock index 39aee76c..0a2e43a4 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -1,7 +1,7 @@ PATH remote: . specs: - doing (2.0.12) + doing (2.0.13) chronic (~> 0.10, >= 0.10.2) deep_merge (~> 1.2, >= 1.2.1) gli (~> 2.19, >= 2.19.2) diff --git a/README.md b/README.md index ab49b170..f40e5024 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ _If you're one of the rare people like me who find this useful, feel free to [bu -The current version of `doing` is 2.0.10. +The current version of `doing` is 2.0.11. Find all of the documentation in the [doing wiki](https://github.com/ttscoff/doing/wiki). diff --git a/doing.rdoc b/doing.rdoc index 6c6491cd..5c3b8528 100644 --- a/doing.rdoc +++ b/doing.rdoc @@ -5,7 +5,7 @@ record of what you've been doing, complete with tag-based time tracking. The command line tool allows you to add entries, annotate with tags and notes, and view your entries with myriad options, with a focus on a "natural" language syntax. -v2.0.11 +v2.0.13 === Global Options === --config_file arg @@ -139,11 +139,6 @@ Edit duplicated entry with vim before adding -===== --fuzzy -Use alternative fuzzy matching for search string - - - ===== -i|--interactive Select item to resume from a menu of matching entries @@ -220,11 +215,6 @@ Tag filter, combine multiple tags with a comma. Added for compatibility with oth [Default Value] None -===== --fuzzy -Use alternative fuzzy matching for search string - - - ===== --[no-]label Label moved items with @from(SECTION_NAME) @@ -347,11 +337,6 @@ Archive entries -===== --fuzzy -Use alternative fuzzy matching for search string - - - ===== -i|--interactive Select item(s) to cancel from a menu of matching entries @@ -606,11 +591,6 @@ Include date -===== --fuzzy -Use alternative fuzzy matching for search string - - - ===== -i|--interactive Select item(s) to finish from a menu of matching entries @@ -687,11 +667,6 @@ Sort tags by (name|time) [Must Match] (?i-mx:^(?:name|time)$) -===== --fuzzy -Use alternative fuzzy matching for search string - - - ===== -i|--interactive Display an interactive menu of results to perform further operations @@ -808,11 +783,6 @@ Autotag entries -===== --fuzzy -Use alternative fuzzy matching for search string - - - ===== --not Import items that *don't* match search/tag/date filters @@ -880,11 +850,6 @@ Edit entry with vim -===== --fuzzy -Use alternative fuzzy matching for search string - - - ===== --not Show items that *don't* match search string or tag filter @@ -980,11 +945,6 @@ Don't ask permission to flag all entries when count is 0 -===== --fuzzy -Use alternative fuzzy matching for search string - - - ===== -i|--interactive Select item(s) to flag from a menu of matching entries @@ -1097,11 +1057,6 @@ Edit entry with vim -===== --fuzzy -Use alternative fuzzy matching for search string - - - ===== -i|--interactive Select item for new note from a menu of matching entries @@ -1319,11 +1274,6 @@ Reset last entry matching tag [Default Value] None -===== --fuzzy -Use alternative fuzzy matching for search string - - - ===== -i|--interactive Select from a menu of matching entries @@ -1402,11 +1352,6 @@ Tag filter, combine multiple tags with a comma. Added for compatibility with oth [Default Value] None -===== --fuzzy -Use alternative fuzzy matching for search string - - - ===== --not Rotate items that *don't* match search string or tag filter @@ -1650,11 +1595,6 @@ Sort tags by (name|time) [Must Match] (?i-mx:^(?:name|time)) -===== --fuzzy -Use alternative fuzzy matching for search string - - - ===== -i|--interactive Select from a menu of matching entries to perform additional operations @@ -1808,11 +1748,6 @@ Don't ask permission to tag all entries when count is 0 -===== --fuzzy -Use alternative fuzzy matching for search string - - - ===== -i|--interactive Select item(s) to tag from a menu of matching entries @@ -2018,11 +1953,6 @@ Include colors in output -===== --fuzzy -Use alternative fuzzy matching for search string - - - ===== -i|--interactive Select from a menu of matching entries to perform additional operations diff --git a/lib/completion/_doing.zsh b/lib/completion/_doing.zsh index 159aa4a1..2673b58f 100644 --- a/lib/completion/_doing.zsh +++ b/lib/completion/_doing.zsh @@ -16,6 +16,7 @@ function _doing() { 'cancel:End last X entries with no time tracked' 'choose:Select a section to display from a menu' 'colors:List available color variables for configuration templates and views' + 'completion:Generate shell completion scripts' 'config:Edit the configuration file or output a value from it' 'done:Add a completed item with @done(date)' 'did:Add a completed item with @done(date)' @@ -65,22 +66,22 @@ function _doing() { args=( ) ;; again) - args=( "(--bool=)--bool=}[Boolean used to combine multiple tags]" {-e,--editor}"[Edit duplicated entry with vim before adding]" {-i,--interactive}"[Select item to resume from a menu of matching entries]" "(--in=)--in=}[Add new entry to section]" {-n,--note=}"[Note]" {-s,--section=}"[Get last entry from a specific section]" "(--search=)--search=}[Repeat last entry matching search]" "(--tag=)--tag=}[Repeat last entry matching tags]" ) + args=( "(--bool=)--bool=}[Boolean used to combine multiple tags]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-e,--editor}"[Edit duplicated entry with vim before adding]" {-i,--interactive}"[Select item to resume from a menu of matching entries]" "(--in=)--in=}[Add new entry to section]" {-n,--note=}"[Note]" "(--not)--not}[Resume items that *dont* match search/tag filterst* match search/tag filters]" {-s,--section=}"[Get last entry from a specific section]" "(--search=)--search=}[Repeat last entry matching search]" "(--tag=)--tag=}[Repeat last entry matching tags]" {-x,--exact}"[Force exact search string matching]" ) ;; resume) - args=( "(--bool=)--bool=}[Boolean used to combine multiple tags]" {-e,--editor}"[Edit duplicated entry with vim before adding]" {-i,--interactive}"[Select item to resume from a menu of matching entries]" "(--in=)--in=}[Add new entry to section]" {-n,--note=}"[Note]" {-s,--section=}"[Get last entry from a specific section]" "(--search=)--search=}[Repeat last entry matching search]" "(--tag=)--tag=}[Repeat last entry matching tags]" ) + args=( "(--bool=)--bool=}[Boolean used to combine multiple tags]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-e,--editor}"[Edit duplicated entry with vim before adding]" {-i,--interactive}"[Select item to resume from a menu of matching entries]" "(--in=)--in=}[Add new entry to section]" {-n,--note=}"[Note]" "(--not)--not}[Resume items that *dont* match search/tag filterst* match search/tag filters]" {-s,--section=}"[Get last entry from a specific section]" "(--search=)--search=}[Repeat last entry matching search]" "(--tag=)--tag=}[Repeat last entry matching tags]" {-x,--exact}"[Force exact search string matching]" ) ;; archive) - args=( "(--before=)--before=}[Archive entries older than date]" "(--bool=)--bool=}[Tag boolean]" {-k,--keep=}"[How many items to keep]" "(--label)--label}[Label moved items with @from(SECTION_NAME)]" "(--search=)--search=}[Search filter]" {-t,--to=}"[Move entries to]" "(--tag=)--tag=}[Tag filter]" ) + args=( "(--before=)--before=}[Archive entries older than date]" "(--bool=)--bool=}[Tag boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-k,--keep=}"[How many items to keep]" "(--label)--label}[Label moved items with @from(SECTION_NAME)]" "(--not)--not}[Show items that *dont* match search stringt* match search string]" "(--search=)--search=}[Search filter]" {-t,--to=}"[Move entries to]" "(--tag=)--tag=}[Tag filter]" {-x,--exact}"[Force exact search string matching]" ) ;; move) - args=( "(--before=)--before=}[Archive entries older than date]" "(--bool=)--bool=}[Tag boolean]" {-k,--keep=}"[How many items to keep]" "(--label)--label}[Label moved items with @from(SECTION_NAME)]" "(--search=)--search=}[Search filter]" {-t,--to=}"[Move entries to]" "(--tag=)--tag=}[Tag filter]" ) + args=( "(--before=)--before=}[Archive entries older than date]" "(--bool=)--bool=}[Tag boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-k,--keep=}"[How many items to keep]" "(--label)--label}[Label moved items with @from(SECTION_NAME)]" "(--not)--not}[Show items that *dont* match search stringt* match search string]" "(--search=)--search=}[Search filter]" {-t,--to=}"[Move entries to]" "(--tag=)--tag=}[Tag filter]" {-x,--exact}"[Force exact search string matching]" ) ;; autotag) args=( "(--bool=)--bool=}[Boolean]" {-c,--count=}"[How many recent entries to autotag]" "(--force)--force}[Dont ask permission to autotag all entries when count is 0t ask permission to autotag all entries when count is 0]" {-i,--interactive}"[Select item(s) to tag from a menu of matching entries]" {-s,--section=}"[Section]" "(--search=)--search=}[Autotag entries matching search filter]" "(--tag=)--tag=}[Autotag the last X entries containing TAG]" {-u,--unfinished}"[Autotag last entry]" ) ;; cancel) - args=( {-a,--archive}"[Archive entries]" "(--bool=)--bool=}[Boolean]" {-i,--interactive}"[Select item(s) to cancel from a menu of matching entries]" {-s,--section=}"[Section]" "(--tag=)--tag=}[Cancel the last X entries containing TAG]" {-u,--unfinished}"[Cancel last entry]" ) + args=( {-a,--archive}"[Archive entries]" "(--bool=)--bool=}[Boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-i,--interactive}"[Select item(s) to cancel from a menu of matching entries]" "(--not)--not}[Finish items that *dont* match search/tag filterst* match search/tag filters]" {-s,--section=}"[Section]" "(--search=)--search=}[Cancel the last X entries matching search filter]" "(--tag=)--tag=}[Cancel the last X entries containing TAG]" {-u,--unfinished}"[Cancel last entry]" {-x,--exact}"[Force exact search string matching]" ) ;; choose) args=( ) @@ -88,6 +89,9 @@ function _doing() { colors) args=( ) ;; + completion) + args=( {-f,--file=}"[File to write output to]" {-t,--type=}"[Shell to generate for]" ) + ;; config) args=( {-d,--dump}"[Show a config key value based on arguments]" {-e,--editor=}"[Editor to use]" {-o,--output=}"[Format for --dump]" {-u,--update}"[Update config file with missing configuration options]" ) ;; @@ -98,37 +102,37 @@ function _doing() { args=( {-a,--archive}"[Immediately archive the entry]" "(--at=)--at=}[Set finish date to specific date/time]" {-b,--back=}"[Backdate start date by interval [4pm|20m|2h|yesterday noon]]" "(--date)--date}[Include date]" {-e,--editor}"[Edit entry with vim]" {-n,--note=}"[Include a note]" {-r,--remove}"[Remove @done tag]" {-s,--section=}"[Section]" {-t,--took=}"[Set completion date to start date plus interval]" {-u,--unfinished}"[Finish last entry not already marked @done]" ) ;; finish) - args=( {-a,--archive}"[Archive entries]" "(--at=)--at=}[Set finish date to specific date/time]" "(--auto)--auto}[Auto-generate finish dates from next entrys start times start time]" {-b,--back=}"[Backdate completed date to date string [4pm|20m|2h|yesterday noon]]" "(--bool=)--bool=}[Boolean]" "(--date)--date}[Include date]" {-i,--interactive}"[Select item(s) to finish from a menu of matching entries]" {-r,--remove}"[Remove done tag]" {-s,--section=}"[Section]" "(--search=)--search=}[Finish the last X entries matching search filter]" {-t,--took=}"[Set the completed date to the start date plus XX[hmd]]" "(--tag=)--tag=}[Finish the last X entries containing TAG]" {-u,--unfinished}"[Finish last entry]" ) + args=( {-a,--archive}"[Archive entries]" "(--at=)--at=}[Set finish date to specific date/time]" "(--auto)--auto}[Auto-generate finish dates from next entrys start times start time]" {-b,--back=}"[Backdate completed date to date string [4pm|20m|2h|yesterday noon]]" "(--bool=)--bool=}[Boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" "(--date)--date}[Include date]" {-i,--interactive}"[Select item(s) to finish from a menu of matching entries]" "(--not)--not}[Finish items that *dont* match search/tag filterst* match search/tag filters]" {-r,--remove}"[Remove done tag]" {-s,--section=}"[Section]" "(--search=)--search=}[Finish the last X entries matching search filter]" {-t,--took=}"[Set the completed date to the start date plus XX[hmd]]" "(--tag=)--tag=}[Finish the last X entries containing TAG]" {-u,--unfinished}"[Finish last entry]" {-x,--exact}"[Force exact search string matching]" ) ;; grep) - args=( "(--after=)--after=}[Constrain search to entries newer than date]" "(--before=)--before=}[Constrain search to entries older than date]" {-i,--interactive}"[Display an interactive menu of results to perform further operations]" {-o,--output=}"[Output to export format]" "(--only_timed)--only_timed}[Only show items with recorded time intervals]" {-s,--section=}"[Section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--totals)--totals}[Show intervals with totals at the end of output]" ) + args=( "(--after=)--after=}[Constrain search to entries newer than date]" "(--before=)--before=}[Constrain search to entries older than date]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-i,--interactive}"[Display an interactive menu of results to perform further operations]" "(--not)--not}[Show items that *dont* match search stringt* match search string]" {-o,--output=}"[Output to export format]" "(--only_timed)--only_timed}[Only show items with recorded time intervals]" {-s,--section=}"[Section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--totals)--totals}[Show intervals with totals at the end of output]" {-x,--exact}"[Force exact string matching]" ) ;; search) - args=( "(--after=)--after=}[Constrain search to entries newer than date]" "(--before=)--before=}[Constrain search to entries older than date]" {-i,--interactive}"[Display an interactive menu of results to perform further operations]" {-o,--output=}"[Output to export format]" "(--only_timed)--only_timed}[Only show items with recorded time intervals]" {-s,--section=}"[Section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--totals)--totals}[Show intervals with totals at the end of output]" ) + args=( "(--after=)--after=}[Constrain search to entries newer than date]" "(--before=)--before=}[Constrain search to entries older than date]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-i,--interactive}"[Display an interactive menu of results to perform further operations]" "(--not)--not}[Show items that *dont* match search stringt* match search string]" {-o,--output=}"[Output to export format]" "(--only_timed)--only_timed}[Only show items with recorded time intervals]" {-s,--section=}"[Section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--totals)--totals}[Show intervals with totals at the end of output]" {-x,--exact}"[Force exact string matching]" ) ;; help) args=( ) ;; import) - args=( "(--after=)--after=}[Import entries newer than date]" "(--autotag)--autotag}[Autotag entries]" "(--before=)--before=}[Import entries older than date]" {-f,--from=}"[Date range to import]" "(--only_timed)--only_timed}[Only import items with recorded time intervals]" "(--overlap)--overlap}[Allow entries that overlap existing times]" "(--prefix=)--prefix=}[Prefix entries with]" {-s,--section=}"[Target section]" "(--search=)--search=}[Only import items matching search]" "(--tag=)--tag=}[Tag all imported entries]" "(--type=)--type=}[Import type]" ) + args=( "(--after=)--after=}[Import entries newer than date]" "(--autotag)--autotag}[Autotag entries]" "(--before=)--before=}[Import entries older than date]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-f,--from=}"[Date range to import]" "(--not)--not}[Import items that *dont* match search/tag/date filterst* match search/tag/date filters]" "(--only_timed)--only_timed}[Only import items with recorded time intervals]" "(--overlap)--overlap}[Allow entries that overlap existing times]" "(--prefix=)--prefix=}[Prefix entries with]" {-s,--section=}"[Target section]" "(--search=)--search=}[Only import items matching search]" "(--tag=)--tag=}[Tag all imported entries]" "(--type=)--type=}[Import type]" {-x,--exact}"[Force exact search string matching]" ) ;; last) - args=( "(--bool=)--bool=}[Tag boolean]" {-e,--editor}"[Edit entry with vim]" {-s,--section=}"[Specify a section]" "(--search=)--search=}[Search filter]" "(--tag=)--tag=}[Tag filter]" ) + args=( "(--bool=)--bool=}[Tag boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-e,--editor}"[Edit entry with vim]" "(--not)--not}[Show items that *dont* match search string or tag filtert* match search string or tag filter]" {-s,--section=}"[Specify a section]" "(--search=)--search=}[Search filter]" "(--tag=)--tag=}[Tag filter]" {-x,--exact}"[Force exact search string matching]" ) ;; later) args=( {-b,--back=}"[Backdate start time to date string [4pm|20m|2h|yesterday noon]]" {-e,--editor}"[Edit entry with vim]" {-n,--note=}"[Note]" ) ;; mark) - args=( "(--bool=)--bool=}[Boolean]" {-c,--count=}"[How many recent entries to tag]" {-d,--date}"[Include current date/time with tag]" "(--force)--force}[Dont ask permission to flag all entries when count is 0t ask permission to flag all entries when count is 0]" {-i,--interactive}"[Select item(s) to flag from a menu of matching entries]" {-r,--remove}"[Remove flag]" {-s,--section=}"[Section]" "(--search=)--search=}[Flag the last entry matching search filter]" "(--tag=)--tag=}[Flag the last entry containing TAG]" {-u,--unfinished}"[Flag last entry]" ) + args=( "(--bool=)--bool=}[Boolean]" {-c,--count=}"[How many recent entries to tag]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-d,--date}"[Include current date/time with tag]" "(--force)--force}[Dont ask permission to flag all entries when count is 0t ask permission to flag all entries when count is 0]" {-i,--interactive}"[Select item(s) to flag from a menu of matching entries]" "(--not)--not}[Flag items that *dont* match search/tag/date filterst* match search/tag/date filters]" {-r,--remove}"[Remove flag]" {-s,--section=}"[Section]" "(--search=)--search=}[Flag the last entry matching search filter]" "(--tag=)--tag=}[Flag the last entry containing TAG]" {-u,--unfinished}"[Flag last entry]" {-x,--exact}"[Force exact search string matching]" ) ;; flag) - args=( "(--bool=)--bool=}[Boolean]" {-c,--count=}"[How many recent entries to tag]" {-d,--date}"[Include current date/time with tag]" "(--force)--force}[Dont ask permission to flag all entries when count is 0t ask permission to flag all entries when count is 0]" {-i,--interactive}"[Select item(s) to flag from a menu of matching entries]" {-r,--remove}"[Remove flag]" {-s,--section=}"[Section]" "(--search=)--search=}[Flag the last entry matching search filter]" "(--tag=)--tag=}[Flag the last entry containing TAG]" {-u,--unfinished}"[Flag last entry]" ) + args=( "(--bool=)--bool=}[Boolean]" {-c,--count=}"[How many recent entries to tag]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-d,--date}"[Include current date/time with tag]" "(--force)--force}[Dont ask permission to flag all entries when count is 0t ask permission to flag all entries when count is 0]" {-i,--interactive}"[Select item(s) to flag from a menu of matching entries]" "(--not)--not}[Flag items that *dont* match search/tag/date filterst* match search/tag/date filters]" {-r,--remove}"[Remove flag]" {-s,--section=}"[Section]" "(--search=)--search=}[Flag the last entry matching search filter]" "(--tag=)--tag=}[Flag the last entry containing TAG]" {-u,--unfinished}"[Flag last entry]" {-x,--exact}"[Force exact search string matching]" ) ;; meanwhile) args=( {-a,--archive}"[Archive previous @meanwhile entry]" {-b,--back=}"[Backdate start date for new entry to date string [4pm|20m|2h|yesterday noon]]" {-e,--editor}"[Edit entry with vim]" {-n,--note=}"[Note]" {-s,--section=}"[Section]" ) ;; note) - args=( "(--bool=)--bool=}[Boolean]" {-e,--editor}"[Edit entry with vim]" {-i,--interactive}"[Select item for new note from a menu of matching entries]" {-r,--remove}"[Replace/Remove last entrys notes note]" {-s,--section=}"[Section]" "(--search=)--search=}[Add/remove note from last entry matching search filter]" "(--tag=)--tag=}[Add/remove note from last entry matching tag]" ) + args=( "(--bool=)--bool=}[Boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-e,--editor}"[Edit entry with vim]" {-i,--interactive}"[Select item for new note from a menu of matching entries]" "(--not)--not}[Add note to item that *doesnt* match search/tag filterst* match search/tag filters]" {-r,--remove}"[Replace/Remove last entrys notes note]" {-s,--section=}"[Section]" "(--search=)--search=}[Add/remove note from last entry matching search filter]" "(--tag=)--tag=}[Add/remove note from last entry matching tag]" {-x,--exact}"[Force exact search string matching]" ) ;; now) args=( {-b,--back=}"[Backdate start time [4pm|20m|2h|yesterday noon]]" {-e,--editor}"[Edit entry with vim]" {-f,--finish_last}"[Timed entry]" {-n,--note=}"[Include a note]" {-s,--section=}"[Section]" ) @@ -149,28 +153,28 @@ function _doing() { args=( {-i,--interactive}"[Select from a menu of matching entries to perform additional operations]" {-s,--section=}"[Section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--totals)--totals}[Show intervals with totals at the end of output]" ) ;; reset) - args=( "(--bool=)--bool=}[Boolean]" {-i,--interactive}"[Select from a menu of matching entries]" {-r,--resume}"[Resume entry]" {-s,--section=}"[Set the start date of an item to now]" "(--search=)--search=}[Reset last entry matching search filter]" "(--tag=)--tag=}[Reset last entry matching tag]" ) + args=( "(--bool=)--bool=}[Boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-i,--interactive}"[Select from a menu of matching entries]" "(--not)--not}[Reset items that *dont* match search/tag filterst* match search/tag filters]" {-r,--resume}"[Resume entry]" {-s,--section=}"[Limit search to section]" "(--search=)--search=}[Reset last entry matching search filter]" "(--tag=)--tag=}[Reset last entry matching tag]" {-x,--exact}"[Force exact search string matching]" ) ;; begin) - args=( "(--bool=)--bool=}[Boolean]" {-i,--interactive}"[Select from a menu of matching entries]" {-r,--resume}"[Resume entry]" {-s,--section=}"[Set the start date of an item to now]" "(--search=)--search=}[Reset last entry matching search filter]" "(--tag=)--tag=}[Reset last entry matching tag]" ) + args=( "(--bool=)--bool=}[Boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-i,--interactive}"[Select from a menu of matching entries]" "(--not)--not}[Reset items that *dont* match search/tag filterst* match search/tag filters]" {-r,--resume}"[Resume entry]" {-s,--section=}"[Limit search to section]" "(--search=)--search=}[Reset last entry matching search filter]" "(--tag=)--tag=}[Reset last entry matching tag]" {-x,--exact}"[Force exact search string matching]" ) ;; rotate) - args=( "(--before=)--before=}[Rotate entries older than date]" "(--bool=)--bool=}[Tag boolean]" {-k,--keep=}"[How many items to keep in each section]" {-s,--section=}"[Section to rotate]" "(--search=)--search=}[Search filter]" "(--tag=)--tag=}[Tag filter]" ) + args=( "(--before=)--before=}[Rotate entries older than date]" "(--bool=)--bool=}[Tag boolean]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-k,--keep=}"[How many items to keep in each section]" "(--not)--not}[Rotate items that *dont* match search string or tag filtert* match search string or tag filter]" {-s,--section=}"[Section to rotate]" "(--search=)--search=}[Search filter]" "(--tag=)--tag=}[Tag filter]" {-x,--exact}"[Force exact search string matching]" ) ;; sections) args=( {-c,--column}"[List in single column]" ) ;; select) - args=( {-a,--archive}"[Archive selected items]" "(--resume)--resume}[Copy selection as a new entry with current time and no @done tag]" {-c,--cancel}"[Cancel selected items]" {-d,--delete}"[Delete selected items]" {-e,--editor}"[Edit selected item(s)]" {-f,--finish}"[Add @done with current time to selected item(s)]" "(--flag)--flag}[Add flag to selected item(s)]" "(--force)--force}[Perform action without confirmation]" {-m,--move=}"[Move selected items to section]" "(--menu)--menu}[Use --no-menu to skip the interactive menu]" {-o,--output=}"[Output entries to format]" "(--search=)--search=}[Initial search query for filtering]" {-r,--remove}"[Reverse -c]" {-s,--section=}"[Select from a specific section]" "(--save_to=)--save_to=}[Save selected entries to file using --output format]" {-t,--tag=}"[Tag selected entries]" ) + args=( {-a,--archive}"[Archive selected items]" "(--resume)--resume}[Copy selection as a new entry with current time and no @done tag]" {-c,--cancel}"[Cancel selected items]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-d,--delete}"[Delete selected items]" {-e,--editor}"[Edit selected item(s)]" {-f,--finish}"[Add @done with current time to selected item(s)]" "(--flag)--flag}[Add flag to selected item(s)]" "(--force)--force}[Perform action without confirmation]" {-m,--move=}"[Move selected items to section]" "(--menu)--menu}[Use --no-menu to skip the interactive menu]" "(--not)--not}[Select items that *dont* match search/tag filterst* match search/tag filters]" {-o,--output=}"[Output entries to format]" "(--search=)--search=}[Initial search query for filtering]" {-r,--remove}"[Reverse -c]" {-s,--section=}"[Select from a specific section]" "(--save_to=)--save_to=}[Save selected entries to file using --output format]" {-t,--tag=}"[Tag selected entries]" {-x,--exact}"[Force exact search string matching]" ) ;; show) - args=( {-a,--age=}"[Age]" "(--after=)--after=}[View entries newer than date]" {-b,--bool=}"[Tag boolean]" "(--before=)--before=}[View entries older than date]" {-c,--count=}"[Max count to show]" {-f,--from=}"[Date range to show]" {-i,--interactive}"[Select from a menu of matching entries to perform additional operations]" {-o,--output=}"[Output to export format]" "(--only_timed)--only_timed}[Only show items with recorded time intervals]" {-s,--sort=}"[Sort order]" "(--search=)--search=}[Search filter]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag=)--tag=}[Tag filter]" "(--tag_order=)--tag_order=}[Tag sort direction]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--totals)--totals}[Show intervals with totals at the end of output]" ) + args=( {-a,--age=}"[Age]" "(--after=)--after=}[View entries newer than date]" {-b,--bool=}"[Tag boolean]" "(--before=)--before=}[View entries older than date]" {-c,--count=}"[Max count to show]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-f,--from=}"[Date range to show]" {-i,--interactive}"[Select from a menu of matching entries to perform additional operations]" "(--not)--not}[Show items that *dont* match search/tag/date filterst* match search/tag/date filters]" {-o,--output=}"[Output to export format]" "(--only_timed)--only_timed}[Only show items with recorded time intervals]" {-s,--sort=}"[Sort order]" "(--search=)--search=}[Search filter]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag=)--tag=}[Tag filter]" "(--tag_order=)--tag_order=}[Tag sort direction]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--totals)--totals}[Show intervals with totals at the end of output]" {-x,--exact}"[Force exact search string matching]" ) ;; since) args=( {-o,--output=}"[Output to export format]" {-s,--section=}"[Section]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--totals)--totals}[Show time totals at the end of output]" ) ;; tag) - args=( {-a,--autotag}"[Autotag entries based on autotag configuration in ~/]" "(--bool=)--bool=}[Boolean]" {-c,--count=}"[How many recent entries to tag]" {-d,--date}"[Include current date/time with tag]" "(--force)--force}[Dont ask permission to tag all entries when count is 0t ask permission to tag all entries when count is 0]" {-i,--interactive}"[Select item(s) to tag from a menu of matching entries]" {-r,--remove}"[Remove given tag(s)]" "(--regex)--regex}[Interpret tag string as regular expression]" "(--rename=)--rename=}[Replace existing tag with tag argument]" {-s,--section=}"[Section]" "(--search=)--search=}[Tag entries matching search filter]" "(--tag=)--tag=}[Tag the last X entries containing TAG]" {-u,--unfinished}"[Tag last entry]" ) + args=( {-a,--autotag}"[Autotag entries based on autotag configuration in ~/]" "(--bool=)--bool=}[Boolean]" {-c,--count=}"[How many recent entries to tag]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" {-d,--date}"[Include current date/time with tag]" "(--force)--force}[Dont ask permission to tag all entries when count is 0t ask permission to tag all entries when count is 0]" {-i,--interactive}"[Select item(s) to tag from a menu of matching entries]" "(--not)--not}[Tag items that *dont* match search/tag filterst* match search/tag filters]" {-r,--remove}"[Remove given tag(s)]" "(--regex)--regex}[Interpret tag string as regular expression]" "(--rename=)--rename=}[Replace existing tag with tag argument]" {-s,--section=}"[Section]" "(--search=)--search=}[Tag entries matching search filter]" "(--tag=)--tag=}[Tag the last X entries containing TAG]" {-u,--unfinished}"[Tag last entry]" {-x,--exact}"[Force exact search string matching]" ) ;; template) args=( {-l,--list}"[List all available templates]" ) @@ -185,7 +189,7 @@ function _doing() { args=( {-f,--file=}"[Specify alternate doing file]" ) ;; view) - args=( "(--after=)--after=}[View entries newer than date]" {-b,--bool=}"[Tag boolean]" "(--before=)--before=}[View entries older than date]" {-c,--count=}"[Count to display]" "(--color)--color}[Include colors in output]" {-i,--interactive}"[Select from a menu of matching entries to perform additional operations]" {-o,--output=}"[Output to export format]" "(--only_timed)--only_timed}[Only show items with recorded time intervals]" {-s,--section=}"[Section]" "(--search=)--search=}[Search filter]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag=)--tag=}[Tag filter]" "(--tag_order=)--tag_order=}[Tag sort direction]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--totals)--totals}[Show intervals with totals at the end of output]" ) + args=( "(--after=)--after=}[View entries newer than date]" {-b,--bool=}"[Tag boolean]" "(--before=)--before=}[View entries older than date]" {-c,--count=}"[Count to display]" "(--case=)--case=}[Case sensitivity for search string matching [(c)ase-sensitive]" "(--color)--color}[Include colors in output]" {-i,--interactive}"[Select from a menu of matching entries to perform additional operations]" "(--not)--not}[Show items that *dont* match search stringt* match search string]" {-o,--output=}"[Output to export format]" "(--only_timed)--only_timed}[Only show items with recorded time intervals]" {-s,--section=}"[Section]" "(--search=)--search=}[Search filter]" {-t,--times}"[Show time intervals on @done tasks]" "(--tag=)--tag=}[Tag filter]" "(--tag_order=)--tag_order=}[Tag sort direction]" "(--tag_sort=)--tag_sort=}[Sort tags by]" "(--totals)--totals}[Show intervals with totals at the end of output]" {-x,--exact}"[Force exact search string matching]" ) ;; views) args=( {-c,--column}"[List in single column]" ) diff --git a/lib/completion/doing.bash b/lib/completion/doing.bash index e485d34c..e0b3de76 100644 --- a/lib/completion/doing.bash +++ b/lib/completion/doing.bash @@ -1,9 +1,9 @@ _doing_again() { if [[ "$token" == --* ]]; then - COMPREPLY=( $( compgen -W '--bool --editor --interactive --in --note --section --search --tag' -- $token ) ) + COMPREPLY=( $( compgen -W '--bool --case --editor --interactive --in --note --not --section --search --tag --exact' -- $token ) ) elif [[ "$token" == -* ]]; then - COMPREPLY=( $( compgen -W '-e -i -n -s --bool --editor --interactive --in --note --section --search --tag' -- $token ) ) + COMPREPLY=( $( compgen -W '-e -i -n -s -x --bool --case --editor --interactive --in --note --not --section --search --tag --exact' -- $token ) ) fi } @@ -16,9 +16,9 @@ local words=$(doing sections) IFS="$OLD_IFS" if [[ "$token" == --* ]]; then - COMPREPLY=( $( compgen -W '--before --bool --keep --label --search --to --tag' -- $token ) ) + COMPREPLY=( $( compgen -W '--before --bool --case --keep --label --not --search --to --tag --exact' -- $token ) ) elif [[ "$token" == -* ]]; then - COMPREPLY=( $( compgen -W '-k -t --before --bool --keep --label --search --to --tag' -- $token ) ) + COMPREPLY=( $( compgen -W '-k -t -x --before --bool --case --keep --label --not --search --to --tag --exact' -- $token ) ) else local nocasematchWasOff=0 shopt nocasematch >/dev/null || nocasematchWasOff=1 @@ -51,9 +51,19 @@ _doing_autotag() { _doing_cancel() { if [[ "$token" == --* ]]; then - COMPREPLY=( $( compgen -W '--archive --bool --interactive --section --tag --unfinished' -- $token ) ) + COMPREPLY=( $( compgen -W '--archive --bool --case --interactive --not --section --search --tag --unfinished --exact' -- $token ) ) elif [[ "$token" == -* ]]; then - COMPREPLY=( $( compgen -W '-a -i -s -u --archive --bool --interactive --section --tag --unfinished' -- $token ) ) + COMPREPLY=( $( compgen -W '-a -i -s -u -x --archive --bool --case --interactive --not --section --search --tag --unfinished --exact' -- $token ) ) + + fi +} + +_doing_completion() { + + if [[ "$token" == --* ]]; then + COMPREPLY=( $( compgen -W '--file --type' -- $token ) ) + elif [[ "$token" == -* ]]; then + COMPREPLY=( $( compgen -W '-f -t --file --type' -- $token ) ) fi } @@ -81,9 +91,9 @@ _doing_done() { _doing_finish() { if [[ "$token" == --* ]]; then - COMPREPLY=( $( compgen -W '--archive --at --auto --back --bool --date --interactive --remove --section --search --took --tag --unfinished' -- $token ) ) + COMPREPLY=( $( compgen -W '--archive --at --auto --back --bool --case --date --interactive --not --remove --section --search --took --tag --unfinished --exact' -- $token ) ) elif [[ "$token" == -* ]]; then - COMPREPLY=( $( compgen -W '-a -b -i -r -s -t -u --archive --at --auto --back --bool --date --interactive --remove --section --search --took --tag --unfinished' -- $token ) ) + COMPREPLY=( $( compgen -W '-a -b -i -r -s -t -u -x --archive --at --auto --back --bool --case --date --interactive --not --remove --section --search --took --tag --unfinished --exact' -- $token ) ) fi } @@ -91,9 +101,9 @@ _doing_finish() { _doing_grep() { if [[ "$token" == --* ]]; then - COMPREPLY=( $( compgen -W '--after --before --interactive --output --only_timed --section --times --tag_sort --totals' -- $token ) ) + COMPREPLY=( $( compgen -W '--after --before --case --interactive --not --output --only_timed --section --times --tag_sort --totals --exact' -- $token ) ) elif [[ "$token" == -* ]]; then - COMPREPLY=( $( compgen -W '-i -o -s -t --after --before --interactive --output --only_timed --section --times --tag_sort --totals' -- $token ) ) + COMPREPLY=( $( compgen -W '-i -o -s -t -x --after --before --case --interactive --not --output --only_timed --section --times --tag_sort --totals --exact' -- $token ) ) fi } @@ -111,9 +121,9 @@ _doing_help() { _doing_import() { if [[ "$token" == --* ]]; then - COMPREPLY=( $( compgen -W '--after --autotag --before --from --only_timed --overlap --prefix --section --search --tag --type' -- $token ) ) + COMPREPLY=( $( compgen -W '--after --autotag --before --case --from --not --only_timed --overlap --prefix --section --search --tag --type --exact' -- $token ) ) elif [[ "$token" == -* ]]; then - COMPREPLY=( $( compgen -W '-f -s --after --autotag --before --from --only_timed --overlap --prefix --section --search --tag --type' -- $token ) ) + COMPREPLY=( $( compgen -W '-f -s -x --after --autotag --before --case --from --not --only_timed --overlap --prefix --section --search --tag --type --exact' -- $token ) ) fi } @@ -121,9 +131,9 @@ _doing_import() { _doing_last() { if [[ "$token" == --* ]]; then - COMPREPLY=( $( compgen -W '--bool --editor --section --search --tag' -- $token ) ) + COMPREPLY=( $( compgen -W '--bool --case --editor --not --section --search --tag --exact' -- $token ) ) elif [[ "$token" == -* ]]; then - COMPREPLY=( $( compgen -W '-e -s --bool --editor --section --search --tag' -- $token ) ) + COMPREPLY=( $( compgen -W '-e -s -x --bool --case --editor --not --section --search --tag --exact' -- $token ) ) fi } @@ -141,9 +151,9 @@ _doing_later() { _doing_mark() { if [[ "$token" == --* ]]; then - COMPREPLY=( $( compgen -W '--bool --count --date --force --interactive --remove --section --search --tag --unfinished' -- $token ) ) + COMPREPLY=( $( compgen -W '--bool --count --case --date --force --interactive --not --remove --section --search --tag --unfinished --exact' -- $token ) ) elif [[ "$token" == -* ]]; then - COMPREPLY=( $( compgen -W '-c -d -i -r -s -u --bool --count --date --force --interactive --remove --section --search --tag --unfinished' -- $token ) ) + COMPREPLY=( $( compgen -W '-c -d -i -r -s -u -x --bool --count --case --date --force --interactive --not --remove --section --search --tag --unfinished --exact' -- $token ) ) fi } @@ -161,9 +171,9 @@ _doing_meanwhile() { _doing_note() { if [[ "$token" == --* ]]; then - COMPREPLY=( $( compgen -W '--bool --editor --interactive --remove --section --search --tag' -- $token ) ) + COMPREPLY=( $( compgen -W '--bool --case --editor --interactive --not --remove --section --search --tag --exact' -- $token ) ) elif [[ "$token" == -* ]]; then - COMPREPLY=( $( compgen -W '-e -i -r -s --bool --editor --interactive --remove --section --search --tag' -- $token ) ) + COMPREPLY=( $( compgen -W '-e -i -r -s -x --bool --case --editor --interactive --not --remove --section --search --tag --exact' -- $token ) ) fi } @@ -221,9 +231,9 @@ _doing_recent() { _doing_reset() { if [[ "$token" == --* ]]; then - COMPREPLY=( $( compgen -W '--bool --interactive --resume --section --search --tag' -- $token ) ) + COMPREPLY=( $( compgen -W '--bool --case --interactive --not --resume --section --search --tag --exact' -- $token ) ) elif [[ "$token" == -* ]]; then - COMPREPLY=( $( compgen -W '-i -r -s --bool --interactive --resume --section --search --tag' -- $token ) ) + COMPREPLY=( $( compgen -W '-i -r -s -x --bool --case --interactive --not --resume --section --search --tag --exact' -- $token ) ) fi } @@ -231,9 +241,9 @@ _doing_reset() { _doing_rotate() { if [[ "$token" == --* ]]; then - COMPREPLY=( $( compgen -W '--before --bool --keep --section --search --tag' -- $token ) ) + COMPREPLY=( $( compgen -W '--before --bool --case --keep --not --section --search --tag --exact' -- $token ) ) elif [[ "$token" == -* ]]; then - COMPREPLY=( $( compgen -W '-k -s --before --bool --keep --section --search --tag' -- $token ) ) + COMPREPLY=( $( compgen -W '-k -s -x --before --bool --case --keep --not --section --search --tag --exact' -- $token ) ) fi } @@ -251,9 +261,9 @@ _doing_sections() { _doing_select() { if [[ "$token" == --* ]]; then - COMPREPLY=( $( compgen -W '--archive --resume --cancel --delete --editor --finish --flag --force --move --menu --output --search --remove --section --save_to --tag' -- $token ) ) + COMPREPLY=( $( compgen -W '--archive --resume --cancel --case --delete --editor --finish --flag --force --move --menu --not --output --search --remove --section --save_to --tag --exact' -- $token ) ) elif [[ "$token" == -* ]]; then - COMPREPLY=( $( compgen -W '-a -c -d -e -f -m -o -r -s -t --archive --resume --cancel --delete --editor --finish --flag --force --move --menu --output --search --remove --section --save_to --tag' -- $token ) ) + COMPREPLY=( $( compgen -W '-a -c -d -e -f -m -o -r -s -t -x --archive --resume --cancel --case --delete --editor --finish --flag --force --move --menu --not --output --search --remove --section --save_to --tag --exact' -- $token ) ) fi } @@ -266,9 +276,9 @@ local words=$(doing sections) IFS="$OLD_IFS" if [[ "$token" == --* ]]; then - COMPREPLY=( $( compgen -W '--age --after --bool --before --count --from --interactive --output --only_timed --sort --search --times --tag --tag_order --tag_sort --totals' -- $token ) ) + COMPREPLY=( $( compgen -W '--age --after --bool --before --count --case --from --interactive --not --output --only_timed --sort --search --times --tag --tag_order --tag_sort --totals --exact' -- $token ) ) elif [[ "$token" == -* ]]; then - COMPREPLY=( $( compgen -W '-a -b -c -f -i -o -s -t --age --after --bool --before --count --from --interactive --output --only_timed --sort --search --times --tag --tag_order --tag_sort --totals' -- $token ) ) + COMPREPLY=( $( compgen -W '-a -b -c -f -i -o -s -t -x --age --after --bool --before --count --case --from --interactive --not --output --only_timed --sort --search --times --tag --tag_order --tag_sort --totals --exact' -- $token ) ) else local nocasematchWasOff=0 shopt nocasematch >/dev/null || nocasematchWasOff=1 @@ -301,9 +311,9 @@ _doing_since() { _doing_tag() { if [[ "$token" == --* ]]; then - COMPREPLY=( $( compgen -W '--autotag --bool --count --date --force --interactive --remove --regex --rename --section --search --tag --unfinished' -- $token ) ) + COMPREPLY=( $( compgen -W '--autotag --bool --count --case --date --force --interactive --not --remove --regex --rename --section --search --tag --unfinished --exact' -- $token ) ) elif [[ "$token" == -* ]]; then - COMPREPLY=( $( compgen -W '-a -c -d -i -r -s -u --autotag --bool --count --date --force --interactive --remove --regex --rename --section --search --tag --unfinished' -- $token ) ) + COMPREPLY=( $( compgen -W '-a -c -d -i -r -s -u -x --autotag --bool --count --case --date --force --interactive --not --remove --regex --rename --section --search --tag --unfinished --exact' -- $token ) ) fi } @@ -346,9 +356,9 @@ local words=$(doing views) IFS="$OLD_IFS" if [[ "$token" == --* ]]; then - COMPREPLY=( $( compgen -W '--after --bool --before --count --color --interactive --output --only_timed --section --search --times --tag --tag_order --tag_sort --totals' -- $token ) ) + COMPREPLY=( $( compgen -W '--after --bool --before --count --case --color --interactive --not --output --only_timed --section --search --times --tag --tag_order --tag_sort --totals --exact' -- $token ) ) elif [[ "$token" == -* ]]; then - COMPREPLY=( $( compgen -W '-b -c -i -o -s -t --after --bool --before --count --color --interactive --output --only_timed --section --search --times --tag --tag_order --tag_sort --totals' -- $token ) ) + COMPREPLY=( $( compgen -W '-b -c -i -o -s -t -x --after --bool --before --count --case --color --interactive --not --output --only_timed --section --search --times --tag --tag_order --tag_sort --totals --exact' -- $token ) ) else local nocasematchWasOff=0 shopt nocasematch >/dev/null || nocasematchWasOff=1 @@ -407,6 +417,7 @@ _doing() elif [[ $last =~ (archive|move) ]]; then _doing_archive elif [[ $last =~ (autotag) ]]; then _doing_autotag elif [[ $last =~ (cancel) ]]; then _doing_cancel + elif [[ $last =~ (completion) ]]; then _doing_completion elif [[ $last =~ (config) ]]; then _doing_config elif [[ $last =~ (done|did) ]]; then _doing_done elif [[ $last =~ (finish) ]]; then _doing_finish diff --git a/lib/completion/doing.fish b/lib/completion/doing.fish index acf4585c..f59f7f39 100644 --- a/lib/completion/doing.fish +++ b/lib/completion/doing.fish @@ -64,6 +64,7 @@ complete -xc doing -n '__fish_doing_needs_command' -a 'autotag' -d Autotag\ last complete -xc doing -n '__fish_doing_needs_command' -a 'cancel' -d End\ last\ X\ entries\ with\ no\ time\ tracked complete -xc doing -n '__fish_doing_needs_command' -a 'choose' -d Select\ a\ section\ to\ display\ from\ a\ menu complete -xc doing -n '__fish_doing_needs_command' -a 'colors' -d List\ available\ color\ variables\ for\ configuration\ templates\ and\ views +complete -xc doing -n '__fish_doing_needs_command' -a 'completion' -d Generate\ shell\ completion\ scripts complete -xc doing -n '__fish_doing_needs_command' -a 'config' -d Edit\ the\ configuration\ file\ or\ output\ a\ value\ from\ it complete -xc doing -n '__fish_doing_needs_command' -a 'done did' -d Add\ a\ completed\ item\ with\ @done\(date\) complete -xc doing -n '__fish_doing_needs_command' -a 'finish' -d Mark\ last\ X\ entries\ as\ @done @@ -96,20 +97,26 @@ complete -xc doing -n '__fish_doing_needs_command' -a 'views' -d List\ available complete -xc doing -n '__fish_doing_needs_command' -a 'wiki' -d Output\ a\ tag\ wiki complete -xc doing -n '__fish_doing_needs_command' -a 'yesterday' -d List\ entries\ from\ yesterday complete -c doing -l bool -f -r -n '__fish_doing_using_command again resume' -d Boolean\ used\ to\ combine\ multiple\ tags +complete -c doing -l case -f -r -n '__fish_doing_using_command again resume' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive complete -c doing -l editor -s e -f -n '__fish_doing_using_command again resume' -d Edit\ duplicated\ entry\ with\ vim\ before\ adding 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 complete -c doing -l in -f -r -n '__fish_doing_using_command again resume' -d Add\ new\ entry\ to\ section complete -c doing -l note -s n -f -r -n '__fish_doing_using_command again resume' -d Note +complete -c doing -l not -f -n '__fish_doing_using_command again resume' -d Resume\ items\ that\ \*don\'t\*\ match\ search/tag\ filters complete -c doing -l section -s s -f -r -n '__fish_doing_using_command again resume' -d Get\ last\ entry\ from\ a\ specific\ section complete -c doing -l search -f -r -n '__fish_doing_using_command again resume' -d Repeat\ last\ entry\ matching\ search complete -c doing -l tag -f -r -n '__fish_doing_using_command again resume' -d Repeat\ last\ entry\ matching\ tags +complete -c doing -l exact -s x -f -n '__fish_doing_using_command again resume' -d Force\ exact\ search\ string\ matching complete -c doing -l before -f -r -n '__fish_doing_using_command archive move' -d Archive\ entries\ older\ than\ date complete -c doing -l bool -f -r -n '__fish_doing_using_command archive move' -d Tag\ boolean +complete -c doing -l case -f -r -n '__fish_doing_using_command archive move' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive complete -c doing -l keep -s k -f -r -n '__fish_doing_using_command archive move' -d How\ many\ items\ to\ keep complete -c doing -l label -f -n '__fish_doing_using_command archive move' -d Label\ moved\ items\ with\ @from\(SECTION_NAME\) +complete -c doing -l not -f -n '__fish_doing_using_command archive move' -d Show\ items\ that\ \*don\'t\*\ match\ search\ string complete -c doing -l search -f -r -n '__fish_doing_using_command archive move' -d Search\ filter complete -c doing -l to -s t -f -r -n '__fish_doing_using_command archive move' -d Move\ entries\ to complete -c doing -l tag -f -r -n '__fish_doing_using_command archive move' -d Tag\ filter +complete -c doing -l exact -s x -f -n '__fish_doing_using_command archive move' -d Force\ exact\ search\ string\ matching complete -c doing -l bool -f -r -n '__fish_doing_using_command autotag' -d Boolean complete -c doing -l count -s c -f -r -n '__fish_doing_using_command autotag' -d How\ many\ recent\ entries\ to\ autotag complete -c doing -l force -f -n '__fish_doing_using_command autotag' -d Don\'t\ ask\ permission\ to\ autotag\ all\ entries\ when\ count\ is\ 0 @@ -120,10 +127,16 @@ complete -c doing -l tag -f -r -n '__fish_doing_using_command autotag' -d Autot complete -c doing -l unfinished -s u -f -n '__fish_doing_using_command autotag' -d Autotag\ last\ entry complete -c doing -l archive -s a -f -n '__fish_doing_using_command cancel' -d Archive\ entries complete -c doing -l bool -f -r -n '__fish_doing_using_command cancel' -d Boolean +complete -c doing -l case -f -r -n '__fish_doing_using_command cancel' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive 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 +complete -c doing -l not -f -n '__fish_doing_using_command cancel' -d Finish\ items\ that\ \*don\'t\*\ match\ search/tag\ filters complete -c doing -l section -s s -f -r -n '__fish_doing_using_command cancel' -d Section +complete -c doing -l search -f -r -n '__fish_doing_using_command cancel' -d Cancel\ the\ last\ X\ entries\ matching\ search\ filter complete -c doing -l tag -f -r -n '__fish_doing_using_command cancel' -d Cancel\ the\ last\ X\ entries\ containing\ TAG complete -c doing -l unfinished -s u -f -n '__fish_doing_using_command cancel' -d Cancel\ last\ entry +complete -c doing -l exact -s x -f -n '__fish_doing_using_command cancel' -d Force\ exact\ search\ string\ matching +complete -c doing -l file -s f -f -r -n '__fish_doing_using_command completion' -d File\ to\ write\ output\ to +complete -c doing -l type -s t -f -r -n '__fish_doing_using_command completion' -d Shell\ to\ generate\ for complete -c doing -F -n '__fish_doing_using_command config' complete -c doing -l dump -s d -f -n '__fish_doing_using_command config' -d Show\ a\ config\ key\ value\ based\ on\ arguments complete -c doing -l editor -s e -f -r -n '__fish_doing_using_command config' -d Editor\ to\ use @@ -144,28 +157,36 @@ complete -c doing -l at -f -r -n '__fish_doing_using_command finish' -d Set\ fi complete -c doing -l auto -f -n '__fish_doing_using_command finish' -d Auto-generate\ finish\ dates\ from\ next\ entry\'s\ start\ time complete -c doing -l back -s b -f -r -n '__fish_doing_using_command finish' -d Backdate\ completed\ date\ to\ date\ string\ \[4pm\|20m\|2h\|yesterday\ noon\] complete -c doing -l bool -f -r -n '__fish_doing_using_command finish' -d Boolean +complete -c doing -l case -f -r -n '__fish_doing_using_command finish' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive complete -c doing -l date -f -n '__fish_doing_using_command finish' -d Include\ date 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 +complete -c doing -l not -f -n '__fish_doing_using_command finish' -d Finish\ items\ that\ \*don\'t\*\ match\ search/tag\ filters complete -c doing -l remove -s r -f -n '__fish_doing_using_command finish' -d Remove\ done\ tag complete -c doing -l section -s s -f -r -n '__fish_doing_using_command finish' -d Section complete -c doing -l search -f -r -n '__fish_doing_using_command finish' -d Finish\ the\ last\ X\ entries\ matching\ search\ filter complete -c doing -l took -s t -f -r -n '__fish_doing_using_command finish' -d Set\ the\ completed\ date\ to\ the\ start\ date\ plus\ XX\[hmd\] complete -c doing -l tag -f -r -n '__fish_doing_using_command finish' -d Finish\ the\ last\ X\ entries\ containing\ TAG complete -c doing -l unfinished -s u -f -n '__fish_doing_using_command finish' -d Finish\ last\ entry +complete -c doing -l exact -s x -f -n '__fish_doing_using_command finish' -d Force\ exact\ search\ string\ matching complete -c doing -l after -f -r -n '__fish_doing_using_command grep search' -d Constrain\ search\ to\ entries\ newer\ than\ date complete -c doing -l before -f -r -n '__fish_doing_using_command grep search' -d Constrain\ search\ to\ entries\ older\ than\ date +complete -c doing -l case -f -r -n '__fish_doing_using_command grep search' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive 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 +complete -c doing -l not -f -n '__fish_doing_using_command grep search' -d Show\ items\ that\ \*don\'t\*\ match\ search\ string complete -c doing -l output -s o -f -r -n '__fish_doing_using_command grep search' -d Output\ to\ export\ format complete -c doing -l only_timed -f -n '__fish_doing_using_command grep search' -d Only\ show\ items\ with\ recorded\ time\ intervals complete -c doing -l section -s s -f -r -n '__fish_doing_using_command grep search' -d Section complete -c doing -l times -s t -f -n '__fish_doing_using_command grep search' -d Show\ time\ intervals\ on\ @done\ tasks complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command grep search' -d Sort\ tags\ by complete -c doing -l totals -f -n '__fish_doing_using_command grep search' -d Show\ intervals\ with\ totals\ at\ the\ end\ of\ output +complete -c doing -l exact -s x -f -n '__fish_doing_using_command grep search' -d Force\ exact\ string\ matching complete -c doing -F -n '__fish_doing_using_command import' complete -c doing -l after -f -r -n '__fish_doing_using_command import' -d Import\ entries\ newer\ than\ date complete -c doing -l autotag -f -n '__fish_doing_using_command import' -d Autotag\ entries complete -c doing -l before -f -r -n '__fish_doing_using_command import' -d Import\ entries\ older\ than\ date +complete -c doing -l case -f -r -n '__fish_doing_using_command import' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive complete -c doing -l from -s f -f -r -n '__fish_doing_using_command import' -d Date\ range\ to\ import +complete -c doing -l not -f -n '__fish_doing_using_command import' -d Import\ items\ that\ \*don\'t\*\ match\ search/tag/date\ filters complete -c doing -l only_timed -f -n '__fish_doing_using_command import' -d Only\ import\ items\ with\ recorded\ time\ intervals complete -c doing -l overlap -f -n '__fish_doing_using_command import' -d Allow\ entries\ that\ overlap\ existing\ times complete -c doing -l prefix -f -r -n '__fish_doing_using_command import' -d Prefix\ entries\ with @@ -173,36 +194,46 @@ complete -c doing -l section -s s -f -r -n '__fish_doing_using_command import' - complete -c doing -l search -f -r -n '__fish_doing_using_command import' -d Only\ import\ items\ matching\ search complete -c doing -l tag -f -r -n '__fish_doing_using_command import' -d Tag\ all\ imported\ entries complete -c doing -l type -f -r -n '__fish_doing_using_command import' -d Import\ type +complete -c doing -l exact -s x -f -n '__fish_doing_using_command import' -d Force\ exact\ search\ string\ matching complete -c doing -l bool -f -r -n '__fish_doing_using_command last' -d Tag\ boolean +complete -c doing -l case -f -r -n '__fish_doing_using_command last' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive complete -c doing -l editor -s e -f -n '__fish_doing_using_command last' -d Edit\ entry\ with\ vim +complete -c doing -l not -f -n '__fish_doing_using_command last' -d Show\ items\ that\ \*don\'t\*\ match\ search\ string\ or\ tag\ filter complete -c doing -l section -s s -f -r -n '__fish_doing_using_command last' -d Specify\ a\ section complete -c doing -l search -f -r -n '__fish_doing_using_command last' -d Search\ filter complete -c doing -l tag -f -r -n '__fish_doing_using_command last' -d Tag\ filter +complete -c doing -l exact -s x -f -n '__fish_doing_using_command last' -d Force\ exact\ search\ string\ matching complete -c doing -l back -s b -f -r -n '__fish_doing_using_command later' -d Backdate\ start\ time\ to\ date\ string\ \[4pm\|20m\|2h\|yesterday\ noon\] complete -c doing -l editor -s e -f -n '__fish_doing_using_command later' -d Edit\ entry\ with\ vim complete -c doing -l note -s n -f -r -n '__fish_doing_using_command later' -d Note complete -c doing -l bool -f -r -n '__fish_doing_using_command mark flag' -d Boolean complete -c doing -l count -s c -f -r -n '__fish_doing_using_command mark flag' -d How\ many\ recent\ entries\ to\ tag +complete -c doing -l case -f -r -n '__fish_doing_using_command mark flag' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive complete -c doing -l date -s d -f -n '__fish_doing_using_command mark flag' -d Include\ current\ date/time\ with\ tag 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 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 +complete -c doing -l not -f -n '__fish_doing_using_command mark flag' -d Flag\ items\ that\ \*don\'t\*\ match\ search/tag/date\ filters complete -c doing -l remove -s r -f -n '__fish_doing_using_command mark flag' -d Remove\ flag complete -c doing -l section -s s -f -r -n '__fish_doing_using_command mark flag' -d Section complete -c doing -l search -f -r -n '__fish_doing_using_command mark flag' -d Flag\ the\ last\ entry\ matching\ search\ filter complete -c doing -l tag -f -r -n '__fish_doing_using_command mark flag' -d Flag\ the\ last\ entry\ containing\ TAG complete -c doing -l unfinished -s u -f -n '__fish_doing_using_command mark flag' -d Flag\ last\ entry +complete -c doing -l exact -s x -f -n '__fish_doing_using_command mark flag' -d Force\ exact\ search\ string\ matching complete -c doing -l archive -s a -f -n '__fish_doing_using_command meanwhile' -d Archive\ previous\ @meanwhile\ entry complete -c doing -l back -s b -f -r -n '__fish_doing_using_command meanwhile' -d Backdate\ start\ date\ for\ new\ entry\ to\ date\ string\ \[4pm\|20m\|2h\|yesterday\ noon\] complete -c doing -l editor -s e -f -n '__fish_doing_using_command meanwhile' -d Edit\ entry\ with\ vim complete -c doing -l note -s n -f -r -n '__fish_doing_using_command meanwhile' -d Note complete -c doing -l section -s s -f -r -n '__fish_doing_using_command meanwhile' -d Section complete -c doing -l bool -f -r -n '__fish_doing_using_command note' -d Boolean +complete -c doing -l case -f -r -n '__fish_doing_using_command note' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive complete -c doing -l editor -s e -f -n '__fish_doing_using_command note' -d Edit\ entry\ with\ vim 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 +complete -c doing -l not -f -n '__fish_doing_using_command note' -d Add\ note\ to\ item\ that\ \*doesn\'t\*\ match\ search/tag\ filters complete -c doing -l remove -s r -f -n '__fish_doing_using_command note' -d Replace/Remove\ last\ entry\'s\ note complete -c doing -l section -s s -f -r -n '__fish_doing_using_command note' -d Section complete -c doing -l search -f -r -n '__fish_doing_using_command note' -d Add/remove\ note\ from\ last\ entry\ matching\ search\ filter complete -c doing -l tag -f -r -n '__fish_doing_using_command note' -d Add/remove\ note\ from\ last\ entry\ matching\ tag +complete -c doing -l exact -s x -f -n '__fish_doing_using_command note' -d Force\ exact\ search\ string\ matching complete -c doing -l back -s b -f -r -n '__fish_doing_using_command now next' -d Backdate\ start\ time\ \[4pm\|20m\|2h\|yesterday\ noon\] complete -c doing -l editor -s e -f -n '__fish_doing_using_command now next' -d Edit\ entry\ with\ vim complete -c doing -l finish_last -s f -f -n '__fish_doing_using_command now next' -d Timed\ entry @@ -223,21 +254,28 @@ complete -c doing -l times -s t -f -n '__fish_doing_using_command recent' -d Sh complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command recent' -d Sort\ tags\ by complete -c doing -l totals -f -n '__fish_doing_using_command recent' -d Show\ intervals\ with\ totals\ at\ the\ end\ of\ output complete -c doing -l bool -f -r -n '__fish_doing_using_command reset begin' -d Boolean +complete -c doing -l case -f -r -n '__fish_doing_using_command reset begin' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive complete -c doing -l interactive -s i -f -n '__fish_doing_using_command reset begin' -d Select\ from\ a\ menu\ of\ matching\ entries +complete -c doing -l not -f -n '__fish_doing_using_command reset begin' -d Reset\ items\ that\ \*don\'t\*\ match\ search/tag\ filters complete -c doing -l resume -s r -f -n '__fish_doing_using_command reset begin' -d Resume\ entry -complete -c doing -l section -s s -f -r -n '__fish_doing_using_command reset begin' -d Set\ the\ start\ date\ of\ an\ item\ to\ now +complete -c doing -l section -s s -f -r -n '__fish_doing_using_command reset begin' -d Limit\ search\ to\ section complete -c doing -l search -f -r -n '__fish_doing_using_command reset begin' -d Reset\ last\ entry\ matching\ search\ filter complete -c doing -l tag -f -r -n '__fish_doing_using_command reset begin' -d Reset\ last\ entry\ matching\ tag +complete -c doing -l exact -s x -f -n '__fish_doing_using_command reset begin' -d Force\ exact\ search\ string\ matching complete -c doing -l before -f -r -n '__fish_doing_using_command rotate' -d Rotate\ entries\ older\ than\ date complete -c doing -l bool -f -r -n '__fish_doing_using_command rotate' -d Tag\ boolean +complete -c doing -l case -f -r -n '__fish_doing_using_command rotate' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive complete -c doing -l keep -s k -f -r -n '__fish_doing_using_command rotate' -d How\ many\ items\ to\ keep\ in\ each\ section +complete -c doing -l not -f -n '__fish_doing_using_command rotate' -d Rotate\ items\ that\ \*don\'t\*\ match\ search\ string\ or\ tag\ filter complete -c doing -l section -s s -f -r -n '__fish_doing_using_command rotate' -d Section\ to\ rotate complete -c doing -l search -f -r -n '__fish_doing_using_command rotate' -d Search\ filter complete -c doing -l tag -f -r -n '__fish_doing_using_command rotate' -d Tag\ filter +complete -c doing -l exact -s x -f -n '__fish_doing_using_command rotate' -d Force\ exact\ search\ string\ matching complete -c doing -l column -s c -f -n '__fish_doing_using_command sections' -d List\ in\ single\ column complete -c doing -l archive -s a -f -n '__fish_doing_using_command select' -d Archive\ selected\ items 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 complete -c doing -l cancel -s c -f -n '__fish_doing_using_command select' -d Cancel\ selected\ items +complete -c doing -l case -f -r -n '__fish_doing_using_command select' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive complete -c doing -l delete -s d -f -n '__fish_doing_using_command select' -d Delete\ selected\ items complete -c doing -l editor -s e -f -n '__fish_doing_using_command select' -d Edit\ selected\ item\(s\) complete -c doing -l finish -s f -f -n '__fish_doing_using_command select' -d Add\ @done\ with\ current\ time\ to\ selected\ item\(s\) @@ -245,19 +283,23 @@ complete -c doing -l flag -f -n '__fish_doing_using_command select' -d Add\ fl complete -c doing -l force -f -n '__fish_doing_using_command select' -d Perform\ action\ without\ confirmation complete -c doing -l move -s m -f -r -n '__fish_doing_using_command select' -d Move\ selected\ items\ to\ section complete -c doing -l menu -f -n '__fish_doing_using_command select' -d Use\ --no-menu\ to\ skip\ the\ interactive\ menu +complete -c doing -l not -f -n '__fish_doing_using_command select' -d Select\ items\ that\ \*don\'t\*\ match\ search/tag\ filters complete -c doing -l output -s o -f -r -n '__fish_doing_using_command select' -d Output\ entries\ to\ format complete -c doing -l search -f -r -n '__fish_doing_using_command select' -d Initial\ search\ query\ for\ filtering complete -c doing -l remove -s r -f -n '__fish_doing_using_command select' -d Reverse\ -c complete -c doing -l section -s s -f -r -n '__fish_doing_using_command select' -d Select\ from\ a\ specific\ section complete -c doing -l save_to -f -r -n '__fish_doing_using_command select' -d Save\ selected\ entries\ to\ file\ using\ --output\ format complete -c doing -l tag -s t -f -r -n '__fish_doing_using_command select' -d Tag\ selected\ entries +complete -c doing -l exact -s x -f -n '__fish_doing_using_command select' -d Force\ exact\ search\ string\ matching complete -c doing -l age -s a -f -r -n '__fish_doing_using_command show' -d Age complete -c doing -l after -f -r -n '__fish_doing_using_command show' -d View\ entries\ newer\ than\ date complete -c doing -l bool -s b -f -r -n '__fish_doing_using_command show' -d Tag\ boolean complete -c doing -l before -f -r -n '__fish_doing_using_command show' -d View\ entries\ older\ than\ date complete -c doing -l count -s c -f -r -n '__fish_doing_using_command show' -d Max\ count\ to\ show +complete -c doing -l case -f -r -n '__fish_doing_using_command show' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive complete -c doing -l from -s f -f -r -n '__fish_doing_using_command show' -d Date\ range\ to\ show 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 +complete -c doing -l not -f -n '__fish_doing_using_command show' -d Show\ items\ that\ \*don\'t\*\ match\ search/tag/date\ filters complete -c doing -l output -s o -f -r -n '__fish_doing_using_command show' -d Output\ to\ export\ format complete -c doing -l only_timed -f -n '__fish_doing_using_command show' -d Only\ show\ items\ with\ recorded\ time\ intervals complete -c doing -l sort -s s -f -r -n '__fish_doing_using_command show' -d Sort\ order @@ -267,6 +309,7 @@ complete -c doing -l tag -f -r -n '__fish_doing_using_command show' -d Tag\ fil complete -c doing -l tag_order -f -r -n '__fish_doing_using_command show' -d Tag\ sort\ direction complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command show' -d Sort\ tags\ by complete -c doing -l totals -f -n '__fish_doing_using_command show' -d Show\ intervals\ with\ totals\ at\ the\ end\ of\ output +complete -c doing -l exact -s x -f -n '__fish_doing_using_command show' -d Force\ exact\ search\ string\ matching complete -c doing -l output -s o -f -r -n '__fish_doing_using_command since' -d Output\ to\ export\ format complete -c doing -l section -s s -f -r -n '__fish_doing_using_command since' -d Section complete -c doing -l times -s t -f -n '__fish_doing_using_command since' -d Show\ time\ intervals\ on\ @done\ tasks @@ -275,9 +318,11 @@ complete -c doing -l totals -f -n '__fish_doing_using_command since' -d Show\ complete -c doing -l autotag -s a -f -n '__fish_doing_using_command tag' -d Autotag\ entries\ based\ on\ autotag\ configuration\ in\ \~/ complete -c doing -l bool -f -r -n '__fish_doing_using_command tag' -d Boolean complete -c doing -l count -s c -f -r -n '__fish_doing_using_command tag' -d How\ many\ recent\ entries\ to\ tag +complete -c doing -l case -f -r -n '__fish_doing_using_command tag' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive complete -c doing -l date -s d -f -n '__fish_doing_using_command tag' -d Include\ current\ date/time\ with\ tag complete -c doing -l force -f -n '__fish_doing_using_command tag' -d Don\'t\ ask\ permission\ to\ tag\ all\ entries\ when\ count\ is\ 0 complete -c doing -l interactive -s i -f -n '__fish_doing_using_command tag' -d Select\ item\(s\)\ to\ tag\ from\ a\ menu\ of\ matching\ entries +complete -c doing -l not -f -n '__fish_doing_using_command tag' -d Tag\ items\ that\ \*don\'t\*\ match\ search/tag\ filters complete -c doing -l remove -s r -f -n '__fish_doing_using_command tag' -d Remove\ given\ tag\(s\) complete -c doing -l regex -f -n '__fish_doing_using_command tag' -d Interpret\ tag\ string\ as\ regular\ expression complete -c doing -l rename -f -r -n '__fish_doing_using_command tag' -d Replace\ existing\ tag\ with\ tag\ argument @@ -285,6 +330,7 @@ complete -c doing -l section -s s -f -r -n '__fish_doing_using_command tag' -d S complete -c doing -l search -f -r -n '__fish_doing_using_command tag' -d Tag\ entries\ matching\ search\ filter complete -c doing -l tag -f -r -n '__fish_doing_using_command tag' -d Tag\ the\ last\ X\ entries\ containing\ TAG complete -c doing -l unfinished -s u -f -n '__fish_doing_using_command tag' -d Tag\ last\ entry +complete -c doing -l exact -s x -f -n '__fish_doing_using_command tag' -d Force\ exact\ search\ string\ matching complete -c doing -l list -s l -f -n '__fish_doing_using_command template' -d List\ all\ available\ templates complete -c doing -l after -f -r -n '__fish_doing_using_command today' -d View\ entries\ after\ specified\ time complete -c doing -l before -f -r -n '__fish_doing_using_command today' -d View\ entries\ before\ specified\ time @@ -298,8 +344,10 @@ complete -c doing -l after -f -r -n '__fish_doing_using_command view' -d View\ complete -c doing -l bool -s b -f -r -n '__fish_doing_using_command view' -d Tag\ boolean complete -c doing -l before -f -r -n '__fish_doing_using_command view' -d View\ entries\ older\ than\ date complete -c doing -l count -s c -f -r -n '__fish_doing_using_command view' -d Count\ to\ display +complete -c doing -l case -f -r -n '__fish_doing_using_command view' -d Case\ sensitivity\ for\ search\ string\ matching\ \[\(c\)ase-sensitive complete -c doing -l color -f -n '__fish_doing_using_command view' -d Include\ colors\ in\ output 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 +complete -c doing -l not -f -n '__fish_doing_using_command view' -d Show\ items\ that\ \*don\'t\*\ match\ search\ string complete -c doing -l output -s o -f -r -n '__fish_doing_using_command view' -d Output\ to\ export\ format complete -c doing -l only_timed -f -n '__fish_doing_using_command view' -d Only\ show\ items\ with\ recorded\ time\ intervals complete -c doing -l section -s s -f -r -n '__fish_doing_using_command view' -d Section @@ -309,6 +357,7 @@ complete -c doing -l tag -f -r -n '__fish_doing_using_command view' -d Tag\ fil complete -c doing -l tag_order -f -r -n '__fish_doing_using_command view' -d Tag\ sort\ direction complete -c doing -l tag_sort -f -r -n '__fish_doing_using_command view' -d Sort\ tags\ by complete -c doing -l totals -f -n '__fish_doing_using_command view' -d Show\ intervals\ with\ totals\ at\ the\ end\ of\ output +complete -c doing -l exact -s x -f -n '__fish_doing_using_command view' -d Force\ exact\ search\ string\ matching complete -c doing -l column -s c -f -n '__fish_doing_using_command views' -d List\ in\ single\ column complete -c doing -l after -f -r -n '__fish_doing_using_command wiki' -d Include\ entries\ newer\ than\ date complete -c doing -l bool -s b -f -r -n '__fish_doing_using_command wiki' -d Tag\ boolean