diff --git a/plugins/work/work.plugin.zsh b/plugins/work/work.plugin.zsh new file mode 100644 index 000000000..3dfe98ecb --- /dev/null +++ b/plugins/work/work.plugin.zsh @@ -0,0 +1,27 @@ +typeset -A _WORKPLUGIN_DIRS_FULLPATH + +for dir in $WORKPLUGIN_DIRS; do + _WORKPLUGIN_DIRS_FULLPATH[$dir]="$HOME/$dir" +done + +work() { + local dir + for dir in $_WORKPLUGIN_DIRS_FULLPATH; do + if [[ -d "$dir/$1" ]]; then + builtin cd "$dir/$1" + break + fi + done + if [[ $(type -w "WORKPLUGIN_CALLBACK") == "WORKPLUGIN_CALLBACK: function" ]]; then + WORKPLUGIN_CALLBACK "$1" + fi +} + +_work_comp() { + local dir + for dir in $_WORKPLUGIN_DIRS_FULLPATH; do + compadd $(ls $dir) + done +} + +compdef _work_comp work