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`.
Diff
1diff --git a/plugins/pj/pj.plugin.zsh b/plugins/pj/pj.plugin.zsh
2index 1d89af00b772c7c206a413cf50c22a94668f3465..f9d7f8e276c5990420cc367184afe1946fb01ed7 100644
3--- a/plugins/pj/pj.plugin.zsh
4+++ b/plugins/pj/pj.plugin.zsh
5@@ -1,29 +1,31 @@
6 alias pjo="pj open"
7 8-function pj () {
9+pj () {
10+ emulate -L zsh
11+ setopt shwordsplit
12+
13 cmd="cd"
14- file=$1
15+ project=$1
1617- if [[ "open" == "$file" ]] then
18+ if [[ "open" == "$project" ]]; then
19 shift
20- file=$*
21- cmd=(${(s: :)EDITOR})
22+ project=$*
23+ cmd=$EDITOR
24 else
25- file=$*
26+ project=$*
27 fi
2829- for project in $PROJECT_PATHS; do
30- if [[ -d $project/$file ]] then
31- $cmd "$project/$file"
32- unset project # Unset project var
33+ for basedir ($PROJECT_PATHS); do
34+ if [[ -d "$basedir/$project" ]]; then
35+ $cmd "$basedir/$project"
36 return
37 fi
38 done
3940- echo "No such project $1"
41+ echo "No such project '${project}'."
42 }
4344-function _pj () {
45+_pj () {
46 emulate -L zsh
4748 typeset -a projects