mirror of
https://github.com/GothenburgBitFactory/timewarrior.git
synced 2025-06-26 10:54:28 +02:00
Adding zsh completion
Signed-off-by: Ian Kenney <ianmichaelkenney@gmail.com>
This commit is contained in:
parent
ad12fec6ae
commit
81b62c3da0
2 changed files with 121 additions and 0 deletions
|
@ -8,5 +8,6 @@ If you are missing a completion, feel free to contribute.
|
||||||
|
|
||||||
* `timew.fish` is taken from [pfmephisto/timew-fishcompletion](https://github.com/pfmephisto/timew-fishcompletion) which is released under [MIT license](https://github.com/pfmephisto/timew-fishcompletion/blob/main/LICENSE)
|
* `timew.fish` is taken from [pfmephisto/timew-fishcompletion](https://github.com/pfmephisto/timew-fishcompletion) which is released under [MIT license](https://github.com/pfmephisto/timew-fishcompletion/blob/main/LICENSE)
|
||||||
* `timew-completion.bash` is taken from [lauft/timew-bashcompletion](https://github.com/lauft/timew-bashcompletion) which is released under [MIT license](https://github.com/lauft/timew-bashcompletion/blob/master/LICENSE)
|
* `timew-completion.bash` is taken from [lauft/timew-bashcompletion](https://github.com/lauft/timew-bashcompletion) which is released under [MIT license](https://github.com/lauft/timew-bashcompletion/blob/master/LICENSE)
|
||||||
|
* `timew.zsh` is taken from [ianmkenney/timewarrior_zsh_completion](https://github.com/ianmkenney/timewarrior_zsh_completion) which is released under [MIT license](https://github.com/ianmkenney/timewarrior_zsh_completion/blob/main/LICENSE)
|
||||||
|
|
||||||
Huge thanks to everyone contributing! ❤️
|
Huge thanks to everyone contributing! ❤️
|
||||||
|
|
120
completion/timew.zsh
Normal file
120
completion/timew.zsh
Normal file
|
@ -0,0 +1,120 @@
|
||||||
|
#compdef _timew timew
|
||||||
|
|
||||||
|
# zsh completion for timewarrior 1.7.1
|
||||||
|
# timewarrior_zsh_completion v0.1.0
|
||||||
|
|
||||||
|
_timew() {
|
||||||
|
local ret=1
|
||||||
|
|
||||||
|
if [ -d ${HOME}/.local/share/timewarrior/data ]; then
|
||||||
|
data_dir="${HOME}/.local/share/timewarrior/data"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [ -d ${HOME}/.timewarrior/data ]; then
|
||||||
|
data_dir="${HOME}/.timewarrior/data"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if (( !${+data_dir} )); then
|
||||||
|
echo "\nCould not find data directory"
|
||||||
|
return $ret
|
||||||
|
fi
|
||||||
|
|
||||||
|
_arguments -C \
|
||||||
|
'1:command:->commands' \
|
||||||
|
'*:ids_tags_hints:->ids_tags_hints' && ret=0
|
||||||
|
|
||||||
|
case "$state" in
|
||||||
|
commands)
|
||||||
|
_describe 'commands' _commands
|
||||||
|
;;
|
||||||
|
ids_tags_hints)
|
||||||
|
local arr
|
||||||
|
|
||||||
|
arr=()
|
||||||
|
|
||||||
|
# collect all tag data
|
||||||
|
vals=$(sed '1,1d' $data_dir/tags.data | \
|
||||||
|
sed '$d' | \
|
||||||
|
sed -E "s;^[[:space:]]+\"([[:space:][:alnum:]\._-]+)\":.*$;\1;g")
|
||||||
|
|
||||||
|
# add all of the tags to the output array
|
||||||
|
for i in ${(f)vals}; do arr+=$i; done
|
||||||
|
|
||||||
|
# append the predefined hints to the end
|
||||||
|
arr+=( "${_hints[@]} ")
|
||||||
|
|
||||||
|
|
||||||
|
vals=$(cat ${data_dir}/*-*.data | tail -n 9 | sed -E "s/inc .+# //g")
|
||||||
|
|
||||||
|
typeset -i count
|
||||||
|
count=$(echo $vals | wc -l)
|
||||||
|
|
||||||
|
for i in ${(f)vals};
|
||||||
|
do
|
||||||
|
arr+="@${count}:${i}"
|
||||||
|
((count--))
|
||||||
|
done
|
||||||
|
|
||||||
|
_describe 'hints_tags_ids' arr
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
_hints=(
|
||||||
|
"\:adjust:Automatically correct overlaps"
|
||||||
|
"\:blank:Leaves tracked time out of a report"
|
||||||
|
"\:color:Force color on, even if not connected to a TTY"
|
||||||
|
"\:day:The 24 hours of the current day"
|
||||||
|
"\:debug:Runs in debug mode, shows many runtime details"
|
||||||
|
"\:fill:Expand time to fill surrounding available gap"
|
||||||
|
"\:ids:Displays interval ID numbers in the summary report"
|
||||||
|
"\:lastmonth:Last month"
|
||||||
|
"\:lastquarter:Last quarter"
|
||||||
|
"\:lastweek:Last week"
|
||||||
|
"\:lastyear:Last year"
|
||||||
|
"\:month:This month"
|
||||||
|
"\:nocolor:Force color off, even if connected to a TTY"
|
||||||
|
"\:quarter:This quarter"
|
||||||
|
"\:quiet:Turns off all feedback. For automation"
|
||||||
|
"\:week:This week"
|
||||||
|
"\:year:This year"
|
||||||
|
"\:yes:Overrides confirmation by answering \'yes\' to the questions"
|
||||||
|
"\:yesterday:The 24 hours of the previous day"
|
||||||
|
)
|
||||||
|
|
||||||
|
_commands=(
|
||||||
|
'annotate:add an annotation to intervals'
|
||||||
|
'cancel:cancel time tracking'
|
||||||
|
'config:get and set Timewarrior configuration'
|
||||||
|
'continue:resume tracking of existing interval'
|
||||||
|
'day:Summarize the tracked and untracked time over the day'
|
||||||
|
'day:shows a chart depicting a single day (today by default)'
|
||||||
|
'delete:delete intervals'
|
||||||
|
'diagnostics:show diagnostic information'
|
||||||
|
'export:export tracked time in JSON'
|
||||||
|
'extensions:list available extensions'
|
||||||
|
'fill:adjust intervals to fill in surrounding gaps'
|
||||||
|
'gaps:display time tracking gaps'
|
||||||
|
'get:display DOM values'
|
||||||
|
'help:display help'
|
||||||
|
'join:join intervals'
|
||||||
|
'lengthen:lengthen intervals'
|
||||||
|
'modify:change start or end date of an interval'
|
||||||
|
'month:Summarize the tracked and untracked time over a month'
|
||||||
|
'month:shows a chart depicting a single month (current month by default)'
|
||||||
|
'move:change interval start-time'
|
||||||
|
'report:run an extension report'
|
||||||
|
'resize:set interval duration'
|
||||||
|
'revert:revert Timewarrior commands'
|
||||||
|
'shorten:shorten intervals'
|
||||||
|
'show:display configuration'
|
||||||
|
'split:split intervals'
|
||||||
|
'start:start time tracking'
|
||||||
|
'stop:stop time tracking'
|
||||||
|
'summary:display a time-tracking summary'
|
||||||
|
'tag:add tags to intervals'
|
||||||
|
'tags:display a list of tags'
|
||||||
|
'track:add intervals to the database'
|
||||||
|
'untag:remove tags from intervals'
|
||||||
|
'week:shows a chart depicting a single week (current week by default)'
|
||||||
|
)
|
Loading…
Add table
Add a link
Reference in a new issue