pj.plugin.zsh 594 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
pj () {
    emulate -L zsh

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

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

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

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

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

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

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