pj.plugin.zsh 614 Bytes
Newer Older
1
alias pjo="pj open"
Toon Claes's avatar
Toon Claes committed
2

Marc Cornellà's avatar
Marc Cornellà committed
3
4
5
6
pj () {
    emulate -L zsh
    setopt shwordsplit

Toon Claes's avatar
Toon Claes committed
7
    cmd="cd"
Marc Cornellà's avatar
Marc Cornellà committed
8
    project=$1
Toon Claes's avatar
Toon Claes committed
9

Marc Cornellà's avatar
Marc Cornellà committed
10
    if [[ "open" == "$project" ]]; then
11
        shift
Marc Cornellà's avatar
Marc Cornellà committed
12
13
        project=$*
        cmd=$EDITOR
14
    else
Marc Cornellà's avatar
Marc Cornellà committed
15
        project=$*
Toon Claes's avatar
Toon Claes committed
16
17
    fi

Marc Cornellà's avatar
Marc Cornellà committed
18
19
20
    for basedir ($PROJECT_PATHS); do
        if [[ -d "$basedir/$project" ]]; then
            $cmd "$basedir/$project"
Toon Claes's avatar
Toon Claes committed
21
22
23
24
            return
        fi
    done

Marc Cornellà's avatar
Marc Cornellà committed
25
    echo "No such project '${project}'."
Toon Claes's avatar
Toon Claes committed
26
27
}

Marc Cornellà's avatar
Marc Cornellà committed
28
_pj () {
Marc Cornellà's avatar
Marc Cornellà committed
29
30
    emulate -L zsh

31
    typeset -a projects
Marc Cornellà's avatar
Marc Cornellà committed
32
33
34
35
36
    for basedir ($PROJECT_PATHS); do
        projects+=(${basedir}/*(/N))
    done

    compadd ${projects:t}
Toon Claes's avatar
Toon Claes committed
37
38
}
compdef _pj pj