ohmyzsh/plugins/pj/pj.plugin.zsh

50 lines
1.1 KiB
Bash
Raw Normal View History

2013-02-05 08:45:00 +00:00
#!/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=$*
2013-02-05 08:45:00 +00:00
cmd=(${(s: :)EDITOR})
else
file=$*
2013-02-05 08:45:00 +00:00
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
projects=($PROJECT_PATHS/*)
projects=$projects:t
_arguments '*:file:($projects)'
2013-02-05 08:45:00 +00:00
}
compdef _pj pj