parent
2a33581e80
commit
18cc48000e
@ -0,0 +1,51 @@
|
|||||||
|
#!/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
|
||||||
|
projects=($PROJECT_PATHS/*)
|
||||||
|
projects=$projects:t
|
||||||
|
_arguments '*:file:($projects)'
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
compdef _pj pj
|
Loading…
Reference in new issue