diff --git a/plugins/desk/desk.plugin.zsh b/plugins/desk/desk.plugin.zsh new file mode 100644 index 00000000..b52a6242 --- /dev/null +++ b/plugins/desk/desk.plugin.zsh @@ -0,0 +1,50 @@ +#compdef desk + +# +# Completes available desks for `desk` +# +# Requires: desk https://github.com/jamesob/desk +# Author: Michael Bøcker-Larsen (@mblarsen) +# + +_desk() { + local state ret=1 + local desk_files_location desk_files + local -a desks + + # In case non-standard location is used + desk_files_location=${DESK_DESKS_DIR:-~/.desk/desks} + desk_files=("$desk_files_location"/*.sh) + + # Build list of files without extension + for file in $desk_files; do + filename="${file##*/}" + desks+=${filename%.*} + done + + _arguments \ + '1:command:->cmds' \ + '2:desk:->desk' + + case $state in + (cmds) + _values "desk commands" \ + 'go[Activate a desk]' \ + 'init[Initialize desk configuration]' \ + 'list[List all desks along with description]' + ret=0 + ;; + (desk) + case $words[2] in + (go) + _values "available desks" ${desks[@]} + ret=0 + ;; + esac + ret=0 + ;; + esac + return ret +} + +compdef _desk desk \ No newline at end of file