Browse Source

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`.
Marc Cornellà 7 years ago
parent
commit
7f8851f52f
1 changed files with 14 additions and 12 deletions
  1. 14 12
      plugins/pj/pj.plugin.zsh

+ 14 - 12
plugins/pj/pj.plugin.zsh

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