1
0
Fork 0
mirror of https://github.com/ohmyzsh/ohmyzsh.git synced 2024-11-11 00:10:08 +00:00
ohmyzsh/plugins/pj/pj.plugin.zsh

52 lines
1.1 KiB
Bash

#!/bin/zsh
#
# Original idea by DefV (Jan De Poorter)
# Source: https://gist.github.com/pjaspers/368394#comment-1016
#
# Usage:
# - Set `$PROJECT_PATHS` in your ~/.zshrc
# e.g.: PROJECT_PATHS=(~/src ~/work)
# - In ZSH you now can open a project directory with the command: `pj my-project`
# the plugin will locate the `my-project` directory in one of the $PROJECT_PATHS
# Also tab completion is supported.
# - `pjo my-project` will open the directory in $EDITOR
#
function pj() {
cmd="cd"
file=$1
if [[ "open" == "$file" ]] then
shift
file=$*
cmd=(${(s: :)EDITOR})
else
file=$*
fi
for project in $PROJECT_PATHS; do
if [[ -d $project/$file ]] then
$cmd "$project/$file"
unset project # Unset project var
return
fi
done
echo "No such project $1"
}
alias pjo="pj open"
function _pj () {
# might be possible to improve this using glob, without the basename trick
typeset -a projects
foreach i ($PROJECT_PATHS/*)
do
projects+=(${i##*/})
done
_arguments '*:file:($projects)'
}
compdef _pj pj