Refactor pj function

- Use `emulate -L zsh` to make all variables local.

- Use `shwordsplit` to interpret `$cmd` spaces correctly.

- Rename `$project` and `$file` variables to the more appropriate `$basedir`
  and `$project`.
This commit is contained in:
Marc Cornellà 2016-08-11 01:33:36 +02:00
parent c9c11d605f
commit 7f8851f52f

View File

@ -1,29 +1,31 @@
alias pjo="pj open" alias pjo="pj open"
function pj () { pj () {
cmd="cd" emulate -L zsh
file=$1 setopt shwordsplit
if [[ "open" == "$file" ]] then cmd="cd"
project=$1
if [[ "open" == "$project" ]]; then
shift shift
file=$* project=$*
cmd=(${(s: :)EDITOR}) cmd=$EDITOR
else else
file=$* project=$*
fi fi
for project in $PROJECT_PATHS; do for basedir ($PROJECT_PATHS); do
if [[ -d $project/$file ]] then if [[ -d "$basedir/$project" ]]; then
$cmd "$project/$file" $cmd "$basedir/$project"
unset project # Unset project var
return return
fi fi
done done
echo "No such project $1" echo "No such project '${project}'."
} }
function _pj () { _pj () {
emulate -L zsh emulate -L zsh
typeset -a projects typeset -a projects